Components of Agent-Based Modeling: An Overview of Agents, Environments, and Interactions
This chapter explores the major components of Agent-Based Modeling (ABM), including agents, environments, interactions, and user interfaces. It highlights individual agent properties, behaviors, and the dynamic between agents and their environments. The chapter further delves into the observer/user interface for interacting with agents and scheduling tasks. A practical example using a traffic flow model demonstrates how agents can affect the environment and each other, illustrating concepts such as emergence and cognitive aspects of agents, culminating in a comprehensive understanding of ABM construction.
Components of Agent-Based Modeling: An Overview of Agents, Environments, and Interactions
E N D
Presentation Transcript
MIS 585 Special Topics in MIS: Agent-Based Modeling Chapter 5 The Components of Agent-Based Modeling
Outline Overview Agents Environments Interactions Observer/User Interface Schedule Wrapping It All Up Summary
The Components of Agent-Based Modeling • Individual components of ABMs • Overview of components of ABM • Discuss each components • How components come together for the construction of ABMs
Outline Overview Agents Environments Interactions Observer/User Interface Schedule Wrapping It All Up Summary
Overview • Complex systems – described • agents, environment • behavior - agent rules • Basic components of ABMs • agents – basic ontological units • environment – world in which agents live • interactions – between agents and agents and environments
Overview • agent actions – interanlly • directly affacting agents internal state • E.g.: in Segregation – agents move • The environment may not be passive • E.g.: grass regrows • Two more:
Overview • Observer/User Interface: an agent but can access all agents and environment • ask agents to carry out specific tasks • users interact with ageents with UI • Schedule: the observer tells agents when to do
Trafic Basic Model • Trafic basic model –a simple model of trafic flow • in Social Science section • to explore how trafic jams form • they thought to include • trafic accidents, radar traps • but without such hindrances • trafic jams form as • cars approach to cars in front of them • they slow down, • cars behind slow down and so on... • a ripple effect backwords – trafic jam moves backward • emergence
Outline Overview Agents Environments Interactions Observer/User Interface Schedule Wrapping It All Up Summary
Agents • Properties • Behavior (Actions) • Collections of Agents • The Granularity of an Agent • Agents Cognition • Other Kind of Agents
Agents • basic building blocks of ABM • properties – they have • internal and external states • actions – behavior • what they do • Several issues: • agents grin-size – most effective • e.g.: political model: actors, institutions • agent cognition- capability to observe and decision about world • proto agnets and meta-agents
Properties • describe agent’s current state • individual agents - inspected by monitors: • patch, turtle, link • Figure 5.2 • Two sets of properties • Standard turtle properties • WHO, COLOR, HEADING, XCOR, YCOR, SHAPE, LABEL, LABEL-COLOR, BREED, HIDEN?, SIZE, PEN-SIZE, PEN-MODE
Properties (cont.) • Standard patch properties: • PXCOR, PYCOR, PLABEL, PLABEL-COLOR • Standard link properties: • END1, END2, COLOR, LABEL, LABEL-COLOR, HIDEN?, BREED, THICKNESS, SHAPE, THE-MODE • turtles can directly access patch properties they are currently on • sit on exactly one patch at a time
accessing turtles from patches: • turtles-here: set of turtles on the patch • turtles-on: set of turtles on a specified patch
user defined prrperties • author defined properties: • E.g.: for Simple Trafic model: • SPEED, SPEED-LIMIT, SPEED-MIN • should be described in info tab • SPEED: curent speed of the car • SPEED-LIMIT: maximum speed of the car • SPEED-MIN: its minimum speed
set in the SETUP-CARS procedure at the srart of the model set speed .1 + random-float .9 set speed-limit 1 set speed-min 0
uniformly distributed random variable random-float value • 0 <= random number < value • normally distributed random variables random-normal mean standard-dev • E.g.: random-normal .5 .1 • mean and starndard deviation of a normal distribution
Initialize agent properties from • lists or files • emprical data • Example: from file: • Higths of patches in the Butterfly model are red from a file • Example: from lists: • colors of people are assigned from red or blue set color one-of [red blue]
agent properties can be changed during the running of the model • E.g.: in Trafic Basic model • speed propertiy can be increased or decreased in the SPEED-UP-CAR procedure set speed speed + acceleration
Behaviors (Actions) • how the agents can behave – actions it can take • the agent can change the state of the • environment, other agents’ or it self • List of all predefined behavior • NetLogo dictionary: • turtles, patches, links FORWARD/BACKWARD RIGHT/LEFT HATCH/DIE
Behaviors (Actions) • author defined behavior • E.g.: in TBM, SPEED-UP-CAR, SLOW-DOWN-CAR to slow-down-car ;; turtle procedure set speed speed - deceleration end to speed-up-car ;; turtle procedure set speed speed + acceleration end
initialization globals [ sample-car ] turtles-own [ speed speed-limit speed-min ] to setup clear-all ask patches [ setup-road ] setup-cars watch sample-car reset-ticks end to setup-road ;; patch procedure if (pycor < 2) and (pycor > -2) [ set pcolor white ] end
setup-cars to setup-cars if number-of-cars > world-width [ user-message (word "There are too many cars for the amount of road. Please decrease the NUMBER-OF-CARS slider to below " (world-width + 1) " and press the SETUP button again. The setup has stopped.") stop ] set-default-shape turtles "car" crt number-of-cars [ set color blue set xcor random-xcor set heading 90 ;;; set initial speed to be in range 0.1 to 1.0 set speed 0.1 + random-float .9 set speed-limit 1 set speed-min 0 separate-cars ] set sample-car one-of turtles ask sample-car [ set color red ] end
; this procedure is needed so when we click "Setup" we ; don't end up with any two cars on the same patch to separate-cars ;; turtle procedure if any? other turtles-here [ fd 1 separate-cars ] end
go • adjust their speed according to speed limits to go ;; if there is a car right ahead of you, match its speed then slow down ask turtles [ let car-ahead one-of turtles-on patch-ahead 1 ifelse car-ahead != nobody [ set speed [speed] of car-ahead slow-down-car ] ;; otherwise, speed up [ speed-up-car ] ;;; don't slow down below speed minimum or speed up beyond speed limit if speed < speed-min [ set speed speed-min ] if speed > speed-limit [ set speed speed-limit ] fd speed ] tick end
slow-down-car/speed-up-car to slow-down-car ;; turtle procedure set speed speed - deceleration end to speed-up-car ;; turtle procedure set speed speed + acceleration end
agents - cars can change their speed and indirectly affect the speed of other cars • can chnge environment properties • E.g.: speed of a car makes the road – the patches worm-up by a precedure WEAR • E.g.: sheep eat grass , change the amount of grass in a place
Collections of Agents • Three types • mobile agents – turtles in netLogo • stationary agents – ptches in netLogo • connecting agents: links in netLogo
Collections of Agents • mobile agents – turtles in netLogo • shapeless; arealess points • even shape and size, • coordinate at center: xcor,ycor
Collections of Agents • stationary agents – ptches in netLogo • acted upon by turtles; pasive environments • take actions and perform operations • defined space/area
Collections of Agents • connecting agents: links in netLogo • link two or more agents • relation between turtles • friendship, communiciation, • envirnonments: roads
Breeds of Agents • particular set of agents with their own preperties and actions • breed of an agent: class or category to which the agent belongs • if different agents have different properties or actions • E.g.: sheep and wolves has the same properties but actions are different tutles-own [energy] sheep-own [wooliness] volves-own [fang-strength] sheep – energy and wooliness volves - energy and fang-strength
Sets of Agents • NetLogo – agentset: unordered collection of agents • collecting agents something in common • or randomly selecting subset of another agentset let fast-cars turtles with [speed > 0.5] ask fast-cars [set size 2.0] • or without let ask turtles with [speed > 0.5] [set size 2.0]
all turn to size 2 • slow turtels sizes 1 ask turtles with [speed > 0.5] [set size 2.0] ask turtles with [speed <= 0.5] [set size 1.0] • another way of doing ask turtles [ ifelse [speed > 0.5] [set size 2.0] [set size 1.0] ] :: end ask
collection of agents based on location let car-ahead one-of turtles-on patch-ahead 1 ifelse car-ahead != nobody [ set speed [speed] of car-ahead slow-down-car ] • TURTLES-ON PATCH-AHEAD 1 • turtles on the patch 1 unit ahead of a turtles • accessing collections agents based on their locations • TURTLES-HERE, TURTLES-AT, NEIGHBORS, IN-RADIUS • choosing agents randomly • N-OF, ONE-OF
choosing agents randomly • N-OF, ONE-OF ;; create turtles on random patches ask n-of number patches [ sprout 1 [set color one-of [red green]] ] ;; end ask
Agentsets and Lists • creating an empty list set a-list [] • add items to list set a-list fput 1 a-list set a-list fput “and” a-list set a-list fput turtle 0 a-list show a-list [(turtle 0) “and” 1]
an agentsets hold same type of agents • empty agentsets • no-turtles, no-patches, no-links • creates an empty agentset of turtles set an-agentset no-trutles set an-agentset (turtle-set turtle 0) set an-agentset (turtle-set an-agentset turtle 1 turtle 2) :: an-agentset has three turtles
agentsets can be asked to do something • lists cannot be asked • agentsets are unordered • when printing they are printed randomly turtles-own [information] let a-list [] set a-list sort-on [information] turtles • a-list: list of turtles in ascending order by information
foreach a-list [ ask ? [] ;; do something ] • ? as a special variable takes on each value of the list elements
let n 0 foreach sort patches [ ask ? [ set plabel n set n n + 1 ] ] ;; patches are labeled with numbers in left-to-right, ;; top-to-bottom order
Agentsets and Computation • when an agentset is asked to perform an action, agents collected at that moment are asked to do • agent A, agent B, are in the collection • agent C not in the collection • if agent A action causes agent B not satisfy collection criteria but agent B is also asked • if agent A action causes agent C satisfy collection criteria but agent C is not asked • E.g.: Agentset Ordering Model (AOM) in IABM Ch 05
setup ;; create 100 blue turtles of size between 0.0 and 2.0 to setup clear-all create-turtles 100 [ set size random-float 2.0 forward 10 set color blue ] reset-ticks end
go to go ;; ask all turtles with size < 1 to ask a larger turtle to decrease its size, and then turn themselves red ask turtles with [ size < 1.0 ] [ ask one-of turtles with [size > 1.0][ set size size - 0.5 ] set color red ] print count turtles with [color = red] print count turtles with [size < 1.0] end
Computational Efficiency • Sometimes it is better to form an agentset before performing operations on it • E.g.: Agent Efficiency Model (AEM) in IABM Ch 05 • trade off between efficiency and code readability
setup ;; SETUP colors the patches so that roughly half are red and half are green to setup clear-all ask patches [ set pcolor one-of [red green] ] reset-ticks end
go-1 ;; GO-1 sets the labels of red patches to a small random number (0-4) ;; and the labels of green patches to a larger random number (5-9) to go-1 if any? patches with [pcolor = red] [ ask patches with [ pcolor = red ] [ set plabel random 5 ] ] if any? patches with [pcolor = green] [ ask patches with [ pcolor = green ] [ set plabel 5 + random 5 ] ] tick end
go-2 ;; GO-2 has the same behavior as GO-1 above, but it is more ;; efficient as it computes each of the agentsets only once. to go-2 let red-patches patches with [ pcolor = red ] let green-patches patches with [ pcolor = green ] if any? red-patches [ ask red-patches [ set plabel random 5 ] ] if any? green-pathces [ ask green-patches [ set plabel 5 + random 5 ] ] tick end
go-3 ;; GO-3 explores what happens if patch colors are changed on the fly. ;; GO-3 results in the entire world becoming red to go-3 if any? patches with [pcolor = red] [ ask patches with [ pcolor = red ] [ set pcolor green ] ] if any? patches [with pcolor = green] [ ask patches with [ pcolor = green ] [ set pcolor red ] ] tick end
go-4 ;; GO-4 explores what happens if you first keep track ;; of which patches are red and which are green. ;; GO-4 results in the patches swapping their colors. to go-4 let red-patches patches with [ pcolor = red ] let green-patches patches with [ pcolor = green ] if any? red-patches [ ask red-patches [ set pcolor green ] ] if any? green-patches [ ask green-patches [ set pcolor red ] ] tick end