problem {prioriactions} | R Documentation |
Create mathematical model
Description
Create an optimization model for the multi-action conservation planning problem, following the mathematical formulations used in Salgado-Rojas et al. (2020).
Usage
problem(
x,
model_type = "minimizeCosts",
budget = 0,
blm = 0,
curve = 1,
segments = 3
)
Arguments
x |
data object. Data used in a problem of
prioritization of multiple conservation actions. This object must be created using the
|
model_type |
|
budget |
|
blm |
|
curve |
|
segments |
|
Details
Currently the problem function allows you to create two types of mathematical programming models:
- minimize cost (minimizeCosts):
This model seeks to find the set of actions that minimizes the overall planning costs, while meeting a set of representation targets for the conservation features.
This model can be expressed mathematically for a set of planning units
indexed by
a set of features
indexed by
, and a set of threats
indexed by
as:
Where,
is a decisions variable that specifies whether an action to abate threat
in planning unit
has been selected (1) or not (0),
is the cost of the action to abate the threat
in the planning unit
,
is the monitoring cost of planning unit
,
is the probability of persistence of the feature
in the planning unit
(ranging between 0 and 1),
is the amount of feature
in planning unit
.
is the recovery target for feature
. In the case of working with conservation target, the following constraint is necessary:
With,
as the probability of persistence by conservation of the feature s in the planning unit i (ranging between 0 and 1). It is only present when there is no spatial co-occurrence between a feature and its threats (i.e.
). In the case of binary threat intensities it is assumed as 1.
is the conservation target for feature
.
- maximize benefits (maximizeBenefits):
The maximize benefits model seeks to find the set of actions that maximizes the sum of benefits of all features, while the cost of performing actions and monitoring does not exceed a certain budget. Using the terminology presented above, this model can be expressed mathematically as:
Where is the benefit of the feature
in a planning unit
and it
is calculated by multiplying the probability of persistence of the feature in the
unit by its corresponding amount, i.e.,
. When we talk about
recovering, the probability of persistence is a measure of the number of actions taken against the threats that
affect said feature. For more information on its calculation, see the
getSolutionBenefit()
or getPotentialBenefit()
functions references.
As a way of including the risk associated with calculating our probability of
persistence of the features and in turn, avoiding that many low probabilities
of persistence end up reaching the proposed targets, is that we add the curve
parameter. That incorporates an exponent (values of 1: linear, 2: quadratic
or 3: cubic) to the calculation of the probability of persistence. Thus penalizing
the low probabilities in the sum of the benefits achieved.
Since prioriactions
works with linear models, we use a piecewise linearization strategy to
work with non-linear curves in . The
segments
parameter indicates how well the expression
approximates the curved used in . A higher number implies a better
approximation but increases the resolution complexity. Note that for a linear curve
(
curve
= 1) it is not necessary to set a segment
parameter.
Parameters blm
and blm_actions
allow controlling the spatial connectivity
of the selected units and of the deployed actions, respectively (similar to BLM in Marxan).
Value
An object of class optimizationProblem.
See Also
For more information regarding the arguments
curve
and segments
, see the supplementary material
of Salgado-Rojas et al. (2020)..
Examples
## This example uses input files included into package.
## set seed for reproducibility
set.seed(14)
## Load data
data(sim_pu_data, sim_features_data, sim_dist_features_data,
sim_threats_data, sim_dist_threats_data, sim_sensitivity_data,
sim_boundary_data)
## Create data instance
problem_data <- inputData(
pu = sim_pu_data, features = sim_features_data, dist_features = sim_dist_features_data,
threats = sim_threats_data, dist_threats = sim_dist_threats_data,
sensitivity = sim_sensitivity_data, boundary = sim_boundary_data
)
## Create minimizeCosts model
model_min <- problem(x = problem_data, blm = 1, model_type = "minimizeCosts")
#' ## Create maximazeBenefits model
model_max <- problem(x = problem_data, model_type = "maximizeBenefits", budget = 100)