{"id":19820,"name":"windfarmGA","description":"Genetic algorithm to optimize the layout of wind farms.","url":"https://github.com/YsoSirius/windfarmGA","last_synced_at":"2026-05-18T10:30:32.670Z","repository":{"id":48592851,"uuid":"82318628","full_name":"YsoSirius/windfarmGA","owner":"YsoSirius","description":"R Package to Optimize Windfarm Layouts","archived":false,"fork":false,"pushed_at":"2025-01-21T06:57:06.000Z","size":174096,"stargazers_count":30,"open_issues_count":1,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-02-06T15:29:43.035Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ysosirius.github.io/windfarmGA/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YsoSirius.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2017-02-17T16:56:52.000Z","updated_at":"2025-12-24T05:42:14.000Z","dependencies_parsed_at":"2024-06-13T04:18:09.116Z","dependency_job_id":"147ff47e-04e2-4aa0-b3c0-cec3b9ea3e7d","html_url":"https://github.com/YsoSirius/windfarmGA","commit_stats":{"total_commits":426,"total_committers":2,"mean_commits":213.0,"dds":"0.42488262910798125","last_synced_commit":"14f24c369b4a5483aeb3099b73cdc26199fa3019"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/YsoSirius/windfarmGA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29444024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T12:43:28.304Z","status":"ssl_error","status_checked_at":"2026-02-14T12:43:14.160Z","response_time":53,"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":{"login":"YsoSirius","name":null,"uuid":"7722304","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7722304?v=4","repositories_count":1,"last_synced_at":"2024-06-11T16:07:22.349Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/YsoSirius","funding_links":[],"total_stars":26,"followers":9,"following":102,"created_at":"2024-06-11T16:07:23.150Z","updated_at":"2024-06-11T16:07:23.150Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius/repositories"},"packages":[{"id":11277729,"name":"windfarmGA","ecosystem":"cran","description":"Genetic Algorithm for Wind Farm Layout Optimization","homepage":"https://ysosirius.github.io/windfarmGA/index.html","licenses":"MIT + file LICENSE","normalized_licenses":["MIT"],"repository_url":"https://github.com/ysosirius/windfarmGA","keywords_array":[],"namespace":null,"versions_count":11,"first_release_published_at":"2017-06-24T07:54:00.000Z","latest_release_published_at":"2025-01-18T00:00:00.000Z","latest_release_number":"4.0.0","last_synced_at":"2026-03-06T23:01:15.579Z","created_at":"2025-01-18T11:03:20.119Z","updated_at":"2026-03-06T23:01:15.579Z","registry_url":"https://cran.r-project.org/package=windfarmGA","install_command":null,"documentation_url":"http://cran.r-project.org/web/packages/windfarmGA/windfarmGA.pdf","metadata":{},"repo_metadata":{"id":48592851,"uuid":"82318628","full_name":"YsoSirius/windfarmGA","owner":"YsoSirius","description":"R Package to Optimize Windfarm Layouts","archived":false,"fork":false,"pushed_at":"2025-01-21T06:57:06.000Z","size":174096,"stargazers_count":29,"open_issues_count":1,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-29T08:10:36.313Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ysosirius.github.io/windfarmGA/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YsoSirius.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2017-02-17T16:56:52.000Z","updated_at":"2025-07-13T02:27:00.000Z","dependencies_parsed_at":"2024-06-13T04:18:09.116Z","dependency_job_id":"147ff47e-04e2-4aa0-b3c0-cec3b9ea3e7d","html_url":"https://github.com/YsoSirius/windfarmGA","commit_stats":{"total_commits":426,"total_committers":2,"mean_commits":213.0,"dds":"0.42488262910798125","last_synced_commit":"14f24c369b4a5483aeb3099b73cdc26199fa3019"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/YsoSirius/windfarmGA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281816718,"owners_count":26566840,"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","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"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_record":{"login":"YsoSirius","name":null,"uuid":"7722304","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/7722304?v=4","repositories_count":1,"last_synced_at":"2024-06-11T16:07:22.349Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/YsoSirius","funding_links":[],"total_stars":26,"followers":9,"following":102,"created_at":"2024-06-11T16:07:23.150Z","updated_at":"2024-06-11T16:07:23.150Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YsoSirius/repositories"},"tags":[{"name":"v4.0.0","sha":"49914e49d66f0209e0cd30e00bf51cecb49849e8","kind":"commit","published_at":"2025-01-17T13:34:36.000Z","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/v4.0.0","html_url":"https://github.com/YsoSirius/windfarmGA/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/YsoSirius/windfarmGA@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/v4.0.0/manifests"},{"name":"3.0.0","sha":"6fe523e08fb314d25c99329b3b7bbcb2305f76a9","kind":"commit","published_at":"2021-04-06T17:21:23.000Z","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/3.0.0","html_url":"https://github.com/YsoSirius/windfarmGA/releases/tag/3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/YsoSirius/windfarmGA@3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/3.0.0/manifests"},{"name":"v.2.2.3","sha":"d213c9d4eaec728250e0d4ee0df1291d392d0d82","kind":"commit","published_at":"2019-12-16T18:01:42.000Z","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/v.2.2.3","html_url":"https://github.com/YsoSirius/windfarmGA/releases/tag/v.2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/YsoSirius/windfarmGA@v.2.2.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/v.2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/v.2.2.3/manifests"},{"name":"e63a143840","sha":"c39fa34444ce10bb72ba2674401e88d9f8872cb8","kind":"commit","published_at":"2019-02-21T22:25:27.000Z","download_url":"https://codeload.github.com/YsoSirius/windfarmGA/tar.gz/e63a143840","html_url":"https://github.com/YsoSirius/windfarmGA/releases/tag/e63a143840","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/YsoSirius/windfarmGA@e63a143840","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/e63a143840","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/tags/e63a143840/manifests"}]},"repo_metadata_updated_at":"2025-10-30T13:38:04.903Z","dependent_packages_count":0,"downloads":184,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":84.00757514707068,"dependent_repos_count":33.77659574468085,"dependent_packages_count":27.393617021276594,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":48.39259597100937},"purl":"pkg:cran/windfarmGA","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/cran/windfarmGA","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/cran/windfarmGA","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/cran/windfarmGA/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-05T16:39:09.942Z","issues_count":11,"pull_requests_count":29,"avg_time_to_close_issue":28507380.1,"avg_time_to_close_pull_request":4178144.172413793,"issues_closed_count":10,"pull_requests_closed_count":29,"pull_request_authors_count":2,"issue_authors_count":8,"avg_comments_per_issue":2.5454545454545454,"avg_comments_per_pull_request":0.4482758620689655,"merged_pull_requests_count":29,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":9.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/issues","maintainers":[{"login":"trafficonese","count":33,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trafficonese"},{"login":"YsoSirius","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/YsoSirius"}],"active_maintainers":[{"login":"trafficonese","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trafficonese"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/windfarmGA/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/windfarmGA/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/windfarmGA/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/windfarmGA/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/packages/windfarmGA/codemeta","maintainers":[{"uuid":"sebastian_gatscha@gmx.at","login":null,"name":"Gatscha Sebastian","email":"sebastian_gatscha@gmx.at","url":null,"packages_count":4,"html_url":null,"role":null,"created_at":"2025-01-18T11:10:00.849Z","updated_at":"2025-01-18T11:10:00.849Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/cran.r-project.org/maintainers/sebastian_gatscha@gmx.at/packages"}],"registry":{"name":"cran.r-project.org","url":"https://cran.r-project.org","ecosystem":"cran","default":true,"packages_count":27545,"maintainers_count":15265,"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-08T06:57:58.301Z","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":1253920,"full_name":"YsoSirius/windfarmGA","default_branch":"master","total_commits":440,"total_committers":2,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":220.0,"dds":0.4113636363636364,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-03-05T15:47:37.686Z","last_synced_commit":"577a9276ebc381afc80148d8bb8fd1c213b6ab99","created_at":"2023-03-27T10:48:24.339Z","updated_at":"2026-03-05T15:47:37.652Z","committers":[{"name":"Sebastian Gatscha","email":"gatscha@trafficon.eu","login":"trafficonese","count":259},{"name":"YsoSirius","email":"kona1@gmx.at","login":"YsoSirius","count":181}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-06T00:00:38.640Z","repositories_count":6187302,"commits_count":931614423,"contributors_count":36074985,"owners_count":1147484,"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":"YsoSirius/windfarmGA","html_url":"https://github.com/YsoSirius/windfarmGA","last_synced_at":"2025-10-05T16:39:09.942Z","status":"error","issues_count":11,"pull_requests_count":29,"avg_time_to_close_issue":28507380.1,"avg_time_to_close_pull_request":4178144.172413793,"issues_closed_count":10,"pull_requests_closed_count":29,"pull_request_authors_count":2,"issue_authors_count":8,"avg_comments_per_issue":2.5454545454545454,"avg_comments_per_pull_request":0.4482758620689655,"merged_pull_requests_count":29,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":9.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-09T10:34:52.200Z","updated_at":"2025-10-05T16:39:09.942Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/YsoSirius%2FwindfarmGA/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":9,"COLLABORATOR":2},"pull_request_author_associations_count":{"COLLABORATOR":31,"OWNER":2},"issue_authors":{"MrEtmAr":3,"trafficonese":2,"teunbrand":1,"edzer":1,"tristanfabregas":1,"rsbivand":1,"SamAct":1,"FDavisA":1},"pull_request_authors":{"trafficonese":31,"YsoSirius":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-06T00:00:12.726Z","repositories_count":13604369,"issues_count":34899955,"pull_requests_count":113819887,"authors_count":11185219,"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":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{"teunbrand":1},"past_year_pull_request_authors":{},"maintainers":[{"login":"trafficonese","count":33,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trafficonese"},{"login":"YsoSirius","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/YsoSirius"}],"active_maintainers":[]},"events":{"total":{"ReleaseEvent":1,"PullRequestEvent":4,"IssuesEvent":1,"WatchEvent":4,"PushEvent":19,"CreateEvent":1},"last_year":{"WatchEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"cran","filepath":"DESCRIPTION","sha":null,"kind":"manifest","created_at":"2022-08-27T11:32:31.987Z","updated_at":"2022-08-27T11:32:31.987Z","repository_link":"https://github.com/YsoSirius/windfarmGA/blob/master/DESCRIPTION","dependencies":[{"id":2917248153,"package_name":"R","ecosystem":"cran","requirements":"\u003e= 3.2.3","direct":true,"kind":"depends","optional":false},{"id":2917248154,"package_name":"Rcpp","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248155,"package_name":"raster","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248156,"package_name":"sf","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248157,"package_name":"elevatr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248158,"package_name":"RColorBrewer","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248159,"package_name":"calibrate","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248160,"package_name":"grDevices","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248161,"package_name":"graphics","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248162,"package_name":"foreach","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248163,"package_name":"parallel","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248164,"package_name":"doParallel","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248165,"package_name":"magrittr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248166,"package_name":"methods","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248167,"package_name":"stats","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248168,"package_name":"utils","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":2917248169,"package_name":"testthat","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248170,"package_name":"rgdal","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248171,"package_name":"rgeos","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248172,"package_name":"stars","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248173,"package_name":"leaflet","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248174,"package_name":"ggplot2","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248175,"package_name":"gstat","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":2917248176,"package_name":"rworldmap","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check.yaml","sha":null,"kind":"manifest","created_at":"2024-03-17T04:51:47.862Z","updated_at":"2024-03-17T04:51:47.862Z","repository_link":"https://github.com/YsoSirius/windfarmGA/blob/master/.github/workflows/R-CMD-check.yaml","dependencies":[{"id":16864557938,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16864558029,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558030,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558185,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558186,"package_name":"r-lib/actions/check-r-package","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pkgdown.yaml","sha":null,"kind":"manifest","created_at":"2024-03-17T04:51:48.497Z","updated_at":"2024-03-17T04:51:48.497Z","repository_link":"https://github.com/YsoSirius/windfarmGA/blob/master/.github/workflows/pkgdown.yaml","dependencies":[{"id":16864558379,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16864558380,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558381,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558382,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558383,"package_name":"JamesIves/github-pages-deploy-action","ecosystem":"actions","requirements":"v4.4.1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test-coverage.yaml","sha":null,"kind":"manifest","created_at":"2024-03-17T04:51:48.748Z","updated_at":"2024-03-17T04:51:48.748Z","repository_link":"https://github.com/YsoSirius/windfarmGA/blob/master/.github/workflows/test-coverage.yaml","dependencies":[{"id":16864558640,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16864558641,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558642,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":16864558643,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]}],"score":9.347490210123416,"created_at":"2023-09-11T14:52:07.362Z","updated_at":"2026-05-18T10:30:32.672Z","avatar_url":"https://github.com/YsoSirius.png","language":"R","category":"Renewable Energy","sub_category":"Wind Energy","monthly_downloads":184,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# windfarmGA\n\n\u003cimg src=\"https://raw.githubusercontent.com/YSoSirius/windfarmGA/master/inst/img/windfarmGA.png\" align=\"right\" width=\"150\"/\u003e\n\n\n\n\u003c!-- badges: start --\u003e\n[![R build status](https://github.com/YsoSirius/windfarmGA/workflows/R-CMD-check/badge.svg)](https://github.com/YsoSirius/windfarmGA/actions)\n[![CRAN status](https://www.r-pkg.org/badges/version/windfarmGA)](https://CRAN.R-project.org/package=windfarmGA)\n[![CRAN checks](https://badges.cranchecks.info/summary/windfarmGA.svg)](https://cran.r-project.org/web/checks/check_results_windfarmGA.html)\n[![](https://cranlogs.r-pkg.org/badges/grand-total/windfarmGA)](https://cran.r-project.org/package=windfarmGA)\n[![](https://cranlogs.r-pkg.org/badges/last-month/windfarmGA?color=blue)](https://cran.r-project.org/package=windfarmGA)\n[![codecov](https://codecov.io/gh/YsoSirius/windfarmGA/branch/master/graph/badge.svg)](https://app.codecov.io/gh/YsoSirius/windfarmGA)\n\n\u003c!-- badges: end --\u003e\n\n\nA genetic algorithm to optimize the layout of wind farms.\n\n\n# Installation\nThe latest version can be installed from GitHub with:\n```R\ndevtools::install_github(\"YsoSirius/windfarmGA\")\ninstall.packages(\"windfarmGA\")\n```\n\n# Description\nThe genetic algorithm is designed to optimize wind farms of any shape.\nIt requires a predefined number of turbines, a uniform rotor radius and \nan average wind speed per wind direction.\nIt can include a terrain effect model, which requires an \nelevation raster and a surface roughness raster. The elevation \ndata is used to find mountains and valleys and to adjust the \nwind speeds accordingly by 'wind multipliers' and to determine \nthe air densities at rotor heights. The surface roughness raster with an additional elevation\nroughness value is used to re-evaluate the surface roughness and to individually\ndetermine the wake-decay constant for each turbine.\n\nTo start an optimization use the function `genetic_algorithm`. \n\n\u003cdiv\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/YSoSirius/windfarmGA/master/inst/img/result2.png\" style=\"width: 49%;display: inline-block;\"/\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/YSoSirius/windfarmGA/master/inst/img/result1.png\"  style=\"width: 49%;display: inline-block;\"/\u003e\n\u003c/div\u003e\n\nSince version 1.1, hexagonal grid cells are possible, with \ntheir center points being possible locations for wind turbines. \nFurthermore, rasters can be included, which contain information on the Weibull \nparameters. For Austria this data is already included in the package. \n    \n## Create an input Polygon\n- Input Polygon by source\n```R\nlibrary(sf)\ndsn \u003c- \"Path to the Shapefile\"\nlayer \u003c- \"Name of the Shapefile\"\nPolygon1 \u003c- sf::st_read(dsn = dsn, layer = layer)\nplot(Polygon1, col = \"blue\")\n```\n\n- Or create a random Polygon\n```R\nlibrary(sf)\nPolygon1 \u003c- sf::st_as_sf(sf::st_sfc(\n  sf::st_polygon(list(cbind(\n    c(0, 0, 2000, 2000, 0),\n    c(0, 2000, 2000, 0, 0)))),\n  crs = 3035\n))\nplot(Polygon1, col = \"blue\", axes = TRUE)\n```\n\n## Create random Wind data \n- Exemplary input Wind data with *uniform* wind speed and *single* wind direction\n```R\nwind_df \u003c- data.frame(ws = c(12, 12), wd = c(0, 0), probab = c(25, 25))\nwindrosePlot \u003c- plot_windrose(data = wind_df, spd = wind_df$ws,\n                              dir = wind_df$wd, dirres=10, spdmax = 20)\n```\n\n- Exemplary input Wind data with *random* wind speeds and *random* wind directions\n```R\nwind_df \u003c- data.frame(ws = sample(1:25, 10), wd = sample(1:260, 10)))\nwindrosePlot \u003c- plot_windrose(data = wind_df, spd = wind_df$ws,\n                              dir = wind_df$wd)\n```\n\n## Grid Spacing\n### Rectangular Grid Cells\nVerify that the grid spacing is appropriate. Adapt the following input variables if necessary:\n- *Rotor*: The rotor radius in meters.\n- *fcrR*: The grid spacing factor, which should at least be 2, so that a single grid covers at least the whole rotor diameter.\n- *prop*: The proportionality factor used for grid calculation. It determines the minimum percentage that a grid cell must cover of the area.\n\n*Make sure that the Polygon is projected in meters.*\n```R\nRotor \u003c- 20\nfcrR \u003c- 9\nGrid \u003c- grid_area(Polygon1, size = (Rotor * fcrR), prop = 1, plotGrid = TRUE)\nstr(Grid)\n```\n### Hexagonal Grid Cells\n```R\nRotor \u003c- 20\nfcrR \u003c- 9\nHexGrid \u003c- hexa_area(Polygon1, size = (Rotor * fcrR), plotGrid = TRUE)\nstr(HexGrid)\n```\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/YSoSirius/windfarmGA/master/inst/img/grids.png\" width=\"300\"/\u003e\n\u003c/p\u003e\n\n\n## Terrain Effect Model\nIf the input variable **topograp** for the functions `windfarmGA` or `genetic_algorithm` is TRUE, the genetic algorithm will take terrain effects into account. For this purpose an elevation model and a Corine Land Cover raster are downloaded automatically, but can also be given manually. ( [Download a CLC raster](https://www.eea.europa.eu/data-and-maps/data/clc-2006-raster-4) ).\n            \n\nIf you want to include your own Land Cover Raster, you must assign the Raster Image path to the input variable **sourceCCL**. The algorithm uses an adapted version of the Raster legend (\"clc_legend.csv\"), which is stored in the package subdirectory (/extdata). To use own values for the land cover roughness lengths, insert a column named **Rauhigkeit_z** to the .csv file. Assign a surface roughness length to all land cover types. \nBe sure that all rows are filled with numeric values and save the .csv file with \";\" delimiter. Assign the .csv file path to the input variable **sourceCCLRoughness**.\n\n\n## Start an Optimization\nAn optimization can be initiated with the function **genetic_algorithm**\n\n- without terrain effects\n```R\nresult \u003c- genetic_algorithm(\n  Polygon1 = Polygon1, n = 12, Rotor = 20, fcrR = 9, iteration = 10,\n  vdirspe = wind_df, crossPart1 = \"EQU\", selstate = \"FIX\", mutr = 0.8,\n  Proportionality = 1, SurfaceRoughness = 0.3, topograp = FALSE,\n  elitism =TRUE, nelit = 7, trimForce = TRUE,\n  referenceHeight = 50, RotorHeight = 100\n  )\n```\n\n- with terrain effects\n```R\nsourceCCL \u003c- \"Source of the CCL raster (TIF)\"\nsourceCCLRoughness \u003c- \"Source of the Adaped CCL legend (CSV)\"\n\nresult \u003c- genetic_algorithm(\n  Polygon1 = Polygon1, n = 12, Rotor = 20, fcrR = 9, iteration = 10,\n  vdirspe = wind_df, crossPart1 = \"EQU\", selstate = \"FIX\", mutr = 0.8,\n  Proportionality = 1, SurfaceRoughness = 0.3, topograp = TRUE,\n  elitism = TRUE, nelit = 7, trimForce = TRUE,\n  referenceHeight = 50, RotorHeight = 100, sourceCCL = sourceCCL,\n  sourceCCLRoughness = sourceCCLRoughness\n)\n```\n\n\n```R\n## Run an optimization with your own Weibull parameter rasters. The shape and scale \n## parameter rasters of the weibull distributions must be added to a list, with the first\n## list item being the shape parameter (k) and the second list item being the scale\n## parameter (a). Adapt the paths to your raster data and run an optimization.\nkraster \u003c- \"/..pathto../k_param_raster.tif\"\naraster \u003c- \"/..pathto../a_param_raster.tif\"\nweibullrasters \u003c- list(raster(kraster), raster(araster))\n\nresult_weibull \u003c- genetic_algorithm(\n  Polygon1 = Polygon1, GridMethod =\"h\", n=12,\n  fcrR=5, iteration=10, vdirspe = wind_df, crossPart1 = \"EQU\",\n  selstate=\"FIX\", mutr=0.8, Proportionality = 1, Rotor=30,\n  SurfaceRoughness = 0.3, topograp = FALSE,\n  elitism=TRUE, nelit = 7, trimForce = TRUE,\n  referenceHeight = 50,RotorHeight = 100,\n  weibull = TRUE, weibullsrc = weibullrasters)\nplot_windfarmGA(result = result_weibull, Polygon1 = Polygon1)\n```\n\n#### Plot the Results on a Leaflet Map\n```R\n## Plot the best wind farm on a leaflet map (ordered by energy values)\nplot_leaflet(result = resulthex, Polygon1, which = 1)\n\n## Plot the last wind farm (ordered by chronology).\nplot_leaflet(result = resulthex, Polygon1, orderitems = FALSE, which = 1)\n```\n\n## Plotting Methods of the Genetic Algorithm \nSeveral plotting functions are available:\n```R\n - plot_windfarmGA(result, Polygon1)\n - plot_result(result, Polygon1, best = 1)\n - plot_evolution(result, ask = TRUE, spar = 0.1)\n - plot_development(result)\n - plot_parkfitness(result, spar = 0.1)\n - plot_fitness_evolution(result)\n - plot_cloud(result, pl = TRUE)\n - plot_heatmap(result = result, si = 5)\n - plot_leaflet(result = result, Polygon1 = Polygon1, which = 1)\n```\n\nA full documentation of the genetic algorithm is given in my [master thesis](https://homepage.boku.ac.at/jschmidt/TOOLS/Masterarbeit_Gatscha.pdf).\n\n# Shiny Windfarm Optimization\nI also made a [Shiny App](https://windfarmga.shinyapps.io/windga_shiny/) for the Genetic Algorithm. \nUnfortunately, as an optimization takes quite some time and the app is currently hosted by shinyapps.io under a public license, there is only 1 R-worker at hand. So only 1 optimization can be run at a time. \n\n# Full Optimization example:\n```R\nlibrary(sf)\nlibrary(windfarmGA)\n\nPolygon1 \u003c- sf::st_as_sf(sf::st_sfc(\n  sf::st_polygon(list(cbind(\n    c(4651704, 4651704, 4654475, 4654475, 4651704),\n    c(2692925, 2694746, 2694746, 2692925, 2692925)))), \n  crs = 3035\n))\nplot(Polygon1, col = \"blue\", axes = TRUE)\n\nwind_df \u003c- data.frame(ws = 12, wd = 0)\nwindrosePlot \u003c- plot_windrose(data = wind_df, spd = wind_df$ws,\n                             dir = wind_df$wd, dirres = 10, spdmax = 20)\nRotor \u003c- 20\nfcrR \u003c- 9\nGrid \u003c- grid_area(shape = Polygon1, size = (Rotor*fcrR), prop = 1, plotGrid = TRUE)\n\nresult \u003c- genetic_algorithm(Polygon1 = sp_polygon, \n                            n = 20,\n                            Rotor = Rotor, fcrR = fcrR, \n                            iteration = 50, \n                            vdirspe = wind_df,\n                            referenceHeight = 50, RotorHeight = 100)\n\n# The following function will execute all plotting function further below:\nplot_windfarmGA(result, Polygon1, whichPl = \"all\", best = 1, plotEn = 1)\n\n# The plotting functions can also be called individually:\nplot_result(result, Polygon1, best = 1, plotEn = 1, topographie = FALSE)\nplot_evolution(result, ask = TRUE, spar = 0.1)\nplot_parkfitness(result, spar = 0.1)\nplot_fitness_evolution(result)\nplot_cloud(result, pl = TRUE)\nplot_heatmap(result = result, si = 5)\nplot_leaflet(result = result, Polygon1 = Polygon1, which = 1)\n```\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19820","html_url":"https://ost.ecosyste.ms/projects/19820"}