Uses a stochastic importance-resampling (SIR) algorithm to identify an MPA network that maximises a weighted combination of biodiversity and economic objectives. At each iteration the function evaluates the marginal value of toggling individual patches in or out of the MPA, then expands or contracts the network by the patch(es) with the highest marginal objective value.
Usage
optimize_mpa(
fauna,
fleets,
starting_conditions = NA,
alpha = 0.33,
max_prop_mpa = 1,
resolution,
prop_sampled = 0.2,
max_delta = 2,
workers = 6,
bio_objective = "max_ssb",
econ_objective = "yield",
work_backwards = TRUE,
patches_at_a_time = 1
)Arguments
- fauna
Named list of fauna objects from
create_critter.- fleets
Named list of fleet objects from
create_fleet, tuned withtune_fleets.- starting_conditions
Initial population state, typically
sim[[length(sim)]]from a priorsimmarrun. Passed asinitial_conditionsto each innersimmarcall.- alpha
Numeric in
[0, 1]. Weight on biodiversity (SSB/SSB0) in the composite objective.alpha = 1ignores economics;alpha = 0ignores biology. Default0.33.- max_prop_mpa
Numeric in (0, 1]. Maximum proportion of patches that can be designated as MPA. Setting this below 1 forces
work_backwards = FALSEautomatically. Default1.- resolution
Integer scalar or length-2 vector
c(nx, ny). Must match the resolution offaunaandfleets.- prop_sampled
Numeric in (0, 1]. Proportion of candidate patches to evaluate at each iteration. Lower values speed up computation but increase stochasticity. Default
0.2.- max_delta
Numeric. Unused; kept for backwards compatibility.
- workers
Integer. Number of parallel workers for
future::multisession. Default6.- bio_objective
Character. Biodiversity sub-objective:
"max_ssb"(default) Sum of SSB/SSB0 across species; favours absolute biodiversity gains.
"min_loss"Count of species that do not decline relative to baseline; favours preventing any losses.
- econ_objective
Character. Economic sub-objective used to evaluate each candidate patch:
"yield"(default) Total catch across species.
"revenue"Total revenue.
"profits"Total profit.
- work_backwards
Logical. If
TRUE(default and recommended), start at full MPA coverage and iteratively remove patches. Set toFALSEto grow the network from empty.- patches_at_a_time
Integer. Number of patches to toggle per iteration. Default
1.
Value
A named list:
outcomesTibble of biodiversity and economic outcomes at each MPA size level.
objectiveTibble of the composite objective value (
obj) at each MPA size, plus component scores (ssb,econ,yield).mpa_networkTibble mapping each iteration (proportion protected) to the corresponding MPA location data frame.
Details
Algorithm
When work_backwards = TRUE (recommended), the algorithm starts with
100\
improves the weighted objective. This "reverse greedy" approach tends to
produce more stable networks than the forward greedy (start empty, add
patches) because it avoids early lock-in to suboptimal configurations.
The composite objective at each iteration is: $$obj = \alpha \cdot \tilde{B} + (1 - \alpha) \cdot \tilde{E}$$ where \(\tilde{B}\) and \(\tilde{E}\) are percent-rank-scaled biodiversity and economic outcomes, respectively. Scaling by percent ranks means \(\alpha\) strictly controls the weight given to biodiversity relative to economic rank, not their absolute magnitudes.
Parallel evaluation of candidate patches uses furrr::future_map;
set workers to control the number of parallel sessions.