Market Simulation nodes by Scientific Strategy for KNIME - Community Edition version 4.0.0.v202007040653 by Decision Ready, LLC
Market Simulation is designed to reproduce all of the dynamics of a Market. Hence any observation about a real-world Market can be used to help tune the Market Simulation so that it can make better predictions.
For example, if the Price and Market Share of the Competitor Products in a Market are known, then these measurements can be compared to a Market Simulation model. The Input Parameters of the Market Simulation that define the Vertical Differentiation and Horizontal Differentiation of Products in the Market can then be tuned.
Alternatively, if the precise Quantity Sold of Competitor Products is not known, then the Product Elasticity may be know. Product Elasticity is often calculated for eCommerce Products where a Competitor publishes their Prices but not how much Quantity they've sold. Instead, the Competitor will publish the fact that their Product is Out-of-Stock. When these Out-of-Stock events occur, the user can calculate how much additional Quantity they've sold themselves. This Product Elasticity can then be incorporated into a Tuning Loop.
The Feature Differentiation nodes, Product Generation node, and Simulate Market node can be placed between a 'Tuning Loop Start' node and a 'Tuning Loop End' node. A 'Quantity Error' representing the difference between the actual Quantity Sold and the simulated Quantity Sold can be calculated by the Simulate Market node. The Tuning Loop will then automatically adjust the Input Parameters to minimize the 'Quantity Error' and improve the accuracy of the predictions.
The Tuning Loop may also be used to optimize the sales of Products. For example, a Tuning Loop might be set up to find the Profit Maximizing Price (or Revenue Maximizing Price) of a Product. The Objective Function can be customized to suit the other goals of the user. For example, the user may wish to find a Profit Maximizing Price that does not decrease the amount of Quantity Sold.
There are several 'Optimization Methods' available in the Tuning Loop (the Optimization Method is set in the 'Tuning Loop Start' node):
● Parameter Funnel: (default) The Parameter Funnel algorithm will start by alternatively raising and lowering the Input Parameters by the 'Starting Adjustment Percentage'. For example, if the 'Starting Adjustment Percentage' is 20% then the Search Strategy will try raising and lowering each Input Parameter by 20% (relative to their Maximum Value and Minimum Value). The Input Parameters than improve the Objective Function will be kept. When no more improvement is possible, the Parameter Funnel algorithm will halve the 'Adjustment Percentage' and continue, so that now each Input Parameter will be altered by plus/minus 10%. Halving the 'Adjustment Percentage' is the same as incrementing the 'Tuning Adjustment Depth'. Reducing the 'Adjustment Percentage' from 20% to 10% will increase the 'Adjustment Depth' from 1 to 2. Tuning will stop after a user-defined 'Number of Tuning Adjustment' improvements, or after the Adjustment Depth has reached the 'Maximum Depth of Tuning Adjustments'.
● Brute Force: The Brute Force algorithm will test all possible combinations of Input Parameters and return the overall best results. The Brute Force algorithm will initially set the Input Parameter to be equal to the Start Value, then increment by Step Size until the Stop Value is reached.
● Hill Climb: The Hill Climb algorithm will initially set each Input Parameter to a random value between the Start Value and the Stop Value. The Hill Climb algorithm will then test each of the direct neighbors by incrementing and decrementing the Input Parameter by the Step Size. The best combination among the each of the neighbors then becomes the new start point for the next iteration. If no neighbor improves the Objective Function the Hill Climb algorithm terminates.
The specific role of the Tuning Loop End node is to determine whether the adjusted Input Parameters improves the Objective Function. The Objective Function is a Flow Variable that has been calculated by the user within the Tuning Loop and represents the tuning goal. For example, if the goal of the Tuning Loop is to improve the accuracy of the Market Simulation, then the Objective Function would be set to minimize the (weighted) 'Quantity Error' of all Products in the Market. Alternatively, if the goal of the Tuning Loop is to maximize the Profit of all Products sold by the Store, then the Objective Function would be set to sum the Product Profits then find the maximum.
See Also: 'Parameter Optimization Loop End' node in the 'KNIME Optimization Extension'.
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.
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 email@example.com, follow @NodePit on Twitter, or chat on Gitter!
Please note that this is only about NodePit. We do not provide general support for KNIME — please use the KNIME forums instead.