Optimise intervention allocation under a budget constraint
Source:R/optimise.R
chlaa_optimise_budget.RdSimple grid-search optimiser for allocating budget across vaccination and WASH, with optional constraints. This is a pragmatic starting point; swap to a more sophisticated optimiser once costs and decision variables are finalised.
Usage
chlaa_optimise_budget(
pars,
budget,
cost = list(cost_per_vaccine_dose = 2, cost_chlorination_per_person_day = 0.02,
cost_hygiene_per_person_day = 0.03, cost_latrine_per_person_day = 0.01,
cost_cati_per_person_day = 0.05, cost_per_orc_treatment = 10, cost_per_ctc_treatment
= 80),
time = 0:180,
n_particles = 100,
dt = 0.25,
seed = 1,
grid_size = 10,
min_fraction = list(vax = 0, wash = 0, care = 0),
max_fraction = list(vax = 1, wash = 1, care = 1),
max_vax_doses_per_day = Inf,
max_total_doses = Inf,
method = c("auto", "grid", "continuous")
)Arguments
- pars
Baseline parameter list.
- budget
Total budget.
- cost
Cost list (see Details).
- time
Simulation times.
- n_particles
Number of particles for each evaluation.
- dt
Time step.
- seed
Seed.
- grid_size
Number of grid points per decision dimension.
- min_fraction
Named list of minimum allocation fractions by intervention (`vax`, `wash`, `care`).
- max_fraction
Named list of maximum allocation fractions by intervention (`vax`, `wash`, `care`).
- max_vax_doses_per_day
Maximum feasible vaccination doses per day.
- max_total_doses
Optional upper bound on total vaccine doses.
- method
Optimisation method: "auto", "grid", or "continuous".
Details
The objective is to minimise expected deaths (mean across particles) over the horizon.
`cost` is a named list that can include: - cost_per_vaccine_dose - cost_chlorination_per_person_day - cost_hygiene_per_person_day - cost_latrine_per_person_day - cost_cati_per_person_day
Budget is spent on: - vaccination doses (vax1_total_doses, vax1_doses_per_day within the campaign window) - WASH (implemented by setting intervention effects; this is a placeholder mapping)