NetLogo banner

NetLogo Publications
Contact Us

Modeling Commons

Beginners Interactive NetLogo Dictionary (BIND)
NetLogo Dictionary

User Manuals:
Farsi / Persian


NetLogo Models Library:
Curricular Models/Urban Suite

(back to the library)

Urban Suite - Positive Feedback

[screen shot]

If you download the NetLogo application, this model is included. You can also Try running it in NetLogo Web


This model demonstrates the effect of "positive feedback". In particular, it is an implementation of the model described in the book "Cities and Complexity" by Michael Batty, on pages 38-42. For analysis and discussion beyond that provided with this model, the reader is encouraged to refer to this text.

Positive feedback is, colloquially speaking, a situation where the rich get richer and the poor get poorer. More technically, positive feedback describes the situation where the rate of growth of a quantity is positively correlated with the magnitude of that quantity. With positive feedback, growth leads to size which leads to increased rate of growth. Positive feedback is sometimes called "increasing returns to scale". There can also be "decreasing returns to scale". In this case, all quantities are reduced over time until they eventually equalize - which is beneficial for the poor and harmful for the rich. With "constant returns", there is no growth or decay, so the ratios between rich and poor players stay fixed. This model lets the user explore the realms of increasing, constant, and decreasing returns.


In this model, we have a 21 by 21 grid of squares, each of which is assigned an initial random "activity" value. These squares could represent cities, and the activity value could express populations. Or the squares could represent corporations, with the activity values being market share or profits. This model is merely demonstrating the basic mathematical concept, so the particular analogy to real-world phenomena is not important.

The initial activity values being chosen randomly are suggestive of historical accident. Perhaps two railroad lines happened to meet here, or gold was found in nearby hills, so a large city sprang up. The question this model answers is this: starting with a random distribution of activity levels, what happens to the distribution over time, as a result of the following growth process.

If MOORE-NEIGHBORHOOD? is switched off, these are the rules:

In each time step (or tick), the grid square takes its current activity value to the power of ALPHA (adjustable by a slider), and sets its activity equal to that result. Basically each square is experiencing exponential growth (or decay, if ALPHA < 1). For instance, if ALPHA=2, then the activity value in each location is squared. In the next time step, each activity value is squared again. When ALPHA > 1, the situation is one of positive returns. A location that has a high activity value to begin with has the greatest advantage and will eventually overshadow all the others. When ALPHA = 1, it is a "constant returns" situation, and when ALPHA < 1, it is "decreasing returns".

If MOORE-NEIGHBORHOOD? is switched on, then the rules are only slightly different:

Instead of taking the current activity value to the power ALPHA, each location first averages its own activity value with the activity values of the eight neighboring locations, then takes the resulting average to the power ALPHA.

After each tick, all the activity values are normalized to lie between 0 and 1, with the maximum activity value being scaled to 1.


Press the SETUP button to initialize the grid with random activity values.

Press the GO button to run the model. You will see the view quickly converges to a steady state.

Press the "GO ONCE" button to move forward one tick in model time. This is particularly useful because the model runs very quickly, so the user may miss seeing the process if they just push GO.

The MOORE-NEIGHBORHOOD? switch determines whether grid locations use the average of their neighbors' activity values (ON) or just use their own activity values (OFF), to be raised to the ALPHA power each tick.

The ACTIVITY DISTRIBUTION plot shows the distribution of the activity levels in each of the 441 cells, normalized such that the maximum activity level equals 1.


If MOORE-NEIGHBORHOOD? is switched ON and ALPHA is barely in the positive returns regime (e.g. ALPHA = 1.02), then the whole screen turns white, rather than having a white spot in the midst of black (which occurs with high values of ALPHA). Why is this?


Turn MOORE-NEIGHBORHOOD? to ON. Compare the visual results when you use ALPHA = 1.1 and ALPHA = 2. Both of these are in the increasing returns regime, but the ALPHA = 2 shows a much more concentrated white spot. Can you explain this?


Change the mathematical update function so that some constant amount (determined by a slider) is added to the activity level of each patch each time. Would this be more beneficial for those who are initially poor, or those who are initially rich? Or would it matter at all?


To color the patches appropriately, the activity value (which has been normalized to lie between 0 and 1) is simply multiplied by 9.9. This is because in the NetLogo default color scheme, 0.0 is black and 9.9 is white. See the colors documentation in the NetLogo help for more information about how the color scheme works.


This model is related to all of the other models in the "Urban Suite". In particular, it is demonstrating the same concept as the "Urban Suite - Path Dependence" model, although the focus is slightly different.


This model is based on pages 38-42 of the book "Cities and Complexity" by Michael Batty.

Thanks to Seth Tisue for his work on this model.

The Urban Suite models were developed as part of the Procedural Modeling of Cities project, under the sponsorship of NSF ITR award 0326542, Electronic Arts & Maxis.

Please see the project web site ( ) for more information.


If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

Please cite the NetLogo software as:


Copyright 2007 Uri Wilensky.


This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at

(back to the NetLogo Models Library)