Skip to contents

Specify that a restoration problem (restopt_problem()) should maximize the number of planning units.

Usage

set_max_nb_pus_objective(problem)

Arguments

problem

restopt_problem() Restoration problem object.

Value

An updated restoration problem (restopt_problem()) object.

Details

Planning units correspond to aggregated cells from the original dataset. Maximizing the number of planning units increased the spatial extent of the restoration area. This can be useful when the budget is limited and the aim is to restore the larget possible extent.

Examples

# \donttest{
# load data
habitat_data <- rast(
  system.file("extdata", "habitat_hi_res.tif", package = "restoptr")
)

locked_out_data <- rast(
 system.file("extdata", "locked_out.tif", package = "restoptr")
)

# plot data
plot(rast(list(habitat_data, locked_out_data)), nc = 2)


# create problem with locked out constraints
p <- restopt_problem(
    existing_habitat = habitat_data,
    aggregation_factor = 16,
    habitat_threshold = 0.7
  ) %>%
  set_max_nb_pus_objective() %>%
  add_restorable_constraint(
    min_restore = 5,
    max_restore = 5,
  ) %>%
  add_locked_out_constraint(data = locked_out_data) %>%
  add_settings(time_limit = 1)

# 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:            Maximize number of planning units 
#> ----------------------------------------------------------------- 
#> constraints:          
#>   -  restorable (min_restore = 5, max_restore = 5, min_proportion = 1, unit = ha) 
#>   -  locked out (data = in memory) 
#> ----------------------------------------------------------------- 
#> settings: 
#>   - precision = 4
#>   - time_limit = 1
#>   - nb_solutions = 1
#>   - optimality_gap = 0
#>   - solution_name_prefix = Solution  
#> ----------------------------------------------------------------- 

# solve problem
s <- solve(p)
#> Good news: the solver found 1 solution statisfying the constraints that was proven optimal ! (solving time = 0.05 s)

# plot solution
plot(s)

# }