Modelagem Baseada em Agentes no TerraME: estado atual
Pedro Ribeiro de Andradefeb/09
How to model these phenomena?
Agent-based modelling (ABM)
flexibilitynatural approachemergence
Bottom-up approach for building complex systems, through the dynamical interaction of agents.
How can geospatial data feed agent-based models?
Scientific question
?Jfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdfJfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdf
Jfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdf
Relations
Entities
How can geospatial data feed agent-based models?
Scientific question
Jfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdfJfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdf
Jfddfjh gfsdfgdfssf fsdf fsdfsd sdfsdf
Citizens (points)Farmers
(polygons)
First Entity: Agent
Source: (Crooks, 2006); (Lim et al. 2002)
Agents are computational systems placed in some environment.
(Jennings et al., 98)
Second Entity: Space
Discrete → cells
Dynamic
Ag
en
t
C
ell
Cell Agent
Sources: (Benenson and Torrens, 2005; Samuelson and Macau, 2006)
From
To
Relations
Cell→cell
Spatial neighbourhood between cells
Cell→agent
“Which agents belong to this cell?”
Agent→cell
Source: Adapted from (Lim et al. 2002)
“Which cells this agent controls, owns, targets?”
Agent→agent
Agents can communicate, exchange goods, etc.
Agents are situated in space.
GPM as a graphTo
Ag
en
t
Cell
a
b
a
b
c
c
Cell Agent
From
CellAgent
ForEachAgent ForEachCell
ForEachCellForEachNeighbor ForEachNeighbor
ForEachAgent
CellularSpaceSociety
Group Trajectory
DBMS
CellAgent
ForEachAgent ForEachCell
ForEachCellForEachNeighbor
ForEachAgent
CellularSpaceSociety
Group Trajectory
DBMS
Society
上海宋ABC
ACA
AACCCC
BBC
CBB
CAC
BBA
CCB
CBA
AAA
BAB
createAgent = function(capital_) return { capital = capital_, -- ... }end
data = {}data[1] = 100; data[2] = 50; data[3] = 25mag = Society(createAgent, data)
mag = Society(createAgent, 50)
Society
capital = 100 capital = 50 capital = 25
Group
ABC
ACA
AACCCC
BBC
CBB
CAC
BBA
CCB
CBA
AAA
BAB
g = Group(mag, function(agent) return agent. capital > 40 end, function(a1, a2) return a1.capital > a2.capital end)
Group
capital = 100 capital = 50 capital = 25
ForEachAgent(mag, function(agent) agent.capital = agent.capital + 100end)
Transversing the Society
capital = 200 capital = 150 capital = 125
capital = 100 capital = 50 capital = 25
InitAgents(cs)-- ...agents = GetAgents(cell)if table.getn(agents) == 0 then -- empty RemoveAgent(oldcell, agent) AddAgent(cell, agent)end
Agents within cells
Modelagem Baseada em Agentes no TerraME: estado atual
Pedro Ribeiro de Andradefeb/09