{"id":19954,"name":"rl-testbed-for-energyplus","description":"Reinforcement Learning Testbed for Power Consumption Optimization using EnergyPlus.","url":"https://github.com/IBM/rl-testbed-for-energyplus","last_synced_at":"2026-04-11T00:01:57.936Z","repository":{"id":34191011,"uuid":"143425665","full_name":"IBM/rl-testbed-for-energyplus","owner":"IBM","description":"Reinforcement Learning Testbed for Power Consumption Optimization using EnergyPlus","archived":false,"fork":false,"pushed_at":"2025-09-18T05:01:17.000Z","size":2563,"stargazers_count":215,"open_issues_count":28,"forks_count":81,"subscribers_count":20,"default_branch":"master","last_synced_at":"2026-04-04T21:42:58.661Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.txt","copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-03T12:38:06.000Z","updated_at":"2026-03-03T03:57:32.000Z","dependencies_parsed_at":"2023-09-21T19:15:47.516Z","dependency_job_id":"a17d9cb1-6839-4a51-ad55-89d06af13c8b","html_url":"https://github.com/IBM/rl-testbed-for-energyplus","commit_stats":{"total_commits":171,"total_committers":9,"mean_commits":19.0,"dds":"0.24561403508771928","last_synced_commit":"3e3fc48765bfeaa2ec92221906fefcc7ef955169"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IBM/rl-testbed-for-energyplus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/rl-testbed-for-energyplus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31556239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":"IBM","name":"International Business Machines","uuid":"1459110","kind":"organization","description":"","email":"awesome@ibm.com","website":"https://www.ibm.com/opensource/","location":"United States of America","twitter":"ibmdeveloper","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1459110?v=4","repositories_count":3152,"last_synced_at":"2025-06-08T23:01:58.602Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/IBM","funding_links":[],"total_stars":89278,"followers":6167,"following":0,"created_at":"2022-11-02T16:24:44.968Z","updated_at":"2025-06-08T23:01:58.602Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM/repositories"},"packages":[],"commits":{"id":1254010,"full_name":"IBM/rl-testbed-for-energyplus","default_branch":"master","total_commits":172,"total_committers":10,"total_bot_commits":7,"total_bot_committers":2,"mean_commits":17.2,"dds":0.25,"past_year_total_commits":1,"past_year_total_committers":1,"past_year_total_bot_commits":1,"past_year_total_bot_committers":1,"past_year_mean_commits":1.0,"past_year_dds":0.0,"last_synced_at":"2026-04-08T23:12:41.115Z","last_synced_commit":"7a8c1c0a22bbcdfb89cca71cb39366729d4f2cc6","created_at":"2023-03-27T10:50:27.681Z","updated_at":"2026-04-08T23:11:53.887Z","committers":[{"name":"antoine_galataud","email":"antoine@foobot.io","login":"antoine-galataud","count":129},{"name":"Takao Moriyama","email":"moriyama@jp.ibm.com","login":"takaomoriyama","count":21},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":6},{"name":"Julien Marrec","email":"julien.marrec@gmail.com","login":"jmarrec","count":6},{"name":"cclauss","email":"cclauss@bluewin.ch","login":null,"count":3},{"name":"Michiaki Tatsubori","email":"mich@acm.org","login":"tatsubori","count":2},{"name":"Darío Hereñú","email":"magallania@gmail.com","login":"kant","count":2},{"name":"ibm-mend-app[bot]","email":"142626574+ibm-mend-app[bot]","login":"ibm-mend-app[bot]","count":1},{"name":"ImgBotApp","email":"ImgBotHelp@gmail.com","login":"ImgBotApp","count":1},{"name":"Doug Davis","email":"dug@us.ibm.com","login":null,"count":1}],"past_year_committers":[{"name":"ibm-mend-app[bot]","email":"142626574+ibm-mend-app[bot]","login":"ibm-mend-app[bot]","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212712,"commits_count":906247759,"contributors_count":34967369,"owners_count":1143524,"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":"IBM/rl-testbed-for-energyplus","html_url":"https://github.com/IBM/rl-testbed-for-energyplus","last_synced_at":"2026-03-12T10:00:29.304Z","status":"error","issues_count":69,"pull_requests_count":57,"avg_time_to_close_issue":7896596.883720931,"avg_time_to_close_pull_request":4608640.117647059,"issues_closed_count":43,"pull_requests_closed_count":51,"pull_request_authors_count":11,"issue_authors_count":37,"avg_comments_per_issue":2.898550724637681,"avg_comments_per_pull_request":0.543859649122807,"merged_pull_requests_count":44,"bot_issues_count":0,"bot_pull_requests_count":19,"past_year_issues_count":2,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"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":4,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:58:55.681Z","updated_at":"2026-03-12T10:00:29.305Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Frl-testbed-for-energyplus/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":14},"issue_author_associations_count":{"NONE":56,"COLLABORATOR":9,"MEMBER":4},"pull_request_author_associations_count":{"COLLABORATOR":29,"CONTRIBUTOR":19,"NONE":6,"MEMBER":3},"issue_authors":{"antoine-galataud":9,"yashviagrawal":6,"khoderj":5,"takaomoriyama":4,"xiaonanchong":4,"WynnCJF":3,"minjeong-sim":3,"revathij":2,"ZHANG-QINGANG":2,"myndtrust":2,"abhishm":2,"luckypipitao":2,"vermouth1992":1,"RuihangWang":1,"FrancisBases":1,"Learner0x5a":1,"Anncastle":1,"JunPyoL22":1,"rajeevraibhatia":1,"Skywuuuu":1,"Ujwal2910":1,"flag2freefish":1,"prsi7":1,"LILIABOUKHIMA":1,"JerelynCo":1,"Ryan-Johnson-1315":1,"justintiger":1,"hyyyjie":1,"paradox-jiatong":1,"connorvr":1,"Paopasatiht":1,"Ygrapefruit":1,"DDDOH":1,"OnedgeLee":1,"maxvfischer":1,"asrjy":1,"Arannnn":1},"pull_request_authors":{"antoine-galataud":28,"dependabot[bot]":14,"takaomoriyama":3,"kant":2,"jmarrec":2,"ibm-mend-app[bot]":2,"renovate[bot]":2,"cclauss":1,"imgbot[bot]":1,"tatsubori":1,"rogeramy":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14194449,"issues_count":34644081,"pull_requests_count":113248248,"authors_count":11231990,"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":{"NONE":4},"past_year_issue_authors":{"LILIABOUKHIMA":1},"past_year_pull_request_authors":{"ibm-mend-app[bot]":2,"renovate[bot]":2},"maintainers":[{"login":"antoine-galataud","count":37,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/antoine-galataud"},{"login":"takaomoriyama","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/takaomoriyama"},{"login":"tatsubori","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tatsubori"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":1,"PullRequestEvent":2,"ForkEvent":2,"IssuesEvent":2,"WatchEvent":27,"IssueCommentEvent":2,"PushEvent":2,"CreateEvent":2},"last_year":{"DeleteEvent":1,"PullRequestEvent":2,"IssuesEvent":1,"WatchEvent":12,"IssueCommentEvent":1,"PushEvent":2,"CreateEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2023-01-15T05:15:46.372Z","updated_at":"2023-01-15T05:15:46.372Z","repository_link":"https://github.com/IBM/rl-testbed-for-energyplus/blob/master/.github/workflows/test.yml","dependencies":[{"id":6915996010,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6915996011,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"docker/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-01-15T05:15:46.510Z","updated_at":"2023-01-15T05:15:46.510Z","repository_link":"https://github.com/IBM/rl-testbed-for-energyplus/blob/master/docker/Dockerfile","dependencies":[{"id":6915996053,"package_name":"ubuntu","ecosystem":"docker","requirements":"20.04","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"requirements/baselines.txt","sha":null,"kind":"manifest","created_at":"2023-01-15T05:15:46.668Z","updated_at":"2023-01-15T05:15:46.668Z","repository_link":"https://github.com/IBM/rl-testbed-for-energyplus/blob/master/requirements/baselines.txt","dependencies":[{"id":6915996543,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.19.5","direct":true,"kind":"runtime","optional":false},{"id":6915996544,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.0.3","direct":true,"kind":"runtime","optional":false},{"id":6915996545,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.8.0","direct":true,"kind":"runtime","optional":false},{"id":6915996546,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.2.1","direct":true,"kind":"runtime","optional":false},{"id":6915996547,"package_name":"gym","ecosystem":"pypi","requirements":"==0.15.7","direct":true,"kind":"runtime","optional":false},{"id":6915996548,"package_name":"tensorflow","ecosystem":"pypi","requirements":"==2.7.2","direct":true,"kind":"runtime","optional":false},{"id":6915996549,"package_name":"mpi4py","ecosystem":"pypi","requirements":"==3.1.3","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements/ray.txt","sha":null,"kind":"manifest","created_at":"2023-01-15T05:15:46.731Z","updated_at":"2023-01-15T05:15:46.731Z","repository_link":"https://github.com/IBM/rl-testbed-for-energyplus/blob/master/requirements/ray.txt","dependencies":[{"id":6915996708,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.19.5","direct":true,"kind":"runtime","optional":false},{"id":6915996709,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.0.3","direct":true,"kind":"runtime","optional":false},{"id":6915996710,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.8.0","direct":true,"kind":"runtime","optional":false},{"id":6915996711,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.2.1","direct":true,"kind":"runtime","optional":false},{"id":6915996712,"package_name":"tensorflow","ecosystem":"pypi","requirements":"==2.7.2","direct":true,"kind":"runtime","optional":false},{"id":6915996713,"package_name":"gym","ecosystem":"pypi","requirements":"==0.21.0","direct":true,"kind":"runtime","optional":false},{"id":6915996714,"package_name":"ray","ecosystem":"pypi","requirements":"==1.12.1","direct":true,"kind":"runtime","optional":false},{"id":6915996715,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":7.795646536334594,"created_at":"2023-09-11T14:52:08.488Z","updated_at":"2026-04-11T00:01:57.938Z","avatar_url":"https://github.com/IBM.png","language":"Python","category":"Energy Systems","sub_category":"Energy System Modeling Frameworks","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"[![unit tests](https://github.com/IBM/rl-testbed-for-energyplus/actions/workflows/test.yml/badge.svg)](https://github.com/IBM/rl-testbed-for-energyplus/actions/workflows/test.yml)\n\n# Project Description\nReinforcement Learning Testbed for Power Consumption Optimization.\n\n## Contributing to the project\nWe welcome contributions to this project in many forms. There's always plenty to do! Full details of how to contribute to this project are documented in the [CONTRIBUTING.md](CONTRIBUTING.md) file.\n\n## Maintainers\nThe project's [maintainers](MAINTAINERS.txt): are responsible for reviewing and merging all pull requests and they guide the over-all technical direction of the project.\n\n## Supported platforms\n\nWe have tested on the following platforms.\n- macOS High Sierra (Version 10.13.6)\n- macOS Catalina (Version 10.15.3)\n- Ubuntu 20.04 LTS\n\n## Installation\n\n### Docker\n\nThe easiest way to setup a training environment is to use the docker image. See instructions [here](docker/README.md).\nFor manual installation, see below.\n\n### Building from source\n\nInstallation of rl-testbed-for-energyplus consists of three parts:\n\n- Install EnergyPlus prebuilt package\n- Build patched EnergyPlus\n- Install built executables\n\n#### Install EnergyPlus prebuilt package\n\nFirst, download pre-built package of EnergyPlus and install it.\nThis is not for executing normal version of EnergyPlus, but to get some pre-compiled binaries and data files that can not be generated from source code.\n\nSupported EnergyPlus versions:\n\n|       | Linux                                                                                                                                                  | MacOS                                                                                                                                                      |\n|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 8.8.0 | [EnergyPlus-8.8.0-7c3bbe4830-Linux-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v8.8.0/EnergyPlus-8.8.0-7c3bbe4830-Linux-x86_64.sh) | [EnergyPlus-8.8.0-7c3bbe4830-Darwin-x86_64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v8.8.0/EnergyPlus-8.8.0-7c3bbe4830-Darwin-x86_64.dmg) |\n| 9.1.0 | [EnergyPlus-9.1.0-08d2e308bb-Linux-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v9.1.0/EnergyPlus-9.1.0-08d2e308bb-Linux-x86_64.sh) | [EnergyPlus-9.1.0-08d2e308bb-Darwin-x86_64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v9.1.0/EnergyPlus-9.1.0-08d2e308bb-Darwin-x86_64.dmg) |\n| 9.2.0 | [EnergyPlus-9.2.0-921312fa1d-Linux-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v9.2.0/EnergyPlus-9.2.0-921312fa1d-Linux-x86_64.sh) | [EnergyPlus-9.2.0-921312fa1d-Darwin-x86_64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v9.2.0/EnergyPlus-9.2.0-921312fa1d-Darwin-x86_64.dmg) |\n| 9.3.0 | [EnergyPlus-9.3.0-baff08990c-Linux-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v9.3.0/EnergyPlus-9.3.0-baff08990c-Linux-x86_64.sh) | [EnergyPlus-9.3.0-baff08990c-Darwin-x86_64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v9.3.0/EnergyPlus-9.3.0-baff08990c-Darwin-x86_64.dmg) |\n| 9.4.0 | [EnergyPlus-9.4.0-998c4b761e-Linux-Ubuntu20.04-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v9.4.0/EnergyPlus-9.4.0-998c4b761e-Linux-Ubuntu20.04-x86_64.sh) | [EnergyPlus-9.4.0-998c4b761e-Darwin-macOS10.15-x86_64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v9.4.0/EnergyPlus-9.4.0-998c4b761e-Darwin-macOS10.15-x86_64.dmg) |\n| 9.5.0 | [EnergyPlus-9.5.0-de239b2e5f-Linux-Ubuntu20.04-x86_64.sh](https://github.com/NREL/EnergyPlus/releases/download/v9.5.0/EnergyPlus-9.5.0-de239b2e5f-Linux-Ubuntu20.04-x86_64.sh) | [EnergyPlus-9.5.0-de239b2e5f-Darwin-macOS11.2-arm64.dmg](https://github.com/NREL/EnergyPlus/releases/download/v9.5.0/EnergyPlus-9.5.0-de239b2e5f-Darwin-macOS11.2-arm64.dmg) |\n\nand up to EnergyPlus 22.2.0. See `EnergyPlus` folder which provides a list of available patches.\n\nYou can also download the installer at https://github.com/NREL/EnergyPlus/releases/.\n\n##### Ubuntu\n\n1. Go to the web page shown above.\n2. Right click on relevant link in supported versions table and select `Save link As` to from the menu to download installation image.\n3. (9.1.0, Linux only) Apply patch on downloaded file (EnergyPlus 9.1.0 installation script unpacks in /usr/local instead of /usr/local/EnergyPlus-9.1.0)\n```\n$ cd \u003cDOWNLOAD-DIRECTORY\u003e\n$ patch -p0 \u003c rl-testbed-for-energyplus/EnergyPlus/EnergyPlus-9.1.0-08d2e308bb-Linux-x86_64.sh.patch\n```\n4. Execute installation image. Below example is for EnergyPlus 9.1.0\n```\n$ sudo bash \u003cDOWNLOAD-DIRECTORY\u003e/EnergyPlus-9.1.0-08d2e308bb-Linux-x86_64.sh\n```\n\nEnter your admin password if required.\nSpecify `/usr/local` for install directory.\nRespond with `/usr/local/bin` if asked for symbolic link location.\nThe package will be installed at `/usr/local/EnergyPlus-\u003cEPLUS_VERSION\u003e`.\n\n##### macOS\n\n1. Go to the web page shown above.\n2. Right click in supported versions table and select `Save link As` to from the menu to download installation image.\n3. Double click the downloaded package, and follow the instructions.\nThe package will be installed in `/Applications/EnergyPlus-\u003cEPLUS_VERSION\u003e`.\n\n#### Build patched EnergyPlus\n\nDownload source code of EnergyPlus and rl-testbed-for-energyplus. In below scripted lines, replace `\u003cEPLUS_VERSION\u003e`\nby the one you're using (for instance, `9.3.0`)\n\n```\n$ cd \u003cWORKING-DIRECTORY\u003e\n$ git clone -b v\u003cEPLUS_VERSION\u003e git@github.com:NREL/EnergyPlus.git\n$ git clone git@github.com:ibm/rl-testbed-for-energyplus.git\n```\n\nApply patch to EnergyPlus and build. Replace `\u003cEPLUS_VERSION\u003e`\nby the one you're using (for instance, `9-3-0`)\n\n```\n$ cd \u003cWORKING-DIRECTORY\u003e/EnergyPlus\n$ patch -p1 \u003c ../rl-testbed-for-energyplus/EnergyPlus/RL-patch-for-EnergyPlus-\u003cEPLUS_VERSION\u003e.patch\n$ mkdir build\n$ cd build\n$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/EnergyPlus-\u003cEPLUS_VERSION\u003e ..    # Ubuntu case (please don't forget the two dots at the end)\n$ cmake -DCMAKE_INSTALL_PREFIX=/Applications/EnergyPlus-\u003cEPLUS_VERSION\u003e .. # macOS case (please don't forget the two dots at the end)\n$ make -j4\n```\n\n#### Install built executables\n\n```\n$ sudo make install\n```\n\n#### Install Python dependencies\n\nPython3 \u003e= 3.8 is required.\n\n###### OpenAI Baselines\n\n```\n$ pip3 install -r requirements/baselines.txt\n```\n\nMain dependencies:\n\n- tensorflow 2.5\n- baselines 0.1.6\n- gym 0.15.7\n\nNote on baselines dependency:\n\n- baselines 0.1.5 fails to install when MuJoCo can't be found. Reason why 0.1.6 is required (available from sources only)\n- if baselines 0.1.6 installation fails because TensorFlow is missing, install tensorflow manually first, then retry.\n\nFor more information on baselines requirements, see https://github.com/openai/baselines for details.\n\nOlder versions:\n\nTo run on Ubuntu 18.04, you'll need the following pip dependencies:\n\n```\nscipy==1.5.4\ntensorflow==1.15.4\n```\n\n###### Ray RLlib\n\n```\n$ pip3 install -r requirements/ray.txt\n```\n\n## How to run\n\n### Set up\n\nSome environment variables must be defined. `ENERGYPLUS_VERSION` must be adapted to your version.\n\nIn `$(HOME)/.bashrc`\n```\n# Specify the top directory\nTOP=\u003cDOWNLOAD-DIRECTORY\u003e/rl-testbed-for-energyplus\nexport PYTHONPATH=${PYTHONPATH}:${TOP}\n\nif [ `uname` == \"Darwin\" ]; then\n\tenergyplus_instdir=\"/Applications\"\nelse\n\tenergyplus_instdir=\"/usr/local\"\nfi\nENERGYPLUS_VERSION=\"8-8-0\"\n#ENERGYPLUS_VERSION=\"9-1-0\"\n#ENERGYPLUS_VERSION=\"9-2-0\"\n#ENERGYPLUS_VERSION=\"9-3-0\"\nENERGYPLUS_DIR=\"${energyplus_instdir}/EnergyPlus-${ENERGYPLUS_VERSION}\"\nWEATHER_DIR=\"${ENERGYPLUS_DIR}/WeatherData\"\nexport ENERGYPLUS=\"${ENERGYPLUS_DIR}/energyplus\"\nMODEL_DIR=\"${TOP}/EnergyPlus/Model-${ENERGYPLUS_VERSION}\"\n\n# Weather file.\n# Single weather file or multiple weather files separated by comma character.\nexport ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw\"\n#export ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_CO_Golden-NREL.724666_TMY3.epw\"\n#export ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_FL_Tampa.Intl.AP.722110_TMY3.epw\"\n#export ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw\"\n#export ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_VA_Sterling-Washington.Dulles.Intl.AP.724030_TMY3.epw\"\n#export ENERGYPLUS_WEATHER=\"${WEATHER_DIR}/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw,${WEATHER_DIR}/USA_CO_Golden-NREL.724666_TMY3.epw,${WEATHER_DIR}/USA_FL_Tampa.Intl.AP.722110_TMY3.epw\"\n\n# Ouput directory \"openai-YYYY-MM-DD-HH-MM-SS-mmmmmm\" is created in\n# the directory specified by ENERGYPLUS_LOGBASE or in the current directory if not specified.\nexport ENERGYPLUS_LOGBASE=\"${HOME}/eplog\"\n\n# Model file. Uncomment one.\n#export ENERGYPLUS_MODEL=\"${MODEL_DIR}/2ZoneDataCenterHVAC_wEconomizer_Temp.idf\"     # Temp. setpoint control\nexport ENERGYPLUS_MODEL=\"${MODEL_DIR}/2ZoneDataCenterHVAC_wEconomizer_Temp_Fan.idf\" # Temp. setpoint and fan control\n\n# Run command (example)\n# $ time python3 -m baselines_energyplus.trpo_mpi.run_energyplus --num-timesteps 1000000000\n\n# Monitoring (example)\n# $ python3 -m common.plot_energyplus\n```\n\n### Running\n\nSimulation process starts by the following command. The only applicable option is `--num-timesteps`\n\n#### OpenAI Baselines\n\n```\n$ time python3 -m baselines_energyplus.trpo_mpi.run_energyplus --num-timesteps 1000000000\n```\n\n#### Ray RLlib\n\n```\n$ time python3 -m ray_energyplus.ppo.run_energyplus --num-timesteps 1000000000\n```\n\nOutput files are generated under the directory `${ENERGYPLUS_LOGBASE}/openai-YYYY-MM-DD-HH-MM-SS-mmmmmm`. These include:\n- log.txt       Log file generated by baselines Logger.\n- progress.csv  Log file generated by baselines Logger.\n- output/episode-NNNNNNNN/ Episode data\n\nEpsiode data contains the following files:\n- 2ZoneDataCenterHVAC_wEconomizer_Temp_Fan.idf  A copy of model file used in the simulation of the episode\n- USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw  A copy of weather file used in the simulation of the episode\n- eplusout.csv.gz                               Simulation result in CSV format\n- eplusout.err                                  Error message. You need make sure that there are no Severe errors\n- eplusout.htm                                  Human readable report file\n\n### Monitoring\n\nYou can monitor the progress of the simulation using plot_energyplus utility.\n\n```\n$ python3 -m common.plot_energyplus\nOptions:\n- -l \u003clog_dir\u003e    Specify log directory (usually openai-YYYY-MM-DD-HH-MM-SS-mmmmmm)\n- -c \u003ccsv_file\u003e   Specify single CSV file to view\n- -d              Dump every timestep in CSV file (dump_timesteps.csv)\n- -D              Dump episodes in CSV file (dump_episodes.dat)\n```\n\nIf neither `-l` nor `-c` option is specified, plot_energyplus tries to open the latest directory under `${ENERGYPLUS_LOG}` directory.\nIf none of `-d` or `-D` is specified, the progress windows is opened.\n\n![EnergyPlus monitor](/images/energyplus_plot.png)\n\nSeveral graphs are shown.\n1. Zone temperature and outdoor temperature\n2. West zone return air temperature and west zone setpoint temperature\n3. Mixed air, fan, and DEC outlet temperatures\n4. IEC, CW, DEC outlet temperatures\n5. Electric demand power (whole building, facility, HVAC)\n6. Reward\n\nOnly the current episode is shown in the graph 1 to 5. The current episode is specified by pushing one of \"First\", \"Prev\", \"Next\", or\n\"Last\" button, or directly clicking the appropriate point on the episode bar at the bottom.\nIf you're at the last episode, the current episode moves automatically to the latest one as new episode is completed.\n\nNote: The reward value shown in the graph 6 is retrieved from \"progress.csv\" file generated by TRPO baseline, which is not\nnecessarily same as the reward value computed by our reward function.\n\nYou can pan or zoom each graph by entering pan/zoom mode by clicking cross-arrows on the bottom left of the window.\n\nWhen new episode is shown on the window, some statistical information is show as follow:\n\n```\nepisode 362\nread_episode: file=/home/moriyama/eplog/openai-2018-07-04-10-48-46-712881/output/episode-00000362/eplusout.csv.gz\nReward                    ave= 0.77, min= 0.40, max= 1.33, std= 0.22\nwestzone_temp             ave=22.93, min=21.96, max=23.37, std= 0.19\neastzone_temp             ave=22.94, min=22.10, max=23.51, std= 0.17\nPower consumption         ave=102,243.47, min=65,428.31, max=135,956.47, std=18,264.50\npue                       ave= 1.27, min= 1.02, max= 1.63, std= 0.13\nwestzone_temp distribution\n    degree 0.0-0.9 0.0   0.1   0.2   0.3   0.4   0.5   0.6   0.7   0.8   0.9\n    -------------------------------------------------------------------------\n    18.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    19.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    20.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    21.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    22.0C 50.8%    0.0%  0.1%  0.7%  3.4%  5.6%  2.2%  0.7%  1.0%  0.9% 36.4%\n    23.0C 49.2%   49.0%  0.2%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    24.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    25.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    26.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n    27.0C  0.0%    0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%  0.0%\n```\nThe reward value shown above is computed by applying reward function to the simulation result.\n\n## License \u003ca name=\"license\"\u003e\u003c/a\u003e\nThe Reinforcement Learning Testbed for Power Consumption Optimization Project uses the [MIT License](LICENSE) software license.\n\n## How to cite\nFor citing the use or extension of this testbed, you may cite our paper at AsiaSim 2018, which can be found at [Springer](https://link.springer.com/chapter/10.1007/978-981-13-2853-4_4) or as a slightly revised version at [Arxiv](https://arxiv.org/abs/1808.10427).  You may use the following BibTeX entry:\n```\n@InProceedings{10.1007/978-981-13-2853-4_4,\nauthor=\"Moriyama, Takao and De Magistris, Giovanni and Tatsubori, Michiaki and Pham, Tu-Hoa and Munawar, Asim and Tachibana, Ryuki\",\ntitle=\"Reinforcement Learning Testbed for Power-Consumption Optimization\",\nbooktitle=\"Methods and Applications for Modeling and Simulation of Complex Systems\",\nyear=\"2018\",\npublisher=\"Springer Singapore\",\naddress=\"Singapore\",\npages=\"45--59\",\nisbn=\"978-981-13-2853-4\"\n}\n```\n\n## Related information\n- A pre-print version of AsiaSim2018 paper on arXiv: https://arxiv.org/abs/1808.10427\n- EnergyPlus: https://github.com/NREL/EnergyPlus\n- OpenAI Gym: https://github.com/OpenAI/gym\n- OpenAI Baselines: https://github.com/OpenAI/baselines\n- Ray: https://github.com/ray-project/ray\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["transforms","archiving","projection","convolutional-neural-networks","jekyll-theme","measur","deep-neural-networks","virtual","optimize","observation"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19954","html_url":"https://ost.ecosyste.ms/projects/19954"}