{"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-05-24T20:30:19.343Z","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-05-15T16:05:33.534Z","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":33410345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","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":"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-05-21T19:03:45.463Z","created_at":"2025-06-05T11:14:35.268Z","updated_at":"2026-05-21T19:03:45.463Z","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":2147073,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","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-05-21T19:03:46.199Z","last_synced_commit":"45d73001135b136777f159d6b9407081059b41b6","created_at":"2023-03-27T10:58:01.825Z","updated_at":"2026-05-21T19:03:40.823Z","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-05-23T00:00:39.628Z","repositories_count":6239464,"commits_count":884336314,"contributors_count":34898114,"owners_count":1156510,"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-05-23T00:00:30.079Z","repositories_count":14677798,"issues_count":34093455,"pull_requests_count":111590396,"authors_count":11271589,"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":5},"past_year_pull_request_author_associations_count":{"NONE":1},"past_year_issue_authors":{"ozanbarism":4,"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-05-24T20:30:19.357Z","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"}