A Dynamic Synthesis of Basic Macroeconomic Theory

Model Name: A Dynamic Synthesis of Basic Macroeconomic Theory

Citation: Forrester, N.B. (1982) A Dynamic Synthesis of Basic Macroeconomic Theory: Implications for Stabilization Policy Analysis. PhD Dissertation, MIT Sloan School of Management.

Source: Provided by Nathan Forrester

Units balance: Yes, with 3 exceptions, evidently from the original publication

Format: Vensim

Notes: I mention this model in this article

A Dynamic Synthesis of Basic Macroeconomic Theory (Vensim .vpm)

Update: a newer version with improved diagrams and a control panel, plus changes files for a series of experiments with responses to negative demand shocks:

Download NFDis+TF-3.vpm or NFDis+TF-3.zip

The model runs in Vensim PLE, but you’ll need an advanced version to use the .cin and .cmd files included.

Oscillation from a purely positive loop

Replicated by Mohammad Mojtahedzadeh from Alan Graham’s thesis, or created anew with the same inspiration. He created these models in the course of his thesis work on structural analysis through pathway participation matrices.

Alan Graham, 1977. Principles on the Relationship Between Structure and Behavior of Dynamic Systems. MIT Thesis. Page 76+

These models are pure positive feedback loops that don’t exhibit exponential growth (under the right initial conditions). See my blog post for a discussion of the details.

These are generic models, and therefore don’t have units. All should run with Vensim PLE, except the generic gain matrix version which uses arrays and therefore requires an advanced version or the Model Reader.

The original 4th order model, replicated from Alan’s thesis: PurePosOscill4.vpm – note that this includes a .cin file with an alternate stable initialization.

My slightly modified version, permitting initialization with different gains at each level: PurePosOscill4alt.vpm

Loops of different orders: 3.vpm 6.vpm 8.vpm 12.vpm (I haven’t spent much time with these. It appears that the high-order versions transition to growth rather quickly – my guess is that this is an artifact of numerical precision, i.e. any tiny imprecision in the initialization introduces a bit of the growth eigenvector, which quickly swamps the oscillatory signal. It would be interesting to try these in double precision Vensim to see if I’m right.)

Stable initializations: 2stab.vpm 12stab.vpm

A generic version, representing a system as a generic gain matrix, so you can use it to explore any linear unforced variant: Generic.vpm