Wednesday, June 06, 2012

the limits to computation?

americanscientist | The Limits to Growth appeared at a moment of acute environmental foreboding. The previous decade had seen the publication of Rachel Carson’s Silent Spring, Garrett Hardin’s “Tragedy of the Commons” essay, Paul R. Ehrlich’s The Population Bomb and Barry Commoner’s The Closing Circle. This was the era when we began to refer to our planet as Spaceship Earth, and when Walt Kelly’s Pogo declared “We have met the enemy and he is us.” There was a receptive audience awaiting The Limits to Growth. The book has sold 10 million copies.

But if Limits has had a broad and sympathetic readership, it has also had vociferous critics. The most carefully argued rebuttal came from a group at the University of Sussex in England; their critique, Models of Doom, is longer than the book it evaluates. The economist William D. Nordhaus wrote a blistering review; the mathematician David Berlinski was snide and mocking. Vaclav Smil later dismissed the whole enterprise as “an exercise in misinformation and obfuscation.”

One complaint lodged against the World3 model is superfluous complication. If the intent is merely to show that exponential growth cannot continue forever, there’s no need for elaborate computing machinery. The model also stands accused of the opposite sin—oversimplification—in its wholesale aggregation of variables. In the resource sector, for example, the model lumps together all the raw materials of industrial civilization—coal and oil, iron and aluminum, diamonds and building stone—to form one generic substance measured in abstract “resource units.” Pollution is handled the same way, with a single variable encompassing everything from pesticides to nuclear reactor wastes. Quantities such as food per capita are global averages, with no way of expressing disparities of distribution. (A later Club of Rome model, written by Mihajlo Mesarovic and Eduard Pestel, did allow for regional differences.)

Still another line of criticism focuses on the inputs to the model—the initial conditions (such as the total stock of nonrenewable resources) and the numerical constants that determine the strength of interactions (for instance, the effect of pollution on agriculture). The Limits team made an effort to pin down these numbers, but huge uncertainties remain. There is no statistical analysis of these errors.

Both Forrester and the Limits group have responded to these objections, matching the vehemence—and occasionally the condescending scorn—of their critics. They stand by their models. When updated versions of the Limits book were published in 1992 and 2004, the authors reiterated their original conclusions and made only subtle changes to the model.

World3 now seems to be undergoing a revival. In 2009 Charles A. S. Hall and John W. Day, Jr., writing in American Scientist, defended the soundness of the model, particularly as it applies to energy resources. Graham Turner has compared predictions with data for 1970–2000 and reports a close match. Ugo Bardi, an Italian chemist, has recently issued a manifesto calling for the rehabilitation of The Limits to Growth.
The Dusty Deck

After 40 years of intense scrutiny, further probing of the World3 model is unlikely to yield big surprises. Nevertheless, nagged by a feeling that I still didn’t really understand the model, I decided to take it apart and put it together again.

When I wrote about Limits in 1993, I worked with a simulation package called Stella II, which offers a snazzy interface: You build a model by dragging icons of vats and valves across the screen. For my studies of World3 I was spared even that labor because a prebuilt version of the model came with the software. Stella II is still available, and so are competing products such as Modelica, Simgua and Vensim. These are impressive programs, recommended for serious work with system dynamics models. My aim, however, was not just to run or test the World3 model but to see how the parts fit together. I wanted to bake my cake from scratch, not from the Betty Crocker box.

The original World3 model was written in a language called DYNAMO, developed in the early 1960s by Phyllis Fox and Alexander Pugh for the Forrester group at MIT. The DYNAMO source code for the World3 model was published in Dynamics of Growth in a Finite World, a thick technical annex to The Limits to Growth. As a way of digesting the DYNAMO program, I decided to make a line-by-line translation into JavaScript, the scripting language built into Web browsers. (The result of this exercise is at

DYNAMO comes from the Fortran era, when programs were fed to the machine on punch cards, and variables had names like “FIALD” (which stands for “Fraction of Inputs Allocated to Land Development”). Beyond these musty lexical conventions, however, lies an interesting programming language, little known outside the system dynamics community. It is mainly declarative rather than procedural. A program is not a sequence of commands but a list of “equations” (really assignment statements) that specify relationships of variables. The sequencing is handled behind the scenes by the DYNAMO compiler.

The World3 program consists of about 150 equations. The vats and valves of the plumbing diagram correspond to “level equations” and “rate equations,” respectively. A level equation calculates a new value for the level in a vat based on the level at an earlier moment and on the rates of inflow and outflow. The calculation is an integration, which would be represented as follows in DYNAMO:

V.K = V.J + DT * (IN.JK – OUT.JK)

Here V is a level variable, IN and OUT are rate variables, and DT is the integration interval, the unit of time in the simulation. The suffixes .J, .K and .JK are time markers: V.J and V.K represent the level of V at successive instants, and IN.JK is a rate of flow during the interval between time J and time K.

Just as levels depend on rates of inflow and outflow, the flow rates in turn can depend on levels. (Think of a bucket with a hole in the bottom: The rate of flow depends on the height of water in the bucket.) This kind of feedback loop is what gives the system the potential for interesting behavior, but from a computational point of view it is an awkward causal circularity. DYNAMO breaks the circle by updating levels and rates in alternation. The level at time t0 determines the rate at t1, which determines the level at t2, and so on. Some conflicts are harder to resolve and require an explicit reordering of the equations, which DYNAMO handles automatically.


Anonymous said...

Thanks for ones marvelous posting! I definitely enjoyed reading it, you could be a great author.
I will remember to bookmark your blog and will come back someday.
I want to encourage you to definitely continue your great posts,
have a nice evening!
My website > diets that work