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!