docs/dgp/01-population.md

# Population synthesis

Per-household static covariates are sampled independently and held fixed for
the duration of the simulation. Defaults live on `PopulationParams` in
`src/iohmm_evac/params.py`; every parameter is overridable via the CLI.

| Field            | Symbol      | Distribution                                    | Default range / params                |
|------------------|-------------|-------------------------------------------------|----------------------------------------|
| Distance to coast | $d_i$      | Truncated Normal                                 | μ=15, σ=10, [0.5, 50] km               |
| Vehicle access    | $v_i$      | Bernoulli                                        | p=0.85                                 |
| Risk sensitivity  | $r_i$      | Standard Normal                                  | μ=0, σ=1                               |
| Evacuation zone   | $z_i$      | Deterministic from $d_i$                         | A: d<5, B: 5≤d<20, C: d≥20             |
| Destination dist. | $\text{dest}_i$ | Uniform                                     | [40, 100] km                           |

The truncated normal is sampled by rejection: oversample, drop out-of-bounds,
refill until full. For the default ranges the acceptance probability is high
enough that one or two iterations suffice.

## Rationale

* **Distance + zone**: the chapter wants behavioral heterogeneity that maps
  cleanly onto a coarse "exposure" axis. A truncated normal keeps tails
  reasonable; the zone discretization is what local emergency-management
  agencies actually use.
* **Vehicle access**: a binary covariate that creates a meaningful sub-population
  for which `PR→SH` is more attractive than `PR→ER`.
* **Risk sensitivity**: standard-normal $r_i$ provides continuous heterogeneity
  for `UA→AW`, `AW→PR`, `PR→ER`.
* **Destination**: only used by households that actually evacuate, but stored for
  every household so vectorization stays simple.

## Targeted-messaging hook

The `targeted_zone_multiplier` parameter scales local risk for households in
zone A. The targeted-messaging scenario sets it to 1.5; all other scenarios
leave it at 1.0.