Add constraint to limit the number of connected components
Source:R/add_components_constraint.R
add_components_constraint.Rd
Add constraint to a restoration problem (restopt_problem()
) object
to specify the number of connected components that can be
present within a solution.
Arguments
- problem
restopt_problem()
Restoration problem object.- min_nb_components
integer
Minimum number of connected components.- max_nb_components
integer
Maximum number of connected components.
Value
An updated restoration problem (restopt_problem()
) object.
Details
A connected component is a spatially continuous set of planning units. This constraints applies on the set of planning units that are selected for restoration, and allows to specify a minimum and maximum number of connected components. In practice, this constraint is useful to ensure the feasibility of a restoration project, and to integrate economies of scale. Continuous restoration areas (i.e. less connected components) are usually associated with lower costs, because it ensures that restoration sites are not too far away from each other (e.g. lower travel costs between sites, less areas to monitor, etc.). On the other hand, it can be useful to enforce several disconnected restoration areas to ensure that hazards (e.g. fire) do not strike all planning units at the same time.
See also
Other constraints:
add_available_areas_constraint()
,
add_compactness_constraint()
,
add_connected_constraint()
,
add_locked_out_constraint()
,
add_min_iic_constraint()
,
add_min_mesh_constraint()
,
add_restorable_constraint()
Examples
# \donttest{
# load data
habitat_data <- rast(
system.file("extdata", "habitat_hi_res.tif", package = "restoptr")
)
# create problem
p <- restopt_problem(
existing_habitat = habitat_data,
aggregation_factor = 16,
habitat_threshold = 0.7
) %>%
add_restorable_constraint(
min_restore = 10,
max_restore = 100,
) %>%
add_components_constraint(1, 1)
# plot preprocessed data
plot(rast(list(p$data$existing_habitat, p$data$restorable_habitat)), nc = 2)
# print problem
print(p)
#> -----------------------------------------------------------------
#> Restopt
#> -----------------------------------------------------------------
#> original habitat: habitat_hi_res.tif
#> aggregation factor: 16
#> habitat threshold: 0.7
#> existing habitat: in memory
#> restorable habitat: in memory
#> -----------------------------------------------------------------
#> objective: No optimization objective
#> -----------------------------------------------------------------
#> constraints:
#> - restorable (min_restore = 10, max_restore = 100, min_proportion = 1, unit = ha)
#> - components (min_nb_components = 1, max_nb_components = 1)
#> -----------------------------------------------------------------
#> settings:
#> - precision = 4
#> - time_limit = 0
#> - nb_solutions = 1
#> - optimality_gap = 0
#> - solution_name_prefix = Solution
#> -----------------------------------------------------------------
# Solve problem
s <- solve(p)
#> Good news: the solver found 1 solution satisfying the constraints ! (solving time = 0.02 s)
# plot solution
plot(s)
# }