|Juergen Stro... 28 posts||
In an MS Excel inventory game the users see the initial values of the stocks at the beginning of the decision period; they decide upon their order quantity and then they forward the simulation. Once this is done (by pressing a button), the flows and auxiliaries are calculated and based on these information the level values are updated and shown. The stock value at the beginning of the next period is then set equal to the value at the end of the previous period and shown to the user. I know that this belongs to the discrete world and is not really compatible with the continuous system dynamics world. Nevertheless, I would like my simulator to behave as close to this logic as possible.
In Forio (with the setting "execute immediately = true") as well as in Vensim, all (preliminary) values for an actual decision period are shown based on the assumption that the decision variables do not change. If you change a decision variable and advance the simulation, the values for the flows are updated, a new line is added to a table (if you use this tool in the UI), and this line is filled with new values based on the assumption that the decision for this period remains unchanged. Students tell me that they find this behavior somewhat strange.
Therefore, I decided to experiment with the "execute immediately = false" option, which seems to produce a behavior closer to what I would like to see. However, when using this option, the set decision command does not work like I want it to work. Having three simulation games that are accessible from one UI with the same underlying model, I want to use different parameter sets and a set these parameters as button actions. This has however no effect, when execute immediately = false. Only when you advance the simulation at least once, you get the correct parameter values displayed and used in the simulation.
It would be great if you could help me.
|Michael Bean Administrator 65 posts||
You are close to the answer with your current approach of using:
M ExecuteDecisionImmediately = TRUE
in your model.
As I interpret it, your only problem is that the variable in your table gets updated immediately and then, after a student advances, the student sees the changed variable for both the previous period (when the decision was changed) and for the new current period. Thus the decision looks like it has been unchanged since the current period.
The way around this is to add a new variable that you use for display purposes in your user interface that is a delayed version of the decision variable. Take this model as an example:
M ExecuteDecisionImmediately = TRUE
D My Decision = 0
V My Decision Reported in the Interface = PREVIOUS(My Decision)
Then, instead of showing "My Decision" in your user interface, show the variable "My Decision Reported in the Interface"
You can accomplish the same thing in Vensim by using either a DELAY function or a stock.
|Billy Schoen... Administrator 255 posts||
A second way to do this, which I find to be a bit easier then what Michael described above is to:
You can apply execute decision immediately only to the stock initialization decisions, and set to to false for the model as a whole. What this will do is to allow you to update the initial value of the stock, without getting the other undesirable behaviors of execute decision immediately.
Here is an example simulation that I built: http://forio.com/simulate/billy/initial-value-of-stock/copy/
Please feel free to copy it.
Please log in to reply to topics.