Changelog
Source:NEWS.md
prioritizr 8.0.4.5
Minor improvements and bug fixes
- Update
rij_matrix()
to improve memory efficiency when processing large-scale vector (e.g.,sf::st_sf()
) planning unit data. Thanks to Sahebeh Karimi for bug report. - Update
rij_matrix()
so that thememory = TRUE
parameter can be used to reduce memory requirements by processing each feature layer separately. This parameter can now be used when processing both vector or raster planning unit data (previously it could only be used with raster planning unit data).
prioritizr 8.0.4.4
Documentation updates
- Update package citation.
- Update documentation for package manual entry.
- Update
add_asym_connectivity_penalties()
,add_connectivity_penalties()
marxan_connectivity_data_to_matrix()
documentation so that examples are standalone and do not affect the session by loading packages. - Update
marxan_boundary_data_to_matrix()
andmarxan_connectivity_data_to_matrix()
documentation so that examples provides more information on how the functions work. - Fix equation rendering in online documentation (#344). Thanks to Jason Everett (@jaseeverett) and Anthony Richardson (@ric325) for bug report.
prioritizr 8.0.4.3
Documentation updates
- Update
marxan_boundary_data_to_matrix()
andmarxan_connectivity_data_to_matrix()
documentation so that examples are standalone and do not affect the session by loading packages.
prioritizr 8.0.4.2
Minor improvements and bug fixes
- Fix bug in
add_max_utility_objective()
that caused the optimization process to throw an error about problem infeasibility when using feature data that contain negative values (#334). Thanks to @hannahmp for bug report. - Fix bug in
presolve_check()
that would cause it to erroneously suggest that many planning units don’t have any feature data associated with them. This bug was caused when the feature data contained relatively large, negative values. - Fix bug in
binary_stack()
that caused it to throw an error when working with raster data containing zeros (#333). - Fix bug in
add_absolute_targets()
where it would not throw a warning to the user know that a problem already had targets defined, and so adding the new targets would override the existing targets defined for the problem. - Fix bug in
as.ZonesRaster
that resulted in an error when trying to convert aSpatRaster
zones object (i.e., azones
object with terra package data) intoRaster
zones object (i.e., azones
object with raster package data). - Fix bug in
write_problem()
needlessly printing messages about the gurobi package not being installed when the function is trying to automatically determine which solver to use (i.e., when usingsolver = NULL
) and the package is not is available. - Fix bug in
branch_matrix()
where it would not automatically convert object to thephylo
class in the ape package. - Update warning message for
add_asym_connectivity_penalties()
so that it now specifies that asymmetric connectivity values are required when symmetric values are incorrectly supplied (#339). Thanks to @DanWismer for bug report. - Update warning messages so that they now indicate which function threw the warning message (using
rlang::warn()
). - Update
compile()
so that it throws an error when using the expanded version of a problem formulation with negative feature values. This is because the expanded version of the problem formulations are not compatible with negative feature values. Currently, the expanded version of the problem formulation is only required when usingadd_feature_contiguity_constraints()
. - Additional tests to improve test coverage.
- Small improvements to code style, maintainability, and logic thanks to code review by Sandra Neubert (@sandra-neubert).
Documentation updates
- Update publication record.
- Fix cross-reference linking issues to classes in other packages (#340).
prioritizr 8.0.4.1
Minor improvements and bug fixes
- Fix issue with
print()
andsummarize()
not displaying correct text for linear constraints (#330).
prioritizr 8.0.3.7
Notice
- New default portfolio method for
problem()
objects. This new default portfolio – which can be manually specified usingadd_default_portfolio()
– involves simply generating a single solution. The reason why this new default portfolio method was chosen was because planning problems that contain insufficient data (e.g., feature and cost data) to identify meaningful priorities can sometimes result in solutions containing strange spatial artifacts (e.g., lines or bands of selected planning units, see #205 and #268). Since the presence of these spatial artifacts can indicate an under-specified problem and shuffling optimization problems can suppress them, we have decided to update the default portfolio so that it does not shuffle problems. If users wish to prevent spatial artifacts from appearing in solutions, then spatial penalties (e.g.,add_boundary_penalties()
), spatial constraints (e.g.,add_neighbor_constraints()
), or shuffle portfolios (e.g.,add_shuffle_portfolio(number_solutions = 1)
) can be used.
Minor improvements and bug fixes
- New
add_default_portfolio()
function for specifying the default behavior for generating a solution (see Notice above for further details). - Update
solve()
so that it provides information on the optimality of solutions (#323). For example, you might specify a 10% optimality gap for the optimization process (e.g., usingadd_highs_solver(gap = 0.1)
), and this might produce a solution that is at least 7% from optimality. The resulting output fromsolve()
will now provide this information about the solution (i.e., the 7% from optimality), and can be accessed using thegap
attribute (e.g.,attr(x, "gap")
, wherex
is the output fromsolve()
). Note that this information is currently only available when using the Gurobi or HiGHS solvers. - Fix bug in
add_linear_constraints()
andadd_linear_penalties()
that resulted in an incorrect error message being shown (#324). - Fix bug in
add_shuffle_portfolio()
that prevented solvers from using a pre-specified starting solution (per thestart
parameter) correctly. Please note that this bug did not result in incorrect solutions, it only meant that any pre-specified starting solutions were not used properly. - Fix bug in
add_cplex_solver()
that caused solutions to not provide runtime information for the optimization process.
prioritizr 8.0.3.6
Minor improvements and bug fixes
- Fix bug in
add_shuffle_portfolio()
so that optimization problems are randomly shuffled when a single solution is requested. This update should help prevent “strange” solutions that contain long horizontal lines/bands of planning units (#205, #268). - Update
add_contiguity_constraints()
andadd_feature_contiguity_constraints()
to be compatible with updates to the igraph package. - Update
write_problem()
so that it can use the gurobi package to write problems (if desired). This substantially reduces run time, because writing problems using the Rsymphony packages also requires solving them.
prioritizr 8.0.3.5
Minor improvements and bug fixes
- Update
presolve_check()
to throw warning if a problem has a single feature (#309). Thanks to Sandra Neubert (@sandra-neubert) for code contribution. - Update
print()
andsummary()
forproblem()
objects so that all text is printed at once (rather than sequentially). - Fix
write_problem()
so that it works as expected (#312). - Update
problem()
,add_linear_constraints()
,add_linear_penalties()
,add_locked_in_constraints()
,add_locked_out_constraints()
,adjacency_matrix()
,binary_stack()
,category_layer()
,connectivity_matrix()
,fast_extract()
,intersecting_units()
,proximity_matrix()
,rij_matrix()
,simulate_data()
,simulate_species()
,simulate_cost()
, andzones()
and other functions so that they will throw an error if a categoricalterra::rast()
object is provided as an argument (#313). This is because categorical rasters are not supported. Thanks to Martin Jung (@Martin-Jung) for bug report. - Fix NAMESPACE issues related to registration of internal S3 methods.
- Fix bug with
problem()
not throwing multiple warnings with unusual data (e.g., given cost and feature data with negative values, previously only a single warning about negative costs would be thrown). Thanks to Sandra Neubert (@sandra-neubert) for bug report.
prioritizr 8.0.3.4
Minor improvements and bug fixes
- Update
problem()
to be more memory efficient when using a sparse matrix (dgCMatrix
) argument for therij_matrix
parameter. - Update error messages for checking that objects have the same coordinate reference system and overlapping spatial extents to format argument names correctly.
- Update error messages for nested expressions to refer to expressions using
Caused by error
instead ofCaused by NULL
.
prioritizr 8.0.3.3
Minor improvements and bug fixes
- Fix
add_locked_in_constraints()
andadd_locked_in_constraints()
error messages when supplyinglocked_in
andlocked_out
objects that do not spatially intersect with the planning units. - Update error message for checking if objects spatially overlap to improve clarity.
prioritizr 8.0.3.1
Minor improvements and bug fixes
- Fix aliasing for package manual entry (#301).
prioritizr 8.0.2.7
Notice
- We have developed a better approach for rescaling boundary data to avoid numerical issues during optimization (#297). Earlier versions of the package recommended the use of the
scales::rescale()
to rescale such data. However, we now realize that this approach can produce inconsistencies for boundary length data (e.g., the total perimeter of a planning unit might not necessarily equal the sum of the edge lengths). In some cases, these inconsistencies can cause solutions generated with high boundary penalties (i.e., usingadd_boundary_penalties()
with a highpenalty
value) to contain a large reserve (i.e., a spatial cluster of selected of planning units) with a single unselected planning unit in the middle of the reserve. In the the worst case, these inconsistencies produce a situation where increasing boundary penalties (i.e., generating multiple solutions withadd_boundary_penalties()
and increasingpenalty
values) does not alter the spatial configuration of solutions. Although use ofscales::rescale()
did not produce such behavior prior to version 8.0.0, changes to the output format forboundary_matrix()
in subsequent versions now mean thatscales::rescale()
can cause these issues. We now recommend using the newrescale_matrix()
function to rescale boundary length data to avoid numerical issues, whilst also avoid such inconsistencies.
New features
- New
rescale_matrix()
function to help with rescaling boundary length (e.g., generated usingboundary_matrix()
) and connectivity (e.g., generated usingconnectivity_matrix()
) data so avoid numerical issues during optimization (#297). Thanks to Jason Flower (@jflowernet) and Joan Giménez Verdugo for bug reports.
Documentation updates
- Update examples and vignettes to use the
rescale_matrix()
function instead of thescales::rescale()
function for rescaling boundary length and connectivity data (#297). - Update publication record.
prioritizr 8.0.2.6
New features
- Update
add_neighbors_constraints()
so that it has an additionalclamp
argument so the minimum number of neighbors permitted for each planning unit in the solution is clamped to the number of neighbors that each planning unit has. For example, if a planning unit has 2 neighbors,k = 3
, andclamp = FALSE
, then the planning unit could not ever be selected in the solution. However, ifclamp = TRUE
, then the planning unit could potentially be selected in the solution if both of its 2 neighbors were also selected.
prioritizr 8.0.2.5
Minor improvements and bug fixes
- Update
problem()
so that it will throw a meaningful error message if the user accidentally specifies the geometry column forsf
planning unit data as a feature.
prioritizr 8.0.2.4
Minor improvements and bug fixes
- Fix compatibility with updates to terra package.
- Fix
rij_matrix()
so that it works when none of the raster layers being processed fit into memory (#290). Thanks to Edwards Marc (@edwardsmarc) for bug report. - Fix spatial extent of built-in raster datasets so that extents are between 0 and 1 (i.e.,
get_sim_pu_raster()
,get_sim_locked_in_raster()
,get_sim_locked_out_raster()
,get_sim_zones_pu_raster()
,get_sim_features()
,get_sim_zones_features()
). - Update
add_manual_locked_constraints()
andadd_manual_bounded_constraints()
so that the indices in the specified in the argumentdata$pu
should consistently refer to the total units. In other words, the indices indata$pu
should refer to the row numbers (for planning units insf
ordata.frame
format) or cell numbers (for planning units inRaster
orSpatRaster
format) of the planning units that should be locked. - Fix warnings thrown due to package version comparisons.
prioritizr 8.0.2.3
Minor improvements and bug fixes
- Export
solve.ConservationProblem()
so that it can be called directly (#283). Thanks to Tin Buenafe (@SnBuenafe) for bug report.
prioritizr 8.0.2.2
Minor improvements and bug fixes
- Fix compatibility with highs package (version 0.1-10) (#281).
prioritizr 8.0.2.1
Minor improvements and bug fixes
- Update
problem()
so that an error will be thrown if argument tofeatures
contains only missing (NA
) values (e.g., an sf object is supplied that hasNA
values in all rows for a feature’s column).
prioritizr 8.0.2
CRAN release: 2023-05-01
Notice
- The package has been updated to focus on using the sf and terra package for spatial vector and raster datasets. This is because the sf package is the successor to the sp package, and the terra package is the successor to the raster package. By leveraging these newer packages, the prioritizr package can provide better performance. Although sp and raster package classes (e.g.,
raster::stack()
andsp::SpatialPolyonsDataFrame()
) are still supported, the prioritizr package will now throw deprecation warnings. Since support for the sp and raster package classes will be fully deprecated and removed in a later version this year, we recommend updating code to use the sf and terra packages.
Major changes
- All proto classes have been migrated to R6 classes. This update reduces memory usage (#238), so
problem()
objects can now contain many more constraints and penalties. Note that anyproblem()
objects that were produced using earlier versions of the package are no longer compatible. Thanks to Jason Flower (@jflowernet) for bug report on memory issues. - The proto, raster, sf, sp packages are no longer automatically loaded alongside prioritizr. As such, users will need to load them manually (e.g., using
library(sf)
). - The built-in datasets have been removed and replaced with functions to import them as needed (i.e.,
get_sim_pu_raster()
,get_sim_pu_polygons()
,get_sim_pu_lines()
,get_sim_pu_points()
,,get_sim_locked_in_raster()
,get_sim_locked_out_raster()
,get_sim_zones_pu_raster()
,get_sim_zones_pu_polygons()
,get_sim_phylogeny()
,get_sim_features()
,get_sim_zones_features()
). These functions now returnsf::st_sf()
,terra::rast()
,ape::read.tree()
andzones()
objects. Note that these functions are provided becausedata(...)
cannot be used withterra::rast()
objects. See?data
for more information. - The
boundary_matrix()
output format has been updated. This means that users will not be able to use boundary data generated using previous versions of the package. - The
add_lpsymphony_solver()
now throws an error, instead of a warning, if an old version of the lpsymphony package is installed that is known to produce incorrect results. - The
marxan_boundary_data_to_matrix()
function is no longer compatible with boundary data for multiple zones. - The
distribute_load()
function has been deprecated, because it is no longer used. For equivalent functionality, Seeparallel::splitIndices()
. - The
new_optimization_problem()
andpredefined_optimization_problem()
functions have been superseded by the newoptimization_problem()
function. - To simplify package documentation and functionality, the following functions are no longer exported:
is.Waiver()
,add_default_decisions()
new_id()
,is.Id()
,print.Id()
,pproto()
. - Updates to improve the error messages and error message handling. Hopefully, users should no longer see
"bad error message"
!
Minor improvements and bug fixes
- Fix bug for
add_feature_weights()
when applied to problems with anadd_max_phylo_div_objective()
oradd_max_phylo_end_objectve()
. Specifically, the bug meant that weights weren’t being applied to problems with these particular objectives. - Fix instructions in
add_gurobi_solver()
documentation for opening vignette. - Update solver functions to provide instructions for installing dependencies in error messages when their dependencies are not available.
- To ensure consistency among the portfolio functions, all of them (except for
add_extra_portfolio()
) default to generating 10 solutions. - The
solve()
function will now outputtibble::tibble()
objects (instead ofdata.frame()
objects), when the planning unit data aretibble::tibble()
objects. - The
boundary_matrix()
function now usesterra::sharedPaths()
for calculations, providing greater performance (#257). Thanks to Jason Flower (@jflowernet) for bug report. - The
eval_ferrier_importance()
function can now be used with any objective function that uses targets and a single zone. - Fix CRAN note regarding C++ standards (#263).
- Remove doParallel and plyr packages as dependencies by simplifying the
add_shuffle_portfolio()
andeval_replacement_importance()
functions. - Fix
add_linear_penalties()
function so that the penalty parameter is applied correctly (#342). In previous versions, this bug meant that solving a problem withpenalty = 1
would produce solution based onpenalty = -1
(and vice versa). Additionally, this bug also meant that compiling/solving a problem multiple times would cause the formulation to alternate between usingpenalty = 1
andpenalty = -1
. Thanks to Carina Firkowski (@Carina-Firkowski) for bug report.
Documentation updates
- Assorted tweaks to improve writing in the vignettes and documentation. Many thanks to Marc Edwards (@edwardsmarc) for code contribution!
- Update publication record.
prioritizr 7.2.2.4
Minor improvements and bug fixes
- Specify minimum version for Matrix package dependency (#255). Thanks to Bruno Carturan (@BrunoCartu) for bug report.
prioritizr 7.2.2.3
New features
- New
add_highs_solver()
function for the HiGHS optimization software (#250).
Minor improvements and bug fixes
- Update
add_default_solver()
to use the HiGHS solver if the Gurobi, IBM CPLEX, and CBC solvers aren’t available. - Fix
add_default_solver()
so that theadd_lpsymphony_solver()
is used instead ofadd_rsymphony_solver()
.
prioritizr 7.2.2.2
Minor improvements and bug fixes
- Update
problem()
andeval_feature_representation_summary()
to avoid needlessly converting sparse matrices to regular matrices (#252).
prioritizr 7.2.2
CRAN release: 2022-09-17
prioritizr 7.2.0.9
Major changes
- Update
boundary_matrix()
to use STR query trees by default. - Update
simulate_data()
,simulate_cost()
andsimulate_species()
functions to improve performance using the fields package.
Minor improvements and bug fixes
- Fix compatibility with upcoming Matrix package version (version 1.5-0).
- Update package documentation to provide details for obtaining and installing the cplexAPI package since it has been archived on CRAN (#214).
- Fix bug that caused the
add_cbc_solver()
to throw a segfault when solving a problem wherein therij_matrix(x)
has a zero amount for the last feature in the last planning unit (#247). Thanks to Jason Everett (@jaseeverett) for bug report. - Remove maptools, PBSmapping, and rgeos packages as dependencies. This involved updating the unit tests to hard-code correct results, updating examples to use the sf package, and updating the
boundary_matrix()
to use the geos package (#218).
prioritizr 7.2.0.8
Major changes
- Update
simulate_cost()
andsimulate_species()
so that they no longer depend on the RandomFields package. Note that these functions will now produce different outputs from previous versions (even when controlling for the random number generator state).
prioritizr 7.2.0.3
Minor improvements and bug fixes
- Update the
presolve_check()
function to (i) reduce chances of it incorrectly throwing an error when the input data won’t actually cause any issues, and (ii) provide recommendations for addressing issues.
Documentation updates
- Update documentation for
add_min_largest_shortfall_objective()
so that examples complete in a shorter period of time.
prioritizr 7.2.0.2
Minor improvements and bug fixes
- Fix bug in processing planning unit data when a problem is constructed using arguments to (i)
x
that arenumeric
ormatrix
format, (ii)x
that contain missing (NA
) values, and (iii)rij_matrix
that are indgCMatrix
format. This bug only occurred when all three of these specific conditions were met. When it occurred, the bug caused planning units withNA
cost values to receive very high cost values (e.g., 1e+300). This bug meant that when attempting to solve the problem, the presolve checks (perpresolve_check()
) would throw an error complaining about very high cost values (#236). Thanks to @lmathon for bug report.
prioritizr 7.2.0.0
Major changes
- Update
add_connectivity_penalties()
function and documentation so that it is designed specifically for symmetric connectivity data.
New features
- New
add_asym_connectivity_penalties()
function that is designed specifically for asymmetric connectivity data. This function has been created to help ensure that asymmetric connectivity data are handled correctly. For instance, using asymmetric connectivity data withadd_connectivity_penalties()
function in previous versions of the package sometimes resulted in the data being incorrectly treated as symmetric data. Additionally, this function uses an updated mathematical formulation for handling asymmetric connectivity so that it provides similar results to the Marxan software (#223). Thanks to Nina Faure Beaulieu (@ninzyfb) for bug report.
Minor improvements and bug fixes
- Fix
add_locked_in_constraints()
andadd_locked_out_constraints()
to ensure that a meaningful error message is provided when no planing units are locked (#234). Thanks to Alec Nelson (@AlecNelson) for bug report. - Fix
presolve_check()
so that it does not throw a meaningless warning when the mathematical objective function only contains zeros. - Update
presolve_check()
to help reduce chances of mis-attributing high connectivity/boundary values due to planning unit costs. - Update
marxan_problem()
function so that it can be used with asymmetric connectivity data. This is now possible because there are dedicated functions for symmetric and asymmetric connectivity.
prioritizr 7.1.1.10
Documentation updates
- Update publication vignette.
- Fix URLs.
- Improve documentation for the
zones
parameter of theadd_connectivity_penalties()
function.
prioritizr 7.1.1.9
Documentation updates
- Update documentation for
eval_ferrier_importance()
(#220). Although this function is now recommended for general use, the documentation contained an outdated warning and so the warning has now been removed.
prioritizr 7.1.1.8
Minor improvements and bug fixes
- Fix bug so that the
eval_n_summary()
function now returns a table with the column name"n"
(instead of"cost"
) for the number of selected planning units (#219).
prioritizr 7.1.1.7
Minor improvements and bug fixes
- Minimum version numbers are now provided for all R package dependencies (excepting base R packages) (#217).
- The data.table package is now listed as a suggested (optional) dependency. This is because it is only used by the
marxan_problem()
for importing Marxan data files.
prioritizr 7.1.1.5
Documentation updates
- The Tasmania tutorial has been reworked into the Getting started tutorial. This tutorial now provides short introduction to using the package.
- The Salt Spring Island tutorial has been reworked into the Connectivity tutorial. This tutorial now explores different approaches for incorporating connectivity.
- The prioritizr vignette has been renamed to the Package overview vignette.
- New Calibrating trade-offs tutorial showcasing methods for running calibration analyses. It outlines blended and hierarchical approaches for generating a set of different prioritizations based on different parameters. It also covers different approaches for selecting a candidate prioritization based on different trade-offs.
prioritizr 7.1.1.4
Minor improvements and bug fixes
- Update tests to reduce run time and pass given slightly different results with new Gurobi version (9.5.0).
- Update built-in
sim_pu_sf
andsim_pu_zones_sf
data given class updates to the sf package (compatible with version 1.0.3+).
Documentation updates
- Update example for
write_problem()
function.
prioritizr 7.1.0.4
Major changes
- Update
eval_ferrier_importance()
function with verified code.
Minor improvements and bug fixes
- Update
presolve_check()
function to throw warning when really high values specified inadd_neighbor_constraints()
.
prioritizr 7.1.0.3
Minor improvements and bug fixes
Update add_cbc_solver()
function so that it can use a starting solution to reduce run time (via the start_solution
parameter).
prioritizr 7.1.0.0
Minor improvements and bug fixes
- Update
add_min_shortfall_objective()
andadd_min_largest_shortfall_objective()
functions to handle targets with a target threshold value of zero.
Documentation updates
- Minor improvements to the documentation. These include moving mathematical details to dedicated sections, providing more links in the See also sections, fixing text formatting for the
eval_connectivity_summary()
function, and tweaking the header in the README. - Update publication vignette.
prioritizr 7.0.1.4
Documentation updates
- Update documentation and examples for
problem()
function. - Update publication vignette.
prioritizr 7.0.1.2
Minor improvements and bug fixes
- Update
add_gurobi_solver()
function so that it doesn’t print excess debugging information (accidentally introduced in previous version 7.0.1.1).
prioritizr 7.0.1.1
New features
- Update
add_gurobi_solver()
function to support thenode_file_start
parameter for the Gurobi software. This functionality is useful solving large problems on systems with limited memory (#192). Thanks to @negira and Alec Nelson (@AlecNelson) for bug reports and suggestions.
prioritizr 7.0.0.8
New features
- New
write_problem()
function to save the mixed integer programming representation of a conservation planning problem to a file. This function is useful for manually executing optimization solvers.
prioritizr 7.0.0.7
Documentation updates
- Fix typo in
rij_matrix()
function documentation (#189). - Update publication vignette.
prioritizr 7.0.0.6
Minor improvements and bug fixes
- Update
add_gurobi_solver()
function to allow specification of a starting solution (#187). This functionality is useful for conducting a boundary penalty parameter calibration exercise. Specifically, users can specify the starting solution for a given penalty value based on the solution obtained using a smaller penalty value. - Fix
solve()
so it assigns layer names based on zone names for solutions in raster format.
prioritizr 7.0.0.4
Minor improvements and bug fixes
- Fix
add_cbc_solver()
so thattime_limit
andverbose
parameters work as expected.
prioritizr 7.0.0.3
Minor improvements and bug fixes
- Update
add_gurobi_solver()
function to report timings following the same methods as the other solvers.
prioritizr 7.0.0.2
Minor improvements and bug fixes
- Update
add_lpsymphony_solver()
function to be more memory efficient (#183). - Added slam package to dependencies to enable more memory efficient usage of the lpsymphony package (#183).
prioritizr 7.0.0.1
Minor improvements and bug fixes
- Update unit tests to solve a greater proportion of them using continuous integration services (#181).
- Update
add_default_solver()
so thatadd_cbc_solver()
is now preferred over all other open source solvers. - Fix bug in
add_cbc_solver()
that resulted in incorrect solutions to problems with equality constraints.
prioritizr 7.0.0.0
Minor improvements and bug fixes
- Remove unused shiny package integration and dependencies (#141).
prioritizr 6.0.0.2
New features
- New
add_cbc_solver()
function to generate solutions using the open source CBC solver via the rcbc package (https://github.com/dirkschumacher/rcbc).
Minor improvements and bug fixes
- Update
add_rsymphony_solver()
andadd_lpsymphony_solver()
functions to have a defaulttime_limit
argument set as the maximum machine integer for consistency. - Update
add_rsymphony_solver()
,add_lpsymphony_solver()
, andadd_gurobi_solver()
functions to requirelogical
(TRUE
/FALSE
) arguments for thefirst_feasible
parameter. - Update
add_default_solver()
function so that it prefersadd_lpsymphony_solver()
overadd_rsymphony_solver()
, andadd_cbc_solver()
over all open source solvers.
Documentation updates
- Previous versions of the package reported that the
gap
parameter for theadd_rsymphony_solver()
andadd_lpsymphony_solver()
corresponded to the maximum absolute difference from the optimal objective value. This was an error due to misunderstanding the SYMPHONY documentation. Under previous versions of the package, thegap
parameter actually corresponded to a relative optimality gap expressed as a percentage (such thatgap = 10
indicates that solutions must be at least 10% from optimality). We have now fixed this error and the documentation described for thegap
parameter is correct. We apologize for any inconvenience this may have caused. - Update documentation for solvers to provide more detailed information.
- Update publication record.
prioritizr 6.0.0.1
Minor improvements and bug fixes
- Add more helpful error messages when invalid
solution
arguments are supplied to the evaluation functions (#176). Thanks to Phil Dyer (@PhDyellow) for bug report. - Add functionality to calculate importance scores using the Ferrier method with
sf
planning unit data.
Documentation updates
- Update Solution format section documentation for evaluation functions (i.e. all functions starting with
eval_
) to mention that the argument tosolution
should only contain columns that correspond to the solution (#176). Thanks to Phil Dyer (@PhDyellow) for bug report. - Add examples using
sf
data to documentation for importance evaluation functions (#176). - Fix broken link in
add_manual_targets()
documentation. - Fix typo in equation for rarity weighted richness documentation.
prioritizr 6.0.0.0
New features
- New
eval_cost()
function to calculate the cost of a solution. - New
eval_boundary()
function to calculate the exposed boundary length associated with a solution. - New
eval_connectivity()
function to calculate the connectivity associated with a solution. - New
eval_feature_representation()
function to assess how well each feature is represented by a solution. This function is similar to the deprecatedeval_feature_representation()
function, except that it follows conventions for other evaluation functions (e.g.eval_cost
). - New
eval_target_representation()
function to assess how well each target is met by a solution. This function is similar to theeval_feature_representation()
, except that it corresponds to the targets in a conservation planning problem.
Major changes
- Rename
ferrier_score
function aseval_ferrier_importance()
function for consistency. - Rename
replacement_cost
function aseval_replacement_importance()
function for consistency. - Rename
rarity_weighted_richness
function aseval_rare_richness_importance()
function for consistency. - Deprecated
feature_representation()
function. It is now superseded by theeval_feature_representation()
function.
Minor improvements and bug fixes
- Fix comparability issues with Matrix package (version 1.3-0) (#172).
Documentation updates
- Add NEWS to build process (#173).
- Update publication vignette.
prioritizr 5.0.3.1
Minor improvements and bug fixes
- Fix
add_locked_out_constraints()
function to enable a single planning unit from being locked out of multiple zones (when data are specified in raster format).
prioritizr 5.0.2.6
Documentation updates
- Update Tasmania vignette to remove superfluous warnings (#168). Thanks to Jason Flower (@jflowernet) for bug report.
- Update publication record vignette.
prioritizr 5.0.2.5
New features
- New
add_cplex_solver()
function to generate solutions using IBM CPLEX (via the cplexAPI package).
prioritizr 5.0.2.4
Minor improvements and bug fixes
- Fix target calculations in
add_loglinear_targets()
andloglinear_interpolation()
functions. Previously they used a natural logarithm for log-linear interpolation. To follow target setting approaches outlined by Rodrigues et al. (2004), they now use the decadic logarithm (i.e.log10()
).
Documentation updates
- Update publication record vignette.
- Update
add_gap_portfolio()
documentation to note that it only works for problems with binary decisions (#159). Thanks to @kkemink for report.
prioritizr 5.0.2.1
Documentation updates
- Update documentation for
ferrier_score()
function. It no longer incorrectly states that these scores can be calculated using CLUZ and now states that this functionality is experimental until the formulation can be double checked.
prioritizr 5.0.1.7
Documentation updates
- Fix small typos in documentation.
- Update citation for Scriven et al. (2020) in the Publication Record vignette.
- Update Salt Spring Island vignette with Ferrier method for calculating irreplaceability scores and adjust for changes in cost data.
- Update examples to run with CRAN checks (i.e.
--run-donttest
).
prioritizr 5.0.1.6
Minor improvements and bug fixes
- Fix
feature_representation()
bug incorrectly throwing error with vector planning unit data (e.g.sf
-class data).
prioritizr 5.0.1.5
Minor improvements and bug fixes
- Fix typo causing
rij_matrix()
to throw an error for large raster data (#151). - Fix “Non-file package-anchored link(s) in documentation object” warnings in R-devel checks.
prioritizr 5.0.1.4
New features
- New
add_linear_penalties()
to add penalties that penalize planning units according to a linear metric.
Documentation updates
- Update
connectivity_matrix()
documentation to provide an example of how to generate connectivity matrices that account for functional connectivity. - Add more information to the documentation for the
solve()
function. - Add links to the documentation for the
solve()
function to the Salt Spring Island and Tasmania vignettes.
prioritizr 5.0.1.3
Minor improvements and bug fixes
- Update
compile()
to throw warning when compiling problems that include feature weights and an objective function that does not use feature weights.
prioritizr 5.0.1.1
Minor improvements and bug fixes
- Update
add_gurobi_solver()
function to provide more options for controlling the pre-solve step when solving a problem.
prioritizr 5.0.0.1
New features
- New
ferrier_score()
function to compute irreplaceability scores following Ferrier et al (2000).
prioritizr 5.0.0.0
New features
- Add full support for sf package (#6).
- New
proximity_matrix()
function to generate matrices indicating which planning units are within a certain distance of each other (#6). - New
add_extra_portfolio()
,add_top_portfolio()
,add_gap_portfolio()
functions to provide specific options for generating portfolios (#134).
Major changes
- Rename
connected_matrix()
function toadjacency_matrix()
function to follow the naming conventions of other spatial association functions (#6). - Deprecate
set_number_of_threads()
,get_number_of_threads()
, andis.parallel()
functions since they are no longer used with new data extraction methods. - Deprecate
add_pool_portfolio()
function because the newadd_extra_portfolio()
andadd_top_portfolio()
functions provide this functionality (#134).
Minor improvements and bug fixes
- Enhance
intersecting_units
andfast_extract
functions to use the exactextractr and fasterize packages to speed up raster data extraction (#130). - Fix compatibility issues with upcoming version of tibble (3.0.0).
- Fix bug in
boundary_matrix()
function when handlingSpatialPolygon
planning unit data that contain multiple polygons (e.g. a single planning unit contains to two separate islands) (#132). - Remove velox package dependency since it may be archived on CRAN (#130). Thanks to Jeffrey Evans (@jeffreyevans) for report.
- Built-in datasets are now saved with latest workspace version (i.e. version 3).
Documentation updates
- Add Flower et al. (2020), Hanson et al. (2020), and Visalli et al. (2020) to publication record (#131). Thanks to Jason Flower (@jflowernet) for report.
prioritizr 4.1.5.2
Minor improvements and bug fixes
- Fix bug in
add_rsymphony_solver()
andadd_lpsymphony_solver()
throwing an an infeasible error message for feasible problems containing continuous or semi-continuous variables.
prioritizr 4.1.4.2
Minor improvements and bug fixes
- Make error message for
presolve_check()
function more informative (#124). Thanks to Amanda Liczner (@aliczner) for bug report.
prioritizr 4.1.3.3
Minor improvements and bug fixes
- Fix
rij_matrix()
so that amounts are calculated correctly for vector-based planning unit data.
Documentation updates
- Fix documentation for
fast_extract()
.
prioritizr 4.1.2.8
Minor improvements and bug fixes
- Update
add_locked_in_constraints()
andadd_locked_out_constraints()
functions so that they no longer throw an unnecessary warning when when they are added to multi-zone problems using raster data withNA
values.
Documentation updates
- Update documentation for
add_locked_in_constraints()
andadd_locked_out_constraints()
functions to provide recommended practices for raster data. - Update documentation for constraints missing “See also” and “Value” sections.
prioritizr 4.1.2.7
Minor improvements and bug fixes
- Fix issue with
rarity_weighted_richness()
returning incorrect scores when the feature data contains one feature that has zeros amounts in all planning units (e.g. thetas_features
object in the prioritizrdata package; #120). - Fix issue with
add_gurobi_solver()
returning solution statuses that are slightly larger than one (e.g. 1+1.0e-10) when solving problems with proportion-type decisions (#118). Thanks to Martin Jung (@Martin-Jung) for bug report.
prioritizr 4.1.2.6
New features
- New
add_manual_bounded_constraints()
function to apply lower and upper bounds on planning units statuses in a solution (#118). Thanks to Martin Jung (@Martin-Jung) for suggestion.
Minor improvements and bug fixes
- Update
replacement_cost()
function to use parallel processing to speed up calculations (#119).
prioritizr 4.1.2.5
Minor improvements and bug fixes
- Update
add_gurobi_solver()
,add_lpsymphony_solver()
, andadd_rsymphony_solver()
functions so that they will not return solutions with values less than zero or greater than one when solving problems with proportion-type decisions. This issue is the result of inconsistent precision when performing floating point arithmetic (#117). Thanks to Martin Jung (@Martin-Jung) for bug report. - Update
add_locked_in_constraints()
andadd_locked_out_constraints()
functions to provide a more helpful error message thelocked_in
/locked_out
argument refers to a column with data that are not logical (i.e.TRUE
/FALSE
; #118). Thanks to Martin Jung (@Martin-Jung) for bug report.
prioritizr 4.1.2.4
Minor improvements and bug fixes
- Update
solve()
function to throw a more accurate and helpful error message when no solutions are found (e.g. due to problem infeasibility or solver time limits). - Standardize error messages so that none of them end in a full stop.
prioritizr 4.1.2.3
Major changes
- Rename
add_max_phylo_objective()
function toadd_max_phylo_div_objective()
.
New features
- New
add_max_phylo_end_objective()
function to maximize the phylogenetic endemism of species adequately represented in a prioritization (#113). Thanks to @FerreiraPSM for suggestion.
Documentation updates
- Add
add_max_phylo_end_objective()
,replacement_cost()
, andrarity_weighted_richness()
functions to the Prioritizr vignette. - Update examples for
add_max_phylo_div_objective()
function. - Prettify equations in the documentation for objective functions.
prioritizr 4.1.2.2
New features
- New
replacement_cost()
function to calculate irreproducibility scores for each planning unit in a solution using the replacement cost method (#26). - New
rarity_weighted_richness()
function to calculate irreproducibility scores for each planning unit in a solution using rarity weighted richness scores (#26).
prioritizr 4.1.2.1
Minor improvements and bug fixes
- Fix compiler warnings thrown during package installation.
- Skip tests on CRAN’s Windows system to reduce CRAN check times.
- Skip plotting data in examples during testing to reduce CRAN check times.
- Throw warning message if both the prioritizr and oppr packages are loaded at the same time.
prioritizr 4.1.0.1
New features
- New
add_min_shortfall_objective()
function to find solutions that minimize target shortfalls.
Minor improvements and bug fixes
- Fix
problem()
tests so that they work when no solvers are installed.
Documentation updates
- Add new
add_min_shortfall_objective()
function to main vignette.
prioritizr 4.1.0.0
Minor improvements and bug fixes
- The
feature_representation()
function now requires missing (NA
) values for planning unit statuses in a solution for planning units that have missing (NA
) cost data.
prioritizr 4.0.4.1
New features
- New
presolve_check()
function to investigate potential sources of numerical instability before trying to solve a problem. The manual entry for this function discusses common sources of numerical instability and approaches for fixing them.
Minor improvements and bug fixes
- The
solve()
function will now use thepresolve_check()
function to verify that problems do not have obvious sources of numerical instability before trying to solve them. If a problem is likely to have numerical instability issues then this function will now throw an error (unless thesolve(x, force = TRUE)
). - The
add_rsymphony_solver()
function now uses sparse matrix formats so that attempts can be made to solve large problems with SYMPHONY—though it is unlikely that SYMPHONY will be able to solve such problems in a feasible period of time. - Fix warnings thrown by the tibble package when calling
tibble::as.tibble()
instead oftibble::as_tibble()
.
Documentation updates
- Add example for calculating feature representation a solution in tabular format output by
solve()
(#110). Thanks to Martin Jung (@Martin-Jung) for suggestion. - Fix several typos in documentation.
- Thrown warnings are now immediately visible.
- Update references in the publication record vignette.
- Specify English (US) in the DESCRIPTION file.
prioritizr 4.0.2.15
Documentation updates
- Fix typos in documentation for
add_boundary_penalties()
andadd_connectivity_penalties()
function (#106).
prioritizr 4.0.2.14
Minor improvements and bug fixes
- Fix bug where use of
add_rsymphony_solver()
andadd_lpsymphony_solver()
sometimes returned infeasible solutions when subjected to a time limit (#105). Thanks to @magalicombes for bug report.
prioritizr 4.0.2.13
Minor improvements and bug fixes
- Fix assorted bugs in the render, setter, and getter parameter functions for
ConservationProblem-class
objects. These methods were implemented to be used in future interactive applications and are not currently used in the package. As a consequence, these bugs do not affect the correctness of any results.
prioritizr 4.0.2.11
Minor improvements and bug fixes
- Fix issue
solve()
printing annoying text abouttbl_df
(#75). Thanks to Javier Fajardo (@javierfajnolla) for bug report.
prioritizr 4.0.2.10
Documentation updates
- Tweak
add_max_features_objective()
example code.
prioritizr 4.0.2.8
Minor improvements and bug fixes
- Fix bug where the
add_neighbor_constraints()
andadd_contiguity_constraints()
functions used more memory than they actually needed (#102). This is because the argument validation code converted sparse matrix objects (i.e.dgCMatrix
) to base objects (i.e.matrix
) class temporarily. This bug only meant inefficient utilization of computer resources—it did not affect the correctness of any results.
prioritizr 4.0.2.7
New feature
- New
add_mandatory_allocation_constraints()
function. This function can be used to ensure that every planning unit is allocated to a management zone in the solution. It is useful when developing land-use plans where every single parcel of land must be assigned to a specific land-use zone.
Minor improvements and bug fixes
- Fix bug in the
$find(x)
method forCollection
prototypes that caused it to throw an error incorrectly. This method was not used in earlier versions of this package.
Documentation updates
- Add the
add_mandatory_allocation_constraints()
to the Management Zones and Prioritizr vignettes.
prioritizr 4.0.2.6
Minor improvements and bug fixes
- Fix bug the
feature_representation()
function that caused the “amount_held” column to have NA values instead of the correct values. This bug only affected problems with multiple zones.
prioritizr 4.0.2.5
Minor improvements and bug fixes
- Fix bug in argument validation code for the
category_layer()
function that it this function to incorrectly throw an error claiming that the input argument tox
was invalid when it was in fact valid. This bug is encountered when different layers the argument tox
have non-NA values in different cells.
prioritizr 4.0.2.4
Documentation updates
- Update instructions for activating Gurobi licenses on remote machines (#98).
prioritizr 4.0.2.3
Minor improvements and bug fixes
- The
add_contiguity_constraints()
function now uses sparse matrix formats internally for single-zone problems. This means that the constraints can be applied to single-zoned problem with many more planning units.
prioritizr 4.0.2.2
Minor improvements and bug fixes
- The
add_connectivity_penalties()
function now uses sparse matrix formats internally for single-zone problems. This means that connectivity penalties can be applied to single-zoned problem with many more planning units.
prioritizr 4.0.2.1
Minor improvements and bug fixes
- Update warning text when compiling problems that contain (i) objective functions that do not use targets and (ii) targets (#93).
Documentation updates
- Update documentation for the
add_max_utility_objective()
andadd_max_cover_objective()
functions to make it clearer that they do not use targets (#94).
prioritizr 4.0.1.6
Minor improvements and bug fixes
- Fix bug in
add_locked_in_constraints()
andadd_locked_out_constraints()
that incorrectly threw an error when usinglogical
locked data (i.e.TRUE
/FALSE
) because it incorrectly thought that valid inputs were invalid. - Fix bug in
add_locked_in_constraints()
,add_locked_out_constraints()
, andadd_manual_locked_constraints()
where solving the same problem object twice resulted in incorrect planning units being locked in or out of the solution (#92). Thanks to Javier Fajardo (@javierfajnolla) for bug report. - Added unit tests for objectives, constraints, decisions, targets, and penalties to ensure that solving problems twice does not result in different solutions.
prioritizr 4.0.1.5
Minor improvements and bug fixes
- Fix bug in
feature_abundances()
that caused the solve function to throw an error when attempting to solve problems with a single feature. - Fix bug in
add_cuts_portfolio()
that caused the portfolio to return solutions that were not within the specified optimality gap when using the Gurobi solver. - Add the ability to specify the search pool method and number of solutions to the
add_pool_portfolio()
function.
prioritizr 4.0.1.4
Minor improvements and bug fixes
- The
feature_representation()
function now allowsnumeric
solutions with attributes (e.g. when output by thesolve()
function) when calculating representation statistics for problems withnumeric
planning unit data (#91). Thanks to Javier Fajardo (@javierfajnolla) for bug report. - The
add_manual_targets()
function threw a warning when some features had targets equal to zero. This resulted in an excessive amount of warnings. Now, warnings are thrown for targets that are less then zero. - The
problem()
function sometimes incorrectly threw a warning that feature data had negative values when the data actually did not contain negative values. This has now been addressed.
prioritizr 4.0.1.3
Minor improvements and bug fixes
- The
problem
function now allows negative values in the cost and feature data (and throws a warning if such data are detected). - The
add_absolute_targets()
andadd_manual_targets()
functions now allow negative targets (but throw a warning if such targets are specified). - The
compile
function throws an error if a problem is compiled using the expanded formulation with negative feature data. - The
add_absolute_targets()
function now throws an warning—instead of an error—if the specified targets are greater than the feature abundances in planning units to accommodate negative values in feature data.
prioritizr 4.0.1.2
Documentation updates
- Fix
add_max_cover_objective()
in prioritizr vignette (#90).
prioritizr 4.0.1.1
Minor improvements and bug fixes
- The
add_loglinear_targets()
function now includes afeature_abundances()
parameter for specifying the total amount of each feature to use when calculating the targets (#89). Thanks to Liz Law (@lizlaw) for suggestion.
Documentation updates
- The
add_relative_targets()
documentation now makes it clear that locked out planning units are included in the calculations for setting targets (#89).
prioritizr 4.0.0.12
New feature
- New
feature_abundances()
function to calculate the total amount of each feature in the planning units (#86). Thanks to Javier Fajardo (@javierfajnolla) for suggestion.
prioritizr 4.0.0.11
Documentation updates
- Fix some equations in the documentation (#83).
prioritizr 4.0.0.10
Minor improvements and bug fixes
- Add version requirements for assertthat and tibble packages (#82).
prioritizr 4.0.0.8
Documentation updates
- Add instructions for setting up the Gurobi Academic license on a computer that it is not connected to a university computer network using a computer that is on an academic network (#81). For example, these instructions could be used to set up Gurobi on a cloud-based system using a laptop computer that is connected a university’s wireless network.
prioritizr 4.0.0.7
Minor improvements and bug fixes
- The
add_cuts_portfolio()
function uses the Gurobi solution pool to generate unique solutions within a specified gap of optimality when tasked with solving problems with Gurobi (version 8.0.0+) (#80).
prioritizr 4.0.0.6
New features
- New
add_pool_portfolio()
function to generate a portfolio of solutions using the Gurobi solution pool (#77).
prioritizr 4.0.0.5
Minor improvements and bug fixes
- The
boundary_matrix()
function now has the experimental functionality to use GEOS STR trees to speed up processing (#74). - Solutions obtained from Gurobi that contain binary-type decisions are explicitly rounded to the nearest integer. This is because Gurobi can output solutions to binary problems that contain values which not exactly zero or one (e.g. 0.9999997 using default settings) (#78).
prioritizr 4.0.0.4
New features
- New
feature_representation()
function to how well features are represented in solutions (#73).
prioritizr 4.0.0.1
Documentation updates
- Minor improvements to the documentation for the
problem()
function.
prioritizr 4.0.0.0
New features
- Added functionality to build and solve problems with multiple management zones (#14).
- New built-in datasets
sim_pu_zones_stack
,sim_pu_zones_polygons
, andsim_features_zones
for exploring conservation problems with multiple management zones. - New
zones
function andZones
class to organize data with multiple zones. - New
add_manual_targets()
function for creating targets that pertain to multiple management zones. - New
add_manual_locked_constraints()
function to manually specify which planning units should or shouldn’t be allocated to specific zones in solutions. - New
binary_stack()
,category_layer()
, andcategory_vector()
functions have been provided to help work with data for multiple management zones.
Major updates
- The
problem()
function now acceptsZone
objects as arguments forfeature
to create problems with multiple zones. - The
add_relative_targets()
andadd_absolute_targets()
functions for adding targets to problems can be used to specify targets for each feature in each zone. - The
solve()
function now returns alist
of solutions when generating a portfolio of solutions. - All functions for adding constraints and penalties now have parameters that specify how they should treat planning units allocate to different zones (using the
zones
parameter) and specify how they they should be applied (using thedata
parameter. All of these functions have default arguments that mean that problems with a single zone should have the same optimal solution as problems created in the earlier version of the package.
Minor improvements and bug fixes
- The
add_locked_in_constraints()
andadd_locked_out_constraints()
functions for specifying which planning units are locked in or out now acceptmatrix
arguments for specifying which zones are locked in or out. - The
add_feature_weights()
function can be used to weight different the representation of each feature in each zone.
Documentation updates
- New Management zones vignette on building and solving problems with multiple management zones.
- Added mention of zones functionality to package DESCRIPTION, summary (i.e.,
?prioritizr
), and README. - The Quick Start Guide and Prioritizr Basics vignettes have been consolidated into the prioritizr vignette.
- The
marxan_problem()
has been updated with more comprehensive documentation and to provide more helpful error messages. For clarity, it will now only work with tabular data in the standard Marxan format.
prioritizr 3.0.3.6
Documentation updates
- Fix typo in README.
- Update documentation for
add_boundary_penalties()
(#62). Thanks to Liz Law (@lizlaw) for report.
prioritizr 3.0.3.5
Minor improvements and bug fixes
- Fix bug where
add_locked_in_constraints()
andadd_locked_out_constraints()
throw an exception when used with semi-continuous-type decisions (#59). - Error message in
compile()
thrown when the same planning unit is locked in and locked out now prints the planning unit indices in a readable format.
prioritizr 3.0.3.4
Minor improvements and bug fixes
- Fix bug where
add_locked_in_constraints()
andadd_locked_out_constraints()
are ignored when using proportion-type decisions (#58).
prioritizr 3.0.3.3
Minor improvements and bug fixes
- Fix bug in
predefined_optimization_problem()
which incorrectly recognized some inputs as invalid when they were in fact valid. - Addressed NOTE in
R CMD check
related to proto package in Depends.
prioritizr 3.0.2.3
Minor improvements and bug fixes
- Unit tests that fail when using lpsymphony due to a bug in lpsymphony are now skipped (partially addressing #40).
prioritizr 3.0.2.2
Minor improvements and bug fixes
- Update
add_lpsymphony_solver()
to throw warnings to alert users to potentially incorrect solutions (partially addressing #40).
prioritizr 3.0.0.0
Major changes
- The
add_max_cover_objective()
function has been renamed to theadd_max_utility_objective()
, because the formulation does not follow the historical formulation of the maximum coverage reserve selection problem (#38). - The
add_max_cover_objective()
function now follows the historical maximum coverage objective. This fundamentally changesadd_max_cover_objective()
function and breaks compatibility with previous versions (#38).
Minor improvements and bug fixes
- Update
add_lpsymphony_solver()
examples and tests to skip on Linux operating systems. - Add tests to unit tests that were being skipped in new version of testthat package.
prioritizr 2.0.4.1
Minor improvements and bug fixes
- Fix bug with
add_lpsymphony_solver()
causing error when attempting to solve problems.
prioritizr 2.0.3.1
Minor improvements and bug fixes
- Fix bug when solving problems with
numeric
vector data that caused an error. - Fix bug in compiling problems with
numeric
vector input with rij data containing NA values. - Added unit tests for solving problems with various input formats.
- Updated package sizes reported in
cran-comments.md
file.
prioritizr 2.0.2.9
Documentation updates
- Added vignette to record publications that use prioritizr (#35).
prioritizr 2.0.2.8
Minor improvements and bug fixes
- Unit tests now compatible with development version of testthat (#34).
prioritizr 2.0.2.7
Minor improvements and bug fixes
- Fix bug in
apply_boundary_penalties()
andadd_connectivity_penalties()
causing the function to throw an error when the number of boundaries/edges is less than the number of planning units.
prioritizr 2.0.2.6
Minor improvements and bug fixes
- Makevars now compatible with Mac OSX Sierra (#33).
prioritizr 2.0.2.5
Minor improvements and bug fixes
- Fix bug in
boundary_matrix()
calculations (#30).
prioritizr 2.0.2.3
Documentation updates
- Add logo to README files and package website (#31).
prioritizr 2.0.2.2
Minor improvements and bug fixes
- Remove prioritizrdata from package Suggests.
- Add shiny and xtable to Suggests for rendering parameters.
- Added code for
ScalarParameter
andArrayParameter
prototypes to check that functions for generating widgets have their dependencies installed. - Fix bug when
numeric
planning unit data and portfolios that caused thesolve()
to throw an error. - Remove R-devel from AppVeyor testing because it fails for unknown reasons.
Documentation updates
- Broad-scale improvements to documentation.
- Fix documentation for
add_max_phylo_objective()
(#24). - Update Gurobi Installation vignette.
- URLs for lpsymphony on Bioconductor now use the package’s DOI.
- Add more comprehensive tests to portfolios.
prioritizr 2.0.1.0
Major changes
- Fixed bug where
Spatial*DataFrame
input tomarxan_problem()
would always use the first column in the attribute table for the cost data. This bug is serious so analysis that usedSpatial*DataFrame
inputs inmarxan_problem()
should be rerun.
Minor improvements and bug fixes
- Added functionality to use feature abundance/occurrence data stored as columns in the planning unit data when constructing
problem()
objects.
prioritizr 2.0.0.2
Minor improvements and bug fixes
- Skip
add_cuts_portfolio()
on Travis.
prioritizr 2.0.0.1
Minor improvements and bug fixes
- Skip
add_cuts_portfolio()
andadd_shuffle_portfolio()
tests on CRAN.
prioritizr 2.0.0.0
Major changes
- This version breaks compatibility with previous releases because solutions in
data.frame
andSpatial*DataFrame
objects are now stored in columns named “solution_*” (e.g. “solution_1”) to store multiple solutions. - Solutions now contain additional information in stored in the object’s attributes (#24). See
README.Rmd
for examples on accessing this information.
New features
- Added support for multiple solutions (#23).
Minor improvements and bug fixes
- Add logical
verbose
argument to all solvers. This replaces theverbosity
- The verbosity of information presented when solving problems using
add_lpsymphony_solver()
andadd_rsymphony_solver()
is reduced.
Documentation updates
- Tidy examples in
add_gurobi_solver.R
,add_lpsymphony_solver.R
,add_rsymphony_solver.R
, andsolvers.R
. argument inadd_lpsymphony_solver()
andadd_rsymphony_solver()
. - Assorted spelling mistakes have been fixed.
prioritizr 1.0.2.3
Minor improvements and bug fixes
-
ConservationProblem$print()
now only prints the first three species names and a count of the total number of features. This update means thatConservationProblem
objects with lots of features can now safely be printed without polluting the R console. - Fix bug where lpsymphony and Rsymphony solvers would return solutions containing NA values if they did not find a feasible solution within the argument to
time_limit
.
prioritizr 1.0.2.2
Minor improvements and bug fixes
- Update
marxan_problem()
to work with absolute file paths and theINPUTDIR
in Marxan input files (#19). Thanks to Dan Rosauer (@DanRosauer) for bug report.
prioritizr 1.0.1.6
Minor improvements and bug fixes
- Simplify vignette workflow. Vignettes can now be compiled by using
devtools::build_vignettes()
. Earlier versions needed the vignettes to be compiled using the Makefile to copy files around to avoid tangled R code causing failures during R CMD CHECK. Although no longer needed, the vignettes can still be compiled using the shell commandmake vigns
if desired. - Make the data.table package automatically installed when prioritizr is installed (#18).
- Move shiny, shinydashboard, and leaflet packages to Imports to avoid polluting users environment.
- Update preliminary versions of the shiny apps to call functions from other packages explicitly.
- Lint objective function definition files.
- Added rmarkdown package to Suggests following recommended practices.
Documentation updates
- The
README.Rmd
now lives in the top-level directory following standard practices. It should now be complied usingrmarkdown::render("README.Rmd")
or using the shell commandmake readme
. Note that the figures forREADME.md
can be found in the directoryman/figures
. - The example for
prshiny
will now only be run if executed during an interactive R session. Prior to this R CMD CHECK would hang. - UTF-8 math characters in vignettes have been replaced with with MathJax compatible latex expressions.
- R code in the vignettes has been linted to follow the package’s style guide.
- Fix example in vignette
quick_start.Rmd
showing how to runmarxan_problem()
using inputdata.frame()
objects. - Fix bug in vignette
quick_start.Rmd
counting number of selected planning units -
README.Rmd
tweaks to make it look prettier on website. - Remove “” latex sequences from objective function definition files because CRAN doesn’t support amsmath extensions in equations.
- Update examples in objective function files to only show relevant objectives
prioritizr 1.0.1.5
Minor improvements and bug fixes
- Enable 64 bit Armadillo flag. This increases the maximum size of problems that can be solved.
- Disable bound-checks in Armadillo matrix operations. This should reduce processing time when running the
compile()
function.
prioritizr 1.0.1.3
Minor improvements and bug fixes
- Fix bugs
add_absolute_targets()
and add_relative_targets` related to their standardGeneric being incorrectly defined - Reduce installation size using Dirk Eddelbuettel’s awesome advice: http://dirk.eddelbuettel.com/blog/2017/08/14#009_compact_shared_libraries
- Fix bug in
add_corridor_targets()
when argumentconnectivities
is alist
. The elements in the list are assumed to bedsCMatrix
objects (aka symmetric sparse matrices in a compressed format) and are coerced todgCMatrix
objects to reduce computational burden. There was a typo, however, and so the objects were coerced todgCmatrix
and notdgCMatrix
. This evidently was ok in earlier versions of the RcppArmadillo and/or Matrix packages but not in the most recent versions.
prioritizr 1.0.1.0
Minor improvements and bug fixes
- Fix issue where
parallel::detectCores()
returnsNA
on some systems preventing users from using the Gurobi solver–even when one thread is specified.
prioritizr 1.0.0.4
Minor improvements and bug fixes
- Compatibility with R 3.4.0.
- Replace
structure(NULL, ...)
withstructure(list(), ...)
. - Register compiled library files.
- Remove duplicate definition of
new_waiver()
. - Update tests to skip if prioritizrdata package not installed.
prioritizr 1.0.0.3
Documentation updates
- Fix missing links in documentation.
- Fix typos in roxygen2 parameters.
- Move
add_default_decisions()
andadd_default_solver()
to own help file.
prioritizr 1.0.0.2
Minor improvements and bug fixes
- Fix bug in
rij_matrix()
duplicating feature data (#13).
prioritizr 1.0.0.1
Minor improvements and bug fixes
- Fix velox package dependency (#8).
- Fix bug in
add_corridor_constraints()
that fails to actually add the constraints with argument toconnectivity
is a list. - Fix bug in
make install
command so that it now actually installs the package.