Workflow Overview

The previous workflow BB-122 Commodity Optimization Loop with Meta Nodes showed how the flexible Recursive Loop (originally introduced in BB-113 Commodity Competitive Loop) would be used in a Commodity Market where two Competitors are trying to simultaneously find their Revenue Maximizing Price.

The workflow BB-122 introduced Meta-Nodes and Flow Variables, as well as showed how inner-loops work with outer-loops. But the results from workflow BB-122 were uninteresting because of the unrealistic commodity Product sold by both Competitors.

The results from this workflow are more interesting because:

  1. Orthogonal Products: Spacely Sprockets and Cogswell Cogs are each selling a highly unique and differentiated Product.
  2. Different Goals: The two Competitors are working towards different goals. Spacely Sprockets is trying to maximize Revenue, while Cogswell Cogs is trying to maximize Profit.

This Building Blocks example assumes you have already downloaded the open-source KNIME analytics platform and installed the free Market Simulation (Community Edition) plugin. If not, start by returning to Getting Started.

Revenue vs. Profit

Spacely Sprockets is trying to find their Revenue Maximizing Price, while Cogswell Cogs is trying to find their Profit Maximizing Price. Fortunately the Products in this Market are orthogonal and highly differentiated, so the competition does not drive Price down to Marginal Cost.

The outer-loop starts by optimizing the first Competitor, Spacely Sprockets, then moves on to optimize the second Competitor, Cogswell Cogs.

The inner-loops work to find a short-term optimization point for each Competitor.

For Spacely Sprockets, the inner-loop checks whether raising or lowering the Price by 5% will increase Revenue. The Loop continues until no further improvement is possible.

For Cogswell Cogs, the inner-loop similarly checks whether raising or lowering the Price by 5% will increase Profit.

The Prices from both inner-loops are then pushed out into the Market. The outer-loop continues the process for 10 iterations until steady-state Market conditions are found.


The Customer Distributions node can easily generate a simple Product Array and WTP Matrix for orthogonal Products.

Product Array

The two Products are listed in the Product Array.

WTP Matrix

The WTP Matrix lists the value each Customer places upon each Product.


The differentiation between Spacely Sprockets and Cogswell Cogs is simply calculated as the difference between each Customer’s Willingness To Pay (WTP) for both.


The WTP Customer Distributions for both Spacely Sprockets and Cogswell Cogs can be plotted on overlapping histograms.


Spacely Sprockets is the green histogram. Cogswell Cogs is the blue histogram with the same average WTP. The red histogram equals the difference between the two (green minus blue).

Simulate Market

The ‘Simulate Market’ node calculates the starting conditions for the Market.

Starting Conditions

The Simulate Market node calculates the starting Quantity, Revenue, and Profitability of both Products.

Outer Loop

An Outer Loop works to identify a long-term steady-state for the Market where each Competitor has no incentive to raise or lower Price.

Next Iteration

It takes the outer-loop 4 iterations to find steady-state Prices for both Competitors.

Meta-Node #1

Meta-Nodes are containers that contain sub-workflows. This Meta Node contains the sub-workflow that sets Price to maximize Spacely Sprocket’s Revenue.

Inner Loop #1

The Spacely Sprockets Meta-Node contains the same loop from the workflow BB-121 Monopoly Optimization Loop.


Quick-Forms allow the user to set ‘Flow Variables’. Several Quick-Forms can be chained together to set more Flow Variables.


This Quick-Form allows the user to set the  number of ‘Inner Loop Iterations’. It is set to 5 iterations by default, requiring a minimum of 1 iteration and a maximum of 100 iterations.


The value of Flow Variables can be seen in the ‘Flow Variables’ tab from within any output table. The two Quick-Forms set the Price Experiment Adjustment Flow Variable  and the Inner Loop Iterations Flow Variable.

Optimize What?

The ‘Sorter’ node within the inner-loop allows the user to sort by the most important KPI.


The Spacely Sprockets inner-loop sorts by Revenue to find the maximum.


But the ‘Sorter’ node can be re-configured to optimize a different KPI.


The Cogswell Cogs inner-loop sorts by Profit.

Meta-Node #2

The second Competitor runs its own Profit Maximization algorithm after seeing the results from the first Competitor.

Inner Loop #2

The Cogswell Cogs Meta-Node also contains nearly the same loop from the workflow BB-121 Monopoly Optimization Loop.


Demand Curves

The final Demand Curves for both Products can then be calculated.

Strategy #1

Spacely Sprockets is maximizing Revenue but the Price they set of $77.00 is well below their Profit Maximizing Price.

Strategy #2

Cogswell Cogs has reacted to Spacely Sprockets Price and has settled on a Profit Maximizing Price of $99.51.