mis 585 special topics in ims agent-based modeling bertan badur [email protected] department of...
TRANSCRIPT
MIS 585
Special Topics in IMS
Agent-Based Modeling
Bertan Badur
Department of
Management Information Systems
Boğaziçi University
Outline
IntorductionLifeHeroes and CowardsSimple Economy
Introduction
• Intorduction to Agent-Based Modeling
• By U. Wilensky, W. Rand.• IABM-WR • Chapter 2
Introduction
• learn to construct simple ABMs• “toy models” – not mean models of
real phenomena• thought experiments • objects to think with• simple to construct but• exebits interesting, suprising
emergent behavior
Outline
IntorductionLifeHeroes and CowardsSimple Economy
Life
• In 1970 British mathematician John Horton Conway, Conway (1976)
• cellular automata - the “Game of Life”
• Martin Gardner, • Scientific American colomn
The Game
• Played on checkeboard – graph paper
• N x N cells – • can be
– “alive” or “dead”: state of a cell
• surrounded by– eight neighbour cells
• the grid is “wrap around”• clock ticks – generation
Rules of the Game• Each cell checks its own state and
states of its neighbors and • set itself as “alive” or ”dead”
– if the cell has less then 2 alve neighbors – it dies– if it has more then 3 alive neighbors– it also dies– if it has 2 alive neighbors– it remains in its current state– if it has 3 alive neighors – if dead become alive, if alive, stay alive
NetLogo
• NetLogo has three tabs• Interface tab
– black area – “view”– white area – interface
• set user interface elements; buttoms, siliders..
• observe results: output, plots....
• Code tab• Info tab
The view
• composed of grid of cells – patches• how to open
– click settings in toolbar or– on the visw double click and select edit
• Parameters to set– Location of orgin– max-pxcor, max-pycor 25– patch size: 13 to 8– world wraps hirizonallyi vertically, see
IABM-WR pp 55 Box 2.1 Wrapping
NetLogo Code
• modules – procedures• begin with to• end with end• usually• setup
– initializations
• go– processes taking place advences
clock by tick
• procedures – commands• to proc name• commands• end• Create a button executing procedure setup
• Create a button executing procedure go– forever is cheked – forever button
• write setup procedure• code tab
to setup
end
to go
end
Initialization
to setup
;;
]
end
ask primitive asks selected agents to do actions by commands in brackets
set color of all pathces to redset - primitive is assignmentpcolor – variable for patches
Initialization
to setup
;;clear all setings
;; set dead patches to blue
;; 10% of patches are alive
;; initilize clock
end
to setup
clear-all
ask patches
[
set pcolor blue
if random 100 < 10
[ set pcolor green ]
]
reset-ticks
end
Exercise
• What is the difference between asking exactly 10% of the patches being alive– How do you perform this in general
for any number of patches, exactly X% being alive
• the chance of a randomly seleced patch being alive is 10%
Box 2.2: Agent Centeric Thinking
ask patches [
if random 100 < 10
[set pcolor green] ;; end if
] ;; end ask
• orask patches with [random 100 < 10]
[ set pcolor green ]
] ;; end ask
Asking exactly 10% of patchesto setup ask n-of 0.1*(51*51) patches [ set pcolor green ] ] ;; end ask] ;;end setup• or more generallyto setup let number-of-patches count patches ask n-of 0.1*number-of-patches patches [ set pcolor green ] ] ;; end ask] ;;end setup
go Procedureto go ;; each patch counts its alive neighbors
;; number of green neighboring patches
;; patches with 3 green naigbors turn or stay green
;; patches with 0 or 1 green neighbors turn or stay blue
;; patches with 4 or higher neighbors turn to blue
end
go Implementationto go ask patches [ set live-neighbors count neighbors with [pcolor = green]
] ask patches [ if live-neighbors = 3 [set pcolor green]
if live-neighbors = 1 or live-neighbors = 0 [set pcolor blue]
if live-neighbors >= 4 [set pcolor blue]
]
to setup ask n-of 4 patches [ ask n-of 20 patches in-radius 5
[ set pcolor red ] ]end4 patches are randomly selected for each randomly selected pathc for all patches in radius 5 select 20 randomly set their color to red
clear-allto setup clear-all ;abriviares as – ca - ask n-of 4 patches [ ask n-of 20 patches in-radius 5
[ set pcolor red ] ]endclear-all: clear all default values
using parametersglobals [ num-clusters ]to setup clear-all set num-clusters 4 ask n-of num-clusters patches [ ask n-of 20 patches in-radius 5 [ set pcolor red ] ]end
creating 2 hunters - turtles
create-tutrles 2 ;crt 2
[
set sıze 2
set color yellow
]
create 2 turtles crt or create-tutlesbnild-in turtle variablessize and color
variable for patches
patches-own [
live-neighbors
]
live-neighbors
variable
go procedureto go ask turtles [search]end
to search ifelse tıme-sınce-last-found <= 20 [right (random 181) - 90] [right (random 21) - 10] forward 1end
cifelse boolean condition[ block whan true ][ block when false ] right: turn right by angle in degrees
variable for turtlestutrles-own
[
tıme-sınce-last-found
]
tıme-sınce-last-found
variable for all turtlestime passed since last mushroom has
found by the hunter
add to the search procedure
ifelse pcolor = red [ set tıme-sınce-last-found 0 set pcolor yellow ] [ set tıme-sınce-last-found tıme-sınce-
last-found + 1 ]end if found pcolor is red set tıme-sınce-last-found to 0 set pcolor yellowelse increment tıme-sınce-last-found by one
command center
• select turtles• write commands • hatch 1 [right 160]• show count turtles
firther modifications
• adding ticks• add reset-ticks• to the end of setup• add tick to the begining of go• following motion of hunters• add pen-down to the setup
procedute when initilizing turtles
Stable Patterns• 1 – Still Lifes: stable shapes
unless other shapes collide with them– block, the beehive, the loaf,...
• 2 – Oscillators: repeat over time• 3 – Spaceships: move across the
life world • Unstable Patterns: • guns: a pattern with a main part
that repeats like an oscillator and periodically emits spaceships
• In 1983, Stephan Wolfram – physisist and mathematical software entrepreneur
• One dimensional CA with only one neighbor in each side
• classified all possible rules into four behavioral regions– homogenous, periodic, chatoic and
complex• Complexity in nature – due to CA
like simple mechanisms
Outline
IntorductionLifeHeroes and CowardsSimple Economy
Heroes and Cowards
Rules of the game• with people each choose a heroe and an
enemy• two stages:• first every one act – coward
– move be sure that your friend is always between you and your enemy
– hiding from your enemy behind your friend cowardly
• second – behave like a heroe– move between your friend and enemy– protecting your friend from your enemy –
herotic manner
setup pseudocodeto setup ;; clear all previous settings variables ;; make patches white ;; create a set of turtles reand tne number froma slider ;; set x y corrdinates randomly ;; set colors to blue for cowards and red for heroes ;; if mixed is choosen determine crowads and heroes
randomly while settng their colors ;; set one other turtle as their friends and oneother
turtle as their enemies ;; reset ticksend
setup codeturtles-own [friend enemy]
to setup ca ask patches [set pcolor white] crt number [ setxy random-xcor random-ycor if personalities = "cowardly" [set color red] if personalities = “breverly" [set color blue] if personalities = "mixed" [set color one-of [blue red]] set friend one-of other turtles set enemy one-of other turtles ] reset-ticksend
Interface elements
• slider:– variable: number– default 68
• Chooser– variable: personalities– choices: “”” “cowardly”, “brawe”,
”mixed”
• Settings– wrap off
go pseudocode
go at each tick if the agent is heroe act brawely –
in a herotic manner if the agent is cowars act cowardly advance clock by oneend
to go
ask turtles [
if color = blue [act-bravely]
if color = red [act-cowadly]
]
tick
end
acting submodelsto act-bravely;; move toward the mod of your friend and your
enemy facexy ([xcor] of friend + [xcor] of enemy) / 2 ([ycor] of friend + [ycor] of
enemy) / 2 fd 0.1end
to act-cowadly;; set your friend between you and your enemy facexy [xcor] of friend + ([xcor] of friend -
[xcor] of enemy) / 2 [ycor] of friend + ([ycor] of friend -
[ycor] of enemy) / 2 fd 0.1end
Random number generation• sequance of random numbers• initial value is taken from the clock of
computer • if you want to strart from the same
seedrandom-seed 137
show random 100
show random 100
show random 100• always generate the same sequance of
random numbers 79 89 61
Outline
IntorductionLifeHeroes and CowardsSimple Economy
Simple Economy
• Economies – heterogenous actors – buyers and sellers
• in 1996, J. Epstein, R. Axtell, • SugerScape•
• Fixed number of people: 500• each starting out with inital amount of
money: 100• At each tick,• each person gives one of her 1 dollar‘s
to any other person at random• What will happen to the distribution of
money?• constraint – total amount of money fixed
– no one can have negative money– if income is zore, connot give any away
• is there a limiting distribution of money?
• Intiution:– flat –
• initially every body has the saime money• randomly seleced one to give
– normal -
Version 1
to setup
;; clear everything
;; create 500 turtles with an initial wealth of 100 each
;; reset tick
end
setup
turtles-own [wealth]
to setup
ca
crt 500 [
set wealth 100
]
reset-ticks
end
Version 1 to go ;;ask turles to transact if thye have positive or wealth
;; advence clock end
to transact ;; contect turtle ;; decrement wealth of current turtle by one
;; for one of the other turtles, increment its wealth by one
end
go and transactto go ask turtles with [wealth > 0] [transact]
tickend
to transact set wealth wealth - 1 ask one-of other turtles [set wealth wealth + 1]
end
Exercises
• can you move the wealth chacking condition to transact?
• can you use with instead of if?
Monitoring by histogram• Adjust settings world size
– orgine: left button– max-xcor 500– max-ycor 80– patch size 1– no wraping in both dimensions
• Interface – plot– max-x:500, max-y:40– histrogram [wealth] of turtles– pen mode: bar– Color green
Using view with an histogram
• For turtles:– size:2 – color: green– shape: “circle”
• x coordinate of view – wealth• y coordinate of view – randomly
assigned kind of bar of a histogram• During iterations set x coordinate
to wealth if wealth is less then 500
Version 2 setupturtles-own [wealth]
to setup ca crt 500 [ set size 2 set shape "circle" set color green set wealth 100 setxy wealth random-ycor ] reset-ticksend
go and transactto go ask turtles with [wealth > 0] [transact]
ask turtles [ if wealth <= max-pxcor [set xcor wealth]]
tickend
to transact set wealth wealth - 1 ask one-of other turtles [set wealth wealth + 1]
end