Kardi Teknomo
Kardi Teknomo Kardi Teknomo Kardi Teknomo


Visit Tutorials below:
Adaptive Learning from Histogram
Adjacency matrix
Analytic Hierarchy Process (AHP)
ArcGIS tutorial
Arithmetic Mean
Bayes Theorem
Bootstrap Sampling
Bray Curtis Distance
Break Even Point
Chebyshev Distance
City Block Distance
Conditional Probability
Complex Number
Continued Fraction
Data Analysis from Questionnaire
Data Revival from Statistics
Decimal to Rational
Decision tree
Difference equations
Digital Root
Discriminant analysis
Eigen Value using Excel
Euclidean Distance
Euler Integration
Euler Number
Excel Iteration
Excel Macro
Excel Tutorial
Expectation Maximization (EM) Algorithm
Factorial Function
Feasibility Study
Financial Analysis
Financial Education
Gaussian Mixture Model
Generalized Inverse
Generalized Mean
Geometric Mean
Ginger Bread Man and Chaos
Graph Theory
Growth Model
Hamming Distance
Harmonic Mean
Hierarchical Clustering
Independent Events
Incident matrix
Jaccard Coefficient
Kernel basis function
Kernel Regression
k-Means clustering
K Nearest Neighbor
LAN Connections Switch
Learning from data
Lehmer Mean
Linear Algebra
Logarithm Rules
Mahalanobis Distance
Market Basket Analysis
Mean Absolute Deviation
Mean and Average
Mean, median, mode
Minkowski Distance
Minkowski Mean
Monte Carlo Simulation
Multi Agent System
Maximum Likelihood
Multicriteria decision making
Mutivariate Distance
Neural Network
Newton Raphson
Non-Linear Transformation
Normalization Index
Normalized Rank
Ordinary Differential Equation
Page Rank
Power rules
Prime Factor
Prime Number
Q Learning
Quadratic Function
Queueing Theory
Rank Reversal
Recursive Statistics
Regression Model
Reinforcement Learning
Root of Polynomial
Scenario Analysis
Sierpinski gasket
Sieve of Erastosthenes
Similarity and Distance
Solving System Equation
Standard deviation
String Distance
Summation Tricks
Support Vector Machines
System dynamic
Time Average
Tower of Hanoi
Vedic Square
Visual Basic (VB) tutorial
What If Analysis

System Dynamics Tutorial

By Kardi Teknomo, PhD.

Share this: Google+

This tutorial is intended as an introduction to System Dynamics which is also often called System Thinking using Microsoft Excel or any Spreadsheet software. System Dynamics was introdued by Prof. Jay W. Forrester from MIT in 1960s and have been used for many applications from industrial to management, history to music. Throughout this simple tutorial I use a very simple demographic model of population to demonstrate system dynamic. The MS Excel file companion of this tutorial can be downloaded here.


By the end of this tutorial you will learn about

What is System dynamic?

Level, rate and constant

Causal loop diagram (CLD)

Positive and Negative Feedback Loop

Stock and Flow diagram (SFD)



Why do I use demographic model as main examples in this tutorial?

  1. Population is the work force for many other models. For example, the energy demand for electricity is depending on population. Traffic and public transport users are a function of population. Economic and demand for product is related to population. Benefit of facilities in project evaluation is also depending on population. Tax system, retirement system and spread of disease are also related to population. Projection of population is one of the most important aspects in many fields.
  2. Data for population are publicly available from many statistical office or local government. These data are useful if you want to validate your model.
  3. In most of the cases, the model can be assumed to be discrete in nature, thus discussion about population is easy to understand for common people.



What is System Dynamics?

System dynamics is dealing with the value of states in a system over time. For example, you think a city as a system and we simplify the states inside the city only to consider the population of the city over time.


Level, Rate, and Constant

Current state or condition in the system is called Level in System dynamics terminology. In our example the level variable represents the number of population in the city at year and we give notation . Suppose our city is located in a remote area that nobody is going out or going into the city. If we know the number of population in the city this year, we can guess what will be the population of the city next year. To do that, we need to know the birth rate and death rate. Birth rate is defined as the number of birth divided by the total population in the city .

Death rate is simply counting the number of people who die in the city divided by the total population in the city .

Both birth rate and death rate are measured in a single year , but in here we assumed to be constant. Then we can say that the number of population in the city next year will be



The number of Birth and the number of Death are called Rates variables in System Dynamics terminology, while birth rate and death rate are called Constants . [Be careful with the name here that the birth rate and death rate are constants, not Rates variable]. Rates variable measures change of the level variable between two consecutive times. Thus, rate variable can be computed from the levels. In system dynamic, level variable can only be changed through rate variable. Rate variable cannot change another rate variable directly without level variable.


Equation (1) above can be shown graphically into two types of diagrams. The first diagram is called Causal Diagram and the second diagram is called Stock and Flow Diagram .


Causal Loop Diagram (CLD)

Causal loop diagram is only showing the causal relationship of the level and rates in a system. Only in a very special case the constant will also be shown in causal loop diagram (for example to emphasize the goal of the system).

The causal loop diagram above can be read as follow. The number of baby birth in the city causes increase in population and higher number of population causes higher number of birth. This part of loop is called positive feedback loop as shown in red. The number of people who die in the city is a function of population. Higher the number of population, higher the number of death people. However, higher the numbers of death peoples in the city will effect into reduce the number of population. This part of loop is called negative feedback loop.


Sign of Arrow Head

In causal loop diagram, which one is the rate and which one is the level is not clear. We think them as factors that influence each other dynamically. Notice that the influence can be positive or negative as shown in the sign near the arrow head. Positive sign indicate that higher the cause will produce higher effect, lower the cause will also lower the effect.

In contrast, negative sign in the arrow head means that higher the cause will produce lower effect, and lower the cause will create higher effect.


Positive and Negative Feedback Loop

When several arrows in the causal diagram return to one factor, it created a closing path or a loop. Since the relationship is done dynamically, it gives some feedback to the original factor, thus we call it a feedback loop . There are two kinds of feedback loops: positive feedback loop and negative feedback loop. You can easily distinguish positive and negative feedback loop from the multiplication of all arrow signs in the loop.

For example in the causal diagram below we have two feedback loops. Birth and Population make one feedback loop while Death and Population make the second feedback loop. Look at the sign of the all arrows in the loop and multiply them, then you will get the sign of the loop.

Remember that multiplication of two signs has the following rules:


Once you know the sign of the feedback loop, you can guess the qualitative behavior of that loop. Positive feedback loop tend to grow or to decline without bound. Negative feedback loop tend to adjust itself (sometimes oscillate) to some intended value. Positive feedback loop make the system unstable but negative feedback loop tend to stabilize the system. Positive feedback loop is the locomotive that makes the system move, while negative feedback loop is the control or to steer the locomotive. Positive feedback loop will diverge and move away from the goal while negative feedback loop will converge and guide to the goal. The goal itself in dynamical system may represent either the equilibrium value or saddle point. [Read more about equilibrium of dynamical system here]


Stock and Flow Diagram (SFD)

The second way to represent population dynamic of equation (1) is through Stock and Flow Diagram (SFD) proposed by Jay W. Forrester in 1971. I put again equation (1) in here for clarity.



The flow diagram corresponding to the equation is illustrated below.

Stock and flow diagram shows the causal relationship of the level and rates and constants in a system. In contrast to causal diagram that does not distinguish rate from level and constant, stock and flow diagram distinguish the three variables. Sometimes, it also distinguish what kind of flow is moving in the diagram (whether it is physical material, goods, equipment, people, concrete things or abstract things such as information, decision, money, order etc.) in the arrow link. In this tutorial, I don't distinguish these types of flows for simplicity. Level variable is represented by rectangle, Rate variable is using valve symbol, Constant and auxiliary variable are represented by a point or just name of the constant. Cloud symbols represent respectively source and sink, where the flow originated and vanished.


In this example, the flow is that moving in the diagram number of people in the city. Rate variable Birth ( ) is influenced by a constant name birth rate ( ) and the level variable name Population ( ). Since the rate variable is pointing to the level, the sign is positive. Rate variable name Death ( ) is influenced by a constant name death rate ( ) and the level variable name Population ( ) as indicated by the black arrow. Because the rate variable Death is pointing out of the level, the sign is negative. These sign related to the arrow is only working for rate variables. The two black arrows pointing out of the level variable have positive sign because they are not rate variables and because higher population will affect the rate variables (Birth and Death) to be higher and lower population will also affect the rate variables to be lower [just in case you forget, see again: sign of arrow head].


Sometimes, you want to related system dynamic with dynamical system. Order of the system is determined by the number of level variable. If there is one level variable, it is called first order system. If there are two level variables, it is called second order system, and so on.


Numerical Example

To give you more understanding, here is simple numerical example to compute the equation (1). I put again equation (1) in here for clarity.



For example, the birth rate is known to be 8% and death rate is 2% and at time 0 (i.e. some reference year), the population is 200 thousand. We can use MS excel to compute this system dynamic. The MS Excel file companion of this tutorial can be downloaded here



The result shows that the population may reach 500 thousand in 16 years if the rate is constant. Graphical results of Level variable and Rate variables are plotted below.


Using the MS Excel companion of this tutorial, you can try some scenarios. What will happen if the constant birth rate is the same as the death rate? What will happen if the death rate is higher than the birth rate? How rapid is the decline?

Suppose you know the real population in 20 years periods, can you determine what are the constant birth rate and death rate? This last question is dealing with calibration of the model using real data. (Clue: use Solver in MS Excel)

Rate this tutorial

See Also: Dynamical System tutorial

This tutorial is copyrighted.

Preferable reference for this tutorial is

Teknomo, Kardi. System Dynamics Tutorials. http:\\people.revoledu.com\kardi\ tutorial\SystemDynamic\

Share and save this tutorial
Add to: Del.icio.us  Add to: Digg  Add to: StumbleUpon   Add to: Reddit   Add to: Slashdot   Add to: Technorati   Add to: Netscape   Add to: Newsvine   Add to: Mr. Wong Add to: Webnews Add to: Folkd Add to: Yigg Add to: Linkarena Add to: Simpy Add to: Furl Add to: Yahoo Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Blinkbits Add to: Ma.Gnolia Information


© 2007 Kardi Teknomo. All Rights Reserved.
Designed by CNV Media