Giuliano Antoniciello Amedeo Primo

Simulation models for economics

Project work on



The applet requires Java 1.4.1 or higher. It will not run on Windows 95 or Mac OS 8 or 9. Mac users must have OS X 10.2.6 or higher and use a browser that supports Java 1.4. (Safari works, IE does not. Mac OS X comes with Safari. Open Safari and set it as your default web browser under Safari/Preferences/General.) On other operating systems, you may obtain the latest Java plugin from Sun's Java site.

powered by NetLogo

view/download model file: mafianomics.nlogo


This model reproduces the growth dynamics of the Mafia in an initially wealthy economic system and the efforts of the law enforcement agencies to contrast the expansion of illegal businesses.


In this model, policemen and mafiosi wander randomly from a enterpise to another. During each step, every mafioso tries to bend an enterprise to his power and the enterprise loses a point of its strength in resisting corruption.
When the strength of an enterprise, whose starting value is given randomly, goes below zero, the enterprise turns into a corrupted one (its color turns black from green) and the influence of the Mafia on the patch occupied by the enterprise is increased of one point.
Meanwhile, each policeman protects legal businesses by giving a point of strength to every enteprise he goes by; when a policeman manage to free an enterprise from the power of Mafia, by making its strength become positive again, the power of the law in the area is increased of one point and the color of the patch turns green again.
When a policeman and a mafioso meet in a patch, the comparison between influence of Mafia end power of law in that area decides who of the two has to die.

There are two different processes for the recruitment of new policemen/mafiosi:

- policemen: policemen-agents can reproduce only if their number is less or equal to the number of mafiosi. When a policeman passes on a patch, the comparison between influence of Mafia and power of law determines whether the policeman splits into two policemen or not. If the difference between the two values is smaller than mafia-rooting, then the "recruitment" occurs.
- mafiosi: it is the same process used in the recruitment of policemen, the only relevant difference is that the difference between the two values has to be greater than mafia-rooting.


1. Set the slider parameters (described below), or use the default settings.
3. Press the SETUP button.
4. Press the GO button to start the simulation.
5. Look at the monitor to see the current state of the system.
6. Look at the AGENTS plot to observe the changes in the number of policemen/Mafiosi;
7. Look at the ENTERPRISE plot to monitor the fluctuations of the numbers of corrupted/healthy enterprises

INITIAL-NUMBER-MAFIOSI: The initialb number of Mafiosi
INITIAL-NUMBER-POLIZIOTTI: The initial number of policemen
MOBILITY: The longest movement of each policeman/Mafiosi during a step
MAFIA-ROOTING: Tendency to recruit new Mafiosi;


MOBILITY is a very influent parameter in this simulation. Using lower values the observer will notices a rought division of patches into two well defined areas, a black one and a green one, with no islands of the other colour. That is the condition of an economic system where is quite difficult moving around money and influence. Let us call it an "old-fashioned world", in which the regions strightly controlled by Mafia-like organisation can be easily identificated. On the contrary, using higher values of MOBILITY, the observer whould notice a different behavior: corrupted and healty enterprises would be well mixed, and it would be difficult to isolate a completely uncorrupted region. This condition of the system is more similar to modern world, where money and influence can reach every economic activity.


Try settings the parameters in different ways. Are there adjustments that generate economic systems including only corrupted or healthy enterprises? Which conditions produce a stable system in which legal and illegal businesses coexist?

Try changing the recruitment rules and observe the different evolutions of mafiosi/policemen population in the AGENTS plot.


There are lots of ways to modify the model and explore more complex behaviors of enterprises in their reactions to the extortion of the Mafia, such as the tendency to be influenced by the behaviors of the nearest enterprises.
It would be also interesting to code new kind of interactions between mafiosi and policemen, including, for example, the possibility of police forces to be open to bribery.


This model uses breeds to create two different kinds of "turtles": policemen and mafiosi. It also uses patches to model enterprises.


Look at Wolf Sheep Predation for another model showing interaction between different populations as well as the use of patches/turtles to model populations with different properties.


globals [azienda impresa]
breed [poliziotti poliziotto]
breed [mafiosi mafioso]
patches-own [resistenza mpotere ppotere]

to setup
 set-default-shape mafiosi "person"
  set-default-shape poliziotti "person"

  to setup-patches
    ask patches [ set pcolor  54 + random 3 ]
    ask patches [
      set resistenza random 5]
    ask patches [
    set mpotere 0]
    ask patches [
    set ppotere 0] 
  to setup-turtles
   create-mafiosi initial-number-mafiosi
    set color red
    set size 2.0
   create-poliziotti initial-number-policemen
   set color cyan
   set size 2.0
   ask turtles [ setxy random-xcor random-ycor ]
  to go
 to move-turtles
   ask turtles [
     right random 360
     forward random mobility
   to corrompi
       ask mafiosi [
         set resistenza (resistenza - 1)
         if resistenza < 0 [
         set pcolor black
         set mpotere (mpotere + 1)]

  to difendi 
      ask poliziotti [
        set resistenza (resistenza + 1)
        if resistenza = 0 [
        set pcolor 54 + random 3
        set ppotere (ppotere + 1)
  to confronta
    ask poliziotti[ let prey one-of mafiosi-here
      if prey != nobody
      [ifelse ppotere >= mpotere 
      [ask mafiosi-here[die]]
      [ask poliziotti-here[die]]  

to reproduce-mafiosi
  ask mafiosi [
  if (2 * (initial-number-mafiosi)) > (count mafiosi) [
    if (mpotere - ppotere) <= mafia-rooting[
    hatch 1 [ rt random-float 360 fd 1 ]  

to reproduce-poliziotti
  ask poliziotti [
  if (count mafiosi) > (count poliziotti) [
    if (mpotere - ppotere) <= mafia-rooting [
    hatch 1 [ rt random-float 360 fd 1 ]  

to update-plot
  set-current-plot "Agents"
  set-current-plot-pen "mafiosi"
  plot count mafiosi
  set-current-plot-pen "poliziotti"
  plot count poliziotti
  set-current-plot "Enterprises"
  set-current-plot-pen "corrupted enterprises"
  plot count patches with [pcolor = black]
  set-current-plot-pen "healthy enterprises"
  plot count patches with [pcolor != black]