[Vp-integration-subgroup] Composition Example 1 -- Papst's model

William Waites wwaites at ieee.org
Mon Apr 26 02:09:18 PDT 2021


This example comes from the paper by Irena Papst, Kevin O’Keefe and Steve Strogatz:

    http://export.arxiv.org/abs/2101.07926

This is a simple example because it is a composition of two models: a standard SIR epidemic and a decision process.

One time-step for this model is one year. The epidemic is run from some initial conditions to steady state to find the final size. Then the decision-model uses the final size to work out how many individuals are likely to get vaccinated the following year. The details of how this works are given in the paper. Here I focus on the high-level structure.

The state space of the model is just the cartesian product X = S ⨉ I ⨉ R where S, I and R are the fraction of the population that is susceptible, infectious and removed and are each real numbers, e.g. S = I = R = ℝ.

The epidemic model is transformed to the propagator E(p) : X → X for some parameters p (e.g. the various rates). It decides, giving a population that is some mix of S and R, how many I to have initially and then simulates the epidemic deterministically to completion.

The decision model is also just a function D(q): X → X for some parameters q (e.g. costs and efficacy of vaccines). It is defined initially as D(1, 0, 0) = (1, 0, 0). 

The composition DE(p,q) : X → X is simply DE(p,q) = E(p)∘D(q).

A simulation could be a function from initial conditions and time to a state: Sim : X ⨉ ℕ → X. It gives the system state at a particular time. Time is discrete here, measured in years, so is a natural number ℕ.

It is given by Sim(p,q)(x₀, n) = DE(p,q)ⁿ(x₀) where x₀ is the initial state and n is the time. The superscript n means “compose DE(p,q) with itself n times”.

This is described in more or less formal language. However, there are some things to point out that connect to the standards discussion. 

I was careful to specify propagators as functions and to be explicit about their types. This is a simple case where all propagators have the same type. The low-level standard for this is just the calling convention for whatever programming language it’s implemented in, but if we imagine that E and D are implemented in different languages then we need to be able to say “these functions take and return a vector of three floating point numbers”.

The order of the coordinates in the state space matters. If S and R were swapped for one of the processes, that would give confusion and wrong results. So we would want to annotate each propagator to make sure that the space was presented in the right order. So really we want the composition operator ∘ to be clever enough to permute the space appropriately.



More information about the Vp-integration-subgroup mailing list