# NOT RUN {
# set seed for reproducibility
set.seed(500)
# load data
data(sim_pu_raster, sim_pu_polygons, sim_features, sim_pu_zones_stack,
sim_pu_zones_polygons, sim_features_zones)
# create a simple conservation planning data set so we can see exactly
# how feature representation is calculated
pu <- data.frame(id = seq_len(10), cost = c(0.2, NA, runif(8)),
spp1 = runif(10), spp2 = c(rpois(9, 4), NA))
# create problem
p1 <- problem(pu, c("spp1", "spp2"), cost_column = "cost") %>%
add_min_set_objective() %>%
add_relative_targets(0.1) %>%
add_binary_decisions()
# create a solution
s1 <- data.frame(solution = c(1, NA, rep(c(1, 0), 4)))
print(s1)
# calculate feature representation
r1 <- feature_representation(p1, s1)
print(r1)
# verify that feature representation calculations are correct
all.equal(r1$absolute_held, c(sum(pu$spp1 * s1[[1]], na.rm = TRUE),
sum(pu$spp2 * s1[[1]], na.rm = TRUE)))
all.equal(r1$relative_held, c(sum(pu$spp1 * s1[[1]], na.rm = TRUE) /
sum(pu$spp1),
sum(pu$spp2 * s1[[1]], na.rm = TRUE) /
sum(pu$spp2, na.rm = TRUE)))
# }
# NOT RUN {
# solve the problem using an exact algorithm solver
s1_2 <- solve(p1)
print(s1_2)
# calculate feature representation in this solution
r1_2 <- feature_representation(p1, s1_2[, "solution_1", drop = FALSE])
print(r1_2)
# build minimal conservation problem with raster data
p2 <- problem(sim_pu_raster, sim_features) %>%
add_min_set_objective() %>%
add_relative_targets(0.1) %>%
add_binary_decisions()
# solve the problem
s2 <- solve(p2)
# print solution
print(s2)
# calculate feature representation in the solution
r2 <- feature_representation(p2, s2)
print(r2)
# plot solution
plot(s2, main = "solution", axes = FALSE, box = FALSE)
# }
# NOT RUN {
# build minimal conservation problem with spatial polygon data
p3 <- problem(sim_pu_polygons, sim_features, cost_column = "cost") %>%
add_min_set_objective() %>%
add_relative_targets(0.1) %>%
add_binary_decisions()
# }
# NOT RUN {
# solve the problem
s3 <- solve(p3)
# print first six rows of the attribute table
print(head(s3))
# calculate feature representation in the solution
r3 <- feature_representation(p3, s3[, "solution_1"])
print(r3)
# plot solution
spplot(s3, zcol = "solution_1", main = "solution", axes = FALSE, box = FALSE)
# }
# NOT RUN {
# build multi-zone conservation problem with raster data
p4 <- problem(sim_pu_zones_stack, sim_features_zones) %>%
add_min_set_objective() %>%
add_relative_targets(matrix(runif(15, 0.1, 0.2), nrow = 5,
ncol = 3)) %>%
add_binary_decisions()
# }
# NOT RUN {
# solve the problem
s4 <- solve(p4)
# print solution
print(s4)
# calculate feature representation in the solution
r4 <- feature_representation(p4, s4)
print(r4)
# plot solution
plot(category_layer(s4), main = "solution", axes = FALSE, box = FALSE)
# }
# NOT RUN {
# build multi-zone conservation problem with spatial polygon data
p5 <- problem(sim_pu_zones_polygons, sim_features_zones,
cost_column = c("cost_1", "cost_2", "cost_3")) %>%
add_min_set_objective() %>%
add_relative_targets(matrix(runif(15, 0.1, 0.2), nrow = 5,
ncol = 3)) %>%
add_binary_decisions()
# }
# NOT RUN {
# solve the problem
s5 <- solve(p5)
# print first six rows of the attribute table
print(head(s5))
# calculate feature representation in the solution
r5 <- feature_representation(p5, s5[, c("solution_1_zone_1",
"solution_1_zone_2",
"solution_1_zone_3")])
print(r5)
# create new column representing the zone id that each planning unit
# was allocated to in the solution
s5$solution <- category_vector(s5@data[, c("solution_1_zone_1",
"solution_1_zone_2",
"solution_1_zone_3")])
s5$solution <- factor(s5$solution)
# plot solution
spplot(s5, zcol = "solution", main = "solution", axes = FALSE, box = FALSE)
# }
Run the code above in your browser using DataLab