CowEpiSim - An epidemic simulator

Copyright (C) 2021 - Hammer Data Systems, LLC

CowEpiSim uses FLTK 1.3.5 (C) 1996-2021 - Bill Spitzak and others.

Please take no undeserved credit and assign me absolutely no blame. Otherwise, this a free program, download, redistribute, and use at your own risk.



CowEpiSim is a "mechanical", rather than mathematical, epidemic simulator. This means that it simulates an epidemic using the position of moving subjects, rather than applying a statistical formula. The subjects move in a social rather than geographic space. Density measures how likely they are to interact, rather than their geometric distance from one another. The program offers many controls so the user can model both parameters of the disease and the behavoir of the society.
Please note: The screenshots are outdated. Features have been added, including a set of result graphs that appear after each run, allowing runs to be easily compared.

The .zip file contains excutables for Windows and Linux.

The main control panel:

Across the top are buttons to Start, Stop, Pause, and Quit the simulation.

1,2,3,4, Clear Data - Control the "layer" used for the final result graphing.

Initial Population sets the number of subjects between 0 and 350,000.

Infection Rate % sets the liklihood that an infected individual will infect a healthy individual during an encounter.

Infection Length sets the number of days a subject remains infected before recovery.

Ambulatory Days sets the number of days a subject is healthy enough to move about and meet people before succumbing to the disease.

Inactivity % The percentage of people that are inactive and only able to infect those in the same place or the amount of inactivity of the entire population as a whole, depending on the state of the Lockdown button. The inactivity of the subjects can be altered during the run using the button beside the slider. The allows the user to set setpoints on specific days and the inactivity will ramp up or down to those setpoints over time.

Initially Infected The number of people infected when the simulations starts.

Arena Size The size of the "social area". The smaller the size, the more likely it is that subjects will interact.

Upper Chart Limit Sets the range of the graphed variable for the chart below.

Chart Type Allows selection of what to graph. More than one variable can be selected, including:
Currently Infected, New Infections, Currently Quarantined, and Currently Immune.

Quarantine Rate % The percentage of infected subjects that are held in place and rendered non-contagious. The quarantine rate of the subjects can be altered during the run using the button beside the slider. The allows the user to set setpoints on specific days and the quarantine rate will ramp up or down to those setpoints over time.

Speed The amount of delay between simulation steps, measured in fractions of a second.

Daily Interactions The number of steps, chances for the subjects to interact, in any one day.

Immunity Duration The number of days a recovered subjects remains immune to the disease.

Driver %Percentage of the population that can "drive" to a specific destination, allowing them to pass from home to the destination and return without any social encounters along the way.

Number of DestinationsThe number of places drivers go. Having few of these causes all of the drivers to infect one another.

Death RateHow many of the infected are likelty to die of the infection.

Hide Healthy Hides the healthy subjects (light blue) in the display window.

Hide Quarantined Hides the quarantined subjects (pink) in the display window.

Hide Recovered Hides the recovered subjects (light green) in the display window.

Hard Edge When on, movement is constrained at the edges of the arena. Otherwise, the left edge wraps to the right, the top edge wraps to the bottom, and etc.

Lockdown When on, inactivity describes how many people are totally inactive. Otherwise it describes how inactive everyone is.

A display of an epidemic in progress:

The control panel displaying a graph of the currently infected:

The setpoint editor, usable with Inactivity and Quarantine Rate allows the user to set setpoints for these parameters on specific days and have the parameter ramp up or down to the setpoints on intervening days. The days set must increase across the editor. Pressing the Use button causes the setpoints to be used in subsequent runs. Pressing the Cancel button causes the static parameter to be used.

After a run, a set of result graphs appear. These can demonstrate up to four runs at a time appearing in layers. Here two runs are shown. A right mouse click allows any of these graphs to be saved as a PNG image.

The Cow