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

add_max_utility_objective

Add maximum utility objective


Description

Set the objective of a conservation planning problem() to secure as much of the features as possible without exceeding a budget. This type of objective does not use targets, and feature weights should be used instead to increase the representation of different features in solutions. Note that this objective does not aim to maximize as much of each feature as possible and so often results in solutions that are heavily biased towards specific features.

Usage

add_max_utility_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 maximum utility objective seeks to find the set of planning units that maximizes the overall level of representation across a suite of conservation features, while keeping cost within a fixed budget. Additionally, weights can be used to favor the representation of certain features over other features (see add_feature_weights()). This objective can be expressed mathematically for a set of planning units (I indexed by i) and a set of features (J indexed by j) as:

Maximize sum_i^I (-s * ci * xi) + sum_j^J (aj * wj) subject to aj = sum_i^I (xi * rij) 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, Aj is the amount of feature j represented in in the solution, and wj is the weight for feature j (defaults to 1 for all features; see add_feature_weights() to specify weights). Additionally, B is the budget allocated for the solution, ci is the cost of planning unit i, and s is a scaling factor used to shrink the costs so that the problem will return a cheapest solution when there are multiple solutions that represent the same amount of all features within the budget.

Value

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

Notes

In early versions (< 3.0.0.0), this function was named as the add_max_cover_objective function. It was renamed to avoid confusion with existing terminology.

See Also

Examples

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

# create problem with maximum utility objective
p1 <- problem(sim_pu_raster, sim_features) %>%
      add_max_utility_objective(5000) %>%
      add_binary_decisions() %>%
      add_default_solver(gap = 0, 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 maximum utility objective that
# has a single budget for all zones
p2 <- problem(sim_pu_zones_stack, sim_features_zones) %>%
      add_max_utility_objective(5000) %>%
      add_binary_decisions() %>%
      add_default_solver(gap = 0, 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 maximum utility objective that
# has separate budgets for each zone
p3 <- problem(sim_pu_zones_stack, sim_features_zones) %>%
      add_max_utility_objective(c(1000, 2000, 3000)) %>%
      add_binary_decisions() %>%
      add_default_solver(gap = 0, 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.