RFC 20121101: New Vaccination Priorities - NAVADMC/ADSM GitHub Wiki

Applies to: Model description v1.0.0

Type of change: New feature, for next minor revision of the software.

Summary: This RFC adds new ways that vaccination can be prioritized (outside-in, inside-out, and by size). It also ties in with the new inner radius option for vaccination rings.

Justification: The existing vaccination priority options were insufficiently flexible.

Discussion

Let us begin by looking at the current vaccination priority options. Figure 1 shows that there are 3 things that can be used to prioritize which unit gets vaccinated first: days holding, production type, and reason for vaccination.

Figure 1. Vaccination priority scheme in NAADSM 3.2.

The 3 large green pieces can be shuffled into any order. And the blue pieces can be shuffled within their containing green piece. (Right now there is only 1 blue piece inside “Reason for vaccination” — inclusion in a ring vaccination strategy — but the idea was that there might be more reasons for vaccination in the future.) In “Days holding”, older requests always have priority over newer ones — that order cannot be reversed.

We can think of the simulator as “stepping down” through these boxes to decide on the final priority order. In Figure 1 above, days holding has the top priority, so the unit that has been waiting the longest for vaccination will be the top-priority unit to vaccinate. However, if 2 units have been waiting for the same number of days, then the simulator “steps down” to the next box and examines the units’ production types to decide which unit gets vaccinated first.

As a worked example, suppose 3 vaccination rings get established, in this order:

Inside those rings are cattle units and pig units. Suppose we prioritize by production type first, with cattle having a higher priority than pigs, and by days holding second. The order of vaccination would be:

  • cattle in circle 1
  • cattle in circle 2 (the ones that haven’t already been covered in the overlap area)
  • cattle in circle 3
  • pigs in circle 1
  • pigs in circle 2
  • pigs in circle 3

Suppose instead we priority by days holding first, then by production type, again with cattle having a higher priority than pigs. Then the order of vaccination would be:

  • cattle in circle 1
  • pigs in circle 1
  • cattle in circle 2
  • pigs in circle 2
  • cattle in circle 3
  • pigs in circle 3

This is essentially all the flexibility provided by NAADSM 3.2.

The new priority options would take the form of 3 new green boxes, and fit into the existing scheme as shown in Figure 2. Notice that days holding now allows oldest-first or newest-first. The “round robin” option will be discussed later in this document.

Figure 2. The proposed changes will add 3 new green boxes.

Outside-in and inside-out patterns

The following paragraphs will go over some questions that come up in the new options (inner and outer radius, outside-in or inside-out order) and propose some answers to those questions.

Now that we will be allowing protective vaccination rings with both an inner and outer radius, the question comes up of what should happen when they overlap. Figure 3 shows the assumption (black represents the area that gets vaccinated).

Figure 3. Protective vaccination rings punch holes in each other rather than overlap.

Figure 3 illustrates the idea that protective rings punch holes in each other so that when combined, they form an “outer perimeter”.

However, the rule above shows the need to strongly distinguish protective vaccination (rings) from suppressive vaccination (circles) in the model. Figure 4 points out that this “hole-punching” effect that happens when protective rings combine does not affect suppressive circles that may be present.

Figure 4. Suppressive vaccination circles (orange) are unaffected by the presence of protective vaccination rings (blue) surrounding them.

The “hole-punching” effect needs a notion of time-limitedness or expiry to work sensibly over time. In figures 3 and 4, there is an assumption that the overlapping rings are created at the same time in the simulation. The hole-punching effect should also extend to rings that are created at “close to the same time” in the simulation. That is, if a vaccination ring was created and vaccination started in that ring, then a few days later an overlapping ring was created, it seems sensible to say that vaccination would cease in the “hole-punched” area of the first ring and from that day on, vaccination would concentrate on the outer perimeter formed by the two overlapping rings (figure 5).

Figure 5. Vaccination ceases in overlap area when a new ring is created.

However, it does not make sense for a ring to be able to punch holes in overlapping rings indefinitely. It is possible that vaccination would be completed in an area, then later in the simulation, infection may move back into that area and create the need for vaccination again. So a vaccination ring will expire when all of the units belonging to that ring have been vaccinated, and from that point on that ring will not punch holes in new rings that appear in the same area.

Now let us clarify what “outside-in” order means. Consider the case in Figure 6 where a vaccination ring is established, it is partially completed, and then a new vaccination ring is created:

Figure 6. A new vaccination ring appears when an older one is partially completed.

What should happen? Intuitively, I think the modeler would expect the new ring to begin growing inward while the old ring continues growing inward. In other words, on the next simulation day I think the modeler would expect to see both the red and blue units get vaccinated.

However, a strict interpretation of “outside-in order” would say that the new ring will steal all the priority for a while, because the new ring has lots of units that are “all the way outside”. The red unit, which would have been next in line to be vaccinated if the new ring had not appeared, will now be waiting for a while. It came up in discussions that this may not be realistic: vaccination resources would probably be split between the two rings.

We propose to solve this by creating a new priority option that we will call round-robin priority. Round-robin priority would simply allocate equal amounts of vaccination resources to each ring. If you prioritized by round-robin first and then by outside-in order second, you would see both rings growing inwards simultaneously. For the purpose of round-robin priority, a unit will be considered to “belong” to the ring for which the unit is closest to the ring center.

Note that the round-robin cycle may extend over multiple days. For example, if there are 3 active vaccination rings, but only capacity to vaccinate 2 units per day, then this should happen:
day 1: vaccinate 1 unit each from rings 1 & 2
day 2: vaccinate 1 unit each from rings 3 & 1
day 3: vaccinate 1 unit each from rings 2 & 3
day 4: vaccinate 1 unit each from rings 1 & 2 (now we’re repeating the cycle)

The next assumption we will make, which is a fairly minor consideration, has to do with the outside-in vaccination pattern. In Figure 7, two rings of unequal thickness are created on the same day. As they both grow inwards, they will stay the same thickness as they grow. Or put another way, if vaccination is currently taking place 2 km inside the border of vaccination ring #1, vaccination will also be taking place 2 km inside the border of vaccination ring #2. This seems to be truer to the idea of “outside-in” order than the obvious alternative, the one illustrated with the red “X”.

Figure 7. When two rings start at the same time, they will maintain the same thickness as they grow inwards.