Agent-based models and social simulation Gilberto Câmara Tiago Carneiro Pedro Andrade Licence: Creative Commons By Attribution Non Commercial Share Alike http://creativecommons.org/licenses/by-nc-sa/2.5/ Where does this image come from? Where does this image come from? Map of the web (Barabasi) (could be brain connections) Information flows in Nature Ant colonies live in a chemical world Conections and flows are universal Yeast proteins (Barabasi and Boneabau, SciAm, 2003) Scientists in Silicon Valley (Fleming and Marx, Calif Mngt Rew, 2006) Information flows in the brain Neurons transmit electrical information, which generate conscience and emotions Information flows generate cooperation Foto: National Cancer Institute, EUA http://visualsonline.cancer.gov/ White cells attact a cancer cell (cooperative activity) Information flows in planet Earth Mass and energy transfer between points in the planet Complex adaptative systems How come that an ecosystem with all its diverse species functions and exhibits patterns of regularity? How come that a city with many inhabitants functions and exhibits patterns of regularity? What are complex adaptive systems? Systems composed of many interacting parts that evolve and adapt over time. Organized behavior emerges from the simultaneous interactions of parts without any global plan. What are complex adaptive systems? Universal Computing Computing studies information flows in natural systems... ...and how to represent and work with information flows in artificial systems Computational Modelling with Cell Spaces Cell Spaces Components Cell Spaces Generalizes Proximity Matriz – GPM Hybrid Automata model Nested enviroment Cell Spaces Cellular Automata: Humans as Ants Cellular Automata: Matrix, Neighbourhood, Set of discrete states, Set of transition rules, Discrete time. “CAs contain enough complexity to simulate surprising and novel change as reflected in emergent phenomena” (Mike Batty) 2-Dimensional Automata 2-dimensional cellular automaton consists of an infinite (or finite) grid of cells, each in one of a finite number of states. Time is discrete and the state of a cell at time t is a function of the states of its neighbors at time t-1. Cellular Automata Neighbourhood Rules Space and Time t States t1 Most important neighborhoods Von Neumann Neighborhood Moore Neighborhood Conway’s Game of Life 1. 2. 3. 4. 5. At each step in time, the following effects occur: Any live cell with fewer than two neighbors dies, as if by loneliness. Any live cell with more than three neighbors dies, as if by overcrowding. Any live cell with two or three neighbors lives, unchanged, to the next generation. Any dead cell with exactly three neighbors comes to life. Game of Life Static Life Oscillating Life Migrating Life Conway’s Game of Life The universe of the Game of Life is an infinite twodimensional grid of cells, each of which is either alive or dead. Cells interact with their eight neighbors. Characteristics of CA models Self-organising systems with emergent properties: locally defined rules resulting in macroscopic ordered structures. Massive amounts of individual actions result in the spatial structures that we know and recognise; Which Cellular Automata? For realistic geographical models the basic CA principles too constrained to be useful Extending the basic CA paradigm From binary (active/inactive) values to a set of inhomogeneous local states From discrete to continuous values (30% cultivated land, 40% grassland and 30% forest) Transition rules: diverse combinations Neighborhood definitions from a stationary 8-cell to generalized neighbourhood From system closure to external events to external output during transitions Agents as basis for complex systems An agent is any actor within an environment, any entity that can affect itself, the environment and other agents. Agent: flexible, interacting and autonomous Agent-Based Modelling Representations Goal Communication Communication Action Perception Environment source: Nigel Gilbert Agents: autonomy, flexibility, interaction Synchronization of fireflies Bird Flocking No central authority: Each bird reacts to its neighbour Not possible to model the flock in a global manner. Need to necessary to simulate the INTERACTION between the individuals Why is it interesting? Structure structure is emergent from agent interaction this can be directly modeled Agency agents have goals, beliefs and act this can be directly modeled Dynamics things change, develop, evolve agents move (in space and social location) and learn these can be directly modeled Source: (Gilbert, 2006) Is it qualitative or quantitative? Agent-based models can handle all types of data quantitative attributes age size of organization qualitative ordinal or categorical (e.g. ethnicity), relational (e.g. I am linked to him and her) vague A sends B a message about one time in three Source: (Gilbert, 2006) It has been used in different areas of science economy sociology archaeology ecology linguistics political sciences ... Source: http://www.leggmason.com/thoughtleaderforum/2004/conference/transcripts/arthur_trans.asp Agents changing the landscape An individual, household, or institution that takes specific actions according to its own decision rules which drive land-cover change. Four types of agents Artificial agents, artificial environment Artificial agents, natural environment Natural agents, artificial environment Natural Agents, natural environment fonte: Helen Couclelis (UCSB) Four types of agents e-science Artificial agents, artificial environment Behavioral Experiments Natural agents, artificial environment Engineering Applications Artificial agents, natural environment Descriptive Model Natural Agents, natural environment fonte: Helen Couclelis (UCSB) Is computer science universal? Modelling information flows in nature is computer science http://www.red3d.com/cwr/boids/ Bird Flocking (Reynolds) Example of a computational model 1. No central autority 2. Each bird reacts to its neighbor 3. Model based on bottom up interactions http://www.red3d.com/cwr/boids/ Bird Flocking: Reynolds Model (1987) Cohesion: steer to move toward the average position of local flockmates Separation: steer to avoid crowding local flockmates Alignment: steer towards the average heading of local flockmates www.red3d.com/cwr/boids/ Agents moving Agents moving Agents moving Source: http://www.leggmason.com/thoughtleaderforum/2004/conference/transcripts/arthur_trans.asp ABM in TerraME: Types and Functions forEachRelative forEachCell Agent forEachNeighbor Cell forEachAgent forEachAgent forEachCell Society CellularSpace Group Trajectory DBMS Society CBB CAC CBA CCB ACA CCC AAC BBC ABC AAA 上海宋 BBA BAB Society createAgent = function(capital) return Agent { capital = capital, -- ... } end data = {} data[1] = 100; data[2] = 50; data[3] = 25 mag = Society(createAgent, data) capital = 100 capital = 50 capital = 25 mag = Society(createAgent, 50) Group CBB CAC CBA CCB ACA CCC AAC BBC AAA BBA ABC 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 Traversing 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 agents = cell:getAgents() if table.getn(agents) == 0 then -- empty agent:leave(oldcell) agent:enter(cell) end agents = cell:getAgents() if table.getn(agents) == 0 then -- empty agent:move(cell) end Schelling segregation model Segregation Some studies show that most people prefer to live in a non-segregated society. Why there is so much segregation? Segregation Segregation is an outcome of individual choices But high levels of segregation indicate mean that people are prejudiced? Schelling’s Model of Segregation Micro-level rules of the game Stay if at least a third of neighbors are “kin” < 1/3 Move to random location otherwise Schelling’s Model of Segregation Schelling (1971) demonstrates a theory to explain the persistence of racial segregation in an environment of growing tolerance If individuals will tolerate racial diversity, but will not tolerate being in a minority in their locality, segregation will still be the equilibrium situation Schelling Model for Segregation Start with a CA with “white” and “black” cells (random) The new cell state is the state of the majority of the cell’s Moore neighbours White cells change to black if there are X or more black neighbours Black cells change to white if there are X or more white neighbours How long will it take for a stable state to occur? Schelling’s Model of Segregation Tolerance values above 30%: formation of ghettos The Modified Majority Model for Segregation Include random individual variation Some individuals are more susceptible to their neighbours than others In general, white cells with five neighbours change to black, but: Some “white” cells change to black if there are only four “black” neighbours Some “white” cells change to black only if there are six “black” neighbours Variation of individual difference What happens in this case after 50 iterations and 500 iterations? Urban Growth in Latin American cities: exploring urban dynamics through agent-based simulation Joana Xavier Barros As cidades Latino-americanas Altas taxas de crescimento urbano (rápida urbanização) Pobreza + assentamentos espontâneos (favelas) Fraco controle das políticas públicas sobre o processo de desenvolvimento urbano Resultado espacial: tecido urbano fragmentado com padrões morfológicos diferentes e desconectados, que evoluem e se transformam ao longo do tempo. Periferização Processo pelo qual a cidade cresce através da adição de assentamentos de baixa renda no anel periférico. Estas áreas são lentamente incorporadas à cidade pela expansão urbana, muitas vezes ocupadas por um grupo econômico mais alto, enquanto novos assentamentos de baixa renda continuam emergindo na periferia. São Paulo - Brasil Caracas - Venezuela Crescimento urbano “Urban sprawl” nos Estados Unidos “Urban sprawl” na Europa (Inglaterra) Periferização na América Latina (Brasil) Questões e metodologia Como esse processo acontece no espaço e no tempo? DINÂMICA modelagem e simulação Como o espaço é moldado por decisões individuais? Teoria da Complexidade TEMPO + ESPAÇO modelos autômatos celulares Questões sociais simulação baseada no agente (agent-based simulation) Simulador de Periferização Reproduz o processo de expulsão e expansão simulando o processo de localização residencial de 3 grupos econômicos distintos. Assume que apesar das diferenças econômicas, todos os agentes tem as mesmas preferências locacionais, ou seja, todos querem se localizar nas melhores áreas da cidade, que nas cidades latino-americanas Latina são as áreas de alta renda. Todos os agentes tem as mesmas preferências mas restrições diferentes. Módulo de Periferização Agente alta renda – pode se localizar em qualquer lugar Agente renda média – pode se localizar em qualquer lugar menos onde já existem agentes de alta renda Agente renda baixa – só pode se localizar em lugares vazios Um agente pode ocupar a célula de outro agente e quando um agente é expulso ele procura outro lugar para se assentar. Periferização – exercícios de simulação Padrão espacial: não existe nada nas regras que determine que o resultado espacial do modelo seja um padrão segregado ou que os agentes de renda alta se localizem no centro, rodeados por anéis de agentes de renda média e baixa. o padrão se aproxima da estrutura espacial de localização residencial encontrada em cidades latinoamericanas. Sementes múltiplas como condição inicial – produz padrão com características de áreas metropolitanas. Comparação com a realidade Mapas de distribuição de renda - São Paulo (Censo 2000) Mapas A and B: quantile breaks (3 and 6 ranges) Mapas C and D: natural breaks (3 and 6 ranges) Observação: Não trabalhamos com nenhum tipo de definição de grupos econômicos. Periferização no TerraME -- crie uma cidade (espaço celular) cidade = CellularSpace {xdim = TAMANHO, ydim = TAMANHO} -- define uma vizinhança 3x3 para o espaço celular createMooreNeighborhood(cidade, "1", false) -- preenche o espaço celular com celulas vazias iniciar (cidade) -- acha a celula central centro = Coord { x = TAMANHO/2, y = TAMANHO/2} celulaCentral = cidade:getCell(centro) -- cria uma sociedade de agentes populacao = Society(createAgent, POPULACAO) -- acha um lugar para cada agente na cidade forEachAgent(populacao, function(agent) acheLugar(agent) end) Periferização no TerraME -- Parâmetros do modelo TAMANHO = 60 POPULACAO = TAMANHO*TAMANHO/2 VAGO = 0 POBRE = 1 REMEDIADO = 2 RICO = 3 PROP_RICO = 0.1 PROP_REMEDIADO = 0.4 PROP_POBRE = 0.5 ---- funcoes auxiliares function iniciar (cidade) forEachCell(cidade, function(cell) cell.ocupante = VAGO end ) end Periferização no TerraME function createAgent() agent = Agent{ classe = geraClasse(), celula = celulaCentral } return agent End -- gera uma classe social para o agente function geraClasse() valor = math.random() if valor < PROP_POBRE then return POBRE elseif valor < PROP_POBRE + PROP_REMEDIADO then return REMEDIADO end return RICO end Periferização no TerraME function acheLugar(agent) -- acha um lugar para morar achou_lugar = false repeat -- busca um lugar que gostaria de morar lugar = random_walk (agent) -- move o agente para o lugar que gostaria de morar agent.celula = lugar -- bate na porta e chama os moradores moradores = lugar:getAgents() -- verifica se tem alguem if getsize(moradores) == 0 then -- se nao tem ninguem, ocupa a celula agent:enter(lugar) lugar.ocupante = agent.classe achou_lugar = true else -- tem gente dono = moradores[1] achou_lugar = expulsa_morador (agent, dono, lugar) end until achou_lugar -- procura local para morar até achar end Periferização no TerraME function random_walk (agent) -- ache um vizinho aleatorio numa vizinhança 3 x 3 vizinho = agent.celula:getNeighborhood():sample() -- ache o vizinho do vizinho vizinho2 = vizinho:getNeighborhood():sample() return vizinho2 end Periferização no TerraME function expulsa_morador (agent, dono, lugar) -- compara a classe social do agente e do dono if (dono.classe == POBRE and (agent.classe == RICO or agent.classe == REMEDIADO)) or (dono.classe == REMEDIADO and agent.classe == RICO) then -- o morador sai da celula dono:leave(lugar) -- o agente entra na celula agent:enter(lugar) -- o status da celula muda lugar.ocupante = agent.classe -- o morador expulso procura outro lugar acheLugar(dono) -- indica que o agente achou um lugar para morar achou_lugar = true else achou_lugar = false -- nada feito end return achou_lugar end