11 September 2024

World3 model implementations

The World3 model from 1972 indicates that “Business as Usual” (BAU) would lead to a collapse around 2030. A comparison with empirical data, made by Gaya Herrington, now 50 years later is really scary. I wanted to dig deeper into this, and run the World3 model myself. There are several World3 simulation programs available, and this post is about how I ran some of them (it wasn’t hard).

There are links to Model implementations on the wikipedia page. I have tried the Javascript and Python models. The “modelica” links seem broken, but I hope to get back to the Julia model.

I am using Linux (Ubuntu 24.04), and will not try other OS’es. I expect no big differences for other Linux distributions though.

Javascript simulator

By far the simplest to use! Go to the web-page, and click “Run”.

The default is the original “Business as Usual” (BAU) simulation where a rapid decrease begins around 2030, caused by shortage of resources. Since 1972 more resources has been found (e.g fracking), and you may try the “BAU2” simulation by adjusting the “initial resources multiplier” to 2. In this scenario the rapid decrease begins around 2050, and is caused by pollution (i.e climate change).

The source is available on github (but you don’t need it).

Python preparations

Install Python dependencies, and use a variable for the “workspace” where everything is stored:

sudo apt install -y git python3-pip python3-full python3-numpy python3-scipy python3-matplotlib
WS=$HOME/world3    # (you probably want to use another directory)
mkdir -p $WS

Pyworld3

The pyworld3 model is written in Python and is intended to be as close to the original from 1972 as possible.

git clone --depth 1 https://github.com/cvanwynsberghe/pyworld3 $WS/pyworld3
cd $WS/pyworld3
python example_world3_standard.py
evince fig_world3_standard_a.pdf

The example_world3_standard.py simulates the BAU scenario, and the simulated graphs are overlaid on top of the original graphs to show the conformance (which is perfect). With a minimum of Python skills you can alter the initial values for different simulations.

MyWorld3

MyWorld3 is another Python model. All documentation is in the pdf file, even a diagram of the original World3 model.

git clone --depth 1 https://github.com/Juji29/MyWorld3 $WS/MyWorld3
cd $WS/MyWorld3/MyWorld3
python world3_run.py

As described in the pdf, you can edit the N_SCENARIO in world3_run.py to simulate different scenarios.

PyWorld3-03

PyWorld3-03 is an upgrade of pyworld3. It was used to recalibrate the world3 model parameters to match empiric data.

git clone --depth 1 https://github.com/TimSchell98/PyWorld3-03.git $WS/PyWorld3-03
cd $WS/PyWorld3-03
# (no graphs were printed at the time of writing, hence...)
echo -e "\nplt.show()" >> run_different_standard_configurations.py
python run_different_standard_configurations.py
tags: