Image courtesy Wikipedia . I’m a big fan of systems thinking, modelling, and design. I pretty much “see” systems everywhere - it’s beco...
|Image courtesy Wikipedia.|
Two of the most basic concepts in systems are stocks and flows. And the classic example to explain this mated pair of concepts is a bathtub. The bathtub itself is a stock (of water); that is, it’s an accumulator/dispenser of some resource. There’s a faucet that lets water into the tub; that’s a flow into the stock. There’s a drain that lets water out of the tub; that’s a flow out of the stock. And that’s all there is to it - you can build up incredibly complex system models with just these two basic concepts.
I’ve read a lot about systems, at it seems that stocks and flows are always central to explaining what systems are all about. But I’ve come to believe that the focus on stocks and flows, while necessary, isn’t sufficient to really understand what the notion of systems modelling is really all about.
I’ll explain with an example. There’s a great system modelling tool call Insight Maker. It’s a web-based system that lets you construct some pretty complex system models and run “what if” scenarios to observe how the models behave under different conditions. There’s an example on the Insight Maker website of a simple model of disease propagation.
The example starts by creating two stocks, one representing the collection of “healthy” people, and the other representing the collection of “infected” people. They then add a flow to represent the spread of infection; specifically, it models how people flow (in an abstract sense) from one population to the other (and not the more concrete flow of the disease from infected people to healthy ones). This makes sense if you consider that the model is about the people, not about the disease.
Step 5 of the example includes this: "The basic model structure has been laid-out, we can start to define parameter values and equations." And that, in a nutshell, is the key point: the system model is worthless so long as it only has stocks and flows; the parameters and equations are absolutely essential to represent actual situations and therefore to have a model that’s even remotely complete. The rest of the 28 steps of the example are all meant to highlight the importance of the parameters and equations to the behaviour of the model and of the real life situations that the model represents.
Just to drive this point home, notice that less than 1/5th of the example is about stocks and flows and more than 4/5ths of it are about the parameters and equations. Go look through almost any text on systems, and you’ll always see stocks and flows front and centre, as if they are essential and most important. But if you consider the total amount of material in the book, you'll see that stocks and flows make up a relatively small part of that body of knowledge.
Let’s look at parameters first. In the example, the parameters include: initial quantities of people in each population, the rate of infection, and the rate of recovery. These parameters are external to the stocks and flows; indeed, they are constants for a given instance (or simulation run) of the model. There is nothing in the model itself that lets us determine these parameters - that’s why they’re external to it.
But if the parameters are external, then there’s something else beyond the system model that sets their values for a given instance. Different diseases will have different infection rates on different populations. In the (very) long term, the activity of a real population and real diseases will cause evolutionary changes in the disease (and the people too) that will alter the parameter values, but these aspects also exist beyond the system model. It’s like saying that the speed of light is a fixed constant - which is perfectly reasonable in most common circumstances - while also recognizing that there are rare cases where it will vary. There’s no point in including General Relativity in calculations of, say, how long it takes to communicate by telephone because for all practical purposes, it really doesn’t matter. Similarly, in any system model (including the disease propagation model in the example), there’s no point in including the coupling between populations and disease characteristics due to evolution. But this also means that in any system model, there are parameters the values of which are both (a) essential to proper functioning of the model yet (b) must be established externally to the model itself.
So stocks and flows just aren’t enough. A system model must include stocks, flows, and those key parameters.
The same argument can be made for the equations that capture system flows. The equations capture a different kind of “structure” of a system than stocks or flows or parameters. The equations capture the behavioural structure of the system. In the disease propagation example, for instance, the flow rate between the healthy and infected population is set to [Infection Rate]*[Healthy]*[Infected]. This equation represents a kind of structure that defines a response for a given stimulus; the structure is directly modelled by the math of the equation. In this case, the behavioural structure indicates a multiplier effect between the two stocks and a parameter. Notice that the multiplier effect cannot be derived from any other information in the stocks, flows, or parameters. It is this structure that the equations provide, structure without which the model cannot operate. If the equation had been different, say taking the form of a power law or an inverse square law, then the behaviour of the system would be completely different even if the stocks, flows, and parameters remained exactly the same.
So a system model really isn't a system model unless it includes stocks, flows, parameters, and equations.
In the end, then, I hope I’ve made clear that the emphasis on stocks and flows, though necessary, is really only half (or less!) than the real story behind systems thinking and a systems perspective. Without parameters to bring external information into the system and equations to embed behaviour into a system, we really can’t do much of anything.
I’m going to be revising my courseware. I’ve gone a long time doing the “classical” thing and depending on stocks and flows as the key concepts behind systems. But I was wrong. Or rather, I was incomplete.