The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Oracle's Java site.
powered by NetLogo
view/download model file: wuold_be_city_and_pedestrians.nlogo
This model represents a would-be city in which cars wait for allowing people to cross the road, pedestrians cross just in precise places.
Click on the SETUP button to set up the roads, trees, offices, schools, people and cars. Set the number of people and cars through the sliders.
Click on the GO button to make move cars and people.
Cars move along the streets, people walk randomly. When a pedestrian crosses the street a car stops to enalbe she to pass beyond, then all cars continue moving on their path.
The colour of the patches of the streets may change, it depends on the people: once that a person is over a grey patch it affects its colour by changing it, it is useful as a signal for the cars. If a person crosses outside four fixed points it becomes red, she wounds herself.
The model works with any number of agents, it holds for both cars and people whose figure can be regulated with the sliders. Every time the system is setup with the SETUP button the agents are posed in different places but after a few whiles the final outcome will be the same: street patches change colour, cars wait, people cross the streets.
The wait command for the patches is used to allow the watcher to better see the colour change for the grey patches.
“Traffic Grid” for the functioning of the breaks of the cars.
breed [schools school]
breed [trees tree]
breed [cars car]
breed [offices office]
breed [people person]
globals [#red #white]
to setup
ca
reset-ticks
setup-roads
setup-schools
setup-trees
setup-offices
setup-people
setup-cars
end
to setup-roads ;coordinate per creare quattro incroci
ask patches with [ pycor >= -8 and pycor < -7]
[set pcolor grey]
ask patches with [ pycor >= 8 and pycor < 9]
[set pcolor grey]
ask patches with [ pxcor >= -8 and pxcor < -7]
[set pcolor grey]
ask patches with [ pxcor >= 8 and pxcor < 9]
[set pcolor grey]
end
to setup-schools
set-default-shape schools "house"
create-schools 2
ask schools
[ set size 4
set color yellow]
ask school 0
[ setxy -6 -12]
ask school 1
[ setxy 12 -5]
end
to setup-trees
set-default-shape trees "tree"
create-trees 2
ask trees
[ set size 2
set color green]
ask tree 2
[ setxy -6 -14]
ask tree 3
[ setxy 14 -5]
end
to setup-offices
set-default-shape offices "house"
create-offices 2
ask offices
[ set size 3
set color blue]
ask office 4
[ setxy -10 1]
ask office 5
[ setxy -1 10]
end
to setup-people
set-default-shape people "person"
create-people howManyPeople
ask people
[set size 1
set color white
setxy random-pxcor random-pycor]
end
to setup-cars
set-default-shape cars "car"
create-cars howManyCars
[set size 1
set color blue
move-to one-of patches with [pcolor = grey]
]
ask cars ;; le auto posizionate sulle strade verticali si muovono verso nord
[if (pycor >= -8) and (pycor < -7) ;; le auto posizionate sulle strade orizzontali si muovono verso est
[set heading 90]
if (pycor >= 8) and (pycor < 9)
[set heading 90]
if (pxcor >= -8) and (pxcor < -7)
[set heading 0]
if (pxcor >= 8) and (pxcor < 9)
[set heading 0]
]
end
to go
;reset
move-cars
walk
change-color
await-cars
await-patches
be-wrong
execute
improve
tick
end
to move-cars
ask cars ;le auto si muovono solo lungo le strade
[if pycor = 8
[fd 1]
if pycor = -8
[fd 1]]
ask cars
[if pxcor >= -8 and pxcor < -7
[set heading 0]
fd 1
if pxcor >= 8 and pxcor < 9
[set heading 0]
fd 1]
end
to walk ;; i pedoni si muovono a caso di 1 step alla volta
ask people
[fd 1]
end
to improve
ask people
[
if #red > #white [ifelse random-float 1 > 0.5 [set color white] [set color red] ]
if #red < #white [ifelse random-float 1 < 0.5 [set color white] [set color red] ]
]
end
to change-color ;; quando un pedone attraversa la strada la patch cambia colore
ask people with [ pycor >= -8 and pycor < -7]
[set pcolor green]
ask people with [ pycor >= 8 and pycor < 9]
[set pcolor yellow]
ask people with [ pxcor >= -8 and pxcor < -7]
[set pcolor brown]
ask people with [ pxcor >= 8 and pxcor < 9]
[set pcolor pink]
end
to await-cars
ask cars with [pycor = 8]
[if pcolor = yellow
[wait 0.0005]]
ask cars with [pycor = -8]
[if pcolor = green
[wait 0.0005]]
ask cars with [pxcor = -8]
[if pcolor = brown
[wait 0.0005]]
ask cars with [pxcor = 8]
[if pcolor = pink
[wait 0.0005]]
end
to await-patches
ask patches with [(pxcor < -3 and pxcor >= 2) and pycor = 8]
[wait 0.0002]
ask patches with [(pxcor < -3 and pxcor >= 2) and pycor = -8]
[wait 0.0002]
ask patches with [pxcor = -8 and (pycor >= -2 and pycor < 2)]
[wait 0.0002]
ask patches with [pxcor = 8 and (pycor >= -3 and pycor < 2)]
[wait 0.0002]
end
to be-wrong
ask people
[if pcolor = yellow
[set color red
set #red #red + 1]]
ask people
[if pcolor = green
[set color red
set #red #red + 1]]
ask people
[if pcolor = brown
[set color red
set #red #red + 1]]
ask people
[if pcolor = pink
[set color red
set #red #red + 1]]
end
to execute
ask people
[ if (pxcor >= -3 and pxcor < 2) and pycor = 8
[set color white
set #white #white + 1]]
ask people
[ if pxcor = -8 and (pycor >= -2 and pycor < 2)
[set color white
set #white #white + 1]]
ask people
[if pxcor = 8 and (pycor >= -3 and pycor < 2)
[set color white
set #white #white + 1]]
ask people
[if (pxcor >= -3 and pxcor < 2) and pycor = -8
[set color white
set #white #white + 1]]
end
to reset
set #red 0
set #white 0
end