{"id":20042,"name":"BOPTEST-Gym","description":"The OpenAI-Gym interface of the BOPTEST framework facilitates the assessment and benchmarking of RL algorithms for building energy management.","url":"https://github.com/ibpsa/project1-boptest-gym","last_synced_at":"2026-06-19T09:01:08.241Z","repository":{"id":37778439,"uuid":"310353659","full_name":"ibpsa/project1-boptest-gym","owner":"ibpsa","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-06T14:25:28.000Z","size":50912,"stargazers_count":64,"open_issues_count":21,"forks_count":21,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-06-09T04:03:24.277Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/ibpsa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-05T16:15:12.000Z","updated_at":"2026-05-02T17:53:47.000Z","dependencies_parsed_at":"2023-09-21T19:20:06.583Z","dependency_job_id":"4b52663e-35c5-49d7-9723-042701376838","html_url":"https://github.com/ibpsa/project1-boptest-gym","commit_stats":{"total_commits":500,"total_committers":6,"mean_commits":83.33333333333333,"dds":"0.10999999999999999","last_synced_commit":"4ebfb9abf820d1a4a7b746bad2a706ad5c5b10dc"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ibpsa/project1-boptest-gym","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34273788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":"ibpsa","name":"IBPSA","uuid":"16223588","kind":"organization","description":"International Building Performance Simulation Association","email":"president@ibpsa.org","website":"http://www.ibpsa.org","location":"Worldwide","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/16223588?v=4","repositories_count":12,"last_synced_at":"2024-03-27T12:18:13.678Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ibpsa","funding_links":[],"total_stars":332,"followers":28,"following":0,"created_at":"2022-11-06T04:12:44.713Z","updated_at":"2024-03-27T12:18:13.771Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa/repositories"},"packages":[{"id":11733124,"name":"github.com/ibpsa/project1-boptest-gym","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/ibpsa/project1-boptest-gym","keywords_array":[],"namespace":null,"versions_count":7,"first_release_published_at":"2022-08-19T10:59:58.000Z","latest_release_published_at":"2025-09-05T16:16:31.000Z","latest_release_number":"v0.8.0","last_synced_at":"2026-06-17T08:01:13.851Z","created_at":"2025-06-05T11:14:35.268Z","updated_at":"2026-06-17T08:01:13.851Z","registry_url":"https://pkg.go.dev/github.com/ibpsa/project1-boptest-gym","install_command":"go get github.com/ibpsa/project1-boptest-gym","documentation_url":"https://pkg.go.dev/github.com/ibpsa/project1-boptest-gym#section-documentation","metadata":{},"repo_metadata":{"id":37778439,"uuid":"310353659","full_name":"ibpsa/project1-boptest-gym","owner":"ibpsa","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-06T14:25:28.000Z","size":50912,"stargazers_count":54,"open_issues_count":21,"forks_count":20,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-23T07:49:54.838Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/ibpsa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-05T16:15:12.000Z","updated_at":"2025-10-20T08:29:02.000Z","dependencies_parsed_at":"2023-09-21T19:20:06.583Z","dependency_job_id":"9725cf43-8310-488f-a1cf-603bcc9dc121","html_url":"https://github.com/ibpsa/project1-boptest-gym","commit_stats":{"total_commits":500,"total_committers":6,"mean_commits":83.33333333333333,"dds":"0.10999999999999999","last_synced_commit":"4ebfb9abf820d1a4a7b746bad2a706ad5c5b10dc"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ibpsa/project1-boptest-gym","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280969529,"owners_count":26422424,"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-25T02:00:06.499Z","response_time":81,"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":"ibpsa","name":"IBPSA","uuid":"16223588","kind":"organization","description":"International Building Performance Simulation Association","email":"president@ibpsa.org","website":"http://www.ibpsa.org","location":"Worldwide","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/16223588?v=4","repositories_count":12,"last_synced_at":"2024-03-27T12:18:13.678Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ibpsa","funding_links":[],"total_stars":332,"followers":28,"following":0,"created_at":"2022-11-06T04:12:44.713Z","updated_at":"2024-03-27T12:18:13.771Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibpsa/repositories"},"tags":[{"name":"v0.8.0","sha":"eaedc859ed57c4a4f6bb8305ba455745de96a40a","kind":"tag","published_at":"2025-09-06T14:18:45.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.8.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"382f1139bf80d0431ee21e60f1223e26d9b80de6","kind":"tag","published_at":"2025-02-07T12:07:39.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.7.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"59f5c81f1a98939f56ecad57be6b6a4dfa343ff9","kind":"commit","published_at":"2024-05-10T15:38:45.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.6.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"a4f9b0e84e194b6ff0fb824e6cfc901a251dca94","kind":"commit","published_at":"2023-11-11T11:43:31.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.5.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.5.0/manifests"},{"name":"v0.2.0","sha":"fa924e27db530cc7d1293a65a15458f376327014","kind":"tag","published_at":"2023-07-17T13:48:16.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.2.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.2.0/manifests"},{"name":"v0.3.0","sha":"635e8c00bf344c7dcf4dbdeac666ff9f36199a44","kind":"tag","published_at":"2023-07-17T13:47:34.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.3.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.3.0/manifests"},{"name":"v0.4.0","sha":"a8d4a7aa7330f1a65291096f50ce92ec02bf3cd1","kind":"commit","published_at":"2023-07-17T13:37:36.000Z","download_url":"https://codeload.github.com/ibpsa/project1-boptest-gym/tar.gz/v0.4.0","html_url":"https://github.com/ibpsa/project1-boptest-gym/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ibpsa/project1-boptest-gym@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/tags/v0.4.0/manifests"}]},"repo_metadata_updated_at":"2025-10-30T17:54:39.697Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/ibpsa/project1-boptest-gym","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ibpsa/project1-boptest-gym","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ibpsa/project1-boptest-gym","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ibpsa/project1-boptest-gym/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-29T02:54:30.522Z","issues_count":91,"pull_requests_count":82,"avg_time_to_close_issue":6833714.014285714,"avg_time_to_close_pull_request":226535.70512820513,"issues_closed_count":70,"pull_requests_closed_count":78,"pull_request_authors_count":6,"issue_authors_count":12,"avg_comments_per_issue":0.4835164835164835,"avg_comments_per_pull_request":0.2926829268292683,"merged_pull_requests_count":72,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":905823.0,"past_year_avg_time_to_close_pull_request":1200340.0,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.4,"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":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/issues","maintainers":[{"login":"dhblum","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dhblum"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fibpsa%2Fproject1-boptest-gym/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2180427,"maintainers_count":0,"namespaces_count":792747,"keywords_count":113213,"github":"golang","metadata":{"funded_packages_count":53976},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-06-10T05:03:23.672Z","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"}}],"commits":{"id":1254066,"full_name":"ibpsa/project1-boptest-gym","default_branch":"master","total_commits":560,"total_committers":5,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":112.0,"dds":0.17500000000000004,"past_year_total_commits":3,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":3.0,"past_year_dds":0.0,"last_synced_at":"2026-06-17T08:02:03.303Z","last_synced_commit":"45d73001135b136777f159d6b9407081059b41b6","created_at":"2023-03-27T10:58:01.825Z","updated_at":"2026-06-17T08:01:44.114Z","committers":[{"name":"Javier Arroyo","email":"javier.arroyo@kuleuven.be","login":"JavierArroyoBastida","count":462},{"name":"Javier Arroyo","email":"javier.arroyo@dnergy.com","login":"javiarrobas","count":88},{"name":"Aniket Dixit","email":"34195159+IamAniket12","login":"IamAniket12","count":7},{"name":"XiangweiW","email":"517395458@qq.com","login":"XiangweiW","count":2},{"name":"Michael Wetter","email":"mwetter@lbl.gov","login":"mwetter","count":1}],"past_year_committers":[{"name":"Javier Arroyo","email":"javier.arroyo@wedoco.io","login":"javiarrobas","count":3}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-19T00:00:07.604Z","repositories_count":6263782,"commits_count":875002081,"contributors_count":35073099,"owners_count":1168677,"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":"ibpsa/project1-boptest-gym","html_url":"https://github.com/ibpsa/project1-boptest-gym","last_synced_at":"2026-04-04T21:00:35.250Z","status":"error","issues_count":91,"pull_requests_count":82,"avg_time_to_close_issue":6833714.014285714,"avg_time_to_close_pull_request":264268.6582278481,"issues_closed_count":70,"pull_requests_closed_count":79,"pull_request_authors_count":6,"issue_authors_count":12,"avg_comments_per_issue":0.4835164835164835,"avg_comments_per_pull_request":0.2926829268292683,"merged_pull_requests_count":72,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":905823.0,"past_year_avg_time_to_close_pull_request":1702114.75,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.4,"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":3,"created_at":"2023-05-09T10:46:27.283Z","updated_at":"2026-04-04T21:00:35.250Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibpsa%2Fproject1-boptest-gym/issues","issue_labels_count":{"enhancement":4,"good first issue":3,"bug":1,"wontfix":1},"pull_request_labels_count":{},"issue_author_associations_count":{"CONTRIBUTOR":76,"NONE":13,"COLLABORATOR":2},"pull_request_author_associations_count":{"CONTRIBUTOR":77,"NONE":5},"issue_authors":{"JavierArroyoBastida":68,"javiarrobas":8,"ozanbarism":4,"IamAniket12":2,"dhblum":2,"seb0908":1,"billtubbs":1,"vadim0x60":1,"irmakakyeli":1,"kevin-vanvaerenbergh":1,"alexandrecuer":1,"SebsCubs":1},"pull_request_authors":{"JavierArroyoBastida":59,"javiarrobas":15,"IamAniket12":4,"XiangweiW":2,"JanMarcoRuizdeVargas":1,"Learner0x5a":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-13T00:00:21.539Z","repositories_count":14796018,"issues_count":33223120,"pull_requests_count":109569903,"authors_count":11303758,"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":4},"past_year_pull_request_author_associations_count":{"NONE":1},"past_year_issue_authors":{"ozanbarism":3,"SebsCubs":1},"past_year_pull_request_authors":{"JanMarcoRuizdeVargas":1},"maintainers":[{"login":"dhblum","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dhblum"}],"active_maintainers":[]},"events":{"total":{"ReleaseEvent":2,"PullRequestEvent":4,"IssuesEvent":7,"WatchEvent":12,"IssueCommentEvent":2,"PushEvent":21,"CreateEvent":1},"last_year":{"ReleaseEvent":1,"WatchEvent":3,"IssueCommentEvent":1,"PushEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/github-actions.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:20:05.290Z","updated_at":"2023-09-21T19:20:05.290Z","repository_link":"https://github.com/ibpsa/project1-boptest-gym/blob/master/.github/workflows/github-actions.yml","dependencies":[{"id":13856598473,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"testing/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:20:05.594Z","updated_at":"2023-09-21T19:20:05.594Z","repository_link":"https://github.com/ibpsa/project1-boptest-gym/blob/master/testing/Dockerfile","dependencies":[{"id":13856598474,"package_name":"ubuntu","ecosystem":"docker","requirements":"20.04","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:20:05.934Z","updated_at":"2023-09-21T19:20:05.934Z","repository_link":"https://github.com/ibpsa/project1-boptest-gym/blob/master/environment.yml","dependencies":[{"id":13856598480,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==2.2.1","direct":true,"kind":"runtime","optional":false},{"id":13856598481,"package_name":"cmake","ecosystem":"pypi","requirements":"==3.26.4","direct":true,"kind":"runtime","optional":false},{"id":13856598482,"package_name":"contourpy","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856598483,"package_name":"cycler","ecosystem":"pypi","requirements":"==0.11.0","direct":true,"kind":"runtime","optional":false},{"id":13856598484,"package_name":"farama-notifications","ecosystem":"pypi","requirements":"==0.0.4","direct":true,"kind":"runtime","optional":false},{"id":13856598485,"package_name":"filelock","ecosystem":"pypi","requirements":"==3.12.2","direct":true,"kind":"runtime","optional":false},{"id":13856598486,"package_name":"fonttools","ecosystem":"pypi","requirements":"==4.40.0","direct":true,"kind":"runtime","optional":false},{"id":13856598487,"package_name":"gym","ecosystem":"pypi","requirements":"==0.26.2","direct":true,"kind":"runtime","optional":false},{"id":13856598488,"package_name":"gym-notices","ecosystem":"pypi","requirements":"==0.0.8","direct":true,"kind":"runtime","optional":false},{"id":13856598489,"package_name":"gymnasium","ecosystem":"pypi","requirements":"==0.28.1","direct":true,"kind":"runtime","optional":false},{"id":13856598490,"package_name":"jax-jumpy","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856598491,"package_name":"jinja2","ecosystem":"pypi","requirements":"==3.1.2","direct":true,"kind":"runtime","optional":false},{"id":13856598492,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"==1.4.4","direct":true,"kind":"runtime","optional":false},{"id":13856598493,"package_name":"lit","ecosystem":"pypi","requirements":"==16.0.6","direct":true,"kind":"runtime","optional":false},{"id":13856598494,"package_name":"markupsafe","ecosystem":"pypi","requirements":"==2.1.3","direct":true,"kind":"runtime","optional":false},{"id":13856598495,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.7.1","direct":true,"kind":"runtime","optional":false},{"id":13856598496,"package_name":"mpmath","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856598497,"package_name":"networkx","ecosystem":"pypi","requirements":"==3.1","direct":true,"kind":"runtime","optional":false},{"id":13856598498,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.25.0","direct":true,"kind":"runtime","optional":false},{"id":13856598499,"package_name":"nvidia-cublas-cu11","ecosystem":"pypi","requirements":"==11.10.3.66","direct":true,"kind":"runtime","optional":false},{"id":13856598500,"package_name":"nvidia-cuda-cupti-cu11","ecosystem":"pypi","requirements":"==11.7.101","direct":true,"kind":"runtime","optional":false},{"id":13856598501,"package_name":"nvidia-cuda-nvrtc-cu11","ecosystem":"pypi","requirements":"==11.7.99","direct":true,"kind":"runtime","optional":false},{"id":13856598502,"package_name":"nvidia-cuda-runtime-cu11","ecosystem":"pypi","requirements":"==11.7.99","direct":true,"kind":"runtime","optional":false},{"id":13856598503,"package_name":"nvidia-cudnn-cu11","ecosystem":"pypi","requirements":"==8.5.0.96","direct":true,"kind":"runtime","optional":false},{"id":13856598504,"package_name":"nvidia-cufft-cu11","ecosystem":"pypi","requirements":"==10.9.0.58","direct":true,"kind":"runtime","optional":false},{"id":13856598505,"package_name":"nvidia-curand-cu11","ecosystem":"pypi","requirements":"==10.2.10.91","direct":true,"kind":"runtime","optional":false},{"id":13856598506,"package_name":"nvidia-cusolver-cu11","ecosystem":"pypi","requirements":"==11.4.0.1","direct":true,"kind":"runtime","optional":false},{"id":13856598507,"package_name":"nvidia-cusparse-cu11","ecosystem":"pypi","requirements":"==11.7.4.91","direct":true,"kind":"runtime","optional":false},{"id":13856598508,"package_name":"nvidia-nccl-cu11","ecosystem":"pypi","requirements":"==2.14.3","direct":true,"kind":"runtime","optional":false},{"id":13856598509,"package_name":"nvidia-nvtx-cu11","ecosystem":"pypi","requirements":"==11.7.91","direct":true,"kind":"runtime","optional":false},{"id":13856598510,"package_name":"packaging","ecosystem":"pypi","requirements":"==23.1","direct":true,"kind":"runtime","optional":false},{"id":13856598511,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.0.3","direct":true,"kind":"runtime","optional":false},{"id":13856598512,"package_name":"pillow","ecosystem":"pypi","requirements":"==10.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856598513,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856598514,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":true,"kind":"runtime","optional":false},{"id":13856598515,"package_name":"pytz","ecosystem":"pypi","requirements":"==2023.3","direct":true,"kind":"runtime","optional":false},{"id":13856598516,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.11.1","direct":true,"kind":"runtime","optional":false},{"id":13856598517,"package_name":"shimmy","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856598518,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":true,"kind":"runtime","optional":false},{"id":13856598519,"package_name":"stable-baselines3","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856598520,"package_name":"sympy","ecosystem":"pypi","requirements":"==1.12","direct":true,"kind":"runtime","optional":false},{"id":13856598521,"package_name":"torch","ecosystem":"pypi","requirements":"==2.0.1","direct":true,"kind":"runtime","optional":false},{"id":13856598522,"package_name":"triton","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856598523,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"==4.7.1","direct":true,"kind":"runtime","optional":false},{"id":13856598524,"package_name":"tzdata","ecosystem":"pypi","requirements":"==2023.3","direct":true,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2023-09-11T14:52:09.219Z","updated_at":"2026-06-19T09:01:08.243Z","avatar_url":"https://github.com/ibpsa.png","language":"Python","category":"Consumption","sub_category":"Buildings and Heating","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# BOPTEST-Gym\r\n\r\nBOPTESTS-Gym is the [Gymnasium](https://gymnasium.farama.org/index.html) environment of the [BOPTEST](https://github.com/ibpsa/project1-boptest) framework. This repository accommodates the BOPTEST API to the Gymnasium standard in order to facilitate the implementation, assessment and benchmarking of reinforcement learning (RL) algorithms for their application in building energy management. RL algorithms from the [Stable-Baselines 3](https://github.com/DLR-RM/stable-baselines3) repository are used to exemplify and test this framework. \r\n\r\nThe environment is described in [this paper](https://www.researchgate.net/publication/354386346_An_OpenAI-Gym_environment_for_the_Building_Optimization_Testing_BOPTEST_framework). \r\n\r\n## Structure\r\n- `boptestGymEnv.py` contains the core functionality of this Gymnasium environment.\r\n- `environment.yml` contains the dependencies required to run this software. \r\n- `/examples` contains prototype code for the interaction of RL algorithms with an emulator building model from BOPTEST. \r\n- `/testing` contains code for testing this software. \r\n\r\n## Quick-Start\r\n\r\n1) Create an environment from the `environment.yml` file provided (instructions [here](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-from-an-environment-yml-file)). You can also see our Dockerfile in [testing/Dockerfile](testing/Dockerfile) that we use to define our testing environment. \r\n2) Run the example below that uses the [Bestest hydronic case with a heat-pump](https://github.com/ibpsa/project1-boptest/tree/master/testcases/bestest_hydronic_heat_pump) and the [DQN algorithm](https://stable-baselines3.readthedocs.io/en/master/modules/dqn.html) from Stable-Baselines: \r\n\r\n```python\r\nfrom boptestGymEnv import BoptestGymEnv, NormalizedObservationWrapper, DiscretizedActionWrapper\r\nfrom stable_baselines3 import DQN\r\n\r\n# url for the BOPTEST service. \r\nurl = 'https://api.boptest.net' \r\n\r\n# Decide the state-action space of your test case\r\nenv = BoptestGymEnv(\r\n        url                  = url,\r\n        testcase             = 'bestest_hydronic_heat_pump',\r\n        actions              = ['oveHeaPumY_u'],\r\n        observations         = {'time':(0,604800),\r\n                                'reaTZon_y':(280.,310.),\r\n                                'TDryBul':(265,303),\r\n                                'HDirNor':(0,862),\r\n                                'InternalGainsRad[1]':(0,219),\r\n                                'PriceElectricPowerHighlyDynamic':(-0.4,0.4),\r\n                                'LowerSetp[1]':(280.,310.),\r\n                                'UpperSetp[1]':(280.,310.)}, \r\n        predictive_period    = 24*3600, \r\n        regressive_period    = 6*3600, \r\n        random_start_time    = True,\r\n        max_episode_length   = 24*3600,\r\n        warmup_period        = 24*3600,\r\n        step_period          = 3600)\r\n\r\n# Normalize observations and discretize action space\r\nenv = NormalizedObservationWrapper(env)\r\nenv = DiscretizedActionWrapper(env,n_bins_act=10)\r\n\r\n# Instantiate an RL agent\r\nmodel = DQN('MlpPolicy', env, verbose=1, gamma=0.99,\r\n            learning_rate=5e-4, batch_size=24, \r\n            buffer_size=365*24, learning_starts=24, train_freq=1)\r\n\r\n# Main training loop\r\nmodel.learn(total_timesteps=10)\r\n\r\n# Loop for one episode of experience (one day)\r\ndone = False\r\nobs, _ = env.reset()\r\nwhile not done:\r\n  action, _ = model.predict(obs, deterministic=True) \r\n  obs,reward,terminated,truncated,info = env.step(action)\r\n  done = (terminated or truncated)\r\n\r\n# Obtain KPIs for evaluation\r\nenv.get_kpis()\r\n\r\n```\r\n\r\nIn [this tutorial](https://github.com/ibpsa/project1-boptest-gym/blob/master/docs/tutorials/CCAI_Summer_School_2022/Building_Control_with_RL_using_BOPTEST.ipynb) you can find more details on how to use BOPTEST-Gym and on RL applied to buildings in general. \r\n\r\n### Note 1: on running BOPTEST in the server vs. locally\r\nThe previous example interacts with BOPTEST in a server at `https://api.boptest.net` which is readily available anytime. Interacting with BOPTEST from this server requires less configuration effort but is slower because of the communication overhead between the agent and the test case running in the cloud. Use this approach when you want to quickly check out the functionality of this repository. \r\n\r\nIf you prioritize speed (which is usually the case when training RL agents), running BOPTEST locally is substantially faster. \r\nYou can do so by downloading the BOPTEST repository and running:\r\n```bash\r\ndocker compose up web worker provision\r\n\r\n```\r\n\r\nFurther details in the [BOPTEST GitHub page](https://github.com/ibpsa/project1-boptest/blob/master/README.md#quick-start-to-deploy-and-use-boptest-on-a-local-computer). \r\n\r\nThen you only need to change the `url` to point to your local BOPTEST service deployment instead of the remote server (`url = 'http://127.0.0.1').\r\n\r\n### Note 2: on running BOPTEST locally in a vectorized environment\r\n\r\nBOPTEST allows the deployment of multiple test case instances using Docker Compose. \r\nRunning a vectorized environment enables the deployment of as many BoptestGymEnv instances as cores you have available for the agent to learn from all of them in parallel. See [here](https://stable-baselines3.readthedocs.io/en/master/guide/vec_envs.html) for more information, we specifically use [`SubprocVecEnv`](https://stable-baselines3.readthedocs.io/en/master/guide/vec_envs.html#subprocvecenv). This can substantially speed up the training process. \r\n\r\nTo do so, deploy BOPTEST with multiple workers to spin multiple test cases. See the example below that prepares BOPTEST to spin two test cases.\r\n\r\n```bash\r\ndocker compose up --scale worker=2 web worker provision\r\n```\r\n\r\nThen you can train an RL agent with parallel learning with the vectorized BOPTEST-gym environment. See [`/examples/run_vectorized.py`](https://github.com/ibpsa/project1-boptest-gym/blob/master/examples/run_vectorized.py) for an example on how to do so. \r\n\r\n## Versioning and main dependencies\r\n\r\nCurrent BOPTEST-Gym version is `v0.8.0` which is compatible with BOPTEST `v0.8.0` \r\n(BOPTEST-Gym version should always be even with the BOPTEST version used). \r\nThe framework has been tested with `gymnasium==0.28.1` and `stable-baselines3==2.0.0`.\r\nYou can see [testing/Dockerfile](testing/Dockerfile) for a full description of the testing environment. \r\n\r\n## Citing the project\r\n\r\nPlease use the following reference if you used this repository for your research.\r\n\r\n```\r\n@inproceedings{boptestgym2021,\r\n\tauthor = {Javier Arroyo and Carlo Manna and Fred Spiessens and Lieve Helsen},\r\n\ttitle = {{An OpenAI-Gym environment for the Building Optimization Testing (BOPTEST) framework}},\r\n\tyear = {2021},\r\n\tmonth = {September},\r\n\tbooktitle = {Proceedings of the 17th IBPSA Conference},\r\n\taddress = {Bruges, Belgium},\r\n}\r\n\r\n```","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20042","html_url":"https://ost.ecosyste.ms/projects/20042"}