4. Modelo de Epidemia
Crearás un modelo de epidemia que simula la propagación de una enfermedad a través de una población.
Requisitos Previos
- Navegar al perfil, crear/renombrar proyectos
- Crear agentes Turtle y darles diferentes rasgos (color/forma)
- Cambiar entre páginas
- Reiniciar la simulación: eliminar agentes Turtle antiguos antes de crear nuevos
- Dispersar agentes Turtle
Objetivos de Aprendizaje
- Describir cómo usar el bloque "random___" para asignar un rasgo a una parte de las poblaciones de agentes y en el movimiento
- Formar expresiones condicionales usando operadores de comparación y bloques "If___"
- Dar un ejemplo de una colisión dependiente de rasgos y explicar cómo se programan
- Explicar cómo el modelo simula con precisión un modelo de epidemia
- Construir un gráfico de líneas de agentes Turtle sanos e infectados
Nuevos Términos
Random
Nuevos Bloques
Random___ • With _ % chance
Descripción General
Para construir este modelo, necesitarás:
- Crear agentes Turtle en el mundo.
- Hacer que algunos de esos agentes Turtle estén enfermos.
- Hacer que los agentes Turtle se muevan.
- Hacer que la enfermedad se propague mediante colisiones.
- Crear un gráfico de líneas que muestre la cantidad de agentes Turtle enfermos y sanos.
- Hacer que los agentes Turtle se recuperen.
- Expandir el modelo y hacerlo tuyo.
Parte 1: Crear Agentes Sanos
Objetivo: Crear 300 agentes amarillos que representan la población "sana"
Pasos
- Crear un nuevo proyecto en blanco y renombrarlo a "Epidemic (Tu nombre de usuario)"
- En la página The World, crear 300 agentes Turtle cuando se presione "setup"
- Establecer el color del agente en amarillo y la forma en esfera
- Dispersar todos los agentes cuando se presione "setup"
- Eliminar todos los agentes antiguos cuando se presione "setup"
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Interface | Ejecuta el código dentro del bloque cuando se presiona un widget Push Button. |
![]() | Agents | Crea una cierta cantidad de agentes, y cada agente ejecuta los comandos dentro del bloque. |
![]() | Agents | Elimina todos los agentes de The World. |
![]() | Traits | Establece un cierto rasgo de un agente a otro valor. |
![]() | Agents | Coloca un agente en una ubicación aleatoria dentro de The World. |
Verifica tu Progreso
Haz clic en Run Code y setup. Deberías ver 300 agentes dispersos por SpaceLand.
Mostrar Solución

Parte 2: Crear Agentes Enfermos
Objetivo: Crear 5 agentes rojos que representan la población "enferma"
Pasos
- En la página The World, crear 5 agentes que estén "enfermos" cuando se presione setup (usar el mismo "when pushed _" del paso anterior)
- Indicar esto con el color rojo.
- Establecer la forma del agente en esfera
- Dispersarlos
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Agents | Crea una cierta cantidad de agentes, y cada agente ejecuta los comandos dentro del bloque. |
![]() | Traits | Establece un cierto rasgo de un agente a otro valor. |
![]() | Agents | Coloca un agente en una ubicación aleatoria dentro de The World. |
![]() | Traits | Crea el color especificado. |
Verifica tu Progreso
Haz clic en Run Code y setup. Deberías ver 300 agentes amarillos y cinco agentes rojos dispersos por SpaceLand.
Mostrar Solución

Parte 3: Hacer que los Agentes se Muevan
Objetivo: Hacer que los agentes se muevan aleatoriamente por SpaceLand
Pasos
- En la página Turtle, mientras forever esté activado, hacer que el agente:
- Avance 1 paso
- Gire aleatoriamente a la izquierda entre 0 y 10 grados
- Gire aleatoriamente a la derecha entre 0 y 10 grados
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Interface | Ejecuta el código dentro del bloque cuando un widget Toggle Button está activado. |
![]() | Movement | Mueve al agente hacia adelante un cierto valor. |
![]() | Movement | Gira a la izquierda un número determinado de grados durante cada tick. |
![]() | Movement | Gira a la derecha un número determinado de grados durante cada tick. |
![]() | Math | Random _ to _ devuelve un entero entre los dos valores, inclusive. Genera un nuevo número aleatorio cada vez. |
Verifica tu Progreso
Haz clic en Run Code, setup y forever. Deberías ver que los agentes Turtle se mueven en un camino aleatorio por SpaceLand.
Mostrar Solución

Parte 4: Hacer que la Enfermedad se Propague
Objetivo: Programar una colisión para simular la propagación de la enfermedad haciendo que los agentes "sanos" se vuelvan rojos cuando colisionan con un agente "enfermo"
Pasos
- En la página Turtle, programar una colisión donde:
- Si yo (el que colisiona) soy amarillo y el otro agente (el colisionado) es rojo, entonces cambiar mi color a rojo
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Detection | Ejecuta el código cuando un agente colisiona con otro objeto seleccionado. |
![]() | Traits | Establece un cierto rasgo de un agente a otro valor. |
![]() | Detection | Se refiere al objeto que colisiona con el agente. |
![]() | Traits | Devuelve el valor de un rasgo perteneciente a otro agente (como collidee o my parent). |
![]() | Logic | Ejecuta el código dentro del bloque si se cumple la condición. |
![]() | Logic | Determina si las dos entradas son equivalentes y devuelve verdadero o falso. |
Verifica tu Progreso
Haz clic en Run Code, setup y forever. Deberías ver que los agentes amarillos se vuelven rojos al colisionar entre sí.
Mostrar Solución

Parte 5: Crear un Gráfico de Líneas para Mostrar Cada Población
Objetivo: Crear un widget de gráfico de líneas que cuente cada población y limpiar el gráfico cuando se presione "setup"
Pasos
- En el modo "edit interface":
- Agregar un widget de gráfico de líneas a SpaceLand y nombrarlo "Population"
- Crear dos series -- "# of healthy turtles" y "# of sick turtles"
- En la página The World, mientras forever esté activado:
- Hacer que el gráfico "Population" actualice la serie "# of healthy turtles" contando la cantidad de agentes amarillos dentro de SpaceLand
- Hacer que el eje x sea el reloj y el eje y sea "# of healthy turtles"
- Hacer lo mismo para la serie "# of sick turtles" y que cuente los agentes rojos
- Hacer que el gráfico "Population" actualice la serie "# of healthy turtles" contando la cantidad de agentes amarillos dentro de SpaceLand
- Programar que cuando se presione "setup", el reloj se establezca en 0 y el gráfico de líneas se limpie
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Interface | Agrega datos compuestos por pares de coordenadas x e y. |
![]() | Detection | Cuenta el número de agentes de una raza específica en un radio dado con un rasgo específico. Usa 200 pasos para cubrir todo el terreno. |
![]() | Traits | Representa un color específico o un color aleatorio elegido del menú desplegable. |
![]() | Environment | Devuelve el valor del reloj, medido en "ticks". |
![]() | Environment | Establece el valor del reloj a un número. Normalmente, cuando reinicias el reloj, quieres comenzar en 0. |
![]() | Interface | Elimina los datos existentes en el gráfico. |
Verifica tu Progreso
Haz clic en Run Code, setup y forever. Deberías ver que el gráfico de líneas se actualiza.
Mostrar Solución
Código de configuración (página The World):

Código de actualización del gráfico (página The World):

Parte 6: Hacer que los Agentes se Recuperen
Objetivo: Programar que los agentes rojos tengan una baja probabilidad de cambiar de color a azul
Pasos
- En la página Turtle, en el bloque existente "while _ is toggled":
- Programar que si un agente es rojo, tenga un 5% de probabilidad de que su color cambie a azul
- El azul ahora representa "inmunidad" a la enfermedad
- Programar que si un agente es rojo, tenga un 5% de probabilidad de que su color cambie a azul
Bloques de Código Útiles
| Bloque | Cajón | Uso |
|---|---|---|
![]() | Traits | Establece un cierto rasgo de un agente a otro valor. |
![]() | Traits | Representa un color específico o un color aleatorio elegido del menú desplegable. |
![]() | Traits | Se refiere al rasgo propio de un agente. |
![]() | Logic | Ejecuta el código dentro del bloque si se cumple la condición. |
![]() | Logic | Determina si las dos entradas son equivalentes y devuelve verdadero o falso. |
![]() | Logic | Ejecuta los comandos adjuntos al gancho aleatoriamente con un cierto porcentaje de probabilidad cada vez que se ejecuta el bloque. |
Verifica tu Progreso
Haz clic en Run Code, setup y forever. Deberías ver que los agentes rojos cambian su color a azul.
Mostrar Solución

Parte 7: Extensiones
Piensa en una pregunta para investigar o simplemente experimenta con el modelo existente. Ten en cuenta que las sugerencias en la lista a continuación tienden a progresar de tareas más fáciles a más difíciles. Algunas de ellas también requieren que aprendas a usar nuevos bloques que aún no se han presentado. También puedes proponer tus propias extensiones y simplemente explorar/probar cosas por tu cuenta.
- Cambiar las condiciones de configuración: % inmunes, % infectados
- Cambiar la probabilidad de recuperación -- por ejemplo, ¿cómo afecta reducirla (los agentes Turtle tardan más en recuperarse) a la propagación de la enfermedad?
- Representar el uso de mascarillas o el lavado de manos: durante una colisión con un agente Turtle enfermo, programar que haya una probabilidad reducida de que un agente Turtle sano se enferme.
- Variar la probabilidad de recuperación -- quizás un porcentaje de la población se recupera rápidamente mientras que otros tardan más en recuperarse.
- Variar la probabilidad de que un agente Turtle se enferme -- quizás un porcentaje de la población es más susceptible que otros.
- Agregar un centro de vacunación (nueva raza) que haga inmunes a los agentes Turtle cuando colisionen con él. ¿Todos los agentes Turtle necesitan ser vacunados para detener la propagación de la enfermedad?
- Agregar doctores (nueva raza) que puedan "curar" a los agentes Turtle enfermos. Si ya hiciste Paintball, puedes programar controles de teclado para mover a uno de los doctores y "disparar" vacunas a los agentes Turtle.
- ¿Qué factor parece frenar mejor la propagación de la enfermedad?
Copyright 2024 MIT Scheller Teacher Education Program. Distribuido bajo la licencia Creative Commons CC BY-NC 4.0.































