{"id":646,"name":"prioritizr","description":"Uses mixed integer linear programming techniques to provide a flexible interface for building and solving conservation planning problems.","url":"https://github.com/prioritizr/prioritizr","last_synced_at":"2026-04-11T19:02:54.333Z","repository":{"id":16977383,"uuid":"80953648","full_name":"prioritizr/prioritizr","owner":"prioritizr","description":"Systematic conservation prioritization in R","archived":false,"fork":false,"pushed_at":"2026-03-12T02:33:45.000Z","size":190648,"stargazers_count":136,"open_issues_count":23,"forks_count":27,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-03-12T08:17:16.808Z","etag":null,"topics":["biodiversity","conservation","conservation-planner","optimization","prioritization","r","rstats","solver","spatial"],"latest_commit_sha":null,"homepage":"https://prioritizr.net","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prioritizr.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":"CONTRIBUTING.Rmd","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-02-04T22:45:17.000Z","updated_at":"2026-03-12T02:33:46.000Z","dependencies_parsed_at":"2025-11-14T19:03:05.143Z","dependency_job_id":null,"html_url":"https://github.com/prioritizr/prioritizr","commit_stats":{"total_commits":771,"total_committers":10,"mean_commits":77.1,"dds":"0.13488975356679633","last_synced_commit":"84e25c3e862871bf5afeec4e659cf0f32e26e13a"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/prioritizr/prioritizr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30781362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-20T22:51:33.771Z","status":"online","status_checked_at":"2026-03-21T02:00:07.962Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"prioritizr","name":"prioritizr","uuid":"25472841","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/25472841?v=4","repositories_count":23,"last_synced_at":"2023-11-21T03:20:14.104Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/prioritizr","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T07:00:40.046Z","updated_at":"2023-11-21T03:20:16.038Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr/repositories"},"packages":[{"id":11677098,"name":"github.com/prioritizr/prioritizr","ecosystem":"go","description":null,"homepage":null,"licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/prioritizr/prioritizr","keywords_array":[],"namespace":null,"versions_count":8,"first_release_published_at":"2018-03-25T07:12:36.000Z","latest_release_published_at":"2025-11-12T18:02:40.022Z","latest_release_number":"v8.1.0+incompatible","last_synced_at":"2026-03-29T13:03:05.151Z","created_at":"2025-05-23T10:08:30.416Z","updated_at":"2026-03-29T13:03:05.152Z","registry_url":"https://pkg.go.dev/github.com/prioritizr/prioritizr","install_command":"go get github.com/prioritizr/prioritizr","documentation_url":"https://pkg.go.dev/github.com/prioritizr/prioritizr#section-documentation","metadata":{},"repo_metadata":{"id":16977383,"uuid":"80953648","full_name":"prioritizr/prioritizr","owner":"prioritizr","description":"Systematic conservation prioritization in R","archived":false,"fork":false,"pushed_at":"2026-01-30T04:41:31.000Z","size":187751,"stargazers_count":135,"open_issues_count":20,"forks_count":26,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-01-30T20:50:21.920Z","etag":null,"topics":["biodiversity","conservation","conservation-planner","optimization","prioritization","r","rstats","solver","spatial"],"latest_commit_sha":null,"homepage":"https://prioritizr.net","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prioritizr.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":"CONTRIBUTING.Rmd","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-02-04T22:45:17.000Z","updated_at":"2026-01-21T22:25:38.000Z","dependencies_parsed_at":"2025-11-14T19:03:05.143Z","dependency_job_id":null,"html_url":"https://github.com/prioritizr/prioritizr","commit_stats":{"total_commits":771,"total_committers":10,"mean_commits":77.1,"dds":"0.13488975356679633","last_synced_commit":"84e25c3e862871bf5afeec4e659cf0f32e26e13a"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/prioritizr/prioritizr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29009663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T08:40:12.472Z","status":"ssl_error","status_checked_at":"2026-02-02T08:40:10.926Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"prioritizr","name":"prioritizr","uuid":"25472841","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/25472841?v=4","repositories_count":23,"last_synced_at":"2023-11-21T03:20:14.104Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/prioritizr","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T07:00:40.046Z","updated_at":"2023-11-21T03:20:16.038Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-03-12T13:02:41.953Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.825186304275193,"dependent_packages_count":5.4589533387888975,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.642069821532045},"purl":"pkg:golang/github.com/prioritizr/prioritizr","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/prioritizr/prioritizr","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/prioritizr/prioritizr","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/prioritizr/prioritizr/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-03-12T05:00:14.112Z","issues_count":295,"pull_requests_count":101,"avg_time_to_close_issue":7619454.837837838,"avg_time_to_close_pull_request":753199.747368421,"issues_closed_count":259,"pull_requests_closed_count":95,"pull_request_authors_count":6,"issue_authors_count":82,"avg_comments_per_issue":5.071186440677966,"avg_comments_per_pull_request":5.425742574257426,"merged_pull_requests_count":92,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":16,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":433657.0,"past_year_avg_time_to_close_pull_request":246828.33333333334,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":12,"past_year_avg_comments_per_issue":4.4375,"past_year_avg_comments_per_pull_request":2.357142857142857,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/issues","maintainers":[{"login":"ricschuster","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ricschuster"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fprioritizr%2Fprioritizr/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fprioritizr%2Fprioritizr/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fprioritizr%2Fprioritizr/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fprioritizr%2Fprioritizr/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fprioritizr%2Fprioritizr/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2083175,"maintainers_count":0,"namespaces_count":778194,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53384},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-03-31T05:29:29.987Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":428989,"name":"prioritizr","ecosystem":"cran","description":"Systematic Conservation Prioritization in R","homepage":"https://prioritizr.net","licenses":"GPL-3","normalized_licenses":["GPL-3.0"],"repository_url":"https://github.com/prioritizr/prioritizr","keywords_array":[],"namespace":null,"versions_count":24,"first_release_published_at":"2016-12-01T21:32:00.000Z","latest_release_published_at":"2025-11-10T00:00:00.000Z","latest_release_number":"8.1.0","last_synced_at":"2026-03-11T16:46:32.717Z","created_at":"2022-04-06T20:22:01.607Z","updated_at":"2026-03-11T16:46:32.717Z","registry_url":"https://cran.r-project.org/package=prioritizr","install_command":null,"documentation_url":"http://cran.r-project.org/web/packages/prioritizr/prioritizr.pdf","metadata":{},"repo_metadata":{"id":16977383,"uuid":"80953648","full_name":"prioritizr/prioritizr","owner":"prioritizr","description":"Systematic conservation prioritization in R","archived":false,"fork":false,"pushed_at":"2024-10-28T19:51:57.000Z","size":168119,"stargazers_count":123,"open_issues_count":22,"forks_count":25,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-10-29T20:35:51.588Z","etag":null,"topics":["biodiversity","conservation","conservation-planner","optimization","prioritization","r","rstats","solver","spatial"],"latest_commit_sha":null,"homepage":"https://prioritizr.net","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prioritizr.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"contributing":"CONTRIBUTING.Rmd","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-02-04T22:45:17.000Z","updated_at":"2024-10-23T23:53:34.000Z","dependencies_parsed_at":"2023-09-21T19:09:58.848Z","dependency_job_id":"2784cabc-9c64-41bd-81ae-c14bdaf07c10","html_url":"https://github.com/prioritizr/prioritizr","commit_stats":{"total_commits":759,"total_committers":10,"mean_commits":75.9,"dds":"0.13702239789196313","last_synced_commit":"f8c8c7706aa42748791fb3ceb8026bd9984b42c6"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131011,"owners_count":16936304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"prioritizr","name":"prioritizr","uuid":"25472841","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/25472841?v=4","repositories_count":23,"last_synced_at":"2023-11-21T03:20:14.104Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/prioritizr","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-08T07:00:40.046Z","updated_at":"2023-11-21T03:20:16.038Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prioritizr/repositories"},"tags":[{"name":"v8.0.3","sha":"e9212a5fdfc90895a3638a12960e9ef8fba58cab","kind":"commit","published_at":"2023-08-08T01:42:42.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v8.0.3","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v8.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v8.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v8.0.3/manifests"},{"name":"v8.0.2","sha":"0b967b1856518dd0a6c2e92858595a3bc7fa9a23","kind":"commit","published_at":"2023-05-01T15:05:32.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v8.0.2","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v8.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v8.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v8.0.2/manifests"},{"name":"v7.2.2","sha":"648a26586327feecfe0d898d4d6457eb564baf85","kind":"commit","published_at":"2022-09-16T13:49:10.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v7.2.2","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v7.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.2.2/manifests"},{"name":"v7.1.1","sha":"09197869a6433a984ebae3baecbf5d88faf3a437","kind":"commit","published_at":"2021-10-26T21:06:43.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v7.1.1","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v7.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.1.1/manifests"},{"name":"v7.0.1","sha":"df3a302fa305b2972ed089b0759c3218fe23e34e","kind":"commit","published_at":"2021-03-31T00:45:27.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v7.0.1","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v7.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v7.0.1/manifests"},{"name":"v3.0.4","sha":"6e94f98819a2531e9f0be636e2cb4fca41880215","kind":"commit","published_at":"2018-03-25T07:12:36.000Z","download_url":"https://codeload.github.com/prioritizr/prioritizr/tar.gz/v3.0.4","html_url":"https://github.com/prioritizr/prioritizr/releases/tag/v3.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v3.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/tags/v3.0.4/manifests"}]},"repo_metadata_updated_at":"2024-10-29T23:13:46.850Z","dependent_packages_count":1,"downloads":1477,"downloads_period":"last-month","dependent_repos_count":4,"rankings":{"downloads":13.194413054287393,"dependent_repos_count":14.800415894398988,"dependent_packages_count":17.665943208536806,"stargazers_count":3.576596129499005,"forks_count":3.3414722372942665,"docker_downloads_count":6.447820582383794,"average":9.837776851066709},"purl":"pkg:cran/prioritizr","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/cran/prioritizr","docker_dependents_count":1,"docker_downloads_count":9,"usage_url":"https://repos.ecosyste.ms/usage/cran/prioritizr","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/cran/prioritizr/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T19:32:23.526Z","issues_count":275,"pull_requests_count":78,"avg_time_to_close_issue":6968551.723320158,"avg_time_to_close_pull_request":606673.4675324676,"issues_closed_count":253,"pull_requests_closed_count":77,"pull_request_authors_count":6,"issue_authors_count":73,"avg_comments_per_issue":5.218181818181818,"avg_comments_per_pull_request":5.871794871794871,"merged_pull_requests_count":74,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":34,"past_year_pull_requests_count":13,"past_year_avg_time_to_close_issue":1856348.7916666667,"past_year_avg_time_to_close_pull_request":1305728.1666666667,"past_year_issues_closed_count":24,"past_year_pull_requests_closed_count":12,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":16,"past_year_avg_comments_per_issue":4.264705882352941,"past_year_avg_comments_per_pull_request":2.3846153846153846,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":12,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/issues","maintainers":[{"login":"ricschuster","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ricschuster"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/prioritizr/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/prioritizr/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/prioritizr/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/prioritizr/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/prioritizr/codemeta","maintainers":[{"uuid":"richard.schuster@glel.carleton.ca","login":null,"name":"Richard Schuster","email":"richard.schuster@glel.carleton.ca","url":null,"packages_count":2,"html_url":null,"role":null,"created_at":"2022-11-14T17:17:12.258Z","updated_at":"2022-11-14T17:17:12.258Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/maintainers/richard.schuster@glel.carleton.ca/packages"}],"registry":{"name":"cran.r-project.org","url":"https://cran.r-project.org","ecosystem":"cran","default":true,"packages_count":27841,"maintainers_count":15437,"namespaces_count":0,"keywords_count":0,"github":"r-project-org","metadata":{"icon_url":"https://cran.r-project.org/CRANlogo.png","funded_packages_count":542},"icon_url":"https://cran.r-project.org/CRANlogo.png","created_at":"2022-04-06T16:32:25.637Z","updated_at":"2026-03-18T07:59:35.373Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/namespaces"}}],"commits":{"id":1254315,"full_name":"prioritizr/prioritizr","default_branch":"main","total_commits":788,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":78.8,"dds":0.13197969543147203,"past_year_total_commits":13,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":13.0,"past_year_dds":0.0,"last_synced_at":"2026-03-29T13:07:41.567Z","last_synced_commit":"fc16653158325375c439201551331850b8db48d6","created_at":"2023-03-27T11:32:04.248Z","updated_at":"2026-03-29T13:07:05.543Z","committers":[{"name":"jeffreyhanson","email":"jeffrey.hanson@uqconnect.edu.au","login":"jeffreyhanson","count":684},{"name":"ricschuster","email":"mail@richard-schuster.com","login":"ricschuster","count":61},{"name":"Matt Strimas-Mackey","email":"mstrimas@gmail.com","login":"mstrimas","count":19},{"name":"NinaMorrell","email":"morrell.nina@gmail.com","login":"ninamorrell","count":13},{"name":"nina.morrell@alumni.ubc.ca","email":"nmorrell.stu@ead.ubc.ca","login":null,"count":4},{"name":"NinaMorrell","email":"nina.morrell@ubc.ca","login":null,"count":3},{"name":"bird-team-bot","email":"jeff.o.hanson+bot@gmail.com","login":"bird-team-bot","count":1},{"name":"Sandra Neubert","email":"77614048+sandra-neubert","login":"sandra-neubert","count":1},{"name":"Paula Andrea","email":"orchid00","login":"orchid00","count":1},{"name":"Jason Everett","email":"jaseeverett@gmail.com","login":"jaseeverett","count":1}],"past_year_committers":[{"name":"Jeff Hanson","email":"jeffrey.hanson@uqconnect.edu.au","login":"jeffreyhanson","count":13}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-31T00:00:13.296Z","repositories_count":6205593,"commits_count":927560029,"contributors_count":35800282,"owners_count":1143043,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"prioritizr/prioritizr","html_url":"https://github.com/prioritizr/prioritizr","last_synced_at":"2026-03-12T05:00:14.112Z","status":null,"issues_count":295,"pull_requests_count":101,"avg_time_to_close_issue":7619454.837837838,"avg_time_to_close_pull_request":753199.747368421,"issues_closed_count":259,"pull_requests_closed_count":95,"pull_request_authors_count":6,"issue_authors_count":82,"avg_comments_per_issue":5.071186440677966,"avg_comments_per_pull_request":5.425742574257426,"merged_pull_requests_count":92,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":16,"past_year_pull_requests_count":14,"past_year_avg_time_to_close_issue":433657.0,"past_year_avg_time_to_close_pull_request":246828.33333333334,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":9,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":12,"past_year_avg_comments_per_issue":4.4375,"past_year_avg_comments_per_pull_request":2.357142857142857,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":9,"created_at":"2023-05-09T10:39:34.592Z","updated_at":"2026-03-12T05:00:14.127Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/prioritizr%2Fprioritizr/issues","issue_labels_count":{"question":84,"bug":59,"feature propsal":39,"documentation":38,"enhancement":15,"v5":8,"wontfix":1,"help wanted":1},"pull_request_labels_count":{"enhancement":1,"v5":1},"issue_author_associations_count":{"NONE":151,"CONTRIBUTOR":121,"MEMBER":23},"pull_request_author_associations_count":{"CONTRIBUTOR":99,"NONE":2},"issue_authors":{"jeffreyhanson":110,"ricschuster":23,"jflowernet":15,"momeni133":10,"lizlaw":8,"Martin-Jung":7,"MillerJeju":6,"ninzyfb":6,"mstrimas":6,"jaseeverett":5,"Carina-Firkowski":4,"javierfajnolla":3,"IsaakBM":3,"eleanorstewart17":3,"ninsbl":3,"XavierCLL":3,"OlgaLu":3,"DanRosauer":3,"edwardsmarc":2,"wk-ai":2,"SuJie26":2,"robert-ed-elliott":2,"jivelasquezt":2,"sam-bradshaw-wcmc":2,"faengl":2,"Tegan151":2,"nwallia":2,"ric325":2,"tim-lenters":1,"DanWismer":1,"andresrj":1,"negira":1,"jcristia":1,"JWChase":1,"mattwatts":1,"schloerke":1,"hjftan":1,"cliu229":1,"KCarrollEcology":1,"ZMgogo":1,"lmathon":1,"colobrien":1,"rschueller":1,"emmajhudgins":1,"kkemink":1,"tungxphung":1,"pierrejonathan":1,"Marie73":1,"EJardineDefra":1,"davidcanarte":1,"domisch":1,"hannahmp":1,"thiagotoyoyo":1,"rahulkgour":1,"aliczner":1,"rxccx96":1,"BrunoCartu":1,"Ilha-m25":1,"monodendri":1,"boohubris":1,"njtierney":1,"bctarbox":1,"crleopold":1,"alankjackson":1,"CDuchardt":1,"PhDyellow":1,"fabiofebocastelli":1,"rinnan":1,"tinbuenafe":1,"haglad":1,"FerreiraPSM":1,"kavs-P":1,"dirkschumacher":1,"mhesselbarth":1,"gboussarie":1,"FabioZabala":1,"StevePrecio":1,"magalicombes":1,"saramaxwell":1,"williash23":1,"CescGV":1,"cboettig":1},"pull_request_authors":{"jeffreyhanson":94,"sandra-neubert":3,"edwardsmarc":1,"mstrimas":1,"jaseeverett":1,"orchid00":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-27T00:00:09.101Z","repositories_count":13946321,"issues_count":34679195,"pull_requests_count":113398840,"authors_count":11210721,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"question":4,"documentation":2,"feature propsal":2,"bug":2,"enhancement":2},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":11,"CONTRIBUTOR":5},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":14},"past_year_issue_authors":{"jeffreyhanson":4,"ric325":2,"alankjackson":1,"CescGV":1,"FabioZabala":1,"haglad":1,"Ilha-m25":1,"jaseeverett":1,"kavs-P":1,"Martin-Jung":1,"OlgaLu":1,"sam-bradshaw-wcmc":1},"past_year_pull_request_authors":{"jeffreyhanson":13,"sandra-neubert":1},"maintainers":[{"login":"ricschuster","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ricschuster"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":22,"PullRequestEvent":19,"ForkEvent":2,"IssuesEvent":63,"WatchEvent":6,"IssueCommentEvent":263,"PushEvent":138,"PullRequestReviewEvent":2,"CreateEvent":9},"last_year":{"DeleteEvent":16,"PullRequestEvent":9,"IssuesEvent":34,"WatchEvent":4,"IssueCommentEvent":125,"PushEvent":88,"CreateEvent":5}},"keywords":["biodiversity","conservation","conservation-planner","optimization","prioritization","r","rstats","solver","spatial"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check-macos.yaml","sha":null,"kind":"manifest","created_at":"2023-02-18T20:00:32.895Z","updated_at":"2023-02-18T20:00:32.895Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/R-CMD-check-macos.yaml","dependencies":[{"id":7769833095,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833096,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833097,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833098,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833099,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check-ubuntu.yaml","sha":null,"kind":"manifest","created_at":"2023-02-18T20:00:33.347Z","updated_at":"2023-02-18T20:00:33.347Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/R-CMD-check-ubuntu.yaml","dependencies":[{"id":7769833104,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833105,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833106,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833107,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833108,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check-windows.yaml","sha":null,"kind":"manifest","created_at":"2023-02-18T20:00:33.398Z","updated_at":"2023-02-18T20:00:33.398Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/R-CMD-check-windows.yaml","dependencies":[{"id":7769833112,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833113,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833114,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833115,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/documentation.yaml","sha":null,"kind":"manifest","created_at":"2023-02-18T20:00:33.424Z","updated_at":"2023-02-18T20:00:33.424Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/documentation.yaml","dependencies":[{"id":7769833141,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7769833142,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833143,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7769833144,"package_name":"actions/cache","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"cran","filepath":"DESCRIPTION","sha":null,"kind":"manifest","created_at":"2022-08-26T18:51:04.352Z","updated_at":"2022-08-26T18:51:04.352Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/DESCRIPTION","dependencies":[{"id":2842383465,"package_name":"R","ecosystem":"cran","requirements":"\u003e= 3.5.0","direct":true,"kind":"depends","optional":false},{"id":2842383466,"package_name":"sp","ecosystem":"cran","requirements":"*","direct":true,"kind":"depends","optional":false},{"id":2842383467,"package_name":"raster","ecosystem":"cran","requirements":"\u003e= 3.5","direct":true,"kind":"depends","optional":false},{"id":2842383468,"package_name":"sf","ecosystem":"cran","requirements":"\u003e= 0.8","direct":true,"kind":"depends","optional":false},{"id":2842383469,"package_name":"proto","ecosystem":"cran","requirements":"\u003e= 1.0.0","direct":true,"kind":"depends","optional":false},{"id":2842383470,"package_name":"utils","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2842383471,"package_name":"methods","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2842383472,"package_name":"parallel","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2842383473,"package_name":"Matrix","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2842383474,"package_name":"assertthat","ecosystem":"cran","requirements":"\u003e= 0.2.0","direct":true,"kind":"imports","optional":false},{"id":2842383475,"package_name":"uuid","ecosystem":"cran","requirements":"\u003e= 1.0","direct":true,"kind":"imports","optional":false},{"id":2842383476,"package_name":"slam","ecosystem":"cran","requirements":"\u003e= 0.1","direct":true,"kind":"imports","optional":false},{"id":2842383477,"package_name":"igraph","ecosystem":"cran","requirements":"\u003e= 1.2.9","direct":true,"kind":"imports","optional":false},{"id":2842383478,"package_name":"ape","ecosystem":"cran","requirements":"\u003e= 5.5","direct":true,"kind":"imports","optional":false},{"id":2842383479,"package_name":"rgeos","ecosystem":"cran","requirements":"\u003e= 0.5","direct":true,"kind":"imports","optional":false},{"id":2842383480,"package_name":"plyr","ecosystem":"cran","requirements":"\u003e= 1.8.6","direct":true,"kind":"imports","optional":false},{"id":2842383481,"package_name":"doParallel","ecosystem":"cran","requirements":"\u003e= 1.0.16","direct":true,"kind":"imports","optional":false},{"id":2842383482,"package_name":"magrittr","ecosystem":"cran","requirements":"\u003e= 2.0.1","direct":true,"kind":"imports","optional":false},{"id":2842383483,"package_name":"fasterize","ecosystem":"cran","requirements":"\u003e= 1.0.2","direct":true,"kind":"imports","optional":false},{"id":2842383484,"package_name":"exactextractr","ecosystem":"cran","requirements":"\u003e= 0.2.0","direct":true,"kind":"imports","optional":false},{"id":2842383485,"package_name":"tibble","ecosystem":"cran","requirements":"\u003e= 2.0.0","direct":true,"kind":"imports","optional":false},{"id":2842383486,"package_name":"withr","ecosystem":"cran","requirements":"\u003e= 2.3.0","direct":true,"kind":"imports","optional":false},{"id":2842383487,"package_name":"testthat","ecosystem":"cran","requirements":"\u003e= 3.1.0","direct":true,"kind":"suggests","optional":false},{"id":2842383488,"package_name":"knitr","ecosystem":"cran","requirements":"\u003e= 1.36","direct":true,"kind":"suggests","optional":false},{"id":2842383489,"package_name":"roxygen2","ecosystem":"cran","requirements":"\u003e= 7.1.2","direct":true,"kind":"suggests","optional":false},{"id":2842383490,"package_name":"scales","ecosystem":"cran","requirements":"\u003e= 1.1.1","direct":true,"kind":"suggests","optional":false},{"id":2842383491,"package_name":"maptools","ecosystem":"cran","requirements":"\u003e= 1.1","direct":true,"kind":"suggests","optional":false},{"id":2842383492,"package_name":"PBSmapping","ecosystem":"cran","requirements":"\u003e= 2.73.0","direct":true,"kind":"suggests","optional":false},{"id":2842383493,"package_name":"gurobi","ecosystem":"cran","requirements":"\u003e= 8.0","direct":true,"kind":"suggests","optional":false},{"id":2842383494,"package_name":"rcbc","ecosystem":"cran","requirements":"\u003e= 0.1.0.9001","direct":true,"kind":"suggests","optional":false},{"id":2842383495,"package_name":"cplexAPI","ecosystem":"cran","requirements":"\u003e= 1.4.0","direct":true,"kind":"suggests","optional":false},{"id":2842383496,"package_name":"lpsymphony","ecosystem":"cran","requirements":"\u003e= 1.17.0","direct":true,"kind":"suggests","optional":false},{"id":2842383497,"package_name":"Rsymphony","ecosystem":"cran","requirements":"\u003e= 0.1","direct":true,"kind":"suggests","optional":false},{"id":2842383498,"package_name":"rmarkdown","ecosystem":"cran","requirements":"\u003e= 2.11","direct":true,"kind":"suggests","optional":false},{"id":2842383499,"package_name":"prioritizrdata","ecosystem":"cran","requirements":"\u003e= 0.2.4","direct":true,"kind":"suggests","optional":false},{"id":2842383500,"package_name":"data.table","ecosystem":"cran","requirements":"\u003e= 1.14.2","direct":true,"kind":"suggests","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check-fedora.yaml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:09:57.364Z","updated_at":"2023-09-21T19:09:57.364Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/R-CMD-check-fedora.yaml","dependencies":[{"id":13856542507,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check-revdep.yaml","sha":null,"kind":"manifest","created_at":"2025-11-14T19:03:05.034Z","updated_at":"2025-11-14T19:03:05.034Z","repository_link":"https://github.com/prioritizr/prioritizr/blob/main/.github/workflows/R-CMD-check-revdep.yaml","dependencies":[]}],"score":14.680032092753468,"created_at":"2023-09-11T11:54:35.496Z","updated_at":"2026-04-11T19:02:54.336Z","avatar_url":"https://github.com/prioritizr.png","language":"R","category":"Biosphere","sub_category":"Conservation and Restoration","monthly_downloads":1477,"total_dependent_repos":4,"total_dependent_packages":1,"readme":"---\noutput:\n  rmarkdown::github_document:\n    html_preview: no\n---\n\n\u003c!--- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n# prioritizr \u003cimg src=\"man/figures/logo.png\" align=\"right\" style=\"width:140px\"/\u003e\n\n## Systematic Conservation Prioritization in R\n\n\u003c!-- badges: start --\u003e\n[![lifecycle](https://img.shields.io/badge/Lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html)\n[![R-CMD-check-Ubuntu](https://img.shields.io/github/actions/workflow/status/prioritizr/prioritizr/R-CMD-check-ubuntu.yaml?branch=main\u0026label=Ubuntu)](https://github.com/prioritizr/prioritizr/actions)\n[![R-CMD-check-Windows](https://img.shields.io/github/actions/workflow/status/prioritizr/prioritizr/R-CMD-check-windows.yaml?branch=main\u0026label=Windows)](https://github.com/prioritizr/prioritizr/actions)\n[![R-CMD-check-macOS](https://img.shields.io/github/actions/workflow/status/prioritizr/prioritizr/R-CMD-check-macos.yaml?branch=main\u0026label=macOS)](https://github.com/prioritizr/prioritizr/actions)\n[![Documentation](https://img.shields.io/github/actions/workflow/status/prioritizr/prioritizr/documentation.yaml?branch=main\u0026label=Documentation)](https://github.com/prioritizr/prioritizr/actions)\n[![Coverage-Status](https://img.shields.io/codecov/c/github/prioritizr/prioritizr?label=Coverage)](https://app.codecov.io/gh/prioritizr/prioritizr/branch/main)\n[![CRAN-Status-Badge](https://www.r-pkg.org/badges/version/prioritizr)](https://CRAN.R-project.org/package=prioritizr)\n[![logo](https://img.shields.io/badge/Logo%20by-Theodoros%20Ploumis-blue.svg)](https://www.theodorosploumis.com/en)\n[![publication](https://img.shields.io/badge/Publication-10.1111/cobi.14376-blue.svg)](https://doi.org/10.1111/cobi.14376)\n\n\u003c!-- badges: end --\u003e\n\n```{r, include = FALSE}\ndevtools::load_all()\nlibrary(prioritizrdata)\nplot \u003c- function(...) terra::plot(..., cex = 1.5)\n```\n\n```{r, include = FALSE}\n# set parameters for figure sizes\nh \u003c- 4.5\nw \u003c- 6.5\now \u003c- \"500\"\nis_github_readme \u003c- isTRUE(knitr::pandoc_to()[[1]] %in% c(\"gfm\", \"markdown\"))\nknitr::opts_chunk$set(\n  fig.height = h,\n  fig.width = w,\n  out.width = ow,\n  fig.path = \"man/figures/README-\", fig.align = \"center\"\n)\n```\n\n```{r, include = FALSE}\n# set up print method\nprint \u003c- function(x, ...) {\n  if (inherits(x, \"ConservationProblem\")) {\n    prioritizr::knit_print.ConservationProblem(x)\n  } else if (inherits(x, \"OptimizationProblem\")) {\n    prioritizr::knit_print.OptimizationProblem(x)\n  } else {\n    base::print(x)\n  }\n}\n```\n\nThe _prioritizr R_ package uses mixed integer linear programming (MILP) techniques to provide a flexible interface for building and solving conservation planning problems. It supports a broad range of objectives, constraints, and penalties that can be used to custom-tailor conservation planning problems to the specific needs of a conservation planning exercise. Once built, conservation planning problems can be solved using a variety of commercial and open-source exact algorithm solvers. In contrast to the algorithms conventionally used to solve conservation problems, such as heuristics or simulated annealing, the exact algorithms used here are guaranteed to find optimal solutions. Furthermore, conservation problems can be constructed to optimize the spatial allocation of different management actions or zones, meaning that conservation practitioners can identify solutions that benefit multiple stakeholders. Finally, this package has the functionality to read input data formatted for the _Marxan_ conservation planning program, and find much cheaper solutions in a much shorter period of time than _Marxan_.\n\n\u003ca href=\"https://www.youtube.com/watch?v=c7XgODGr9lE\" rel=\"nofollow\" target=\"_blank\"\u003e\u003cimg src=\"man/figures/youtube-thumbnail.png\" alt=\"YouTube video\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\n## Installation\n\n#### Official version\n\nThe latest official version of the _prioritizr R_ package can be installed from the [Comprehensive R Archive Network (CRAN)](https://cran.r-project.org/) using the following _R_ code.\n\n```{r, eval = FALSE}\ninstall.packages(\"prioritizr\", repos = \"https://cran.rstudio.com/\")\n```\n\n#### Developmental version\n\nThe latest development version can be installed to gain access to new functionality that is not yet present in the latest official version. Please note that the developmental version is more likely to contain coding errors than the official version. To install the developmental version, you can install it directly from the [GitHub online code repository](https://github.com/prioritizr/prioritizr) or from the [R Universe](https://prioritizr.r-universe.dev/prioritizr). In general, we recommend installing the developmental version from the [R Universe](https://prioritizr.r-universe.dev/prioritizr). This is because installation via [R Universe](https://prioritizr.r-universe.dev/prioritizr) does not require any additional software (e.g., [RTools](https://cran.r-project.org/bin/windows/Rtools/) for Windows systems, or [Xcode and gfortran](https://mac.r-project.org/tools/) for macOS systems).\n\n* To install the latest development version from [R Universe](https://prioritizr.r-universe.dev/prioritizr), use the following _R_ code.\n\n    ```{r, eval = FALSE}\n    install.packages(\n      \"prioritizr\",\n      repos = c(\n        \"https://prioritizr.r-universe.dev\",\n        \"https://cloud.r-project.org\"\n      )\n    )\n    ```\n\n* To install the latest development version from [GitHub](https://github.com/prioritizr/prioritizr), use the following _R_ code.\n\n    ```{r, eval = FALSE}\n    if (!require(remotes)) install.packages(\"remotes\")\n    remotes::install_github(\"prioritizr/prioritizr\")\n    ```\n\n## Citation\n\nPlease cite the _prioritizr R_ package when using it in publications. To cite the package, please use:\n\n\u003e Hanson JO, Schuster R, Strimas‐Mackey M, Morrell N, Edwards BPM, Arcese P, Bennett JR, and Possingham HP (2025) Systematic conservation prioritization with the prioritizr R package. _Conservation Biology_, **39**: e14376.\n\nAdditionally, we keep a [record of publications](https://prioritizr.net/articles/publication_record.html) that use the _prioritizr R_ package. If you use this package in any reports or publications, please [file an issue on GitHub](https://github.com/prioritizr/prioritizr/issues/new) so we can add it to the record.\n\n## Usage\n\nHere we provide a short example showing how the _prioritizr R_ package can be used to build and solve conservation problems. Specifically, we will use an example dataset available through the  _prioritizrdata R_ package. Additionally, we will use the _terra R_ package to perform raster calculations. To begin with, we will load the packages.\n\n```{r, eval = FALSE}\n# load packages\nlibrary(prioritizr)\nlibrary(prioritizrdata)\nlibrary(terra)\n```\n\nWe will use the Washington dataset in this example. To import the planning unit data, we will use the `get_wa_pu()` function. Although the _prioritizr R_ package can support many different types of planning unit data, here our planning units are represented as a single-layer raster (i.e., `terra::rast()` object). Each cell represents a different planning unit, and cell values denote land acquisition costs. Specifically, there are `r withr::with_options(list(scipen = 1000), as.character(terra::global(!is.na(get_wa_pu()), \"sum\", na.rm = TRUE)[[1]]))` planning units in total (i.e., cells with non-missing values).\n\n```{r \"planning_units\"}\n# import planning unit data\nwa_pu \u003c- get_wa_pu()\n\n# preview data\nprint(wa_pu)\n\n# plot data\nplot(wa_pu, main = \"Costs\", axes = FALSE)\n```\n\nNext, we will use the `get_wa_features()` function to import the conservation feature data. Although the _prioritizr R_ package can support many different types of feature data, here our feature data are represented as a multi-layer raster (i.e., `terra::rast()` object). Each layer describes the spatial distribution of a feature. Here, our feature data correspond to different bird species. To account for migratory patterns, the breeding and non-breeding distributions of species are represented as different features. Specifically, the cell values denote the relative abundance of individuals, with higher values indicating greater abundance.\n\n```{r \"features\", fig.height = w * 1.2, fig.width = w * 1.5, out.width = \"800\"}\n# import feature data\nwa_features \u003c- get_wa_features()\n\n# preview data\nprint(wa_features)\n\n# plot the first nine features\nplot(wa_features[[1:9]], nr = 3, axes = FALSE)\n```\n\nLet's make sure that you have a solver installed on your computer. This is important so that you can use optimization algorithms to generate spatial prioritizations. If this is your first time using the _prioritizr R_ package, please install the HiGHS solver using the following _R_ code. Although the HiGHS solver is relatively fast and easy to install, please note that you'll need to install the [Gurobi software suite and the _gurobi_ _R_ package](https://www.gurobi.com/) for best performance (see the [Gurobi Installation Guide](https://prioritizr.net/articles/gurobi_installation_guide.html) for details).\n\n```{r, eval = FALSE}\n# if needed, install HiGHS solver\ninstall.packages(\"highs\", repos = \"https://cran.rstudio.com/\")\n```\n\nNow, let's generate a spatial prioritization. To ensure feasibility, we will set a budget. Specifically, the total cost of the prioritization will represent a 5% of the total land value in the study area. Given this budget, we want the prioritization to increase feature representation, as much as possible, so that each feature would, ideally, have 20% of its distribution covered by the prioritization. In this scenario, we can either purchase all of the land inside a given planning unit, or none of the land inside a given planning unit. Thus we will create a new `problem()` that will use a minimum shortfall objective (via `add_min_shortfall_objective()`), with relative targets of 20% (via `add_relative_targets()`), binary decisions (via `add_binary_decisions()`), and specify that we want near-optimal solutions (i.e., 10% from optimality) using the best solver installed on our computer (via `add_default_solver()`).\n\n```{r}\n# calculate budget\nbudget \u003c- terra::global(wa_pu, \"sum\", na.rm = TRUE)[[1]] * 0.05\n\n# create problem\np1 \u003c-\n  problem(wa_pu, features = wa_features) %\u003e%\n  add_min_shortfall_objective(budget) %\u003e%\n  add_relative_targets(0.2) %\u003e%\n  add_binary_decisions() %\u003e%\n  add_default_solver(gap = 0.1, verbose = FALSE)\n\n# print problem\nprint(p1)\n```\n\nAfter we have built a `problem()`, we can solve it to obtain a solution.\n\n```{r \"minimal_solution\"}\n# solve the problem\ns1 \u003c- solve(p1)\n\n# extract the objective\nprint(attr(s1, \"objective\"))\n\n# extract time spent solving the problem\nprint(attr(s1, \"runtime\"))\n\n# extract state message from the solver\nprint(attr(s1, \"status\"))\n\n# plot the solution\nplot(s1, main = \"Solution\", axes = FALSE)\n```\n\nAfter generating a solution, it is important to evaluate it. Here, we will calculate the number of planning units selected by the solution, and the total cost of the solution. We can also check how many representation targets are met by the solution.\n\n```{r \"eval_performance\"}\n# calculate number of selected planning units by solution\neval_n_summary(p1, s1)\n\n# calculate total cost of solution\neval_cost_summary(p1, s1)\n\n# calculate target coverage for the solution\np1_target_coverage \u003c- eval_target_coverage_summary(p1, s1)\nprint(p1_target_coverage)\n\n# check percentage of the features that have their target met given the solution\nprint(mean(p1_target_coverage$met) * 100)\n```\n\nAlthough this solution helps meet the representation targets, it does not account for existing protected areas inside the study area. As such, it does not account for the possibility that some features could be partially -- or even fully -- represented by existing protected areas and, in turn, might fail to identify meaningful priorities for new protected areas. To address this issue, we will use the `get_wa_locked_in()` function to import spatial data for protected areas in the study area. We will then add constraints to the `problem()` to ensure they are selected by the solution (via `add_locked_in_constraints()`).\n\n```{r \"locked_in_constraints\"}\n# import locked in data\nwa_locked_in \u003c- get_wa_locked_in()\n\n# print data\nprint(wa_locked_in)\n\n# plot data\nplot(wa_locked_in, main = \"Existing protected areas\", axes = FALSE)\n\n# create new problem with locked in constraints added to it\np2 \u003c-\n  p1 %\u003e%\n  add_locked_in_constraints(wa_locked_in)\n\n# solve the problem\ns2 \u003c- solve(p2)\n\n# plot the solution\nplot(s2, main = \"Solution\", axes = FALSE)\n```\n\nThis solution is an improvement over the previous solution. However, there are some places in the study area that are not available for protected area establishment (e.g., due to land tenure). As a consequence, the solution might not be practical for implementation, because it might select some places that are not available for protection. To address this issue, we will use the `get_wa_locked_out()` function to import spatial data describing which planning units are not available for protection. We will then add constraints to the `problem()` to ensure they are not selected by the solution (via `add_locked_out_constraints()`).\n\n```{r \"locked_out_constraints\"}\n# import locked out data\nwa_locked_out \u003c- get_wa_locked_out()\n\n# print data\nprint(wa_locked_out)\n\n# plot data\nplot(wa_locked_out, main = \"Areas not available for protection\", axes = FALSE)\n\n# create new problem with locked out constraints added to it\np3 \u003c-\n  p2 %\u003e%\n  add_locked_out_constraints(wa_locked_out)\n\n# solve the problem\ns3 \u003c- solve(p3)\n\n# plot the solution\nplot(s3, main = \"Solution\", axes = FALSE)\n```\n\nThis solution is even better then the previous solution. However, we are not finished yet. The planning units selected by the solution are fairly fragmented. This can cause issues because fragmentation increases management costs and reduces conservation benefits through edge effects. To address this issue, we can further modify the problem by adding penalties that punish overly fragmented solutions (via `add_boundary_penalties()`). Here we will use a penalty factor (i.e., boundary length modifier) of 0.003, and an edge factor of 50% so that planning units that occur on the outer edge of the study area are not overly penalized.\n\n```{r \"boundary_penalties\"}\n# create new problem with boundary penalties added to it\np4 \u003c-\n  p3 %\u003e%\n  add_boundary_penalties(penalty = 0.003, edge_factor = 0.5)\n\n# solve the problem\ns4 \u003c- solve(p4)\n\n# plot the solution\nplot(s4, main = \"Solution\", axes = FALSE)\n```\n\nNow, let's explore which planning units selected by the solution are most important for cost-effectively meeting the targets. To achieve this, we will calculate importance (irreplaceability) scores using an incremental rank approach. Briefly, the optimization problem is solved multiple times in an incremental process with increasing budgets, and planning units are assigned ranks based on which increment they are selected in. Planning units selected earlier on in the process are considered more important.\n\n```{r \"importance\"}\n# calculate importance scores\nimp \u003c-\n  p4 %\u003e%\n  eval_rank_importance(s4, n = 5)\n\n# print scores\nprint(imp)\n\n# set planning units that are locked in to -1 so we can easily\n# see importance scores for priority areas\nimp \u003c- terra::mask(imp, s4, maskvalues = 0, updatevalue = -1)\n\n# plot the total importance scores\n## planning units shown in purple were not selected in solution s4\n## planning units shown in blue are less important\n## planning units shown in yellow are highly important\n## note that locked in planning units are also shown in yellow\nplot(imp, axes = FALSE,  main = \"Importance scores\")\n```\n\nThis short example demonstrates how the _prioritizr R_ package can be used to build and customize conservation problems, and then solve them to generate solutions. Although we explored just a few different functions for modifying a conservation problem, the package provides many functions for specifying objectives, constraints, penalties, and decision variables, so that you can build and custom-tailor conservation planning problems to suit your planning scenario.\n\n## Learning resources\n\nThe [package website](https://prioritizr.net/index.html) contains information on the _prioritizr R_ package. Here you can find [documentation for every function and built-in dataset](https://prioritizr.net/reference/index.html), and [news describing the updates in each package version](https://prioritizr.net/news/index.html). It also contains the following articles and tutorials.\n\n* [**Getting started**](https://prioritizr.net/articles/prioritizr.html): Short tutorial on using the package.\n* [**Package overview**](https://prioritizr.net/articles/package_overview.html): Introduction to systematic conservation planning and a comprehensive overview of the package.\n* [**Connectivity tutorial**](https://prioritizr.net/articles/connectivity_tutorial.html): Tutorial on incorporating connectivity into prioritizations.\n* [**Calibrating trade-offs tutorial**](https://prioritizr.net/articles/calibrating_trade-offs_tutorial.html): Tutorial on running calibration analyses to satisfy multiple criteria.\n* [**Management zones tutorial**](https://prioritizr.net/articles/management_zones_tutorial.html): Tutorial on incorporating multiple management zones and actions into prioritizations.\n* [**Gurobi installation guide**](https://prioritizr.net/articles/gurobi_installation_guide.html): Instructions for installing the _Gurobi_ optimization suite for generating prioritizations.\n* [**Solver benchmarks**](https://prioritizr.net/articles/solver_benchmarks.html): Performance comparison of optimization solvers for generating prioritizations.\n* [**Publication record**](https://prioritizr.net/articles/publication_record.html): List of publications that have cited the package.\n\nAdditional resources can also be found in [online repositories under the _prioritizr_ organization](https://github.com/prioritizr). These resources include [slides for talks and seminars about the package](https://github.com/prioritizr/teaching). Additionally, workshop materials are available too (e.g., [Carleton 2023 workshop](https://prioritizr.github.io/workshop/), [ECCB 2024 workshop](https://iiasa.github.io/eccb2024/), and [Statistical Methods Webinar series 2025 workshop](https://github.com/eco4cast/Statistical-Methods-Seminar-Series/tree/main/schuster_prioritizr)).\n\n## Getting help\n\nIf you have any questions about the _prioritizr R_ package or suggestions for improving it, please [post an issue on the code repository](https://github.com/prioritizr/prioritizr/issues/new).\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1111/cobi.14376"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["ecology","spatial-data"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/646","html_url":"https://ost.ecosyste.ms/projects/646"}