{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Modelos basados en Agentes con Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Esta notebook fue creada originalmente como un blog post por [Raúl E. López Briega](https://relopezbriega.com.ar/) en [Matemáticas, Analisis de datos y Python](https://relopezbriega.github.io). El contenido esta bajo la licencia BSD.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Modelos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> \"Conocer la realidad implica construir sistemas en continua transformación que se corresponden, más o menos, a la realidad\"\n", "\n", "**[Jean Piaget](https://es.wikipedia.org/wiki/Jean_Piaget)**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introducción\n", "\n", "A medida que el mundo se hace más interconectado y complejo, nuestra habilidad para comprenderlo se hace menos efectiva. Los modelos simples que solíamos utilizar ya no alcanzan para responder muchas de nuestras preguntas. Para poder entender las dinámicas de los [sistemas complejos](https://relopezbriega.github.io/blog/2020/03/26/sistemas-dinamicos-complejidad-y-caos-con-python/); necesitamos de nuevas herramientas. El poder de cálculo de las computadoras actuales nos permite realizar nuevos tipos de experimentos. Una de las nuevas metodologías que disponemos para analizar los [sistemas complejos](https://relopezbriega.github.io/blog/2020/03/26/sistemas-dinamicos-complejidad-y-caos-con-python/) son los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente). \n", "\n", "## Modelos basados en Agentes\n", "\n", "La idea central de los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) es que muchos de los fenómenos que vemos en el mundo pueden ser modelados con *agentes*, un *ambiente*, y la descripción de las interacciones entre los *agentes* y entre los *agentes* y el *ambiente*.\n", "Un *agente* es un individuo autónomo o un objeto con propiedades particulares, acciones y posibles objetivos. El *ambiente* es el territorio en el que los *agentes* interactúan. Las interacciones pueden ser de los *agentes* entre sí o de éstos con el *ambiente* y pueden llegar a ser bastante complejas e incluso pueden llegar a cambiar con el paso del tiempo. Como las interacciones están construidas en base a un intercambio de información, luego de una interacción el *agente* puede actualizar su estado interno o tomar distintas decisiones. \n", "\n", "Los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) constituyen una nueva generación de métodos computacionales que permiten modelar la estructura de un [sistema complejo](https://relopezbriega.github.io/blog/2020/03/26/sistemas-dinamicos-complejidad-y-caos-con-python/) y simular su evolución dinámica a lo largo del tiempo. Constituyen un tercer modo de hacer ciencia, distinto y complementario a los dos métodos científicos clásicos: la inducción y la deducción. \n", "\n", "Un [modelo basado en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) es un tipo particular de modelo científico que se implementa como una simulación computacional. Por lo tanto, son modelos formales que deben ser distinguidos tanto de los matemáticos (basados en [ecuaciones diferenciales](https://relopezbriega.github.io/blog/2016/01/10/ecuaciones-diferenciales-con-python/) o de otro tipo) como de los [estadísticos](https://relopezbriega.github.io/blog/2015/06/27/probabilidad-y-estadistica-con-python/) (orientados por variables y expresados como ecuaciones de regresión, estructurales, o de otro tipo). \n", "\n", "### Vínculo micro-macro\n", "\n", "Los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) abordan el vínculo *micro-macro* en una doble dirección. En primer lugar, permiten modelar y simular el vínculo de lo *micro* a lo *macro*, es decir, \"cómo las interacciones locales y descentralizadas entre *agentes* autónomos y heterogéneos generan una determinada regularidad\" *macrosocial*. Se suele utilizar el concepto de *emergente* para referirse a la aparición de \"cualidades o propiedades de un sistema que presentan un carácter de novedad con relación a las cualidades o propiedades de los elementos considerados aisladamente\". Los fenómenos *emergentes* son, en consecuencia, difíciles de explicar y predecir en la medida en que las cualidades nuevas a nivel *macro* de un sistema no pueden deducirse ni reducirse al conocimiento analítico de las partes a nivel *micro*.\n", "\n", "En segundo lugar, los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) contribuyen a comprender el vínculo de lo *macro* a lo *micro*, relativo al modo en que \"las estructuras sociales construyen e influyen las acciones futuras y las interacciones entre los actores individuales\". El interés analítico de esta fase del modelado del vínculo *micro-macro* se centra en comprender cómo \"los individuos elaboran representaciones mentales de construcciones sociales\" que influyen en su propia conducta práctica. En otros términos, la acción social (nivel micro) no puede escindirse del modo en que los individuos piensan y razonan sobre el orden social (nivel macro). Esta problemática ha sido conceptualizada bajo el nombre *emergente de segundo orden*, es decir, a la aptitud reflexiva de los *agentes* para razonar sobre las propiedades *emergentes* que la misma interacción social produce (emergencia de primer orden).\n", "\n", "\n", "## Pensar con modelos\n", "\n", "Aprender es explorar. Organizar e interpretar datos con modelos se ha convertido en una competencia fundamental para la estrategia en los negocios, la planificación urbana, la economía, la medicina, la ingeniería y la ecología, entre muchas otras. Pero no necesariamente debemos quedarnos con un solo modelo, muchas veces la aplicación de un conjunto de modelos puede ayudarnos a dar sentido a fenómenos [complejos](https://relopezbriega.github.io/blog/2020/03/26/sistemas-dinamicos-complejidad-y-caos-con-python/). La idea central es que el pensamiento con múltiples modelos produce sabiduría a través de un conjunto diverso de marcos lógicos. Los distintos modelos acentúan diferentes fuerzas causales. Sus conocimientos e implicaciones se superponen y se entrelazan. Al utilizar muchos modelos como marcos, desarrollamos una comprensión más profunda de la realidad.\n", "\n", "Algunas de las ventajas de utilizar modelos son:\n", "\n", "* Los **modelos son explicativos** porque señalan los mecanismos esenciales que subyacen un fenómeno. Pueden funcionar como una prueba de que los mecanismos hipotéticos son suficientes para dar cuenta de una observación. Los modelos nos proporcionan una prueba de concepto de que algo es posible.\n", "\n", "* Los **modelos facilitan la experimentación.** Los modelos se pueden ejecutar repetidamente para notar variaciones en su dinámica y sus resultados. Los parámetros del modelo se pueden variar para ver el efecto en su comportamiento y resultados.\n", "\n", "* Los **modelos nos proporcionan analogías.** Dado que los modelos son simplificaciones de la realidad, nos permiten encontrar similitudes con otras simplificaciones similares, incluso si los fenómenos modelados son aparentemente muy diferentes.\n", "\n", "* Los modelos se pueden utilizar como vehículo de **comunicación y educación**. Los modelos nos brindan una herramienta educativa que encapsula conocimientos que pueden no estar fácilmente disponibles en la observación del mundo real.\n", "\n", "\n", "## Mesa\n", "\n", "Una de las razones por las que amo [Python](https://www.python.org/); es que siempre es posible encontrar alguna librería para hacer casi cualquier cosa en Ciencia con su ayuda. Obviamente, modelar [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) no podía ser una excepción.\n", "\n", "[Mesa](https://mesa.readthedocs.io/en/master/index.html) es un paquete de [Python](https://www.python.org/) de código abierto con licencia [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) que nos permite crear rápidamente [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) utilizando componentes centrales incorporados (como programadores de agentes y cuadrículas espaciales) o implementaciones personalizadas; visualizarlos usando una interfaz basada en el navegador; y analizar sus resultados con las herramientas de análisis de datos [Python](https://www.python.org/).\n", "\n", "El principio rector de la arquitectura de [Mesa](https://mesa.readthedocs.io/en/master/index.html) es la modularidad; hace suposiciones mínimas sobre la forma que tomará un modelo. Se divide en tres categorías principales: modelado, análisis y visualizaciones. El componente principal de modelado, nos brinda todo lo que necesitamos para construir un modelo. La clase **Model** para guardar los parámetros a nivel modelo; una o más clases **Agent** que describen a los *agentes* del modelo; un **Scheduler** que controla la activación de los *agentes* y maneja el tiempo y el espacio o red en la que se desarrollan las interacciones. Los componentes de análisis son el **data collector** utilizado para grabar los datos de cada ejecución del modelo y los **batch runners** para automatizar múltiples ejecuciones con distintos parámetros. Finalmente, los componentes de visualización se utilizan para mapear desde un objeto modelo a uno o más representaciones visuales a través de una interfaz de servidor con el navegador web. \n", "\n", " \n", "## Modelando el COVID19 - Modelo SIR\n", "\n", "Tiempo de pasar a un ejemplo concreto, y que mejor que aprovechar la popularidad de los [modelos epidemiológicos](https://es.wikipedia.org/wiki/Modelaje_matem%C3%A1tico_de_epidemias) que trajo la pandemia global del [COVID19](https://www.argentina.gob.ar/salud/coronavirus-COVID-19). Para este ejemplo en particular vamos a utilizar el [modelo SIR](https://es.wikipedia.org/wiki/Modelo_SIR); el cual es uno de los más simples para captar las características típicas de los brotes epidémicos. El nombre del modelo proviene de las iniciales S (población susceptible), I (población infectada) y R (población recuperada); relaciona las variaciones de las tres poblaciones (Susceptible, Infectada y Recuperada) a través de la tasa de infección y el período infeccioso promedio.\n", "\n", "Veamos como implementarlo para una población de 10000 individuos." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# \n", "# Importando las librerías que vamos a utilizar\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from datetime import date as datemethod\n", "from datetime import datetime\n", "from mesa import Agent\n", "from mesa import Model\n", "from mesa.time import RandomActivation\n", "from mesa.space import NetworkGrid\n", "from mesa.datacollection import DataCollector\n", "from mesa_SIR import SIR\n", "import mesa_SIR.calculations_and_plots as c_p\n", "\n", "# graficos incrustados\n", "%matplotlib inline\n", "\n", "parametros = {'I0':0.01, 'ptrans':0.25, 'progression_period':3, \n", " 'progression_sd':2, 'population':10000, 'interactions':6,\n", " 'reinfection_rate':0.00, 'death_rate':0.0200, \n", " 'recovery_days':15, 'recovery_sd':7, 'severe':0.18, 'steps':20}\n", "\n", "# Parámetros\n", "###################################################################################################################\n", "# ptrans = Probabilidad de transmisión.\n", "# population = Total de población.\n", "# progression_period = Número de días hasta que se busca tratamiento.\n", "# progression_sd = Desvio estandar para buscar tratamiento.\n", "# interactions = Número de interacciones por persona (baja con distancia social)\n", "# reinfection_rate = Probalidad de volver a enfermar luego de recuperado.\n", "# I0 = Probalidad inicial de estar infectado.\n", "# death_rate = Probabilidad de muerte luego de ser infectado.\n", "# recovery_days = Promedio de días para recuperarse\n", "# recovery_sd = Desvio estandar de los días de recuperación.\n", "# severe = Probabilidad de desarrollar síntomas severos.\n", "# steps = número de días de la simulación.\n", "\n", "#Agent class\n", "class humano(Agent):\n", " \n", " def __init__(self, unique_id, model):\n", " super().__init__(unique_id, model)\n", " self.pos = unique_id\n", " self.infected, self.susceptible, self.severe = self.model.SIR_instance.initial_infection()\n", " self.was_infected = False\n", " self.recovered = False\n", " self.alive = True\n", " self.day = 0\n", " self.induced_infections = 0\n", " self.infected_others = False\n", " \n", " def step(self):\n", "\n", " self.model.SIR_instance.interact(self)\n", " self.day += 1\n", " \n", "class modelo_COVID(Model):\n", " \n", " def __init__(self):\n", " super().__init__(Model)\n", " \n", " self.susceptible = 0\n", " self.dead = 0\n", " self.recovered = 0\n", " self.infected = 0\n", " interactions = parametros['interactions']\n", " self.population = parametros['population']\n", " self.SIR_instance = SIR.Infection(self, ptrans = parametros['ptrans'],\n", " reinfection_rate = parametros['reinfection_rate'],\n", " I0= parametros[\"I0\"],\n", " severe = parametros[\"severe\"],\n", " progression_period = parametros[\"progression_period\"],\n", " progression_sd = parametros[\"progression_sd\"],\n", " death_rate = parametros[\"death_rate\"],\n", " recovery_days = parametros[\"recovery_days\"],\n", " recovery_sd = parametros[\"recovery_sd\"])\n", "\n", "\n", " G = SIR.build_network(interactions, self.population)\n", " self.grid = NetworkGrid(G)\n", " self.schedule = RandomActivation(self)\n", " self.dead_agents = []\n", " self.running = True\n", " \n", " for node in range(self.population):\n", " new_agent = humano(node, self) \n", " self.grid.place_agent(new_agent, node)\n", " self.schedule.add(new_agent)\n", "\n", " self.datacollector = DataCollector(model_reporters={\"infectados\": lambda m: c_p.compute(m,'infected'),\n", " \"recuperados\": lambda m: c_p.compute(m,'recovered'),\n", " \"susceptibles\": lambda m: c_p.compute(m,\"susceptible\"),\n", " \"muertes\": lambda m: c_p.compute(m, \"dead\"),\n", " \"R0\": lambda m: c_p.compute(m, \"R0\"),\n", " \"casos_severos\": lambda m: c_p.compute(m,\"severe\")})\n", " self.datacollector.collect(self)\n", " \n", " def step(self):\n", " self.schedule.step()\n", " \n", " self.datacollector.collect(self)\n", "\n", " if self.dead == self.schedule.get_agent_count():\n", " self.running = False\n", " else:\n", " self.running = True" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Ejecución del modelo\n", "# Guardar salida del modelo\n", "today = datemethod.strftime(datetime.utcnow(), '%Y%m%dZ%H%M%S')\n", "filename = 'COVID_output_' + today + '.csv'\n", "output_path = '/home/raul/Documentos/'\n", "output_file = output_path + filename\n", "\n", "# iniciar modelo\n", "covid = modelo_COVID()\n", "dias=parametros[\"steps\"]\n", "\n", "for i in range(dias):\n", " covid.step()\n", "\n", "# generar salida. \n", "output_data = covid.datacollector.get_model_vars_dataframe()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
infectadosrecuperadossusceptiblesmuertesR0casos_severos
094099060.00.00000012
113571086330.02.791667229
267488831613.02.3108061193
3932231135512.02.1192701651
492886385321.02.1051731629
588601088943.02.0972851545
682651665367.02.0973001409
775722337190.02.0980901283
8673131571111.02.0986671126
9583940291131.02.098212968
10485849970145.02.097477791
11382660130161.02.097345609
12290169290170.02.097471453
13210877130179.02.097772323
14140284170181.02.097577217
1586489520184.02.097814145
1648993240187.02.09805283
1724695640190.02.09805240
1811096990191.02.09805220
194697630191.02.0980529
202297870191.02.0980525
\n", "
" ], "text/plain": [ " infectados recuperados susceptibles muertes R0 casos_severos\n", "0 94 0 9906 0.0 0.000000 12\n", "1 1357 10 8633 0.0 2.791667 229\n", "2 6748 88 3161 3.0 2.310806 1193\n", "3 9322 311 355 12.0 2.119270 1651\n", "4 9288 638 53 21.0 2.105173 1629\n", "5 8860 1088 9 43.0 2.097285 1545\n", "6 8265 1665 3 67.0 2.097300 1409\n", "7 7572 2337 1 90.0 2.098090 1283\n", "8 6731 3157 1 111.0 2.098667 1126\n", "9 5839 4029 1 131.0 2.098212 968\n", "10 4858 4997 0 145.0 2.097477 791\n", "11 3826 6013 0 161.0 2.097345 609\n", "12 2901 6929 0 170.0 2.097471 453\n", "13 2108 7713 0 179.0 2.097772 323\n", "14 1402 8417 0 181.0 2.097577 217\n", "15 864 8952 0 184.0 2.097814 145\n", "16 489 9324 0 187.0 2.098052 83\n", "17 246 9564 0 190.0 2.098052 40\n", "18 110 9699 0 191.0 2.098052 20\n", "19 46 9763 0 191.0 2.098052 9\n", "20 22 9787 0 191.0 2.098052 5" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output_data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "title = 'Modelo COVID'\n", "plot1 = c_p.plot_SIR(output_data, title)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c_p.plot_severe(output_data, title)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como vemos en este ejemplo simplificado, la infección se expande a un velocidad muy considerable; en tan solo 3 días la mayoría de la población está infectada. Podemos jugar con los parámetros, por por ejemplo con el de interacciones, para ver el efecto que puede tener reducir la circulación social en la expansión de la infección (el ya tan famoso aplanamiento de la curva en Argentina). \n", "\n", "Los [modelos basados en agentes](https://es.wikipedia.org/wiki/Modelo_basado_en_agente) constituyen una herramienta más del enorme arsenal que nos ofrecen las computadoras para asistirnos en el proceso de toma de decisiones. No deberíamos perder la oportunidad de explorarlos! \n", "\n", "\n", "Saludos!\n", "\n", "*Este post fue escrito por [Raúl e. López Briega](https://relopezbriega.github.io/) utilizando [Jupyter notebook](https://jupyter.org/). Pueden descargar este [notebook](https://github.com/relopezbriega/relopezbriega.github.io/blob/master/downloads/AgentPy.ipynb) o ver su version estática en [nbviewer](https://nbviewer.ipython.org/github/relopezbriega/relopezbriega.github.io/blob/master/downloads/AgentPy.ipynb).*" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }