next up previous
Next: Design Canvas Up: Components of the Program Previous: Simulation time

Design Icons

255

These are the ``nuts and bolts'' of any system dynamics program. The number of icons will grow over time, but the key ones are implemented now:

Godley Table
257. This is the fundamental element of Minsky that is not found (yet) in any other system dynamics program.

Clicking on it and placing the resulting Bank Icon on the Canvas enters a bank into your model:

259

Double-click on the Bank Icon (or right-click and choose ``Open Godley Table'' from the menu) and you get a double-entry bookkeeping table we call a Godley Table:

260

Use this table to enter the bank accounts and financial flows in your model. We discuss this later in the Tutorial (Monetary).

Variable
263. This creates an entity whose value changes as a function of time and its relationship with other entities in your model. Click on it and a variable definition window will appear:

265

The only essential step here is providing a name for the Variable. You can also enter a value for it (and a rotation in degrees), but these can be omitted. In a dynamic model, the value will be generated by the model itself.

When you click on OK (or press Enter), the newly named variable will appear in the top left hand corner of the Canvas. Move the mouse cursor to where you want to place the variable on the Canvas, click, and it will be placed in that location.

Constant
266 creates an entity whose value is unaffected by the simulation or other entities in the model--but it can be varied during a simulation run by the user. Click on it and a constant definition window will appear:

268

The only essential elements here are the constant's name, and its value. You can also specify its rotation on the Canvas in degrees, and its parameters if you make the slider active. This lets you vary a parameter while a simulation is running--which is useful if you wish to explore a range of policy options while a model is running.

A constant is just a type of variable, which also include parameters (named constants), flow variables, stock variables and integration variables.

Time
269 embeds a reference to the simulation time on the Canvas. This is not necessary in most simulations, but can be useful if you want to make a time-dependent process explicit, or control the appearance of a graph.

For example, by default a graph displays the simulation time on the horizontal axis, so that cycles get compressed as a simulation runs for a substantial period:

270

If a Time block is added to the marker for the x-axis range, you can control the number of years that are displayed. This graph is set up to show a ten year range of the model only:

271

Integration
272. This inserts a variable whose value depends on the integral of other variables in the system. This is the essential element for defining a dynamic model. Click on it and the following entity will appear at the top left hand side of the canvas (and move with your mouse until you click to place it somewhere:

274

``int'' is short for ``integrated variable'', and the first thing you should do after creating one is give it a name. Double-click on the ``int'', or right click and choose Edit. This will bring up the following menu:

275

Change the name to something appropriate, and give it an initial value. For example, if you were building a model that included America's population, you would enter the following:

276

The integrated variable block would now look like this:

277

To model population, you need to include a growth rate. According to Wikipedia, the current US population growth rate is 0.97 percent per annum. Expressed as an equation, this says that the annual change in population, divided by its current level, equals 0.0097:


\begin{displaymath}
\frac{1}{\mathrm{Population}(t)}\cdot\left(\frac{d}{dt}\mathrm{Population}(t)\right)=0.0097
\end{displaymath}

To express this as an integral equation, firstly we multiply both sides of this equation by Population to get:


\begin{displaymath}
\frac{d}{dt}\mathrm{Population}(t)=0.0097\cdot\mathrm{Population}(t)
\end{displaymath}

Then we integrate both sides to get an equation that estimates what the population will be T years into the future as:


\begin{displaymath}
\mathrm{Population}(T)=315+\int_0^T 0.0097\cdot\mathrm{Population}(t)
dt
\end{displaymath}

Here, 315 (million) equals the current population of the USA, the year zero is today, and $T$ is some number of years from today. The same equation done as a flowchart looks like this:

295

Or you can make it look more like the mathematical equation by right-clicking on ``Population'' and choosing ``Copy Var''. Then you will get another copy of the Population variable, and you can wire up the equation this way:

296

Either method can be used. I prefer the latter because it's neater, and it emphasizes the link between the simple formula for a percentage rate of change and a differential equation.

Plus, Minus, Multiply and Divide blocks
297. These execute the stated binary mathematical operations. Each input can take multiple wires as well--so that to add five numbers together, you can wire 1 input to one port on the Add block, and the other four to the other port.

Power and Logarithm
These are binary operations (taking two arguments). In the case of the power operation, the exponent is the top port, and the argument to be raised to that exponent is the bottom port. This is indicated by the $x$ and $y$ labels on the ports. In the case of logarithm, the bottom port (labelled $b$) is the base of the logarithm.

Other functions
These are a fairly standard complement of mathematical functions.

Data block
A data block interpolates a sequence of empirical values.

Plot widget
Add plots to the canvas.

Notes
Add textual annotations


next up previous
Next: Design Canvas Up: Components of the Program Previous: Simulation time
Russell Standish 2014-11-16