Ruby

Prepare yourself against the Zombie epidemic

Prepare yourself against the Zombie epidemic

by Christophe Philemotte

In this presentation titled "Prepare Yourself Against the Zombie Epidemic," Christophe Philemotte discusses the application of disease simulation in understanding the dynamics of outbreaks, particularly in reference to zombies. This talk, delivered at the Keep Ruby Weird 2015 event, highlights the importance of agent-based models in simulating disease propagation within populations.

Key Points:
- Introduction and Context: Philemotte introduces himself as a member of the Ruby Belgium Association and emphasizes the significance of events like Ruby Dev Room for sharing knowledge.

  • Disease Simulation: He explains how he develops simulations for pharmaceutical companies to understand disease dynamics, referencing a case study of a rare disease that gained attention and escalated into a highly contagious situation, illustrating the potential for real-world outbreaks.

  • Zombie Epidemic Simulation: Using a humorous yet engaging scenario, he proposes that coding can help prepare individuals for a fictional zombie crisis.

  • Agent-Based Models: Philemotte highlights the utility of agent-based models, which allow researchers to study individual interactions within a population and observe how diseases can spread under different conditions. It involves defining agents (representing humans), their environment, and the rules governing their interactions and evolution.

  • Simulation Framework: He details how to outline the environment on a grid where agents (zombies and humans) interact, including behaviors like seeking shelter or fighting. The aging of agents impacts their capabilities, and the simulation evolves through time steps.

  • State Transitions: The presentation explains defining agent states like health status, with transitions leading to infection upon interaction. Calibration and validation of the simulation are critical to ensure accuracy against known outcomes.

  • Live Simulation Walkthrough: The talk culminates in a live demonstration of the simulated zombie outbreak, showcasing how agent interactions influence infection rates. He concludes with insights on survival strategies and the educational value of such simulations in understanding epidemic dynamics.

Conclusions: Philemotte encourages viewers to explore building their own zombie simulators, highlighting the fun and educational aspects of model-based learning in epidemiology.

00:00:10.940 Hello, everyone! I'm Christophe Philemotte. You can find me on Twitter as @christov. I'm from Belgium, a country that is probably the most beloved in the world. I enjoy beer, waffles, and chocolate. In fact, I have a little gift for you all. If you like chocolate, please come talk to me after the presentation, and I'll give you a piece.
00:00:40.200 I'm a member of the Ruby Belgium Association and I organize several events there, like RailsGirls, as well as conferences and meetups. I encourage you to visit us in January in Belgium. We have a Ruby Dev Room gathering for implementers of Ruby, including JRuby and MRI. It's a fantastic opportunity to connect and share knowledge.
00:01:11.430 Today, I would like to share some insights related to disease simulation for pharmaceutical companies. I am currently freelancing to develop simulations that help in understanding the dynamics of disease propagation. Let me start with a case study involving a rare disease that was first reported in a local newspaper. This sensational news drew a lot of attention, leading to growing concern and conspiracy theories.
00:01:40.500 Weeks later, the situation escalated; the disease was identified as highly contagious. The army had to implement curfews, and quarantines were enforced in certain zones. The World Health Organization stepped in to assist the CDC and the army in containing the epidemic. In such scenarios, your life could be at stake, and survival is crucial. But how can you prepare yourself against outbreaks, like a zombie epidemic, using code? Well, it turns out you can.
00:02:30.680 There are various techniques you can utilize to simulate complex dynamics, such as the propagation of disease within a population. When you want to delve into the interaction at the individual level, agent-based models are very effective. These models enable us to study the outbreak of diseases globally, including how the flu spreads through air travel.
00:03:32.780 They can also help understand traffic patterns to optimize flight configurations, analyze electricity consumption and its impact on the grid, investigate the robustness of the internet's backbone, and predict group behavior in diverse situations, such as financial trading or during a catastrophe. These models are particularly suited to studying dynamics resulting from interactions between individuals in a given environment.
00:04:19.420 To simulate a zombie outbreak, I would need an agent-based model that includes agents, which represent humans, an environment for them to interact in, and rules governing their interactions and evolution based on various factors. Let's begin with defining the map, or the environment, where zombies will function—zombies must come into contact with humans to infect them, and their movement capabilities are limited.
00:05:03.460 We'll consider a simplified two-dimensional grid where agents are placed. This grid will allow us to examine different scenarios, such as seeking shelter or other strategic decisions. Next, we need to define the neighborhood for each agent. When two agents are neighbors, they can interact, such as biting each other, introducing the possibility of disease transmission.
00:05:58.780 We also need to establish the behavior and capabilities of the agents. Each agent's state will be defined by characteristics such as age and position. During the simulation, agents can perceive their surroundings to check if a zombie is nearby, allowing them to react accordingly. Agents can choose to stay still, move in a specific direction, or get ready to fight zombies. Let's examine how these interactions develop.
00:06:43.950 So, now we're going to visualize an agent moving in the simulation. As you observe, the agents will age over time, impacting their capabilities. The simulation calculates the next states based on the environment and interactions with other agents.
00:07:25.610 We will use synchronous updates to simplify the process of transitioning to new states. At each time step, we will determine the state of each agent based on all previous interactions before applying the changes.
00:07:41.510 Agent states encompass variables such as health status, which determines their vulnerability to infection. For example, if an agent is deemed susceptible, they can become infected when bitten by a zombie. It's crucial to establish transition conditions for these states, as susceptible individuals may frequently become infected.
00:09:02.570 Once we have defined these states and transition criteria, we can simulate the interaction between agents in the environment. We can visualize several agents, including zombies and infected individuals, to see how they influence each other through biting and potential infection.
00:09:48.440 The simulation follows a loop: we'll simulate for a designated number of days, initializing agents and observing the dynamics unfolding across the grid. We'll remove agents that have perished, adjusting the grid's representation of the ongoing outbreak.
00:10:11.950 Ultimately, the aim is to understand how agent interactions can lead to rapid infection rates or effective survival strategies. We can explore different scenarios where humans adapt to counter threats, simulating how effective strategies can help people survive against zombies.
00:12:04.460 Once the simulation is up and running, it's essential to validate and calibrate it to ensure accuracy. This process involves checking against known outcomes, ensuring our simulation aligns with theoretical expectations. Calibration is critical when assumptions about inputs differ among agents.
00:14:18.110 Now, let's look live at the simulation itself. The map will display various agents characterized as zombies, susceptibles, or infected, and obstacles may also alter their movement strategies. As we run the live simulation, you will see the transitions from susceptible to infected statuses based on the interactions between agents.
00:16:31.179 For example, when a zombie bites a susceptible agent, they become infected, ultimately leading to strategies to reduce the number of zombies. By introducing rules, such as the conditions required for an infected person to transform into a zombie or when they can fight back, we can test various scenarios portraying dynamics similar to those in popular zombie narratives. To conclude, I've shown you how to build your own zombie simulator, which can be a fun and interesting project to explore!