{
  "_id": "6a27d81a24555f66ed5467ba",
  "Package": "restoptr",
  "Type": "Package",
  "Title": "Ecological Restoration Planning",
  "Version": "1.1.1",
  "Description": "Flexible framework for ecological restoration planning. It\naims to identify priority areas for restoration efforts using\noptimization algorithms (based on Justeau-Allaire et al. 2021\n<doi:10.1111/1365-2664.13803>). Priority areas can be\nidentified by maximizing landscape indices, such as the\neffective mesh size (Jaeger 2000\n<doi:10.1023/A:1008129329289>), or the integral index of\nconnectivity (Pascual-Hortal & Saura 2006\n<doi:10.1007/s10980-006-0013-z>). Additionally, constraints can\nbe used to ensure that priority areas exhibit particular\ncharacteristics (e.g., ensure that particular places are not\nselected for restoration, ensure that priority areas form a\nsingle contiguous network). Furthermore, multiple near-optimal\nsolutions can be generated to explore multiple options in\nrestoration planning. The package leverages the 'Choco-solver'\nsoftware to perform optimization using constraint programming\n(CP) techniques (<https://choco-solver.org/>).",
  "Authors@R": "c(\nperson(\n'Dimitri', 'Justeau-Allaire',\nemail = 'dimitri.justeau@gmail.com', role = c('aut', 'cre'),\ncomment = c(ORCID = '0000-0003-4129-0764')\n),\nperson(\nc('Jeffrey', 'O'), 'Hanson',\nemail='jeffrey.hanson@uqconnect.edu.au', role = c('aut'),\ncomment = c(ORCID = '0000-0002-4716-6134')\n),\nperson(\n'Ghislain', 'Vieilledent', role = c('aut'),\ncomment = c(ORCID = '0000-0002-1685-4997')\n),\nperson(\n'Guillaume', 'Lannuzel', role = c('aut')\n),\nperson(\n'Philippe', 'Vismara', role = c('aut')\n),\nperson(\n'Xavier', 'Lorca', role = c('aut')\n),\nperson(\n'Philippe', 'Birnbaum', role = c('aut')\n)\n)",
  "License": "GPL (>= 3)",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "URL": "https://dimitri-justeau.github.io/restoptr/",
  "BugReports": "https://github.com/dimitri-justeau/restoptr/issues",
  "SystemRequirements": "Java (>= 11.0.12)",
  "VignetteBuilder": "knitr",
  "RoxygenNote": "7.3.2",
  "Collate": "'internal.R' 'add_available_areas_constraint.R'\n'add_compactness_constraint.R' 'add_components_constraint.R'\n'add_connected_constraint.R' 'add_locked_out_constraint.R'\n'add_min_iic_constraint.R' 'add_min_mesh_constraint.R'\n'add_nb_patches_constraint.R' 'add_no_new_patch_constraint.R'\n'add_restorable_constraint.R' 'add_settings.R'\n'is_java_available.R' 'package.R' 'preprocessing.R'\n'restopt_component.R' 'restopt_problem.R' 'restopt_solution.R'\n'set_max_iic_objective.R' 'set_max_mesh_objective.R'\n'set_max_nb_pus_objective.R' 'set_max_restore_objective.R'\n'set_min_nb_patches_objective.R' 'set_min_nb_pus_objective.R'\n'set_min_restore_objective.R' 'set_no_objective.R' 'solve.R'\n'terra_io.R' 'terra_utils.R' 'utils-pipe.R' 'zzz.R'",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-09 09:02:04 UTC",
    "User": "root"
  },
  "Author": "Dimitri Justeau-Allaire [aut, cre] (ORCID:\n<https://orcid.org/0000-0003-4129-0764>), Jeffrey O Hanson\n[aut] (ORCID: <https://orcid.org/0000-0002-4716-6134>),\nGhislain Vieilledent [aut] (ORCID:\n<https://orcid.org/0000-0002-1685-4997>), Guillaume Lannuzel\n[aut], Philippe Vismara [aut], Xavier Lorca [aut], Philippe\nBirnbaum [aut]",
  "Maintainer": "Dimitri Justeau-Allaire <dimitri.justeau@gmail.com>",
  "Config/pak/sysreqs": "default-jdk",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2025-07-02 10:43:36 UTC",
  "RemoteUrl": "https://github.com/cran/restoptr",
  "RemoteRef": "HEAD",
  "RemoteSha": "561be3c0bbf1c2ddbd1f5efee9b47fb45e76b6f7",
  "MD5sum": "291708afbe7992a87577604df64ca1ed",
  "_user": "cran",
  "_type": "src",
  "_file": "restoptr_1.1.1.tar.gz",
  "_fileid": "af54c2ade570578595afa05cd2a14ffa1ec851c365b1729a661467e087f743b0",
  "_filesize": 4705981,
  "_sha256": "af54c2ade570578595afa05cd2a14ffa1ec851c365b1729a661467e087f743b0",
  "_created": "2026-06-09T09:02:04.000Z",
  "_published": "2026-06-09T09:08:42.176Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 80286087515,
      "time": 349,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7503275812"
    },
    {
      "job": 80286087383,
      "time": 340,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7503272791"
    },
    {
      "job": 80285115391,
      "time": 324,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7503143344"
    },
    {
      "job": 80286087319,
      "time": 141,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7503196380"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/27195091236",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/restoptr",
  "_commit": {
    "id": "561be3c0bbf1c2ddbd1f5efee9b47fb45e76b6f7",
    "author": "Dimitri Justeau-Allaire <dimitri.justeau@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.1.1\n",
    "time": 1751453016
  },
  "_maintainer": {
    "name": "Dimitri Justeau-Allaire",
    "email": "dimitri.justeau@gmail.com",
    "login": "dimitri-justeau",
    "description": "",
    "uuid": 2606034,
    "orcid": "0000-0003-4129-0764"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "terra",
      "version": ">= 1.6-17",
      "role": "Depends"
    },
    {
      "package": "rJava",
      "version": ">= 1.0.6",
      "role": "Depends"
    },
    {
      "package": "units",
      "version": ">= 0.8-0",
      "role": "Depends"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "assertthat",
      "version": ">= 0.2.1",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "crayon",
      "version": ">= 1.4.1",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 2.0.1",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "version": ">= 1.2.0",
      "role": "Suggests"
    },
    {
      "package": "roxygen2",
      "version": ">= 6.1.1",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "version": ">= 1.10",
      "role": "Suggests"
    },
    {
      "package": "landscapemetrics",
      "version": ">= 1.5.4",
      "role": "Suggests"
    },
    {
      "package": "vegan",
      "version": ">= 2.5.7",
      "role": "Suggests"
    },
    {
      "package": "cluster",
      "version": ">= 2.1.2",
      "role": "Suggests"
    },
    {
      "package": "ggthemes",
      "role": "Suggests"
    },
    {
      "package": "paletteer",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-27",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "1.1.0",
      "date": "2025-07-01"
    },
    {
      "name": "1.1.1",
      "date": "2025-07-02"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "dimitri-justeau",
      "count": 9,
      "uuid": 2606034
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 692,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/restoptr"
  },
  "_devurl": "https://github.com/dimitri-justeau/restoptr",
  "_pkgdown": "https://dimitri-justeau.github.io/restoptr/",
  "_searchresults": 6,
  "_topics": [
    "openjdk"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/restoptr.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/dimitri-justeau/restoptr",
  "_realowner": "dimitri-justeau",
  "_cranurl": false,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2022-06-09"
    },
    {
      "version": "1.0.1",
      "date": "2022-06-17"
    },
    {
      "version": "1.0.2",
      "date": "2022-10-13"
    },
    {
      "version": "1.0.3",
      "date": "2022-11-12"
    },
    {
      "version": "1.0.4",
      "date": "2023-01-30"
    },
    {
      "version": "1.0.5",
      "date": "2023-03-16"
    },
    {
      "version": "1.0.6",
      "date": "2023-08-18"
    },
    {
      "version": "1.1.0",
      "date": "2025-07-01"
    },
    {
      "version": "1.1.1",
      "date": "2025-07-02"
    }
  ],
  "_exports": [
    "%>%",
    "add_available_areas_constraint",
    "add_compactness_constraint",
    "add_components_constraint",
    "add_connected_constraint",
    "add_locked_out_constraint",
    "add_min_iic_constraint",
    "add_min_mesh_constraint",
    "add_nb_patches_constraint",
    "add_no_new_patch_constraint",
    "add_restorable_constraint",
    "add_settings",
    "area_to_nb_cells",
    "cell_area",
    "cell_width",
    "get_aggregation_factor",
    "get_aggregation_method",
    "get_cell_area",
    "get_constraints",
    "get_existing_habitat",
    "get_habitat_threshold",
    "get_locked_out_areas",
    "get_metadata",
    "get_objective",
    "get_original_habitat",
    "get_restorable_habitat",
    "get_settings",
    "invert_vector",
    "is_java_available",
    "nb_cell_to_area",
    "preprocess_input",
    "restopt_problem",
    "set_max_iic_objective",
    "set_max_mesh_objective",
    "set_max_nb_pus_objective",
    "set_max_restore_objective",
    "set_min_nb_patches_objective",
    "set_min_nb_pus_objective",
    "set_min_restore_objective",
    "set_no_objective"
  ],
  "_help": [
    {
      "page": "add_available_areas_constraint",
      "title": "Add available areas constraint",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_available_areas_constraint"
      ]
    },
    {
      "page": "add_compactness_constraint",
      "title": "Add constraint to limit compactness",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_compactness_constraint"
      ]
    },
    {
      "page": "add_components_constraint",
      "title": "Add constraint to limit the number of connected components",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_components_constraint"
      ]
    },
    {
      "page": "add_connected_constraint",
      "title": "Add constraint to ensure that the selected planning units for restoration are connected.",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_connected_constraint"
      ]
    },
    {
      "page": "add_locked_out_constraint",
      "title": "Add locked out constraint",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_locked_out_constraint"
      ]
    },
    {
      "page": "add_min_iic_constraint",
      "title": "Add constraint to enforce a minimum integral index of connectivity (IIC) value",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_min_iic_constraint"
      ]
    },
    {
      "page": "add_min_mesh_constraint",
      "title": "Add constraint to enforce a minimum effective mesh size (MESH) value",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_min_mesh_constraint"
      ]
    },
    {
      "page": "add_nb_patches_constraint",
      "title": "Add constraint to limit the number of patches (habitat + restoration)",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_nb_patches_constraint"
      ]
    },
    {
      "page": "add_no_new_patch_constraint",
      "title": "Add constraint to forbid the creation of new patches.",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_no_new_patch_constraint"
      ]
    },
    {
      "page": "add_restorable_constraint",
      "title": "Add constraint to specify the available amount of surface for restoration",
      "concept": [
        "constraints"
      ],
      "topics": [
        "add_restorable_constraint"
      ]
    },
    {
      "page": "add_settings",
      "title": "Add settings",
      "topics": [
        "add_settings"
      ]
    },
    {
      "page": "area_to_nb_cells",
      "title": "Compute the number of cells corresponding to a given area.",
      "topics": [
        "area_to_nb_cells"
      ]
    },
    {
      "page": "cell_area",
      "title": "Compute the area of a cell",
      "topics": [
        "cell_area"
      ]
    },
    {
      "page": "cell_width",
      "title": "Compute the width of a cell",
      "topics": [
        "cell_width"
      ]
    },
    {
      "page": "get_aggregation_factor",
      "title": "Retrieve the aggregation factor of a restopt problem.",
      "topics": [
        "get_aggregation_factor"
      ]
    },
    {
      "page": "get_aggregation_method",
      "title": "Retrieve the aggregation method of a restopt problem.",
      "topics": [
        "get_aggregation_method"
      ]
    },
    {
      "page": "get_cell_area",
      "title": "Retrieve the aggregated cell area of a restopt problem.",
      "topics": [
        "get_cell_area"
      ]
    },
    {
      "page": "get_constraints",
      "title": "Retrieve the constraints of a restopt problem.",
      "topics": [
        "get_constraints"
      ]
    },
    {
      "page": "get_existing_habitat",
      "title": "Retrieve the existing (i.e. aggregated) habitat data.",
      "topics": [
        "get_existing_habitat"
      ]
    },
    {
      "page": "get_habitat_threshold",
      "title": "Retrieve the habitat threshold parameter of a restopt problem.",
      "topics": [
        "get_habitat_threshold"
      ]
    },
    {
      "page": "get_locked_out_areas",
      "title": "Retrieve the locked out areas of a restopt problem.",
      "topics": [
        "get_locked_out_areas"
      ]
    },
    {
      "page": "get_metadata",
      "title": "Restopt solution metadata",
      "topics": [
        "get_metadata"
      ]
    },
    {
      "page": "get_objective",
      "title": "Retrieve the optimization objective of a restopt problem.",
      "topics": [
        "get_objective"
      ]
    },
    {
      "page": "get_original_habitat",
      "title": "Retrieve the original (i.e. not aggregated) habitat data.",
      "topics": [
        "get_original_habitat"
      ]
    },
    {
      "page": "get_restorable_habitat",
      "title": "Retrieve the restorable habitat (aggregated) data.",
      "topics": [
        "get_restorable_habitat"
      ]
    },
    {
      "page": "get_settings",
      "title": "Retrieve the settings of a restopt problem.",
      "topics": [
        "get_settings"
      ]
    },
    {
      "page": "invert_vector",
      "title": "Invert a vector layer according to the extent of a restopt problem.",
      "topics": [
        "invert_vector"
      ]
    },
    {
      "page": "is_java_available",
      "title": "Is Java is available?",
      "topics": [
        "is_java_available"
      ]
    },
    {
      "page": "nb_cell_to_area",
      "title": "Compute the area corresponding to a given number of cells.",
      "topics": [
        "nb_cell_to_area"
      ]
    },
    {
      "page": "preprocess_input",
      "title": "Restopr input preprocessing function.",
      "topics": [
        "preprocess_input"
      ]
    },
    {
      "page": "print.RestoptProblem",
      "title": "Print a restoration optimization problem",
      "topics": [
        "print.RestoptProblem"
      ]
    },
    {
      "page": "restopt_problem",
      "title": "Restoration optimization problem",
      "topics": [
        "restopt_problem"
      ]
    },
    {
      "page": "restopt_solution",
      "title": "Restopt solution",
      "topics": [
        "restopt_solution"
      ]
    },
    {
      "page": "restoptr",
      "title": "'restoptr': Ecological Restoration Planning",
      "topics": [
        "restoptr-package",
        "restoptr"
      ]
    },
    {
      "page": "set_max_iic_objective",
      "title": "Set an objective to maximize the integral index of connectivity",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_max_iic_objective"
      ]
    },
    {
      "page": "set_max_mesh_objective",
      "title": "Set an objective to maximize effective mesh size",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_max_mesh_objective"
      ]
    },
    {
      "page": "set_max_nb_pus_objective",
      "title": "Set an objective to maximize the number of planning units",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_max_nb_pus_objective"
      ]
    },
    {
      "page": "set_max_restore_objective",
      "title": "Set an objective to maximize the amount restoration area.",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_max_restore_objective"
      ]
    },
    {
      "page": "set_min_nb_patches_objective",
      "title": "Set an objective to minimize the number of patches (habitat + restored areas)",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_min_nb_patches_objective"
      ]
    },
    {
      "page": "set_min_nb_pus_objective",
      "title": "Set an objective to minimize the number of planning units",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_min_nb_pus_objective"
      ]
    },
    {
      "page": "set_min_restore_objective",
      "title": "Set an objective to minimize the amount restoration area.",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_min_restore_objective"
      ]
    },
    {
      "page": "set_no_objective",
      "title": "Configure the solver to only satisfy the constraints, without optimization objective",
      "concept": [
        "objectives"
      ],
      "topics": [
        "set_no_objective"
      ]
    },
    {
      "page": "solve.RestoptProblem",
      "title": "Solve a restoration optimization problem",
      "topics": [
        "solve.RestoptProblem"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/restoptr/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/cran/restoptr/raw/HEAD/README.md",
  "_rundeps": [
    "assertthat",
    "crayon",
    "magrittr",
    "Rcpp",
    "rJava",
    "terra",
    "units"
  ],
  "_sysdeps": [
    {
      "shlib": "libjvm",
      "package": "openjdk-21-jre-headless",
      "headers": "openjdk-21-jre-headless",
      "source": "openjdk",
      "version": "21.0.11+10-1~24.04.2",
      "name": "openjdk",
      "homepage": "https://openjdk.java.net/",
      "description": "OpenJDK Java runtime, using Hotspot JIT (headless)"
    }
  ],
  "_vignettes": [
    {
      "source": "case_study.Rmd",
      "filename": "case_study.html",
      "title": "Case study: using historical data to set ecological restoration targets",
      "engine": "knitr::rmarkdown_notangle",
      "headings": [
        "References"
      ],
      "created": "2022-10-13 15:31:05",
      "modified": "2022-11-12 13:00:02",
      "commits": 2
    },
    {
      "source": "restoptr.Rmd",
      "filename": "restoptr.html",
      "title": "Getting started",
      "engine": "knitr::rmarkdown_notangle",
      "headings": [
        "Introduction",
        "Setup",
        "Data",
        "Problem formulation",
        "Generating a prioritization",
        "Relative importance",
        "Exploring alternatives",
        "Evaluating trade-offs",
        "Conclusion",
        "References"
      ],
      "created": "2022-06-09 06:40:06",
      "modified": "2023-01-30 09:50:02",
      "commits": 3
    }
  ],
  "_score": 3,
  "_indexed": false,
  "_nocasepkg": "restoptr",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://dimitri-justeau.r-universe.dev/restoptr",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.1.1",
      "date": "2026-06-09T09:04:39.000Z",
      "distro": "noble",
      "commit": "561be3c0bbf1c2ddbd1f5efee9b47fb45e76b6f7",
      "fileid": "196deac5aba82588a0462314d050cacce2dc033f17e852c2e43d049be99e33ea",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27195091236"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.1.1",
      "date": "2026-06-09T09:04:44.000Z",
      "distro": "noble",
      "commit": "561be3c0bbf1c2ddbd1f5efee9b47fb45e76b6f7",
      "fileid": "e0795122dbe1b465491494c7afdfba66defaa4eb35ed4f75dffbb3fddda0b2f0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27195091236"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.1.1",
      "date": "2026-06-09T09:04:51.000Z",
      "commit": "561be3c0bbf1c2ddbd1f5efee9b47fb45e76b6f7",
      "fileid": "4c3c2bf891a850a6e617c5b53edf7cebc3b78b760dce5ef02975a593b76c75b9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27195091236"
    }
  ]
}