Examples of System Dynamics Modeling
Mike Bull
System dynamics models are different from accounting, spreadsheet, statistical or optimization models commonly used in business and government. They are descriptive, structural models often used for business, economic and political decision-making. The modeling languages used for system dynamics are specifically designed to facilitate capturing a system's structure, including interrelationships, feedback and delays. Spreadsheet or optimization models are not well suited to handle dynamic behavior, e.g., feedback, delays and non-linearity.
System dynamics models are appropriate in situations where interrelationships and behavioral dynamics are considered important. They are causal-based models, with an emphasis on the behavior of systems. The idea is to model systems as we think they will behave or as we’ve seen them behave, and then learn from it by simulating our actions under different conditions over some time period past or future. The models are usually run to gain insight for problem solving, rather than to replicate accounting accuracy, provide point forecasts or produce optimal solutions based on an objective function. It is possible to do risk or uncertainty analysis by re-running the model and varying inputs. Vensim, another system dynamics modeling package, has built-in risk analysis and goal-seeking capability.
Following a couple of examples of the use a system dynamic modeling. The first is a simple illustration of how a model is constructed using a graphically based simulation language, e.g., iThink from High Performance Systems. A simple example of using iThink is the construction of a reservoir or “bathtub” model. In the graphical interface stocks or levels are represented by rectangle (see tub below), the than flows are represented with types that have valves to control them (see in flow rate and spill rate below), general-purpose auxiliary variables are represented by circles (see capacity below), and information flow is represented by a directional arrow (see information flow below).



information flow
We can connect these icons together to form a simple model. In the interface the parameter values are inserted by double-clicking on each specific variable icon. They can be fixed values, lookup tables, or algebraic expressions, much like spreadsheet models. In behind any stock variable there is a requirement to specify its initial value - here we'll have the tub begin empty. The initial flow rate is set to five with a capacity of 50. The spill rate is determined the inside the model by subtracting the capacity from the contents of the tub.

The
model results can be obtained in either tabular are chart form. For this simple example the capacity of the
tub is charted over 13 periods. The
chart below shows the amount of water in the tub over time. The tub is empty at
the beginning of the run and begins to fill at a rate of 5 gallons per minute. You
can see that when the water reaches the capacity of the tub (50 gallons), it
levels out as the spill rate equilibrates with the inflow rate. . There is an
example of feedback in this simple model, i.e., a circular chain of connections
between model variables. Here the path goes from the tub level to the spill
rate and then back to the tub level from the spill rate. So we have a working,
descriptive model, but it’s too simple to gain much insight from it.
Output

It's more interesting to illustrate a simple model which has dynamic behavior and is subject to user control. In the tub example the user could control the in-flow by adjusting the inflow rate. In iThink this can be done by pausing the model run, double-clicking variable icon “inflow rate”, entering the new value, and resuming the simulation.
One could imagine a slightly more complex system which involved operating both cold and hot water taps to control the water temperature in the tub. One would have to expand the model to specify the physical components that determine the cooling rate of the water, e.g., this surface area, room temperature, and the evaporation rate. Then the desired temperature (goal) and the decision rule for adding hot water to compensate for the cooling would be added.
Alternatively the model could be used as a simulator where a user had dynamic control over hot water inflows. Using a chart one could visually monitor the temperature of the water as it gradually declined towards room temperature. Then the user could add hot water periodically to raise the temperature back to the goal. One can easily imagine this to be analogous to controlling a physical system. It does ignore some of the complexity of the real system, e.g., the conduction of heat through the walls and bottom of the tub. However, one could learn quite a bit about the interaction among the air temperature, water temperature, and the control procedure (how often to add water, how much is added and whether some water is drained to avoid spill). In fact engineers and economists called this method “control theory.”
In system dynamics textbooks one of the most popular introductory models presented is a predator-prey model. This describes the interaction between a predator population and a prey population in a fixed habitat, e.g., deer and cougars. Below is the flow diagram of one such model from John Sterman of MIT, the Kaibab Plateau model (class handout 1991). This model has been used to explain the effect on deer populations when predators were removed from their habitat.
You might notice an additional variable type in this model, e.g., Deer Killed Per Predator. The squiggly line in the circle indicates that this is a table lookup variable and not a single value. You can see two stock variables, i.e., deer population and food. There are four rate variables, Deer Net Increase Rate, Deer Predation Rate, Food Regeneration Rate), and Food Consumption Rate. All the other variables are either inputs or calculated as intermediate values.

Following is a key output for the model when predators are eliminated at the beginning of the simulation (see the line labeled “1” in the chart below). The deer exhibit an overshoot and collapse in their population. Control over the number of remaining predators or the size of the deer population can change this outcome. That's the learning exercise for the students – to do the experiments with the model just like wildlife biologists might. It's interesting to note that even in this case the deer population was in equilibrium at the beginning of the simulation at around 4000 (see the flat line labeled “2” which is the stable deer population if the predators aren’t eliminated). At the end of the simulation the deer population is beginning to oscillate around a new equilibrium of 25,000. The difference? The first equilibrium is a smaller, healthy deer herd, with plenty of food. The latter is a larger, but starving population.

Students can manipulate this model to try to come up with a better outcome. For example the deer population could be controlled by allowing deer hunting. In iThink this can be done by connecting a new rate variable “Deer Killed by Hunters” to “Deer Population” and setting the annual harvest level. The student is asked to test alternative control rules and then evaluate the outcome. Once a suitable outcome has been found, one could then attempt to add more realism to the model, e.g., more detail on the regeneration of the food stock or the reproductive cycle of the predators. One could also imagine the effect of periodic adverse weather years that could disrupt population recovery or survival.
Following are links for downloading two models on this subject. First is a Kaibab Plateau model based on John Sterman’s original model – the only changes were to use long variable names instead of acronyms and to make initial stocks explicit variables in the model diagram. {Link to DEER.STM}.
The second is an Excel model of the Kaibab Plateau developed by Andrew Ford of WSU to illustrate what it would take to create a similar model in a spreadsheet program..{Link to DEER.XLS}