
Add objective: minimise planning-unit fragmentation
Source:R/add_objectives.R
add_objective_min_fragmentation_planning_units.RdEncourage cohesion of the selected planning units, regardless of which action is implemented within each unit.
Usage
add_objective_min_fragmentation_planning_units(
x,
relation_name = "boundary",
weight_multiplier = 1,
alias = NULL
)Arguments
- x
A
Problemobject.- relation_name
Character string giving the name of the spatial relation to use. The relation must already exist in
x$data$spatial_relations.- weight_multiplier
Numeric scalar greater than or equal to zero. Global multiplier applied to the relation weights when the objective is built.
- alias
Optional identifier used to register this objective for multi-objective workflows.
Details
This objective uses planning-unit selection variables \(w_i\) and
a spatial relation registered with add_spatial_relations() or
add_spatial_boundary(). Relation weights \(\omega_{ij}\)
are scaled by weight_multiplier.
The underlying model uses \(y_{ij}=w_i \land w_j\) to record whether neighbouring units are both selected, encouraging spatially consolidated selections. Action identities do not enter this spatial criterion: adjacent units receiving different actions are part of the same selected planning-unit set.
Without another requirement, selecting no units can be optimal.
Combine this objective with a budget equality, an area requirement,
or an ecological target that ensures meaningful management activity.
For action-specific cohesion, see
add_objective_min_fragmentation_action().
Repeated calls
With alias = NULL, one explicit single objective can be defined per
problem; a second unaliased definition raises an error. With an alias,
objectives accumulate under distinct names; a repeated alias raises an error.
Aliased definitions preserve an explicitly configured single objective.
To compare alternatives, start from the problem before its objective was added.
References
Ball, I. R., Possingham, H. P., and Watts, M. E. (2009). Marxan and relatives: software for spatial conservation prioritisation. In Spatial Conservation Prioritization: Quantitative Methods and Computational Tools, pp. 185–195. doi:10.1093/oso/9780199547760.003.0014
Önal, H., and Briers, R. A. (2002). Incorporating spatial criteria in optimum reserve network selection. Proceedings of the Royal Society B, 269, 2437–2441. doi:10.1098/rspb.2002.2183
Examples
# EXAMPLE: Select a cohesive set of 12 planning units
#
# With one feasible action costing one unit, a budget equality
# forces exactly 12 selected units. Without this requirement,
# minimising fragmentation alone could select no units.
sim <- load_sim_multiaction()
p <- create_problem(
pu = sim$planning_units,
features = sim$features,
dist_features = sim$dist_features,
cost = "cost"
) |>
add_actions(data.frame(id = "restore"), cost = 1) |>
add_spatial_boundary(name = "boundary", include_self = TRUE) |>
add_constraint_budget(12, "equal", include_pu_cost = FALSE) |>
add_objective_min_fragmentation_planning_units(
relation_name = "boundary", alias = "pu_fragmentation"
)
# Cohesion is evaluated for the selected planning-unit pattern,
# irrespective of action identity. No additional objective is used.
if (requireNamespace("rcbc", quietly = TRUE) &&
requireNamespace("ggplot2", quietly = TRUE)) {
solutions <- solve(set_solver_cbc(p, time_limit = 30, verbose = FALSE))
get_objectives(solutions, format = "wide")
plot_spatial_planning_units(solutions)
}