Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

add_min_largest_shortfall_objective

Add minimum largest shortfall objective


Description

Set the objective of a conservation planning problem() to minimize the largest target shortfall while ensuring that the cost of the solution does not exceed a budget. Note that if the target shortfall for a single feature cannot be decreased beyond a certain point (e.g. because all remaining planning units occupied by that feature are too costly or are locked out), then solutions may only use a small proportion of the specified budget.

Usage

add_min_largest_shortfall_objective(x, budget)

Arguments

x

problem() (i.e. ConservationProblem) object.

budget

numeric value specifying the maximum expenditure of the prioritization. For problems with multiple zones, the argument to budget can be a single numeric value to specify a budget for the entire solution or a numeric vector to specify a budget for each each management zone.

Details

A problem objective is used to specify the overall goal of the conservation planning problem. Please note that all conservation planning problems formulated in the prioritizr package require the addition of objectives—failing to do so will return an error message when attempting to solve problem.

The minimum largest shortfall objective aims to find the set of planning units that minimize the largest shortfall for any of the representation targets—that is, the fraction of each target that remains unmet—for as many features as possible while staying within a fixed budget. This objective is different from the minimum shortfall objective (add_min_shortfall_objective()) because this objective minimizes the largest (maximum) target shortfall, whereas the minimum shortfall objective minimizes the total (weighted sum) of the target shortfalls. Note that this objective function is not compatible with feature weights (add_feature_weights()).

The minimum largest shortfall objective for the reserve design problem can be expressed mathematically for a set of planning units (I indexed by i) and a set of features (J indexed by j) as:

Minimize l subject to sum_i^I (xi * rij) + yj >= tj for all j in J & l >= (yj / tj) for all j in J & sum_i^I (xi * ci) <= B

Here, xi is the decisions variable (e.g. specifying whether planning unit i has been selected (1) or not (0)), rij is the amount of feature j in planning unit i, and tj is the representation target for feature j. Additionally, yj denotes the target shortfall for the target tj for feature j, and l denotes the largest target shortfall. Furthermore, B is the budget allocated for the solution, ci is the cost of planning unit i. Note that yj and s are continuous variables bounded between zero and infinity.

Value

Object (i.e. ConservationProblem) with the objective added to it.

See Also

Examples

# load data
data(sim_pu_raster, sim_pu_zones_stack, sim_features, sim_features_zones)

# create problem with minimum largest shortfall objective
p1 <- problem(sim_pu_raster, sim_features) %>%
      add_min_largest_shortfall_objective(1800) %>%
      add_relative_targets(0.1) %>%
      add_binary_decisions() %>%
      add_default_solver(verbose = FALSE)
## Not run: 
# solve problem
s1 <- solve(p1)

# plot solution
plot(s1, main = "solution", axes = FALSE, box = FALSE)

## End(Not run)

# create multi-zone problem with minimum largest shortfall objective,
# with 10% representation targets for each feature, and set
# a budget such that the total maximum expenditure in all zones
# cannot exceed 3000
p2 <- problem(sim_pu_zones_stack, sim_features_zones) %>%
      add_min_largest_shortfall_objective(3000) %>%
      add_relative_targets(matrix(0.1, ncol = 3, nrow = 5)) %>%
      add_binary_decisions() %>%
      add_default_solver(verbose = FALSE)
## Not run: 
# solve problem
s2 <- solve(p2)

# plot solution
plot(category_layer(s2), main = "solution", axes = FALSE, box = FALSE)

## End(Not run)
# create multi-zone problem with minimum largest shortfall objective,
# with 10% representation targets for each feature, and set
# separate budgets for each management zone
p3 <- problem(sim_pu_zones_stack, sim_features_zones) %>%
      add_min_largest_shortfall_objective(c(3000, 3000, 3000)) %>%
      add_relative_targets(matrix(0.1, ncol = 3, nrow = 5)) %>%
      add_binary_decisions() %>%
      add_default_solver(verbose = FALSE)
## Not run: 
# solve problem
s3 <- solve(p3)

# plot solution
plot(category_layer(s3), main = "solution", axes = FALSE, box = FALSE)

## End(Not run)

prioritizr

Systematic Conservation Prioritization in R

v7.0.1
GPL-3
Authors
Jeffrey O Hanson [aut] (<https://orcid.org/0000-0002-4716-6134>), Richard Schuster [aut, cre] (<https://orcid.org/0000-0003-3191-7869>), Nina Morrell [aut], Matthew Strimas-Mackey [aut] (<https://orcid.org/0000-0001-8929-7776>), Matthew E Watts [aut], Peter Arcese [aut] (<https://orcid.org/0000-0002-8097-482X>), Joseph Bennett [aut] (<https://orcid.org/0000-0002-3901-9513>), Hugh P Possingham [aut] (<https://orcid.org/0000-0001-7755-996X>)
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.