add_max_targets_met_objective {oppr} | R Documentation |
Add maximum targets met objective
Description
Set the objective of a project prioritization problem()
to
maximize the total number of persistence targets met for the features, whilst
ensuring that the cost of the solution is within a pre-specified budget
(Chades et al. 2015). In some project prioritization exercises,
decision makers may have a target level of persistence for each feature
(e.g. a 90% persistence target corresponding to a 90% chance for the
features persisting into the future). In such exercises, the decision makers
do not perceive any benefit when a target is not met (e.g. if a feature
has a persistence target of 90% and a solution only secures a 70% chance
of persistence then no benefit is accrued for that feature) or when a target
is surpassed (e.g. if a feature has a persistence target of 50%, then a
solution which
secures a 95% chance of persistence will accrue the same benefit as a
solution which secures a 50% chance of persistence). Furthermore, weights
can also be used to specify the relative importance of meeting targets
for specific features (see add_feature_weights()
).
Usage
add_max_targets_met_objective(x, budget)
Arguments
x |
ProjectProblem object. |
budget |
|
Details
A problem objective is used to specify the overall goal of the
project prioritization problem.
Here, the maximum targets met objective seeks to find the set of actions
that maximizes the total number of features (e.g. populations, species,
ecosystems) that have met their persistence targets within a
pre-specified budget. Let represent the set of conservation
actions (indexed by
). Let
denote the cost for funding
action
, and let
denote the maximum expenditure (i.e. the
budget). Also, let
represent each feature (indexed by
),
represent the weight for each feature
(defaults to one
for each feature unless specified otherwise),
represent the
persistence target for each feature
, and
denote the
probability that each feature will go extinct given the funded
conservation projects.
To guide the prioritization, the conservation actions are organized into
conservation projects. Let denote the set of conservation projects
(indexed by
), and let
denote which actions
comprise each conservation project
using zeros and ones. Next, let
represent
the probability of project
being successful if it is funded. Also,
let
denote the enhanced probability that each feature
associated with the project
will persist if all of the actions that comprise project
are funded
and that project is allocated to feature
.
For convenience,
let
denote the actual probability that each
associated with the project
is expected to persist if the project is funded. If the argument
to
adjust_for_baseline
in the problem
function was set to
TRUE
, and this is the default behavior, then
, where
n
corresponds to the
baseline "do nothing" project. This means that the probability
of a feature persisting if a project is allocated to a feature
depends on (i) the probability of the project succeeding, (ii) the
probability of the feature persisting if the project does not fail,
and (iii) the probability of the feature persisting even if the project
fails. Otherwise, if the argument is set to FALSE
, then
.
The binary control variables in this problem indicate whether
each project
is funded or not. The decision
variables in this problem are the
,
,
,
and
variables.
Specifically, the binary
variables indicate if project
is funded or not based on which actions are funded; the binary
variables indicate if project
is used to manage
feature
or not; the semi-continuous
variables
denote the probability that feature
will go extinct; and the
variables indicate if the persistence target for feature
is met.
Now that we have defined all the data and variables, we can formulate
the problem. For convenience, let the symbol used to denote each set also
represent its cardinality (e.g. if there are ten features, let
represent the set of ten features and also the number ten).
The objective (eqn 1a) is to maximize the weighted total number of the
features that have their persistence targets met.
Constraints (eqn 1b) calculate which persistence targets have been met.
Constraint (eqn 1c) limits the maximum expenditure (i.e. ensures
that the cost of the funded actions do not exceed the budget).
Constraints (eqn 1d) calculate the probability that each feature
will go extinct according to their allocated project.
Constraints (eqn 1e) ensure that feature can only be allocated to projects
that have all of their actions funded. Constraints (eqn 1f) state that each
feature can only be allocated to a single project. Constraints (eqn 1g)
ensure that a project cannot be funded unless all of its actions are funded.
Constraints (eqns 1h) ensure that the probability variables
() are bounded between zero and one. Constraints (eqns 1i) ensure
that the target met (
), action funding (
), project funding
(
), and project allocation (
) variables are binary.
Value
ProjectProblem object with the objective added to it.
References
Chades I, Nicol S, van Leeuwen S, Walters B, Firn J, Reeson A, Martin TG & Carwardine J (2015) Benefits of integrating complementarity into priority threat management. Conservation Biology, 29, 525–536.
See Also
Examples
# load the ggplot2 R package to customize plot
library(ggplot2)
# load data
data(sim_projects, sim_features, sim_actions)
# manually adjust feature weights
sim_features$weight <- c(8, 2, 6, 3, 1)
# build problem with maximum targets met objective, a $200 budget,
# targets that require each feature to have a 20% chance of persisting into
# the future, and zero cost actions locked in
p1 <- problem(sim_projects, sim_actions, sim_features,
"name", "success", "name", "cost", "name") %>%
add_max_targets_met_objective(budget = 200) %>%
add_absolute_targets(0.2) %>%
add_locked_in_constraints(which(sim_actions$cost < 1e-5)) %>%
add_binary_decisions()
## Not run:
# solve problem
s1 <- solve(p1)
# print solution
print(s1)
# plot solution, and add a dashed line to indicate the feature targets
# we can see the three features meet the targets under the baseline
# scenario, and the project for F5 was prioritized for funding
# so that its probability of persistence meets the target
plot(p1, s1) +
geom_hline(yintercept = 0.2, linetype = "dashed")
## End(Not run)
# build another problem that includes feature weights
p2 <- p1 %>%
add_feature_weights("weight")
## Not run:
# solve problem
s2 <- solve(p2)
# print solution
print(s2)
# plot solution, and add a dashed line to indicate the feature targets
# we can see that adding weights to the problem has changed the solution
# specifically, the projects for the feature F3 is now funded
# to enhance its probability of persistence
plot(p2, s2) +
geom_hline(yintercept = 0.2, linetype = "dashed")
## End(Not run)