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