NoticesSystems & complexitySystems thinking and modelling

Systems thinking and modelling series: Exercise answers

Developing Understanding

Exercise 2-1

Insight Maker doesn’t complain because its simulation engine is smart enough to convert the myriad of similar dimensions, e.g., miles, kilometers, feet, etc. However, it’s best to make conversions explicit, otherwise models become very difficult to understand.

Exercise 2-2

One alternative would be to start with Distance to Grandmas House = 0 and add to the stock as Red walks toward it. This way the model is tracking the distance traveled rather than the distance remaining.

Exercise 2-5

It takes time for a flow to change a stock and even longer for that flow to change a flow. It’s important to remember that reducing a flow still adds to the stock, just a bit slower.

Exercise 2-6

There are actually two approaches: 1) Figure out how to shorten the delay; or 2) Slow down the action and wait for the feedback before further action. There are times when these approaches may be applied. Due to the nature of the situation there are other times when you simply need to act and then deal with the effects later.

Models and Truth

Exercise 4-1

It would be better to build a statistical model in this case.

Exercise 4-2

It would be better to build a mechanistic model in this case.

Exercise 4-5

1. Prediction
2. Inference
3. Prediction
4. Narrative
5. Narrative
6. Inference

Building Confidence in Models

Exercise 5-1

Minimum value: 0

Maximum value: 10,000,000 (this value is somewhat arbitrary but should be larger than the maximum size you expect this city to ever grow to)

Exercise 5-2

We use a standard deviation of 4 as we lack any information on what the dispersion should be.

Round(Rand(5, 15))

Exercise 5-3

Round(RandTriangular(0, 100, 20))

Exercise 5-4

Round(RandLogNormal(20, 4))

We use a standard deviation of 4 as we lack any information on what the dispersion should be.

Exercise 5-5

RandNormal(2.1, 0.3625)

Exercise 5-6

RandNormal(0.837, 0.106)

The Mathematics of Modeling

Exercise 7-1

You can denote volume of water in the jar using the state variable J. Our equations will then be:

J(0) = 40

Exercise 7-2

You can denote the healthy stock using state variable H and the infected stock I. Our equations will then be:

Exercise 7-3

Approximately 8,865 animals.

Exercise 7-4

Exercise 7-5

Exercise 7-6

Exercise 7-7

20.0, 25.0, 29.0, 32.4, 35.5, 38.3

Exercise 7-8

20.0, 27.0, 37.5, 53.9, 78.3, 124.5

Exercise 7-9

20.0, 24.5, 28.3, 31.6, 34.6, 37.4

Exercise 7-10

20.0, 29.1, 44.7, 73.6, 131.5, 260.4

Equilibria and Stability Analysis

Exercise 8-1

Stable Equilibria: A piece of rubber that returns to its original shape after pulled; a forest where trees grow back once cut down.

Unstable Equilibria: A ball balanced on top of a sloped roof; a pole balanced perfectly on the floor.

Exercise 8-2

X = −2.30 and X = 1.30

Exercise 8-3

X = 0, π, 2π, 3π, 4π, …

Exercise 8-4

X = −1.82, Y = −1.36

Exercise 8-5

X = 0, Y = 0 and X = −1.41, Y = −2 and X = 1.41, Y = −2

Exercise 8-9

Exercise 8-10

Exercise 8-11

Exercise 8-12

Eigenvalue of 6 with eigenvector of [1,1]. Eigenvalue of -2 with eigenvector of [-1,1].

Exercise 8-13

Eigenvalue of 2 with eigenvector of [1,5]. Eigenvalue of 1 with eigenvector of [0,1].

Exercise 8-14

Eigenvalue of α − β with eigenvector of [-1,1]. Eigenvalue of β + α with eigenvector of [1,1].

Exercise 8-15

Eigenvalue of α with eigenvector of [1,0]. Eigenvalue of β with eigenvector of

Exercise 8-16

  1. Unstable
  2. A saddle (unstable)
  3. Stable

Exercise 8-17

  1. Unstable oscillations
  2. Damped oscillations (stable)
  3. Stable oscillations

Exercise 8-18

  1. Unstable
  2. Stable
  3. Unstable

Exercise 8-19

Equilibrium X = 2, Y = −2 is unstable.

X = 0, Y = 2 is an unstable saddle point.

Exercise 8-20

Equilibrium Q = 1, R = 1 is stable if α ≥ 0. Otherwise it is unstable.

Q = 1, R = 1 is unstable.

Exercise 8-21

The first equilibrium has no wolves and is unstable.

The second equilibrium is when the population size is equal to the carrying capacity. This equilibrium is stable.

Optimization and Complexity

Exercise 9-1

Squared error:

([Widgets]-[Historical Production])^2

Absolute value error:

Abs([Widgets]-[Historical Production])

Exercise 9-2


Exercise 9-3

The optimizer can always minimize this simply making Simulated as small as possible. This will not result in a fit to the historical data.

Exercise 9-7


nullError += Math.pow(results.value(historical)[t] – average, 2);
simulatedError += Math.pow(results.value(historical)[t] – results.value(simulated)[t], 2);


nullError += Math.abs(results.value(historical)[t] – average);
simulatedError += Math.abs(results.value(historical)[t] – results.value(simulated)[t]);

Exercise 9-10

Example procedure:

1. Find the average hamster size at each time period by taking the mean of observations at that period.
2. Define two variables in the model: Infant Rate and Juvenile Rate.
3. Define an error primitive Error the equation taking the absolute value of the difference between the simulated size and the average empirical size.
4. Run the optimizer to minimize this error term by adjusting the two rate variables.

Modeling With Agents

Exercise 10-2

1. Timeout trigger with value 10 days.
2. Probability trigger with value 20% (assuming time units of years).
3. Condition trigger. Value: [Volume] > 5

Exercise 10-4

{2, 1.8, 1.9, 1.5}.Filter(x < 1.95).Max()


Max(Filter({2, 1.8, 1.9, 1.5}, x < 1.95))

Exercise 10-5




Exercise 10-6

Intersection(a, b).Min()


Min(Intersection(a, b))

Exercise 10-7




Exercise 10-8


Exercise 10-9

Union([Population].FindNotState([Infected]), [Population].FindState([Female]))

Exercise 10-10


Exercise 10-11

Self.MoveTowards([Population.FindState([Healthy]).FindFurthest(Self), {2 Meters})

Exercise 10-12

range(x) <- max(x)-min(x)


Function Range(x)
End Function

Exercise 10-13

Function Fib(n)
If n = 1 or n = 2 Then
Fib(n-1) + Fib(n-2)
End If
End Function

The 15th Fibonacci number is 610.

Going Global

Exercise 11-1

This <b>text is <i>italic</i> and bold.</b>

Exercise 11-2

Ordered list:


Unordered list:


Exercise 11-4

u {
    color: green;

Exercise 11-5

a {
    border: solid 2px red;

Exercise 11-6

var a = prompt(“Enter the first number:”);
var b = prompt(“Enter the second number:”);
var sum = a+b;

alert(“Their sum is: “+sum);

Exercise 11-8

input {
    background-color: yellow;
    color: navy;

Exercise 11-9

Change the alert to:

alert(“Failed! You need “+(5000000000-pop)+” more people!”);

Article and header image source: Beyond Connecting the Dots. Reproduced by permission.

Rate this post

Scott Fortmann-Roe and Gene Bellinger

Scott Fortmann-Roe, creator of Insight Maker, and Gene Bellinger, creator of SystemsWiki, have written the innovative interactive book "Beyond Connecting the Dots" to demystify systems thinking and modelling.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to top button