Returns the spatial deployment of the actions for each planning unit of the corresponding solution.
getActions(x, format = "wide")
getActions()
function assumes that actions can be of three types:
to abate specific threats: these actions have the id corresponding to the threat to be abate.
to conservation: that indicates if the planning unit is selected to conservative any feature that is not threatened.
to connectivity: that indicates if the planning unit is selected only by connectivity (i.e. without performing conservation actions or actions against a threat in said unit).
# \donttest{
# set seed for reproducibility
set.seed(14)
## Load data
data(sim_pu_data, sim_features_data, sim_dist_features_data,
sim_threats_data, sim_dist_threats_data, sim_sensitivity_data,
sim_boundary_data)
## Create instance
problem_data <- inputData(
pu = sim_pu_data, features = sim_features_data, dist_features = sim_dist_features_data,
threats = sim_threats_data, dist_threats = sim_dist_threats_data,
sensitivity = sim_sensitivity_data, boundary = sim_boundary_data
)
## Create optimization model
problem_model <- problem(x = problem_data)
#> Warning: The blm argument was set to 0, so the boundary data has no effect
#> Warning: Some blm_actions argument were set to 0, so the boundary data has no effect for these cases
## Solve the optimization model
s <- solve(a = problem_model, time_limit = 2, output_file = FALSE, cores = 2)
#> Gurobi Optimizer version 10.0.0 build v10.0.0rc2 (linux64)
#>
#> CPU model: 12th Gen Intel(R) Core(TM) i5-1240P, instruction set [SSE2|AVX|AVX2]
#> Thread count: 16 physical cores, 16 logical processors, using up to 2 threads
#>
#> Optimize a model with 284 rows, 396 columns and 785 nonzeros
#> Model fingerprint: 0xff18a474
#> Variable types: 176 continuous, 220 integer (220 binary)
#> Coefficient statistics:
#> Matrix range [5e-01, 2e+00]
#> Objective range [1e+00, 1e+01]
#> Bounds range [1e+00, 1e+00]
#> RHS range [2e+01, 5e+01]
#> Found heuristic solution: objective 964.0000000
#> Found heuristic solution: objective 886.0000000
#> Presolve removed 251 rows and 294 columns
#> Presolve time: 0.00s
#> Presolved: 33 rows, 102 columns, 194 nonzeros
#> Variable types: 0 continuous, 102 integer (89 binary)
#> Found heuristic solution: objective 776.0000000
#>
#> Root relaxation: objective 7.345000e+02, 39 iterations, 0.00 seconds (0.00 work units)
#>
#> Nodes | Current Node | Objective Bounds | Work
#> Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
#>
#> 0 0 734.50000 0 4 776.00000 734.50000 5.35% - 0s
#> H 0 0 742.0000000 734.50000 1.01% - 0s
#> 0 0 737.00000 0 2 742.00000 737.00000 0.67% - 0s
#> * 0 0 0 738.0000000 738.00000 0.00% - 0s
#>
#> Explored 1 nodes (82 simplex iterations) in 0.00 seconds (0.00 work units)
#> Thread count was 2 (of 16 available processors)
#>
#> Solution count 5: 738 742 776 ... 964
#>
#> Optimal solution found (tolerance 0.00e+00)
#> Best objective 7.380000000000e+02, best bound 7.380000000000e+02, gap 0.0000%
# get actions information in large format
actions <- getActions(s, format = "large")
head(actions)
#> solution_name pu action solution
#> 108 sol 8 2 1
#> 109 sol 9 2 1
#> 110 sol 10 2 1
#> 11 sol 11 1 1
#> 111 sol 11 2 1
#> 12 sol 12 1 1
# get actions information in wide format
actions <- getActions(s, format = "wide")
head(actions)
#> solution_name pu 1 2 conservation connectivity
#> 1 sol 1 0 0 0 0
#> 2 sol 2 0 0 0 0
#> 3 sol 3 0 0 0 0
#> 4 sol 4 0 0 0 0
#> 5 sol 5 0 0 0 0
#> 6 sol 6 0 0 0 0
# }