If you do not have the software you can access it on the InsightMaker website
System Dynamics Modelling Tutorial
The work that you will do in this tutorial extends the work we have done with the causal loop diagramming. CLDs are a powerful tool for understanding the dynamics of organisational processes and interactions. They also provide insights into the policy levers that can be used in change programmes.
System Dynamics modelling takes this process a step further, using Stock-Flow-Rate to simulate the structure of the CLD. The simulation quantifies the dynamics of the CLD.
The simulation model then allows managers to test potential scenarios for change processes. This is a powerful tool as it allows a “flight simulator” environment in which to test, and possibly crash, ideas without destroying the organisation.
This brief tutorial is designed to give you a brief overview of the technical aspects of System Dynamics modelling. The package we are using is called Insightmaker. There are a number of others available in the market: Vensim, ithink, PowerSim are three of the better known. All of the packages use the same iconography: stocks, flows and rates.
This exercise has two aims:
- To familiarise you with the mechanics of System Dynamics modelling using Insightmaker and building a model of the Rookies and Pros archetype.
- To familiarise you with the way in which a System Dynamics model can be used as a scenario-planning tool.
Rookies and Pros
The terms rookies and pros originally come from the American baseball, however the dynamic applies to business, where even the most senior CEO coming into a new job spends some time as a relatively unproductive rookie.
A Rookie is a newcomer, possibly quite talented, but new to playing in a major-league or working in a new job in a new organisation. It will take the Rookie some time to function as a Pro. During that time, the existing Pros will need to spend some time getting the Rookie up to speed. The causal diagram of this archetype shows the interconnections.
Starting with Work to be Done, we see that increases in work (and their consequent flow on effects) lead to an increase in the number of Quits. This leads to a reduction in the number of Pros and an increase in the work that needs to be done by the remaining Pros. This can sometimes set up a vicious circle. The Quits are replaced by Hires who become Rookies who eventually become Pros and help share the workload. However, there is a delay as the Rookies graduate to become Pros. It is during this period that they are not particularly productive and serve to increase the workload for the Pros who must train them. The problem is that this sets up a vicious cycle of quits and increasing workloads.
Building the Rockies and Pros model
- Open the Insightmaker software and clear the Demo model. Your modelling desktop will appear.
- Click Add Primitive and this menu will drop down.
- Click on the Add Stock and a New Stock will appear.
- Double-click on New Stock and type Rookies
- Create another Stock called Pros.
We are now going to create a flow between these two stocks.
- Hold your cursor over the Rookies stock and a directional arrow will appear.
- Drag the arrow into the Pros stock to connect the two stocks with the flow.
- Click on the flow and name it Up to speed.
- Create an outflow from Pros called Quits. (Hover the cursor over the stock and drag the arrow out.)
- Label the outflow Quits
We now want to create an inflow into the Rookies stock called Hires.
- Create an outflow from Rookies by dragging the directional arrow to the left.
- Highlight the flow.
- Collect the double arrow next to Links in the menu.This will reverse the direction of the flow.
- Name the inflow Hires.
We have now created the fundamental structure for the Rookies and Pros model. We need to make one small but important adjustment to these two stocks.
Click on the Rookies stock to open the dialogue box
Notice that in the Configuration panel Allow Negatives is set at Yes. This means that the stock can record negative values, rather like a bank account that goes into overdraft. In this case however, we cannot have a negative number of Rookies. So we must change this setting.
Click on the = sign in the top left of Rookies to open the Stock dialogue box.
- Click Restrict this stock to positive values
- Repeat this process for Pros.
In all the stocks we are using in the simulation you need to set Restrict this stock to positive values.
We can now put in the dynamics that drive the behaviour of the structure.
The first dynamic is that Quits drive Hires. So we need to establish a link between these two variables. Links send information. Creating a link between Quits and Hires means that information about the number of people who have quit is sent to the people who are responsible for doing the hires.
- Click on the arrow in Quits and drag it to Hires.
You will notice that the connection turns green for a moment. To make the connection visible
- Hold down the shift key and drag the green line upwards.
We have now built the basic structure of the hiring process. New staff are hired when the Pros quit. The Hires become Rookies and with experience, they become Pros.
The dotted green line is an information flow which sends information about the number of quits to the beat of the hires. We have established that structure now we need to put the information in.
- Move your cursor over the inflow Hires
- Click on the arrow that appears at the beginning of the inflow.
This dialogue box will appear:
- Click on Quits and then Apply.
The software will now transfer information about the number of Quits to Hires.
We can now put some numbers into the model to make it dynamic. Hover the cursor over the stock Rookies
Click on the = sign in the top left-hand corner. This opens the Equations Editor.
In this case, were going to leave the initial number of Rookies at zero. This is because at the beginning of the simulation period, we have no Rookies in the system.
- Click Apply
Click the stock Pros and set the initial value at 6.
- This means we have 6 Pros working for us at the beginning of the simulation.
We can now sit the equations for the Up to Speed flow between Rookies and Pros. There are two elements to this equation. The first is that all of the Rookies will become Pros. The second is that there is a delay of two months while they get up to speed. So there will be two elements to the equation.
- Hover the mouse over the flow Up to Speed.
- Open the Equation Editor by clicking the =
Our equation is going to have a delay function built into it because it takes time for a rookie to turn into a pro.
and we can search the Functions Dialogue boxes to find the delay function.
Under Historical Functions in the dialogue box
- Select Delay
This delay equation will appear in the equation box
- Highlight Primitive and enter Rookies
- Enter 3 for Delay Length
- Delete Default Value
We don’t need a Default Value because the stock is a non-negative one.
This means that any Rookies that come into the system will get up to speed and become Pros in three months.
All we need to do now is to put a formula into the Quits flow.
To begin with we will have no quits at all, just a team of happy campers. Is
- Click the Quits Equation Editor.
- Set Quits at zero
Now we can put in the other element of the model: the work that needs to be done.
- Create this stock flow structure.
- Leave Work set at its default setting of zero.
- Click on the stock Work to open the Work dialogue box.
- Change Allow Negatives to No.
- Link Pros with Work Done. (This allows us to link the number of Pros to the Work. In real life, there would be some “productivity factor” but we will have a simple one-to-one relationship: one Pro does one month’s worth of work)
- Open the Equation Editor for Work Done and set its value at Pros. (This equation establishes the one-to-one productivity rate.)
- Open the Equation Editor for Work In
- Go to General Functions and set its value at Pulse(1, 42, 0, -1).
This means that at the beginning of the project (Month 1), 42 units of work, in the form of a new project, come in.
We are now ready to run our first simulation.
- Click on the Simulate button in the Menu bar.
The following dialogue box will appear:
Notice that the work is all done by Month 8. It arrived in Month 1, it began in Month 2 and the six Pros finished the 42 units of work by Month 8. No panics, no rushes, a project managers dream.
We can now model some of the realities of project management. And begin the first stage of scenario planning. In this case, we wish to test the scenario of a one-off mass resignation occurring and what impact it will have on the workload and the project completion time.
- Click the Quits Equation Editor.
- Go to General Functions tab.
- Select the Pulse function. (This function allows us to pulse a one-off numerical value into the model.)
- Enter the equation Pulse(6, 4, 0, -1)
This means the resignations occur in Month 6 (Time), there are 4 of them (Height), they occur only once (Width=0), and they are not repeated (non-repeat is a negative number).
- Press Simulate
- The following output graph will appear
Notice that work has now slowed in the project has taken 10 months.
- Click Configure in the upper right hand corner of the graph pad
- Click the downwards arrow in the Data dialogue box.
- Select Rookies and Pros
- Click Apply
This graph shows that when the Quits occur, Work slows because Pros have declined and the rookies are not yet up to speed
Notice that the Quits occur in Months 6 and that the six rookies appear in Month 7. They then spend three months and training before they become Pros. So you have three months only two Pros available. In week 10, the Rookies are up to speed and they become Pros.
Notice that the project has now blown out to 11 months. Also notice that things flattened out a bit around about Months 7 because of those mass resignations.
There is an added complication in that the arrival of the Rookies constitutes an increase in the workload for the Pros, as they are responsible for training the Rookies.
Create a Link between Rookies and Work In.
Set the equation in Pulse(1, 42, 0, -1) + [Rookies]
This means that, in addition to the original work of the project, each new Rookie effectively creates one person-month’s worth of work for the Pros.
- Run the Simulation
The time spent on training the Rookies has amplified the impact of the mass resignations. The project has now run out to the 14-month mark. This is because there are only two pros to train the four Rockies
Now to make things more interesting, the client has decided to introduce some project changes.
- Create a variable from Add Primitive called Project Changes.
- The link it to Work In.
- Open Project Changes
- Select General Functions
- Enter the equation Pulse(12, 8, 0, -1) by clicking on the = sign in Project Changes
- Add that to the Work In inflow.
This means that in Month 12, eight person-months of work was added to the project The equation for work in is now: Pulse(1, 42, 0, -1) + [Rookies] +[Project Changes]
Your model should now look like this:
Run the simulation.
- Click on Configure and remove Rookies and Pros from the graph. This will make the graph easier to read.
The project has now blown up to 15 months
The project changes and the blowout on the completion date have implications for staffing. Five of the Pros had been planning to change jobs at the completion of the project. When the project changes are announced, they decided to bring their departure date forward. To model this:
Create this structure.
The modelling software has a powerful tool for modelling the behaviour of the five Pros who decide to leave. It is called a “logic statement” or an “If-Then-Else” statement. In this case, the logic of the two Pros is “if the project changes look big enough to delay our planned departure, then we’ll leave now, otherwise we’ll stay.”
- Open the equation editor for the Work Related Quits variable.
- Scroll to General.
- Select If Then Else.
- Enter the equation: IfThenElse([Project Changes]>6, 5, 0)
This means that if the project changes are more than 6 person-months of work, five Pros will leave (Quits =5). If they are not greater than 6, the Pros will not leave (Quits =0)
Run this simulation.
The Project Changes have had a three-fold effect. Firstly, they have increased the work to be done and pushed out the project completion time to 1 at6 months; secondly they have slowed the rate of work as a result of the departure of the Pros and thirdly have also increased the work to be done as a result of the training that the new Rookies who were appointed.
The reason for building simulation models is to test possible scenarios i.e. what happens if the changes to the project are greater than in the original simulation? We can look at the impact of these changes by modifying the variables in the model. We did this earlier in the model when we simulated the impact of a mass resignation by changing the variables in the Quits equation.
You can change the values and the variables.
For instance, it is possible to see the effect of ensuring that there are more Pros on board at the beginning of the project.
- Click open the Pros stock and set the initial value at 7 and simulate and then at 8 and simulate.
Using a simulation allows manages to find some of their decisions. Clearly, there is a significant difference between having seven Problems and having eight Pros.
Notice that there is a blip in the work at month 11. This is the impact of the changes that the client has required. Notice that the impact of these changes is far less if the project has been completed.
As you develop this model, you would include costings for the increased number of Pros and the cost of hiring and training Rookies, this would allow you to understand whether it is better to bring staff on before the project starts or during the project and what the costs and consequences of both would be.
Understanding these costings would allow you to including your initial contract penalty clauses full project changes.
Models like this are infinitely scalable and you can include whatever variables you wish, but particularly it is important to include the variables that you can actually manage.
You can save your model to the InsightMaker website. Your model will be visible to all other InsightMaker users.