if (FALSE) {
# load data
sim_pu_raster <- get_sim_pu_raster()
sim_zones_pu_raster <- get_sim_zones_pu_raster()
sim_features <- get_sim_features()
sim_zones_features <- get_sim_zones_features()
# threshold the feature data to generate binary biodiversity data
sim_binary_features <- sim_features
thresholds <- terra::global(
sim_features, fun = quantile, probs = 0.5, na.rm = TRUE
)
for (i in seq_len(terra::nlyr(sim_features))) {
sim_binary_features[[i]] <- terra::as.int(
sim_features[[i]] > thresholds[[1]][[i]]
)
}
# create problem with maximum cover objective
p1 <-
problem(sim_pu_raster, sim_binary_features) %>%
add_max_cover_objective(500) %>%
add_binary_decisions() %>%
add_default_solver(verbose = FALSE)
# solve problem
s1 <- solve(p1)
# plot solution
plot(s1, main = "solution", axes = FALSE)
# threshold the multi-zone feature data to generate binary biodiversity data
sim_binary_features_zones <- sim_zones_features
for (z in seq_len(number_of_zones(sim_zones_features))) {
thresholds <- terra::global(
sim_zones_features[[z]], fun = quantile, probs = 0.5, na.rm = TRUE
)
for (i in seq_len(number_of_features(sim_zones_features))) {
sim_binary_features_zones[[z]][[i]] <- terra::as.int(
sim_zones_features[[z]][[i]] > thresholds[[1]][[i]]
)
}
}
# create multi-zone problem with maximum cover objective that
# has a single budget for all zones
p2 <-
problem(sim_zones_pu_raster, sim_binary_features_zones) %>%
add_max_cover_objective(800) %>%
add_binary_decisions() %>%
add_default_solver(verbose = FALSE)
# solve problem
s2 <- solve(p2)
# plot solution
plot(category_layer(s2), main = "solution", axes = FALSE)
# create multi-zone problem with maximum cover objective that
# has separate budgets for each zone
p3 <-
problem(sim_zones_pu_raster, sim_binary_features_zones) %>%
add_max_cover_objective(c(400, 400, 400)) %>%
add_binary_decisions() %>%
add_default_solver(verbose = FALSE)
# solve problem
s3 <- solve(p3)
# plot solution
plot(category_layer(s3), main = "solution", axes = FALSE)
}
Run the code above in your browser using DataLab