COVID Decision Model: Monte Carlo Discrete Event Agent Based Analysis Method


A Monte Carlo Method is particularly well suited to solving a complex, dynamic problem space where a closed form solution would be impossible to derive. The Monte Carlo model is comprised of two components, an input parameter set defining probability bins and associated parameters, and a simulation engine. Outputs are tracked in time as they are produced by the simulation engine.  Our approach is a Discrete Event Simulation using an increment of one day. In our approach we are tracking a population and interactions with discrete individuals, implementing what is referred to as an Agent Based Model or Individual Based Model. The Monte Carlo overlay allows us to randomly assign characteristics to individuals, track interactions, determine outcomes over time. Our simulation approach allows for dynamic changes in boundary conditions and probability outcomes to effect various scenarios. This approach is computationally intensive, especially when the dealing with very low percentage outcomes but can quite accurate when bounded properly and calibrated against known data sets.  These methods have been applied by Petrônio Silva in his recently analysis: Agent-Based Simulation of COVID-19 Health and Economical Effects.

Input Parameters

The static input parameters describe the simulation framework, the population demographics, and the characteristics of the virus. Additionally, dynamic input parameters affect the simulation while in progress.

The primary simulation framework input parameters include the duration of the simulation, the simulation population, the output population scalar, reference starting date, and average infection time (for extracting R0). For the population, there are bins for factors affecting the transmission of the disease, the susceptibility of the victim, and the outcome of an infection. These bins include health, age, immunity, contact (mobility), and weighted outcomes based on age. These parameters can all be updated to match the latest available data.

For the virus, there are common parameters describing the transmission and timing factors of the disease. These parameters include the transmission risk (from an infected contact), the mean time and distribution related to infectiousness, symptoms, standard recovery, critical care recovery, or death. These parameters are based on current understanding and data and can be easily updated as inputs to the model. Dynamic input parameters include a contact frequency scalar, test availability adjustment, time to test results, seasonal mean temperature, therapy effectiveness scalar, and infection seed population.

Simulation Engine

The simulation engine works in an iterative manner on population. Initially the entire population is assigned a random set of characteristics per the distribution bins. Then the simulation runs an iterative loop over each day. New infected people are added to the population from the dynamic seed parameter. Infected contact victims based on a randomization of their base contact per day characteristic. People are chosen from the population at random and infected by random number assignment and comparison to weighted risk threshold. Newly infected are randomly assigned an outcome based on their age and probability distribution table. Infection related timers are set from random number draws utilizing the mean and sigma of the various timing inputs.

Then each day the process is repeated, test and infection timers are updated dynamically. The number of the active infected source population is reduced when people who have symptoms are being tested, hospitalized, or recover. The engine updates test status and timers, and exports the current daily statistics including common metrics used to track the infection.


The core of the analysis engine is the infectious transmission update routine:


A variety of output are available for post processing.  These variables include all the dynamic variables within the simulation space.  Standard infection metrics such as R0 (basic reproduction) and Beta (infectious contact rate) can be extracted and the model can be used to predict herd immunity thresholds.


Application Approach

Any input parameters can be modified and sensitivity analysis can be completed as necessary.

The assumptions driving a given simulation scenario are generally defined by the input parameter set. The simulation engine itself is largely neutral and can be effectively used to simulate any outbreak or infection spread. It is the input parameters where the key assumptions are made. The best approach to setting the input parameters is to choose reasonable distributions or best estimates based on current literature and date reporting.

The process for modeling a particular solution involves a couple of key principles and assumptions. First, the model space should partition off a representative population that is largely following a common time scale. It makes no sense to model the entire United States as each geographical region is on a different timeline and has different input parameters, including seed date for infection start, mitigation measures, and population demographics. Interactions can be modeled by running synchronizing parallel simulation runs. For example if a simulation of NY includes relaxation of travel rules, new infection seeds into another area can be dropped in at any time to gauge the effect.

The initial setup of a simulation would include a calibration run set to determine the timing for the infection, the seed infections to initiate the epidemic, and the timing of deaths. The death curve is the hard data point to align the simulation in time. Generally, if the demographic and virus parameters are set to realistic numbers, the death curve magnitude will be very close. The timing and distribution of deaths, and hospital resource demand will follow. The dynamic input parameters related to contact reduction and mortality will reduce the infection rates and death rate.

Multiple iterations of a given parameter set or scenario will produce different results since each run has it’s own unique set of random events.  This will give a measure of variation and the probability outcome window.

The Monte Carlo Method Complements Other Modeling Approaches

The Monte Carlo discrete time agent based modeling approach significantly differs in methodology from an analysis based on closed form models and fitting of input parameters to an equation set to predict the outcome. There is no closed form solution in the Monte Carlo space; the solution is entirely determined by the probability distributions defined by the parameters and the random outcomes, the status of source and victims, and the outcomes of potentially infectious interactions. This model is flexible and allows an epidemic to be modeled at any stage, from initial onset to mid process. The dynamic input parameters can be changed at any step during the simulation to see how changing conditions or policies can affect the outcome. Many of these input parameters are derived from data analysis and supporting models to generate base characteristics for virus risk and timelines, and as our understanding of the virus changes, the Monte Carlo parameter set can be easily adapted.


The Monte Carlo analysis method gives clear insight into the dynamics of infection propagation in a way that other tools do not, insight into past, present, and future dynamics.  This method must be carefully calibrated against known outcomes to ensure that key input parameters are correct.  As a discrete time simulation, the time step must be small compared to the changing dynamics.  As an agent based model, the population in the simulation must be large enough to capture low probability effects with reasonable granularity.  All these constraints require significant processing, but when properly constructed, the results of the analysis can be very accurate.

Copyright 2020 Covid Planning Tools