Recent Releases of prioritizr

prioritizr - prioritizr 8.1.0

New features

  • New add_auto_targets() function for adding targets to a conservation
    planning problem based on a target setting method (#377). In particular, the
    following functions can be used in conjunction with this function to specify
    target setting methods: spec_absolute_targets(), spec_area_targets(),
    spec_interp_absolute_targets(), spec_interp_area_targets()
    spec_jung_targets(), spec_max_targets(), spec_min_targets(),
    spec_polak_targets(), spec_pop_size_targets(), spec_relative_targets(),
    spec_rl_ecosystem_targets(), spec_rl_species_targets(),
    spec_rodrigues_targets(), spec_rule_targets(),
    spec_ward_targets(), spec_watson_targets(), and spec_wilson_targets().
  • New add_group_targets() function for adding targets to a conservation
    planning problem based on feature groups. This function is provided as a
    convenient alternative to the add_auto_targets() function. With this
    function, features can be organized into groups and then have their targets
    calculated based on the method specified for their group.
  • New linear_interpolation() function for linearly interpolating values.
  • New as_km2() and as_per_km2() functions to help with area-based
    calcultions.
  • New calibrate_cohon_penalty() function for automatically identifying
    a suitable penalty value for the penalties functions (#175). It is designed
    to work with any objective function and any of the penalty functions
    available in the package.
  • New add_neighbor_penalties() function to reduce spatial fragmentation.
    This function is especially useful when working with large-scale problems or
    open source solvers.
  • Update add_cbc_solver(), add_gurobi_solver(), and add_highs_solver(),
    functions with a new control parameter that can be used to manually
    specify additional parameters for customizing the optimization process (#354).
  • Many of the internal functions used for parameter and data validation can now
    be used by other packages that depend on the prioritizr package (e.g.,
    assert(), as_Matrix(), all_binary(), all_positive()).
    The idea here is that people developing packages that build on the
    prioritizr package can use these functions to streamline their
    developmental efforts, while helping to avoid reverse dependency issues.
    To use these functions in your own package, you can make a local copy of the
    desired prioritizr functions in your package (i.e., a process known as code vendoring).
    In particular, you can use the usethis::use_standalone()
    function to automatically make a copy of prioritizr functions from the
    prioritizr online code repository. For example,
    usethis::use_standalone("prioritizr/prioritizr", file = "standalone-cli.R")
    can be used to make a copy of the standalone-cli.R file in the
    prioritizr source code. Note that all files in the prioritizr code
    repository that begin with "standalone-" can be copied with the
    usethis::use_standalone() function.

Major changes

  • The add_loglinear_targets() function has been deprecated. For similar
    functionality, see the new spec_interp_absolute_targets() function.
  • The presolve_check() function will now catch issues where the same planning
    unit (or planning units) has been both locked in and locked out (#386).
    Thanks to Jason Everett (@jaseeverett) for the suggestion.
  • The add_feature_weights() function can only be used once with a problem(),
    and attempting to add multiple weights will over-write previously specified
    weights (similar to how targets are handled).

Minor improvements and bug fixes

  • Update print() method for problem() objects to display a more useful
    number of digits for floating point numbers.
  • Update add_boundary_penalties() so that an alternative formulation can be
    used for the optimization problem (#369). This alternative formulation may be
    useful when conservation planning problems are taking a long time to solve.
    Note that the default behavior of the function is to use the same
    formulation as in previous versions of the package.
  • Update solve() function to provide information on the objective bound. This
    represents the best estimate of the optimal objective value during
    optimization. Given a solution x, this information can be accessed using
    attr(x, "objbound"). Note that this is only supported for the Gurobi solver.
  • Update ConservationProblem class so that overwriting problem components will
    yield a more concise warning message.
  • Update compile() function to throw more informative warnings when a
    problem() have an objective that does not support weights or targets.
  • Update category_layer() and category_vector() to work with continuous
    values (#381). In cases, where a given pixel has multiple non-zero values, it
    will be allocated to the category with the greatest value. Thanks to Martin
    Jung (@Martin-Jung) for the suggestion.
  • Fix bug in internal get_crs() function when using raster::raster() or
    raster::stack() objects.
  • Fix bug in add_relative_targets() that produced an incoherent error message.
  • Fix bug in add_locked_in_constraints() that produced poorly formatted error
    message.
  • Speed up internal validation of terra::rast() raster data. In particular,
    the minimum and maximum values of rasters are now computed with
    terra::minmax(x, compute = TRUE), instead of
    terra::global(x, "range", na.rm = TRUE).
  • Fix bug in intersecting_units() function that caused it to throw
    an incorrect error message when used with an sf::st_sf() object containing
    geometry collection data (#379). Thanks to Alan Jackson (@alankjackson) for
    bug report.
  • Update boundary_matrix() calculations to maintain compatibility with
    updates to the terra package.
  • Update internal functions (i.e., all_match_of, and is_match_of()) for
    validating arguments to be compatible with character vectors produced
    using the glue package (#360). Thanks to Dan Wismer (@DanWismer) for bug
    report.
  • Fix bug in add_manual_targets() that caused segmentation faults when
    invalid arguments to data were specified (#363).
  • Update add_locked_in_constraints(), add_locked_out_constraints(),
    add_manual_locked_constraints(), and add_manual_bounded_constraints()
    functions so that planning units can be locked based on their planning unit
    identifier values when specifying data.frame planning units (#359). These
    functions have also been updated to provide more informative error messages
    when invalid data are specified. Thanks to Martin Jung (@Martin-Jung) for
    bug report.
  • Fix eval_rank_importance() to better account for proportion-type and
    semi-continuous decision types (#367). Thanks to Martin Jung (@Martin-Jung)
    for bug report.
  • Fix bug in print() and summary() functions for problem() objects that
    caused the functions to incorrectly show the classes of the planning unit
    data that inherit from multiple classes. For example, this means that
    sf::st_sf() planning units will now be shown as having "sf" data, rather
    than "sftbl_dftbldata.frame" data. Similarly, tibble::tibble() planning
    units will now be shown as tbl_df instead of tbldfdata.frame.
  • Update internal all_finite() function to perform faster for character
    vector arguments.
  • Update dependencies so that the slam package is now an optional dependency.
    This is because the slam package is only required when using
    add_lpsymphony_solver() and add_gurobi_solver().
  • Update marxan_problem() to provide better validation of input data
    and more informative error messages. This update also involves replacing the
    data.table package with the vroom package.
  • Fix bug in eval_rank_importance() function that caused a superfluous
    warning to be thrown when locked constraints (i.e,
    add_locked_in_constraints(), add_locked_out_constraints(), or
    add_manual_locked_constraints()).
  • Update rij_matrix() function to reduce run time.
  • Update solve() function and the importance functions to ensure consistency
    their in output formats. Note that these changes do not alter their outputs.
  • Update eval_ferrier_importance() function to better provide error messages
    with improved formatting.
  • Update internal any_nonNA(), any_nonzero(), and all_binary() functions
    for processing raster data.
  • Update internal any_nonzero() and any_nonNA() functions to provide better
    error messages.
  • Thanks to Sandra Neubert (@sandra-neubert) for code review.

Documentation

  • Update ?targets to provide a comprehensive overview of the target functions.
  • Update boundary_matrix() function documentation with better example.
  • Fix incorrect text in Management Zones vignette (#382). Thanks to
    Anthony Richardson (@ric325) for bug report.
  • Update eval_feature_representation_summary() documentation to improve
    description of the output data frame (#355). Thanks to Sam Bradshaw
    (@sam-bradshaw-wcmc) for bug report.
  • Update add_locked_in_constraints(), add_locked_out_constraints(),
    add_manual_locked_constraints(), and add_manual_bounded_constraints()
    documentation to provide more detail on specifying which planning units
    should be constrained (#359). Thanks to Martin Jung (@Martin-Jung) for bug
    report.
  • Update README to thank Theodoros Ploumis (@theodorosploumis) for the logo.
  • Update documentation for eval_rank_importance().
  • Standardize terminology for referring to "cells" in raster data. Previously,
    some parts of the documentation referred to them as pixels.
  • Fix mistake in add_gurobi_solver() function documentation for the
    numeric_focus parameter.
  • Fix typo in equation for add_max_utility_objective() (#373). Thanks to
    Anthony Richardson (@ric325) for bug report.
  • Update Calibrating trade-offs vignette with new calibrate_cohon_penalty()
    function.
  • Update package overview vignette with new add_neighbor_penalties() function.
  • Update solver benchmarks vignette to remove unnecessary package dependencies.
  • Update problem formulation for add_connectivity_penalties(),
    add_asym_connectivity_penalties(), and add_boundary_penalties() to
    slightly improve solve times. In particular, instead of using binary
    variables to model the product of the planning unit decision variables,
    continuous variables are now used. The documentation for these functions
    has also been updated to mention this information. Thanks to Bistra Dilkina
    for the suggestion.
  • Update add_neighbor_constraints() function so that setting clamp = TRUE
    is more likely to resolve infeasibility issues. In particular, setting
    clamp = TRUE will (i) limit the minimum number of neighbors for a given
    planning unit based on the locked out constraints of neighboring planning
    units and (ii) not apply this constraint to any locked in or locked out
    planning units.
  • Update add_min_shortfall_objective() and
    add_min_largest_shortfall_objective() functions to employ a slightly
    different problem formulation that -- despite being functionally identical to
    the previous formulation -- has better performance for large-scale
    problems (#357). Thanks to Aboozar Mohammadi (@AboozarM) for the suggestion.
  • Update write_problem() function to support all the file formats supported by
    the Gurobi solver (per gurobi::gurobi_write()). Of particular note,
    this means that problems can now be saved in compressed file file format
    (e.g., .mps.gz).
  • Update add_cbc_solver() function so that the presolve parameter
    can be used to specify the intensity of the presolve process. Similar to
    add_gurobi_solver(), the presolve parameter is now specified as an integer
    value. The default value is now 2, which specifies the most intensive
    level of presolve. For backwards compatibility, a value of TRUE
    is treated as a value of 1.
  • Update eval_target_coverage_amount() so that the relative shortfall
    for each target is now calculated by dividing the absolute shortfall
    by the absolute target. This change is to ensure consistency with the minimum
    shortfall objective.
  • Fix bug in internal repr.list() function that displayed duplicate class
    names.
  • Fix bug in adjacency_matrix(), compile(), and zone_names() functions
    that caused an unhelpful error message when calling the function without
    any arguments.
  • Update unit tests for add_boundary_penalties(),
    add_connectivity_penalties(), and add_asym_connectivity_penalties() to
    reduce run time.
  • Fix bug in unit tests for add_asym_connectivity_penalties(), and
    eval_rank_importance() functions. Note that these bugs do not affect
    the correctness of the functions as implemented in the package.
  • Classes are now exported to make it easier for reverse dependencies to add
    their own objectives, constraints, penalties, targets, and solvers.
  • Update publication record.
  • Update package citation.

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson 3 months ago

prioritizr - prioritizr 8.0.4

Notice

  • New default portfolio method for problem() objects. This
    new default portfolio -- which can be manually specified using
    add_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., using add_highs_solver(gap = 0.1)), and
    this might produce a solution that is at least 7% from optimality. The
    resulting output from solve() will now provide this information about
    the solution (i.e., the 7% from optimality), and can be accessed
    using the gap attribute (e.g., attr(x, "gap"), where x is the output
    from solve()). Note that this information is currently only available when
    using the Gurobi or HiGHS solvers.
  • Fix bug in add_linear_constraints() and add_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 the start 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.
  • 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() and
    add_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.
  • 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() and summary() for problem() 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(), and zones() and other functions so
    that they will throw an error if a categorical terra::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.
  • Update problem() to be more memory efficient when using a sparse matrix
    (dgCMatrix) argument for the rij_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 of Caused by NULL.
  • Fix add_locked_in_constraints() and add_locked_in_constraints() error
    messages when supplying locked_in and locked_out objects
    that do not spatially intersect with the planning units.
  • Update error message for checking if objects spatially overlap to improve
    clarity.

Documentation updates

  • Update publication record.
  • Update package-level manual entry.
  • Update URLs.
  • Fix aliasing for package manual entry (#301).

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 1 year ago

prioritizr - prioritizr 8.0.3

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., using add_boundary_penalties() with a high penalty
    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 with
    add_boundary_penalties() and increasing penalty values)
    does not alter the spatial configuration of solutions. Although use of
    scales::rescale() did not produce such behavior prior to version 8.0.0,
    changes to the output format for boundary_matrix() in subsequent versions
    now mean that scales::rescale() can cause these issues. We now recommend
    using the new rescale_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 using boundary_matrix()) and connectivity
    (e.g., generated using connectivity_matrix()) data so avoid
    numerical issues during optimization (#297).
  • Update add_neighbors_constraints() so that it has an additional
    clamp 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, and clamp = FALSE, then the planning unit could not
    ever be selected in the solution. However, if clamp = TRUE, then
    the planning unit could potentially be selected in the solution if both of
    its 2 neighbors were also selected.

Minor improvements and bug fixes

  • Update examples and vignettes to use the rescale_matrix() function
    instead of the scales::rescale() function for rescaling boundary
    length and connectivity data (#297).
  • Update the print() and summary() methods for problem() objects
    so that they will now better describe situations when the planning cost
    data all contain a constant value (e.g., all costs equal to 1).
  • Fix issue with problem() that prevents features being supplied as
    a data.frame that contains feature names stored as a factor (#295).
  • Fix broken URLs in documentation.
  • 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).
  • 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() and
    add_manual_bounded_constraints() so that the indices in the
    specified in the argument data$pu should consistently refer to the total
    units. In other words, the indices in data$pu should refer to the row
    numbers (for planning units in sf or data.frame format) or cell numbers
    (for planning units in Raster or SpatRaster format) of the planning units
    that should be locked.
  • Fix warnings thrown due to package version comparisons.
  • Update problem() so that it will throw a meaningful error message if the
    user accidentally specifies the geometry column for sf planning unit data
    as a feature.
  • Export solve.ConservationProblem() so that it can be called directly (#283).
  • Fix compatibility with highs package (version 0.1-10) (#281).
  • Update problem() so that an error will be thrown if argument to features
    contains only missing (NA) values (e.g., an sf object is supplied that
    has NA values in all rows for a feature's column).
  • Update publication record.

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 2 years ago

prioritizr - prioritizr 8.0.2

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() and sp::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.

Breaking 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 any problem() objects
    that were produced using earlier versions of the package are no longer
    compatible.
  • 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 return sf::st_sf(),
    terra::rast(), ape::read.tree() and zones() objects.
    Note that these functions are provided because data(...) cannot be
    used with terra::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 R 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, See parallel::splitIndices().
  • The new_optimization_problem() and predefined_optimization_problem()
    functions have been superseded by the new optimization_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().

New features

  • The print() function for problem(), optimization_problem(), and
    zones() objects has been updated to provide more information.
  • New summary() function to provide extensive detail on problem() objects.
  • 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
    an add_max_phylo_div_objective() or add_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.
  • Update publication record.
  • The solve() function will now output tibble::tibble() objects
    (instead of data.frame() objects), when the planning unit data are
    tibble::tibble() objects.
  • The boundary_matrix() function now uses terra::sharedPaths() for
    calculations, providing greater performance (#257).
  • 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() and eval_replacement_importance() functions.
  • Assorted tweaks to improve writing in the vignettes and documentation.
    Many thanks to Marc Edwards (@edwardsmarc)!

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 2 years ago

prioritizr - prioritizr 7.2.2

  • Fix compiler warnings.
  • Update tests to skip long-running tests on CRAN.
  • Update examples to minimize overall package check timings for CRAN.
  • 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 the rij_matrix(x) has a zero amount for the last feature in the last planning unit (#247).
  • Update simulate_data(), simulate_cost() and simulate_species() functions to improve performance using the fields package.
  • Update boundary_matrix() to use STR query trees by default.
  • 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).
  • Fix broken URLs in package documentation.
  • Update publication record.
  • 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.
  • Update documentation for add_min_largest_shortfall_objective() so that examples complete in a shorter period of time.
  • Fix bug in processing planning unit data when a problem is constructed using arguments to (i) x that are numeric or matrix format, (ii) x that contain missing (NA) values, and (iii) rij_matrix that are in dgCMatrix format. This bug only occurred when all three of these specific conditions were met. When it occurred, the bug caused planning units with NA 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 (per presolve_check()) would throw an error complaining about very high cost values (#236).
  • Fix add_locked_in_constraints() and add_locked_out_constraints() to ensure that a meaningful error message is provided when no planing units are locked (#234).
  • 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 add_connectivity_penalties() function and documentation so that it is designed specifically for symmetric connectivity data.
  • 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 with add_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 (#323).
  • 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.
  • Improve documentation for the zones parameter of the add_connectivity_penalties() function.
  • 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.
  • 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).
  • Update reference index for package website.
  • Fix minor typos in vignettes.
  • 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.
  • 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.
  • 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 and sim_pu_zones_sf data given class updates to the sf package (compatible with version 1.0.3+).
  • Update example for write_problem() function.

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 3 years ago

prioritizr - prioritizr 7.1.1

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 4 years ago

prioritizr - prioritizr 7.0.1

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson over 4 years ago

prioritizr - prioritizr 3.0.4

This release contains version 3.0.4 of the prioritizr R package. It is significant because this version is the most the most up-to-date and best-working version of the package before it was over-hauled to manage problems with multiple management zones.

Biosphere - Conservation and Restoration - R
Published by jeffreyhanson almost 8 years ago