Learn R Programming

prioritizr (version 3.0.4)

add_max_utility_objective: Add Maximum Utility Objective

Description

Set an objective to find the solution that secures as much of each feature as possible without exceeding the budget. This type of objective does not require the addition of targets.

Usage

add_max_utility_objective(x, budget)

Arguments

budget

numeric value specifying the maximum expenditure of the prioritization.

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 a default error message when solving.

The maximum utility problem 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. This problem is roughly the opposite of what the conservation planning software Marxan does. In versions prior to 3.0.0.0, this objective function was implemented in the add_max_cover_objective but has been renamed as add_max_utility_objective to avoid confusion with historical formulations of the maximum coverage problem.

The maximum utility 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:

$$\mathit{Maximize} \space \sum_{i = 1}^{I} -s \space c_i + \sum_{j = 1}^{J} a_j w_j \\ \mathit{subject \space to} \\ a_j = \sum_{i = 1}^{I} x_i r_{ij} \space \forall j \in J \\ \sum_{i = 1}^{I} x_i c_i \leq B$$

Here, \(x_i\) is the decisions variable (e.g. specifying whether planning unit \(i\) has been selected (1) or not (0)), \(r_{ij}\) is the amount of feature \(j\) in planning unit \(i\), \(A_j\) is the amount of feature \(j\) represented in in the solution, and \(w_j\) 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, \(c_i\) 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.

See Also

add_feature_weights, objectives.

Examples

Run this code
# NOT RUN {
# load data
data(sim_pu_raster, sim_features)

# create problem
p <- problem(sim_pu_raster, sim_features) %>%
     add_max_utility_objective(5000) %>%
     add_binary_decisions()
# }
# NOT RUN {
# solve problem
s <- solve(p)

# plot solution
plot(s, main = "solution", axes = FALSE, box = FALSE)
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab