Package: prioritizr
Type: Package
Version: 9.0.1.1
Title: Systematic Conservation Prioritization in R
Description: Systematic conservation prioritization using mixed integer
linear programming (MILP). It provides a flexible interface for
building and solving conservation planning problems. Once
built, conservation planning problems can be solved using a
variety of commercial and open-source exact algorithm solvers.
By using exact algorithm solvers, solutions can be generated
that are guaranteed to be optimal (or within a pre-specified
optimality gap). Furthermore, conservation problems can be
constructed to optimize the spatial allocation of different
management actions or zones, meaning that conservation
practitioners can identify solutions that benefit multiple
stakeholders. To solve large-scale or complex conservation
planning problems, users should install the Gurobi optimization
software (available from ) and the
'gurobi' R package (see Gurobi Installation Guide vignette for
details). Users can also install the IBM CPLEX software
()
and the 'cplexAPI' R package (available at
). Additionally, the 'rcbc' R
package (available at )
can be used to generate solutions using the CBC optimization
software (). For further
details, see Hanson et al. (2025) .
Authors@R:
c(person(c('Jeffrey', 'O'), 'Hanson',
email = 'jeffrey.hanson@uqconnect.edu.au', role = c('aut'),
comment = c(ORCID = '0000-0002-4716-6134')),
person(c('Richard'), 'Schuster',
email = 'richard.schuster@glel.carleton.ca', role = c('aut', 'cre'),
comment = c(ORCID = '0000-0003-3191-7869')),
person(c('Nina'), 'Morrell',
email = 'nina.morrell@ubc.ca', role = c('aut')),
person(c('Matthew'), 'Strimas-Mackey',
email = 'mstrimas@gmail.com', role = c('aut'),
comment = c(ORCID = '0000-0001-8929-7776')),
person(c('Sandra'), 'Neubert',
email = 's.neubert@uq.edu.au', role = c('aut'),
comment = c(ORCID = '0000-0002-3112-4116')),
person(c('Brandon', 'P', 'M'), 'Edwards',
email = 'brandonedwards3@cmail.carleton.ca', role = c('aut'),
comment = c(ORCID = '0000-0003-0865-3076')),
person(c('Matthew', 'E'), 'Watts',
email = 'm.watts@uq.edu.au', role = c('aut')),
person(c('Peter'), 'Arcese',
email = 'peter.arcese@ubc.ca', role = c('aut'),
comment = c(ORCID = '0000-0002-8097-482X')),
person(c('Joseph', 'R'), 'Bennett',
email = 'joseph.bennett@carleton.ca', role = c('aut'),
comment = c(ORCID = '0000-0002-3901-9513')),
person(c('Hugh', 'P'), 'Possingham',
email = 'hugh.possingham@tnc.org', role = c('aut'),
comment = c(ORCID = '0000-0001-7755-996X')))
Imports: utils, methods, parallel, R6 (>= 2.5.1), rlang (>= 1.1.0), cli
(>= 3.6.0), sf (>= 1.0-12), units (>= 0.8.7), terra (>=
1.8-54), Matrix (>= 1.3-0), assertthat (>= 0.2.0), magrittr (>=
2.0.1), exactextractr (>= 0.8.1), tibble (>= 2.0.0), withr (>=
2.3.0)
Suggests: testthat (>= 3.1.0), knitr (>= 1.36), rmarkdown (>= 2.11),
slam (>= 0.1-48), gurobi (>= 8.0-1), rcbc (>= 0.1.0.9001),
cplexAPI (>= 1.4.0), lpsymphony (>= 1.17.0), Rsymphony (>=
0.1-31), highs (>= 0.1-10), scip (>= 1.10.1-1), prioritizrdata
(>= 0.2.4), fields (>= 14.0), vroom (>= 1.6.5), igraph (>=
2.0.3), ape (>= 5.6-1)
Depends: R (>= 4.1.0)
LinkingTo: Rcpp (>= 1.0.7), RcppArmadillo (>= 0.10.7.3.0), BH (>=
1.75.0-0)
License: GPL-3
Language: en-US
Encoding: UTF-8
URL: https://prioritizr.net, https://github.com/prioritizr/prioritizr
BugReports: https://github.com/prioritizr/prioritizr/issues
VignetteBuilder: knitr
Collate: 'external-classes.R' 'internal.R' 'waiver.R'
'ConservationModifier-class.R' 'category_vector.R'
'category_layer.R' 'binary_stack.R'
'ConservationProblem-class.R' 'Constraint-class.R'
'Decision-class.R' 'MultiConservationProblem-class.R'
'MultiObjApproach-class.R' 'Objective-class.R'
'OptimizationProblem-class.R' 'Penalty-class.R'
'Portfolio-class.R' 'RcppExports.R' 'Solver-class.R'
'Target-class.R' 'TargetMethod-class.R' 'Weight-class.R'
'zones.R' 'add_absolute_targets.R'
'marxan_connectivity_data_to_matrix.R'
'add_asym_connectivity_penalties.R' 'get_target_method.R'
'target_optimization_format.R' 'add_auto_targets.R'
'add_binary_decisions.R' 'marxan_boundary_data_to_matrix.R'
'add_boundary_penalties.R' 'add_cbc_solver.R'
'add_compile_solver.R' 'add_connectivity_penalties.R'
'add_contiguity_constraints.R' 'add_cost_constraints.R'
'add_cost_penalties.R' 'add_cplex_solver.R'
'add_cuts_portfolio.R' 'add_default_portfolio.R'
'standalone-assertions_misc.R' 'add_default_solver.R'
'add_extra_portfolio.R' 'add_feature_contiguity_constraints.R'
'add_feature_weights.R' 'add_gap_portfolio.R'
'add_group_targets.R' 'add_gurobi_solver.R'
'add_hier_approach.R' 'add_highs_solver.R'
'add_linear_constraints.R' 'add_linear_penalties.R'
'intersecting_units.R' 'add_locked_in_constraints.R'
'add_locked_out_constraints.R' 'add_lpsymphony_solver.R'
'add_mandatory_allocation_constraints.R' 'reexports.R'
'tbl_df.R' 'add_manual_targets.R'
'add_manual_bounded_constraints.R'
'add_manual_locked_constraints.R' 'add_max_cover_objective.R'
'add_max_n_targets_met_objective.R'
'add_max_phylo_div_objective.R' 'add_max_phylo_end_objective.R'
'add_max_wtd_sum_objective.R'
'add_min_largest_shortfall_objective.R'
'add_min_penalties_objective.R' 'add_min_set_objective.R'
'add_min_shortfall_objective.R' 'add_neighbor_constraints.R'
'add_neighbor_penalties.R' 'add_proportion_decisions.R'
'add_ref_point_approach.R' 'add_relative_targets.R'
'add_rsymphony_solver.R' 'add_scip_solver.R'
'add_semicontinuous_decisions.R' 'add_shuffle_portfolio.R'
'add_single_portfolio.R' 'add_top_portfolio.R'
'add_wtd_sum_approach.R' 'adjacency_matrix.R'
'approach_rel_tol_matrix.R' 'approach_weights_matrix.R'
'approaches.R' 'as.R' 'as_units.R' 'run_presolve_check.R'
'compile.R' 'presolve_check.R'
'assertions_pass_presolve_check.R' 'boundary_matrix.R'
'branch_matrix.R' 'calibrate_cohon_penalty.R'
'connectivity_matrix.R' 'constraints.R' 'data.R' 'decisions.R'
'deprecated.R' 'eval_asym_connectivity_summary.R'
'eval_boundary_summary.R' 'eval_connectivity_summary.R'
'eval_cost_summary.R' 'eval_feature_representation_summary.R'
'eval_ferrier_importance.R' 'eval_n_summary.R'
'eval_objective_summary.R' 'solve.R' 'problem.R'
'eval_rank_importance.R' 'eval_rare_richness_importance.R'
'planning_unit_solution_format.R'
'eval_replacement_importance.R'
'eval_target_coverage_summary.R' 'fast_extract.R'
'feature_abundances.R' 'feature_names.R' 'importance.R'
'knit_print.R' 'linear_interpolation.R'
'loglinear_interpolation.R' 'read_marxan_data.R'
'read_marxan_parameters.R' 'marxan_problem.R' 'memory.R'
'multi_compile.R' 'multi_problem.R' 'number_of_features.R'
'number_of_planning_units.R' 'number_of_problems.R'
'number_of_total_units.R' 'number_of_zones.R' 'objectives.R'
'optimization_problem.R' 'package.R' 'penalties.R'
'planning_unit_indices.R' 'planning_unit_solution_status.R'
'portfolios.R' 'print.R' 'problem_names.R' 'proximity_matrix.R'
'rescale_matrix.R' 'rij_matrix.R' 'run_calculations.R'
'run_multi_presolve_check.R' 'show.R' 'simulate.R' 'solvers.R'
'spec_absolute_targets.R' 'spec_area_targets.R'
'spec_duran_targets.R' 'spec_interp_absolute_targets.R'
'spec_interp_area_targets.R' 'spec_jung_targets.R'
'spec_max_targets.R' 'spec_min_targets.R'
'spec_polak_targets.R' 'spec_pop_size_targets.R'
'spec_relative_targets.R' 'spec_rl_ecosystem_targets.R'
'spec_rl_species_targets.R' 'spec_rodrigues_targets.R'
'spec_rule_targets.R' 'spec_sreekar_targets.R'
'spec_ward_targets.R' 'spec_watson_targets.R'
'spec_wilson_targets.R' 'standalone-all_binary.R'
'standalone-all_columns_any_finite.R'
'standalone-all_columns_inherit.R' 'standalone-all_finite.R'
'standalone-all_positive.R' 'standalone-all_proportion.R'
'standalone-any_nonNA.R' 'standalone-any_nonzero.R'
'standalone-as_Matrix.R'
'standalone-assertions_ConservationProblem.R'
'standalone-assertions_class.R'
'standalone-assertions_functions.R'
'standalone-assertions_handlers.R'
'standalone-assertions_raster.R' 'standalone-assertions_sf.R'
'standalone-assertions_solvers.R'
'standalone-assertions_vector.R' 'standalone-cli.R'
'standalone-do_run_example.R' 'standalone-get_crs.R'
'standalone-is_numeric_values.R' 'standalone-is_same_crs.R'
'standalone-is_spatial_extents_overlap.R' 'standalone-repr.R'
'summaries.R' 'summary.R' 'targets.R' 'test-helpers.R'
'validate_marxan_data.R' 'write_problem.R' 'zone_names.R'
'zzz.R'
Roxygen: list(markdown = TRUE)
Config/testthat/edition: 3
Config/Needs/website: topsis, vegan, cluster, units, scales, dplyr,
ggplot2, stringr, ggrepel, piggyback, prioritizrdata, pkgdown
Remotes: dirkschumacher/rcbc, cran/cplexAPI, bioc::lpsymphony
Config/roxygen2/version: 8.1.0
Config/pak/sysreqs: libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev
libssl-dev libproj-dev libsqlite3-dev libudunits2-dev
Repository: https://prioritizr.r-universe.dev
Date/Publication: 2026-10-23 08:08:39 UTC
RemoteUrl: https://github.com/prioritizr/prioritizr
RemoteRef: HEAD
RemoteSha: 1461139cdca5b8f8808682d71f649578452c50db
NeedsCompilation: yes
Packaged: 2026-10-23 14:18:49 UTC; root
Author: Jeffrey O Hanson [aut] (ORCID: ),
Richard Schuster [aut, cre] (ORCID:
),
Nina Morrell [aut],
Matthew Strimas-Mackey [aut] (ORCID:
),
Sandra Neubert [aut] (ORCID: ),
Brandon P M Edwards [aut] (ORCID:
),
Matthew E Watts [aut],
Peter Arcese [aut] (ORCID: ),
Joseph R Bennett [aut] (ORCID: ),
Hugh P Possingham [aut] (ORCID:
)
Maintainer: Richard Schuster