The last section on causal loop diagrams showed that to go beyond simply analyzing and visualizing the feedback structure of a system, a more powerful technique is needed:

- a technique that visually distinguishes between the parts of the system and what causes them to change

- a technique that allows for precise – quantitative – specification of all the system’s parts and their interrelation

- a technique that can provide a basis for simulating the behavior of the system over time

In short: we need a technique that enables us to create a business prototype of the system that will allow us to explore its behavior and to test the effect of changes to the system’s structure and the policies governing its behavior. *Stock and flow diagrams*, along with the mathematical expressions that specify each construct, provide such a technique.

# What exactly are stock and flow diagrams?

Stock and flow diagrams provide a richer visual language than causal loop diagrams, we distinguish between six main kinds of elements: *stocks*, *flows*, *converters, connectors, sources *and* sinks. *These elements are explained below and visualized in the following diagram:

**Stocks.** A stock represent a part of a system whose value at any given instant in time depends on the systems past behavior. The value of the stocks at a particular instant in time cannot simply be determined by measuring the value of the other parts of the system at that instant in time – the only way you can calculate it is by measuring how it changes at every instant and adding up all these changes.

This sounds more complicated than it is, so lets look at a simple example: driving a car along the motorway. Say you start driving at 8:00 AM and you want to know how far you have driven at 10:00 AM. We know that the only factor that determines this is the speed you were driving at. But it is not enough to just know your current speed at 10:00 AM, you actually need to know exactly how fast you were driving at every instant in time between 8:00 AM and 10:00 AM to calculate this. In this example, the distance you have driven is a stock – if you look at the dashboard in your car, you will most likely find a representation of this stock on your car’s dashboard: the mileage counter (odometer). On diagrams, stocks are represented by rectangles.

**Flows. **Flows represent the rate at which the stock is changing at any given instant, they either flow into a stock (causing it to increase) or flow out of a stock (causing it to decrease).

To continue our example above, the car’s velocity at any particular instant is a flow that flows into the mileage counter stock. It is important to note here that the distinction between stock and flow is not absolute – from the point of view of the mileage counter the velocity is a flow. But the velocity itself most likely also changes and depends on the acceleration and deceleration. So, even though we can determine the current velocity almost instantaneously (this is done by the speedometer), we again cannot explain why the velocity is at its current level without knowing the systems past behavior. On diagrams, flows are represented by small valves attached to flow pipes that lead into or out of stocks.

**Converters.** Converters either represent parts at the boundary of the system (i.e. parts whose value is not determined by the behaviour of the system itself) or they represent parts of a system whose value can be derived from other parts of the system at any time through some computational procedure.

To continue our motorway example, we could assume that acceleration and deceleration are determined by outside circumstances (e.g. such as the positions of the accelerator and brake). In this case we would model both the accelerator and brake positions as converters. On diagrams, converters are represented by small circles.

**Connectors.** Much like in causal loop diagrams the connectors of a system show how the parts of a system influence each other. Stocks can only be influenced by flows (i.e. there can be no connector that connects into a stock), flows can be influenced by stocks, other flows, and by converters. Converters either are not influenced at all (i.e. they are at the systems boundary) or are influenced by stocks, flows and other converters.

**Source/Sink.** Souces and sinks are stocks that lie outside of the models boundary – they are used to show that a stock is flowing from a source or into a sink that lies outside of the models boundary. On diagrams, sources and sinks are represented by small clouds.

The notation used in stock and flow diagrams was originated by Jay Forrester in his book “Industrial dynamics”. It was based on a hydraulic metaphor: the flow of water into and out of reservoirs. Hence the names of these elements and their visualization.

The key feature of a stock and flow diagram is that each construct can be precisely specified using a mathematical formalism – viewed from a mathematical perspective, such fully specified stock and flow models are just a way of visualizing a corresponding set of integral equations.

In most cases these integral equations cannot be solved analytically, but due to the computing power available today even on portable laptops, it is possible to solve these equations numerically using computer simulation techniques.

To make these definitions even more tangible, let us continue the simple project management example we started in the section on causal loop diagrams – to make reference easier, the diagram is repeated here:

Let’s try and sort the parts in this diagram according to the categories we identified above:

Part | Category | Comment |
---|---|---|

Open Tasks | Stock | Clearly the number of open tasks must be a stock – on any given day we cannot know how many open tasks remain without either explicitly counting them or explicitly keeping track of our progress. |

Completion Rate | Flow | The completion rate is the only element that has a direct impact on a stock. |

Deadline | Converter (Boundary value) | The deadline is a boundary value, because it is set from the outside. We represent these kinds of values using converters that have no further inputs. |

Current Date | Converter (Boundary value) | The current date is also a boundary value, albeit not a constant one. |

Remaining Time | Converter | This is an auxiliary which can be derived from the current date and the deadline. |

Schedule Pressure | Converter | The schedule pressure can be calculated at any time given the remaining time and the number of open tasks. |

Productivity | Converter | Productivity and Overtime are conceptually much harder to model than the other elements. To keep our model simple initially, we assume that my current productivity only depends on the current schedule pressure and not on my past behavior. We make the same assumption about the overtime (i.e. the normal workday plus overtime) I work. |

Overtime | Converter |

We can make our thinking explicit in the following stock and flow diagram (note that we’ve added a new stock to represent the closed tasks):

In the next section, we will create a simulation model based on this stock and flow diagram.

<< Causal Loop Diagrams | Introduction to System Dynamics | System Dynamics Simulation >> |