Package: prioritizr
Type: Package
Version: 9.0.0.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), raster (>= 3.6.11), Matrix (>= 1.3-0), assertthat (>=
0.2.0), igraph (>= 2.0.3), ape (>= 5.6-1), magrittr (>= 2.0.1),
exactextractr (>= 0.8.1), tibble (>= 2.0.0), withr (>= 2.3.0)
Suggests: testthat (>= 3.1.0), knitr (>= 1.36), gurobi (>= 8.0-1), rcbc
(>= 0.1.0.9001), cplexAPI (>= 1.4.0), lpsymphony (>= 1.17.0),
slam (>= 0.1-48), Rsymphony (>= 0.1-31), highs (>= 0.1-10),
rmarkdown (>= 2.11), prioritizrdata (>= 0.2.4), fields (>=
14.0), vroom (>= 1.6.5)
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.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_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' 'assertions_problem.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-deprecated.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.0.0
Config/pak/sysreqs: libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev
libglpk-dev libxml2-dev libssl-dev libproj-dev libsqlite3-dev
libudunits2-dev
Repository: https://prioritizr.r-universe.dev
Date/Publication: 2026-06-17 23:41:18 UTC
RemoteUrl: https://github.com/prioritizr/prioritizr
RemoteRef: HEAD
RemoteSha: f7ea002c58e93e33d7536ba5f000dc114d62f6d2
NeedsCompilation: yes
Packaged: 2026-06-18 06:10:15 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