Workflow Overview

This second ‘Building Blocks’ introduction workflow shows how additional Customer Distributions can be used to simulate a simple monopoly market.

The first ‘Building Blocks’ workflow (BB-101 Simple Monopoly) used a bell-shaped Normal Distribution to generate the Customer Willingness To Pay (WTP) matrix. This workflow introduces two new Customer Distributions that may generate more realistic WTP Matricies depending upon the characteristics of the market.

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.

New Distribution #1

Weibull Distribution

With the Normal Distribution from BB-101 Simple Monopoly, many Customers had a negative Willingness To Pay (WTP). That might make sense for a bulky Product that a Customer doesn’t want at home. But it might not make sense for an informational Product where the minimum WTP value of a Customer should be $0.00.

A distribution which pushes up all low-value Customers to have a WTP above zero might be better when simulating the market for informational Products. A Weibull Distribution and an Inverse Gaussian Distribution both do this.

Define Products

The list of Products in the Market are defined, as before, in the Table Creator node.

Product Details

The ‘Product’ name and Price, along with an optional Cost, are defined in the same way. In more advanced workflows, the ‘Distribution Type’ and ‘Input Parameters’ can also be defined here.

Generate WTP

This ‘Customer Distributions’ node can be used to define the default ‘Distribution Type’ and ‘Input Parameters’.


The Weibull Distribution is selected with a Shape Parameter (A) of 2.0 and a Scale Parameter (B) of 120. Details of these terms can be found in the Market Simulation Node Documentation and on Wikipedia.

Product Array

The Output Product Array adds the Type of Distribution (Weibull) and provides simple statistical values for the Mean and Standard Deviation (SD) as part of the Product description.

WTP Matrix

The Output Willingness To Pay (WTP) Matrix has 10,000 rows for Customers C00001 to C10000 each with a randomly generated WTP falling within the Weibull Distribution.

WTP Histogram

The Customer Willingness To Pay (WTP) Matrix can be visualized as a histogram.

Normal Distribution

The Normal Distribution from BB-101 looks like this, where Customers have a Mean WTP of $100 with a Standard Deviation (SD) of $50.

Weibull Distribution

By comparison, the Weibull Distribution looks like this, with a Mean of $106 and a SD of $56.

Profit Engine

The ‘Profit Engine’ node again predicts which Customers will buy the Sprockets Product.

Product Array

The Output Product Array shows the prediction that 2,153 Customers will buy Sprockets at $150, while the other 7,847 Customers are ‘No Sale’. No attempt was made to tune these results, so no direct comparison can be made to the earlier results.

Demand Curve

The Weibull Demand Curve looks similar to the Normal Distribution Demand Curve. But in this case, the Profit Maximizing Price is $115.

Economic Theory #1

Weibull Distribution: Demand Curve

As before, Market Simulation does not assume the Demand Curve is linear. Instead, Market Simulation calculates the Willingness To Pay (WTP) of each individual Customer so that they fit within the user-generated Customer Distributions.

And yet, as before, the results from the Market Simulation do closely follow the Linear Demand Curve as described in traditional micro-economic models.

The green linear trend from the Market Simulation closely follows the blue Demand CurveĀ over the majority of Price vs Quantity.

Profit Maximizing Price

As before, we want to compare these Market Simulation results with micro-economic theory.

The results from the ‘Profit Engine’ node in the Market Simulation predict that the Profit Maximizing Price for Sprockets is $115.

The theoretical equations for a Linear Demand Curve having a y-intercept (a) and slope (b) are shown to the right. Using the fitted green curve from above (a = 11,438 and b = 63.386) the Profit Maximizing Price is also calculated to be $115.

This shows a perfect match between micro-economic theory and Market Simulation.

New Distribution #2

Simple BiModal Distribution

A Simple Bimodal Distribution (or a ‘two-humped’ Customer Distribution) can be used when there are two distinct Customer Demographics within a Market.

This Simple Bimodal Distribution is, in fact, a combination of two Normal (Gaussian) Distributions where the Standard Deviation (SD) is automatically calculated to be a quarter of the distance between the two Means.

Generate WTP

This ‘Customer Distributions’ node has over a dozen ‘Distribution Types’.


The Simple Bimodal Distribution is selected to have a First Mean (A) of 50 and a Second Mean (B) of 150. The SD is 25 (a quarter the distance between the two).

Product Array

The Output Product Array has statistics similar to the earlier Customer Distributions, with a Mean of 100 and Standard Deviation (SD) of 56.

Profit Engine

The ‘Profit Engine’ node runs the Market Simulation against the Simple Bimodal WTP Matrix.

Product Array

The Profit Engine predicts that 2,557 Customers will buy Sprockets at $150, while the other 7,443 Customers are ‘No Sale’.

Demand Curve

The Simple Bimodal Demand Curve has a distinct wiggle, but is relatively straight and downward slowing. The Profit Maximizing Price is predicted to be $130.

Economic Theory #2

Simple Bimodal Distribution: Demand Curve

The Simple Bimodal Demand Curve (blue) is not as straight as before, but a linear trend can still be fitted in accordance with traditional micro-economic models.

Profit Maximizing Price

Simulation predicts that the Profit Maximizing Price in this Market is $130.

The theoretical equations for a Linear Demand Curve predict the Profit Maximizing Price to be $131.

This third example consistently shows how close the alignment is between micro-economic theory and Market Simulation.