550 likes | 568 Vues
MIS 643 Agent-Based Modeling amd Simulation 2017/2018 Fall Creating Simple Agent-Based Models. Outline. Intorduction Life Heroes and Cowards Simple Economy. Introduction. Intorduction to Agent-Based Modeling by U. Wilensky and W. Rand Chapter 2. Introduction.
E N D
MIS 643 Agent-Based Modeling amd Simulation 2017/2018 Fall Creating Simple Agent-Based Models
Outline Intorduction Life Heroes and Cowards Simple Economy
Introduction • Intorduction to Agent-Based Modeling • by U. Wilensky and W. Rand • 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 Intorduction Life Heroes and Cowards Simple 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 than 2 alive neighbors • it dies • if it has more than 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 hirizonally, 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 • procedures – commands • to procedure_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
Procedures (cont.) to setup end to go end
Initialization to setup ;; ask patches [ comands ] .. ;; other commnads end ask primitive asks selected agents to do actions by commands in brackets set color of all pathces to red set - primitive is assignment pcolor – variable for patches
Initialization - algorithm 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 Centreric Thinking • WR-IABM Chapter 2 • Box 2.2
Asking Patches Probabilistically • each patch performs the tasks in ask with a probability • probability of a patch being green is 0.1 • in each run different number of patches turn into green
Probability of a Patch being green ask patches [ if random 100 < 10 [set pcolor green] ;; end if ] ;; end ask • or ask patches with [random 100 < 10] [ set pcolor green ] ] ;; end ask
Asking exactly 10% of patches to setup ask n-of 0.1*(51*51) patches [ set pcolor green ] ] ;; end ask ] ;;end setup • or more generally to setup let number-of-patches count patches ask n-of 0.1*number-of-patches patches [ set pcolor green ] ] ;; end ask ] ;;end setup
go Procedure - algorithm to 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 Implementation to 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] ]
clear-all to setup clear-all ;abriviares as – ca - ask patches [ set pcolor blue if random 100 < 10 [ set pcolor green ] ] end clear-all: clear all default values
variable for patches patches-own [ live-neighbors ] live-neighbors different variable for each patch initialized to 0
firther modifications • adding ticks • add reset-ticks • to the end of setup • add tick to the begining or as a last statemet of go procedure
to setup clear-all ask patches [ set pcolor blue if random 100 < 10 [ set pcolor green ] ] reset-ticks end
to 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] ] ;; end ask tick ] ;; end go procedure
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 Intorduction Life Heroes and Cowards Simple Economy
Heroes and Cowards • Each member (player) has an enemy and a friend selectd from other people playing the game
Rules of the game • with people each choose a heroe and an enemy • two stages: • first every one act – cowardly • 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 pseudocode to setup ;; clear all previous settings variables ;; make patches white ;; create a set of turtles read 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 ticks end
setup code turtles-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-ticks end
Interface elements • slider: • variable: number • default 68 • Chooser • variable: personalities • choices: “coward”, “heroe”, ”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 one end
to go ask turtles [ if color = blue [act-bravely] if color = red [act-cowadly] ] tick end
acting submodels to act-bravely ;; cıbtext turtle ;; move toward the mid of your friend and your enemy facexy ([xcor] of friend + [xcor] of enemy) / 2 ([ycor] of friend + [ycor] of enemy) / 2 fd 0.1 end to act-cowadly ;; cıbtext turtle ;; 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.1 end
Random number generation • sequance of random numbers • initial value is taken from the clock of computer • if you want to strart from the same seed random-seed 137 show random 100 show random 100 show random 100 • always generate the same sequance of random numbers 79 89 61
Outline Intorduction Life Heroes and Cowards Simple 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 they have positive wealth ;; advence clock end to transact ;; contecst turtle ;; decrement wealth of current turtle by one ;; for one of the other turtles, increment its wealth by one end
go and transact to go ask turtles with [wealth > 0] [transact] tick end to transact set wealth wealth - 1 ask one-of other turtles [set wealth wealth + 1] end
Histogram • Select a plot • title: Wealth Distribution • min x cor: 1 nax x cor 500 • min y cor 1 max y cor 80 • pen update command: • histogram [wealth] of turtles • pen – select bar
Exercises • can you move the wealth chacking condition to transact? • can you use with instead of if?