The Scale Distributions node is designed to take Product-level WTP Customer Distributions (as opposed to Feature-level Customer Distributions) from the Input Willingness To Pay (WTP) Matrix and scale them by either a fixed amount or until a target Market Share is reached.

Scaling select WTP Customer Distributions may be used when studying the impact of an advertising campaign. For example, a campaign may raise the WTP of all Products in the Market by a base amount, may then raise the WTP of the target Brand, and finally raise the WTP of the target Product itself. Scale Distributions nodes can be cascaded one after the other to simulate this Market to Brand to Product effect.

Scaling all of the Products in the WTP Matrix can be used to set a baseline number of 'No Sale' Customers. For example, the Scale Distributions node may iteratively alter the Customer Distributions until, say, 5% of the Market comprises of 'No Sale' Customers. These 'No Sale' Customers will enter the Market when the Price of the Products decrease or the value offered by these Products increase.

**More Help:** Examples and sample workflows can be found at the Scientific Strategy website: www.scientificstrategy.com.

- Focus Product
- The user-selected Product that defines the 'Scale Product Set' that all will change in accordance with the user-specified Scenario.
- Scale Product Set
- The set of Products that will change in accordance with the user-specified Scenario. The 'Scale Product Set' may or may not include the Focus Product, other Products with the same Brand, Store, Location, Family, Category or Platform as the Focus Product, and Products that are top Competitive Rivals with the Focus Product. The degree of Competitive Rivalry is determined by the sensitivity the Focus Product has to a change in Price by the other Products in the Market.
- Number of Additional Scale Products
- The number of additional Products to include in the 'Scale Product Set'. The user may specify the 'Scale Product Set' include a 'Top Number of Rival Products' (that is, the most competitive Products) or the 'First Number of Listed Products' (that is, the Products listed first in the 'Input Product Array'). In these cases, the actual number of Products to include in the 'Scale Product Set' is determined by this option. Not all 'Scale Product Set' selections require the 'Number of Additional Scale Products' option.
- Scale Scenario
- The method by which the Products in the 'Scale Product Set' will be changed. The WTP can be raised/lowered by a fixed amount or percentage. Or the Scale Distributions node can iteratively alter the Change Factor until a target Market Share is reached for the 'Until Product Set'.
- Change Factor
- The numeric degree by which each selected WTP Customer Distribution is changed. If WTP is being scaled by a percentage then the 'Change Factor' is this percentage (2-digit 100%). If WTP is being raised/lowered by a fixed amount then the 'Change Factor' is this fixed amount. If the WTP is being altered until a target Market Share is reached then the 'Change Factor' is the starting adjustment percentage (2-digit 100%). When no more adjustments to the WTP Matrix improve the simulated results then this 'Change Factor' will halve and the adjustment process will continue.
- Until Product
- The user-selected Product that defines the 'Alter Until Product Set' and the target Market Share that is to be reached.
- Alter Until Product Set
- The set of Products that define the target Market Share. If the user is trying to set a baseline number of 'No Sale' Customers then the 'Alter Until Product Set' will specify these 'No Sale' Customers.
- Number of Additional Until Products
- The number of additional Products to include in the 'Alter Until Product Set'. If the user is trying to set a baseline number of 'No Sale' Customers then this 'Number of Additional Until Products' option is not used.
- Alter Until Target Reaches Percent
- The target Market Share percentage (2-digit 100%) for the 'Alter Until Product Set'. NOTE that the Scale Distributions node ALWAYS includes the number of 'No Sale' Customers in the Market Share calculation. This is different to most other nodes which exclude 'No Sale' Customers from the Market Share calculation. It is implemented in this way as it is possible to specifically target the Market Share of the 'No Sale' Customers (perhaps to ensure that the Quantity sold will grow if Prices decline).It may not always be possible to reach this target Market Share in which case the 'Change Until Error' will be reflected in the Scale Distributions node's Flow Variables.

- Set Output Market Size
- The output Market Size used to scale the Quantity sold, Revenue, and Profitability for each Product in the Market. The options include:
**Set to total number of Customers in WTP Matrix***(default)*the output Market Size is determined by the number of Customers in the Input WTP Matrix.**Set to total number of Customers in Product Array**the output Market Size is determined by the total number of Customers listed in the Input Product Array.**Override Product Quantities with Product Array**the simulated output Quantity of each Product is overridden with the Quantity found in the Input Product Array.**Fixed number of Customers (including 'No Sale')**the output Market Size is set by the user in the 'Set Fixed Number of Customers' option below. The 'Set Fixed Number of Customers' Market Size includes 'No Sale' customers who didn't purchase any of the Products listed in the Input Product Array.**Fixed number of Customers (excluding 'No Sale')**the output Market Size is set by the user in the 'Set Fixed Number of Customers' option below. The 'Set Fixed Number of Customers' Market Size does not include 'No Sale' customers - only customers who made an actual purchase. - Set Fixed Number of Customers
- The output Market Size when the user selects the 'Fixed number of Customers' option from the list above.
- Then Multiply Market Size by Scaling Factor
- After the output Market Size has been determined from the list of options above, and the simulation has been run, the final output Market Size is re-scaled according to this scaling factor. Note that everything in the Market will grow / shrink at the same rate, including 'Capacity' and the number of 'No Sale' Products. If the scaling factor is 1.1 then the final output Market Size is increased by 10%. The final Market Size will be rounded to the nearest integer.
- Save Randomizing Seed
- A Randomizing Seed can be saved to ensure Customer Distributions are always scaled in the same way. The 'New' button will generate a new Randomized Seed. Disable the CheckBox to generate a new Randomizing Seed each time the node is run. Manually set a new Randomizing Seed if this node is copied to avoid adding bias to the overall model.

**Input Product Array**: The set of Products that define the Market. Each row corresponds to a Product that competes for customers in the Market. The 'Product Array' must have the following columns:**Product**(string): The name of the Product corresponding to a column of the same name in the 'Input WTP Matrix'. There can also be an additional row with a Product named 'No Sale' - this row is used to tune those Customers who are in the Market but have not yet purchased a Product. If there is no 'No Sale' Product then it is assumed that all Customers in the Market purchase a Product.**Description**(string): The description of the Product or the full name of the Product if the Product field contains an identification number.**Brand**: The name of the Product Brand or a missing value if the Brand has not been defined.**Store**: The name of the Product Store or a missing value if the Store has not been defined.**Location**: The name of the Product Location or a missing value if the Location has not been defined.**Family**: The name of the Product Family or a missing value if the Product Family has not been defined.**Category**: The name of the Product Category or a missing value if the Category has not been defined.**Platform**: The name of the Product Platform or a missing value if the Platform has not been defined.**Price**(double - required): The 'Static Price' of each Product in the Market. This 'Static Price' can be adjusted by the personalized 'Dynamic Price' found in the 'Input WTP Matrix'. Personalized Price = Static Price x PAV + PAF. For example, some Customers may be entitled to the percentage Discount found in the 'Price Adjustment Variable' (PAV) column, or some Customers may need to pay the personalized delivery charges found in the 'Price Adjustment Fixed' (PAF) column. The Static Price of the 'No Sale' Product, if included, should be zero. Products with missing Prices are deemed to be Out-of-Stock.**Cost**(double - optional): The 'Static Cost' of each Product required to calculate the 'Profit' in the 'Output Product Array'. The 'Static Cost' is the per-unit Cost for the Product that doesn't change regardless of how many Products are sold, and should be used by default. It can be contrasted with 'Dynamic Costs' which vary according to the Customers who Purchase the Product. This 'Static Cost' of the Product found in the 'Input Product Array' is added to the optional 'Dynamic Costs' found in the 'Input WTP Matrix'.**Holding Cost**(double - optional): At the end of each period, except the last Liquidation Period, unsold Products with residual Inventory Capacity accumulate a Holding Cost that reduces the overall Profitability of the Product. Holding Cost can also be thought of the Opportunity Cost of not having the capital tied up in Inventory available for investment in other projects. Products that do not have a Capacity Constraint will not be penalized a Holding Cost. If this field is missing then a zero Holding Cost is assumed.**Volume**(double - optional): The 'Static Volume' of the Product relative to the Volume of other Products in the Market. For example, if a Product were a twin-pack then its Volume would be '2' while the Volume of the original Product would be '1' (default). Other scales could also be used, so that one Product might be 250 (ml) while another 500 (ml). But care with the scale should be taken as the Units are disregarded and the default of '1' will always be used if a Volume is missing. This 'Static Volume' field in the 'Input Product Array' is only important if an accompanying 'Dynamic Volume' field (or _VOL field) is found in the 'Input WTP Matrix'. Otherwise this field is ignored as Virtual Customers do not distinguish Products by the different Volume they require.**Units**(string - ignored): The Units of Measurement (UoM) associated with the Product's Volume. For example, the Units could be set to 'ml' when the Products are liquids or beverages. But note that this Units field is ignored and only provided as a convenience. No conversion is provided between different Units. The model will not understand, for instance, that 1 'Litre' contains twice as much Product as 500 'mL'.**Capacity**(integer): The Capacity Constraint for the Product. A Product's Capacity may be limited by manufacturing constraints or by inventory levels. If the Capacity level is provided then the Quantity sold for the Product cannot exceed the Capacity limitation. If Capacity is not provided, or Capacity is negative, then the Quantity sold for the Product is not limited. Capacity will be limited relative to the total number of Customers in the 'Market Size' Configuration Dialog.**Quantity**(integer): The relative Quantity sold for each Product in the actual Market. The Quantity is treated as a percentage or a ratio. This Quantity from the actual Market will be compared against the Quantity from the simulated Market during the tuning process.**Transactions**(integer): A reference number of Transactions for each Product in the actual (real-world) Market. Transactions are only relevant if Customers purchase by Volume. That is, the 'Input WTP Matrix' must contain either a 'Volume' field or at least one '_VOL' field. Otherwise each Customer will purchase only a single Product, and the number of Transactions will equal the Quantity sold.**Mean**(optional): The starting Mean of the Product-level Customer Distribution. This Mean can be compared to the final Mean in the Output Product Array.**SD**(optional): The starting Standard Deviation (SD) of the Product-level Customer Distribution. This Standard Deviation can be compared to the final Standard Deviation in the Output Product Array.

**Input Willingness To Pay Matrix**(double): The Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The total number of Virtual Available Customers is equal to the number of rows in the WTP Matrix. In addition to each of the Product's WTP Customer Distributions, this 'Input WTP Matrix' can also contain two types of 'Dynamic Price' and two types of 'Dynamic Cost' Distributions that depend upon the Customers who Purchase the Product. These personalized 'Dynamic Prices' and 'Dynamic Costs' adjust the 'Static Price' and 'Static Cost' found in the 'Input Product Array' to calculate the Product's Margin.**Product01, Product02, etc**(double): Each of the Products listed in the 'Input Product Array' should have a corresponding column in this 'Input WTP Matrix'. Each row represents a different Virtual Customer, and each value represents the Customer's Willingness To Pay (WTP) for each Product.**Volume**(double - optional): The personalized 'Dynamic Volume' of Product demanded by each Virtual Customer. For example, if the 'Input Product Array' contains a list of beverages of Volume 250ml, 330ml, 500ml, 750ml, and 1000ml then a Virtual Customer with a demanded Volume of '1000' could purchase a Quantity of either 4, 3, 2, 1, or 1 of the Products (respectively). If Customers are buying by Volume then they must purchase in whole number integers. For instance, if a Product had a Volume of 250ml but a Customer demanded 300ml then the Customer would only be able to buy 1 of that Product. Note that the excess Volume of 50ml received by the Customer is deemed to be of__no value__! The Price, WTP, and Consumer Surplus are all re-scaled by the relative Quantity demanded. When Customers buy in Volume then the Output Transactions field will differ from the Output Quantity field - otherwise these two values ought to be the same. Note that the 'Input Product Array' need not also contain a 'Volume' field. If the Product Volume is missing then the Product is presumed to be sold in Volumes of 1 Unit.**_VOL**(double - optional): The per-Product 'Dynamic Volume' (VOL) demanded by each Virtual Customer. This per-Product 'VOL' value will override the general 'Volume'. For example, a Virtual Customer buying laundry detergent might generally demand a 'Volume' of 2 (Litres) but might only demand a '_VOL' of 1 (Litre) for the concentrated detergent Product. Negative values will be replaced with a Demand Volume of zero '0'. If both of the 'Dynamic Volume' values ('Volume' and '_VOL') are missing then a default of '1' will be used.**_PAV**(double - optional): The*Price Adjustment Variable*(PAV) is the percentage adjustment to the Price (typically a Discount) a particular Customer would receive when they Purchase the Product. For example, if the Customer is entitled to a 10% Discount then the 'PAV' would be set to 0.90. The 'Price Adjustment Variable' column is identified by the Product's Name followed by a trailing 'PAV'. The 'PAV' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_PAV' or 'Product 02 PAV' or 'Product03pav'.**_PAF**(double - optional): The*Price Adjustment Fixed*(PAF) is the fixed adjustment to the Product's Price. For example, if Customers pay different amounts for Shipping the Product then this could be modeled using the 'PAF' column. If the WTP Matrix contains both 'PAV' and 'PAF' columns, then the Price is first multiplied by the variable 'PAV' before adding the fixed 'PAF'. The 'Price Adjustment Fixed' column is also identified by the Product's Name followed by a trailing 'PAF' in a manner similar to the 'PAV' designator.**_CTS**(double - optional): The*Cost To Serve*(CTS) is the additional Cost that must be incurred when a Product is sold to a particular Customer. This is a Dynamic Cost as some Customers are cheaper to serve than others, and is only incurred if the Customer actually Purchases the Product. The 'Cost To Serve' column is identified by the Product's Name followed by a trailing 'CTS'. The 'CTS' designator can be upper-case or lower-case and may-or-may-not be separated by a space, underscore, or other single character. For example, 'Product_01_CTS' or 'Product 02 CTS' or 'Product03cts'.**_CTM**(double - optional): The*Cost To Make*(CTM) depends not upon the individual Customer but upon the number of Customers who Purchase the Product. This 'Cost To Make' can be used to simulate the Law of Diminishing Returns. Starting from the first row in the column, each 'Cost To Make' row represents the incremental Cost of manufacturing each additional Product. If the Product is sold ten-times, then the total Dynamic Cost is the sum of the first 10 CTM rows. The 'Cost To Make' column is also identified by the Product's Name followed by a trailing 'CTM' in a manner similar to the 'CTS' designator.

**Output Product Array**: The output Product Array corresponds to the input Product Array but has updated values in the 'Mean' and 'SD' columns that reflect the altered results. The 'Quantity' column will also be updated according to the Market Size options. In addition, the Product Array will contain these additional columns:**Product**: The name of the Product corresponding to the Input Product Array.**Price**: The 'Static Price' of each Product from the 'Input Product Array'. The 'Dynamic Price' from the 'Input WTP Matrix' is*NOT*included in this output 'Price' field so as to allow multiple Market Simulation nodes to be chained together. Instead the 'Dynamic Price' is accounted for in the output 'Margin' field.**Cost**: The 'Static Cost' of each Product from the 'Input Product Array' or a missing value if the Cost has not been defined. The 'Dynamic Cost' from the 'Input WTP Matrix' is*NOT*included in this output 'Cost' field so as to allow multiple Market Simulation nodes to be chained together. Instead the 'Dynamic Cost' is accounted for in the output 'Margin' field.**Margin**: The average Profit Margin of each Product, where: Profit Margin = Personalized Price - Static Cost - Average Dynamic Cost. The Personalized Price is the 'Static Price' adjusted by the two types of 'Dynamic Price'. The 'Dynamic Cost' depends upon the Customers who Purchase the Product and is averaged across the total Quantity Sold.**Volume**: The given 'Static Volume' of the Product relative to the Volume of other Products in the Market or '1' if the Volume has not been defined in the input.**Units**: The given Units of Measurement (UoM) associated with the Product's Volume.**Capacity**: The Capacity Constraint of each Product or a missing value if the Capacity has not been defined. When the 'Holding Cost' for the Product has been set, Capacity will be treated as Inventory and the Residual Capacity after Quantity sold will be returned.**Quantity**: The simulated number of Customers who selected each Product, including those who selected the 'No Sale' option.**Quantity Change**: The difference between the input 'Quantity' and the simulated output 'Quantity' after the WTP Customer Distributions have been altered.**Transactions**: The simulated number of Transactions for each Product. By default, each Customer will purchase only a single Product, and the number of Transactions will equal the Quantity sold. Transactions and Quantity will only vary if Customers are purchasing by Volume. That is, the 'Input WTP Matrix' must contain either a 'Volume' field or at least one '_VOL' field so that Virtual Customers demand different Product Quantity.**Transactions Change**: The difference between the input 'Transactions' and the simulated output 'Transactions' after the WTP Customer Distributions have been altered.**Share**: The simulated Market Share of each Product based upon the 'Quantity' column but not including those customers who selected the 'No Sale' option.**COGS**: The*Cost of Goods Sold*(COGS) for the Product is calculated as the Product's 'Cost' and final 'Quantity'. COGS is only calculated if the Product's 'Cost' was provided in the 'Input Product Array'. Both the Static Costs and Dynamic Costs are included in the COGS.**COGH**: The*Cost of Goods Held*(COGH) for the Product is calculated from the Product's 'Holding Cost' and residual 'Capacity' (after selling 'Quantity'). COGH is only calculated if both the Product's 'Holding Cost' and 'Capacity' are provided in the 'Input Product Array'.**Revenue**: The Product's Revenue is calculated as the Product's 'Price' and final 'Quantity'.**Profit**: The Product's Profitability is only calculated if the Product's 'Cost' was provided in the 'Input Product Array'.

**Output Willingness To Pay Matrix**: The scaled Willingness To Pay (WTP) Customer Distribution matrix for each Product column in the Market by each Virtual Customer row. The WTP Matrix quantifies the Price that each Customer would pay for each Product in the Market. This WTP Matrix can be directly connected to a downstream 'Profit Engine' node.**Output KPI Indicators**: The Output KPI Indicators contain select information about the tuning process and the quality of the final results. The Output KPI Indicators will contain these columns:**Product**: The Product associated with the Key Performance Indicator (KPI). If the KPI refers to the overall results and not to a specific Product then this field will be left blank.**Indicator**: The name of each Key Performance Indicator (KPI), including:

●*Iteration Count*: the number of iterations used during the scaling process.

●*Final Change Factor*: the numeric degree by which the Customer Distribution WTP is changed.

●*Final Adjustment*: the final percentage (%) by which the 'Mean' and 'SD' (Standard Deviation) of the incoming Distributions were adjusted.

●*Change Until Error Percentage*: the absolute error for the set of Customer Distributions.**Value**: The final value of each Key Performance Indicator (KPI).

**Output Debug Trace**: The incremental adjustments to the WTP Matrix during the tuning process. This Output Debug Trace table is typically not used for production purposes.

- This node has no views

- No links available

You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.

To use this node in KNIME, install the extension Market Simulation nodes by Scientific Strategy for KNIME - Community Edition from the below update site following our NodePit Product and Node Installation Guide:

v5.3

A zipped version of the software site can be downloaded here.

Deploy, schedule, execute, and monitor your KNIME workflows locally, in the cloud
or on-premises – with our brand new **NodePit Runner**.

Do you have feedback, questions, comments about NodePit, want to support this platform, or want your own nodes or workflows listed here as well? Do you think, the search results could be improved or something is missing? Then please get in touch! Alternatively, you can send us an email to mail@nodepit.com, follow @NodePit on Twitter or botsin.space/@nodepit on Mastodon.

**Please note that this is only about NodePit. We do not provide general support for KNIME — please use the KNIME forums instead.**