Vaccination campaigns


Earlier in this tutorial, we have considered the case of prior immunity, i.e. immunity that exists randomly before a disease breaks out and might (or might not) be the result of vaccinations. Now we extend the treatment to the case that there is a vaccination campaign done to specifically stop the propagating disease.

Using the vaccinations keyword, this can be simulated as part of a measure. The number following the keyword stands for the number of vaccination attempts made per day. An attempt is made on a random grid cell. If the person there is already vaccinated, the attempt is discarded. If the person there is already immune from having contracted the disease, a vaccination mark is set and the immune status remains unchanged.

(Note: On first glance, neither trying to vaccinate the already vaccinated nor the immune seems very reasonable. The reasons why this is done anyway are twofold: First, there are diseases which show no symptoms for some carriers - these would be vaccinated in a campaign because their immunity is not known. The discarded attempts to vaccinate twice are a mere technical issue. They could be solved by letting the program try new random grid cells until an attempt succeeds, however that can easily be done under user-control by simply stepping up the number of tries over time, so as it stands the program - by chance - includes a growing reluctance against vaccination in the population.)

Using a measure including vaccinations, we can now study how quickly a vaccination campaign is able to stop transmissions.


Create the following config file as the baseline epidemic:

num_timesteps 800
snapshot_interval 200
filename_base vaccination
random_seed 105

recovery_time 7
p_transmission 0.23

grid_size 1000
num_classes 3

mobility 3
p_mobility 1.0
fraction 0.8

mobility 5
p_mobility 1.0
fraction 0.19

mobility 100
p_mobility 1.0
fraction 0.01

num_measures 1

start 100
duration 200
vaccinations 2000


This starts a vaccination campaign from day 100 where for 200 days 2000 attempts per day are made, i.e. a grand total of up to 400.000 vaccinations are possible.

After the run, a file vaccination_vaccination.dat is created (the first part of the filename is specified in the config file, the part _vaccination.dat is appended automatically). Here the progress of the vaccination campaign can be monitored. In the second column, the cumulative total number of vaccinations is recorded, in the third column only those done before the disease reached the grid cell. The plot should show some 330.000 vaccinations having been done in the end.

This file is only created if at least one measure contains vaccination attempts. Similarly, all immunity that has been reached by vaccination is marked with a negative tag of -1 in the spatial plots to distinguish them from immunity reached by having contracted the disease.

By changing the start day or the number of vaccinations (or the duration) we can now explore various scenarios (here plotted as new cases per day):

Comparison of various vaccination campaigns with a baseline scenario (new cases per day).

As probably expected, the general trend is that it takes, dependent on number of attempts per day, a while till the additional immunity conferred by the vaccine is sufficient to substantially influence the trend, then however the vaccination campaign quickly turns the trend.

One interesting detail is the appearance of long tails. For instance, the scenario starting at day 100 with 1000 vaccination attempts per day has a substantially reduced total number of infected compared with the baseline scenario, but the disease actually lasts longer.

As above, zoom on the final phase.

This is because the 130.000 successful vaccinations done in this scenario form a sparse distribution in space into which the disease front can still propagate a while, quite different from the compact front the unmitigated disease would create - into which basically the disease can not penetrate again. Thus, a bit surprisingly, vaccination may actually prolong the spread of an epidemic.


The general theme for a successful vaccination campaign is 'hit early, hit hard'. If the number of infected is already rising to the peak, a vaccination campaign alone takes generally rather long to stop it while other measures would act faster. Experience has shown that most countries can not sustain a vaccination rate of more than 0.5% of the population per day, with a million grid cells that would correspond to 5000 attempts per day, any number above would likely be unrealistic.

Note that using a sequence of measures in which the number of attempts is increased from measure to measure, it is also quite possible to simulate the growing availability of vaccines over time.

Continue with Waves.

Back to main index     Back to science     Back to numerical epidemic

Created by Thorsten Renk 2017-2021 - see the disclaimer, privacy statement and contact information.