├── .github └── workflows │ ├── codeql-analysis.yml │ └── main.yml ├── .gitignore ├── LICENSE ├── README.md ├── examples ├── README.md ├── envs │ ├── building.ipynb │ ├── energy-storage.ipynb │ ├── ev-charging.ipynb │ ├── multi-component-building.ipynb │ ├── multiagent-heterogeneous.ipynb │ ├── multiagent-list-interface-wrapper.ipynb │ ├── multiagent-multi-component.ipynb │ ├── multiagent-single-component.ipynb │ └── pv.ipynb └── marl │ ├── openai │ ├── .gitignore │ ├── README.md │ └── train.py │ └── rllib │ ├── .gitignore │ ├── README.md │ ├── heterogeneous │ ├── README.md │ ├── args.py │ ├── train.py │ └── train.sh │ └── requirements.txt ├── gridworld ├── __init__.py ├── agents │ ├── __init__.py │ ├── buildings │ │ ├── __init__.py │ │ ├── data │ │ │ ├── exogenous_data.csv │ │ │ └── state_space_model.p │ │ ├── defaults.py │ │ ├── five_zone_rom_dynamics.py │ │ ├── five_zone_rom_env.py │ │ └── obs_space.py │ ├── energy_storage │ │ ├── __init__.py │ │ └── energy_storage_env.py │ ├── pv │ │ ├── __init__.py │ │ ├── profiles │ │ │ ├── constant.csv │ │ │ ├── off-peak.csv │ │ │ └── pv_profile.csv │ │ └── pv_profile_env.py │ └── vehicles │ │ ├── __init__.py │ │ ├── ev_charging_env.py │ │ └── vehicles.csv ├── base.py ├── distribution_system │ ├── __init__.py │ ├── data │ │ └── ieee_13_dss │ │ │ ├── IEEE13Node_BusXY.csv │ │ │ ├── IEEE13Nodeckt.dss │ │ │ ├── IEEELineCodes.dss │ │ │ └── annual_hourly_load_profile.csv │ ├── opendss.py │ └── powerflow.py ├── log.py ├── multiagent_env.py ├── multiagent_list_interface_env.py ├── scenarios │ ├── __init__.py │ ├── buildings.py │ └── heterogeneous.py └── utils.py ├── paper ├── fig2 │ ├── README.md │ ├── fig2.png │ ├── paper_results │ │ └── learning_curves │ │ │ ├── default_experiment_agrewards.pkl │ │ │ ├── default_experiment_ploss.pkl │ │ │ ├── default_experiment_qloss.pkl │ │ │ ├── default_experiment_rewards.pkl │ │ │ └── default_experiment_vvio.pkl │ └── plot_learning_curves.py └── fig3 │ ├── README.md │ ├── args.py │ ├── fig3.png │ ├── plots.ipynb │ ├── ray_results │ └── PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17 │ │ ├── .gitignore │ │ ├── params.json │ │ └── progress.csv │ └── train.py ├── pyproject.toml ├── setup.py └── tests ├── README.md ├── __init__.py ├── agents ├── __init__.py ├── conftest.py ├── test_building.py ├── test_energy_storage.py ├── test_ev_charging.py └── test_pv.py ├── conftest.py ├── distribution_system ├── conftest.py └── test_opendss.py ├── test_multiagent_env.py └── test_multicomponent_env.py /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/.github/workflows/codeql-analysis.yml -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/.github/workflows/main.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/README.md -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/README.md -------------------------------------------------------------------------------- /examples/envs/building.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/building.ipynb -------------------------------------------------------------------------------- /examples/envs/energy-storage.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/energy-storage.ipynb -------------------------------------------------------------------------------- /examples/envs/ev-charging.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/ev-charging.ipynb -------------------------------------------------------------------------------- /examples/envs/multi-component-building.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/multi-component-building.ipynb -------------------------------------------------------------------------------- /examples/envs/multiagent-heterogeneous.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/multiagent-heterogeneous.ipynb -------------------------------------------------------------------------------- /examples/envs/multiagent-list-interface-wrapper.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/multiagent-list-interface-wrapper.ipynb -------------------------------------------------------------------------------- /examples/envs/multiagent-multi-component.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/multiagent-multi-component.ipynb -------------------------------------------------------------------------------- /examples/envs/multiagent-single-component.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/multiagent-single-component.ipynb -------------------------------------------------------------------------------- /examples/envs/pv.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/envs/pv.ipynb -------------------------------------------------------------------------------- /examples/marl/openai/.gitignore: -------------------------------------------------------------------------------- 1 | maddpg 2 | trained_policy_gridworld 3 | 4 | -------------------------------------------------------------------------------- /examples/marl/openai/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/openai/README.md -------------------------------------------------------------------------------- /examples/marl/openai/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/openai/train.py -------------------------------------------------------------------------------- /examples/marl/rllib/.gitignore: -------------------------------------------------------------------------------- 1 | *.sh 2 | 3 | -------------------------------------------------------------------------------- /examples/marl/rllib/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/README.md -------------------------------------------------------------------------------- /examples/marl/rllib/heterogeneous/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/heterogeneous/README.md -------------------------------------------------------------------------------- /examples/marl/rllib/heterogeneous/args.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/heterogeneous/args.py -------------------------------------------------------------------------------- /examples/marl/rllib/heterogeneous/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/heterogeneous/train.py -------------------------------------------------------------------------------- /examples/marl/rllib/heterogeneous/train.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/heterogeneous/train.sh -------------------------------------------------------------------------------- /examples/marl/rllib/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/examples/marl/rllib/requirements.txt -------------------------------------------------------------------------------- /gridworld/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/__init__.py -------------------------------------------------------------------------------- /gridworld/agents/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gridworld/agents/buildings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/__init__.py -------------------------------------------------------------------------------- /gridworld/agents/buildings/data/exogenous_data.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/data/exogenous_data.csv -------------------------------------------------------------------------------- /gridworld/agents/buildings/data/state_space_model.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/data/state_space_model.p -------------------------------------------------------------------------------- /gridworld/agents/buildings/defaults.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/defaults.py -------------------------------------------------------------------------------- /gridworld/agents/buildings/five_zone_rom_dynamics.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/five_zone_rom_dynamics.py -------------------------------------------------------------------------------- /gridworld/agents/buildings/five_zone_rom_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/five_zone_rom_env.py -------------------------------------------------------------------------------- /gridworld/agents/buildings/obs_space.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/buildings/obs_space.py -------------------------------------------------------------------------------- /gridworld/agents/energy_storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/energy_storage/__init__.py -------------------------------------------------------------------------------- /gridworld/agents/energy_storage/energy_storage_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/energy_storage/energy_storage_env.py -------------------------------------------------------------------------------- /gridworld/agents/pv/__init__.py: -------------------------------------------------------------------------------- 1 | from .pv_profile_env import PVEnv 2 | -------------------------------------------------------------------------------- /gridworld/agents/pv/profiles/constant.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/pv/profiles/constant.csv -------------------------------------------------------------------------------- /gridworld/agents/pv/profiles/off-peak.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/pv/profiles/off-peak.csv -------------------------------------------------------------------------------- /gridworld/agents/pv/profiles/pv_profile.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/pv/profiles/pv_profile.csv -------------------------------------------------------------------------------- /gridworld/agents/pv/pv_profile_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/pv/pv_profile_env.py -------------------------------------------------------------------------------- /gridworld/agents/vehicles/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/vehicles/__init__.py -------------------------------------------------------------------------------- /gridworld/agents/vehicles/ev_charging_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/vehicles/ev_charging_env.py -------------------------------------------------------------------------------- /gridworld/agents/vehicles/vehicles.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/agents/vehicles/vehicles.csv -------------------------------------------------------------------------------- /gridworld/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/base.py -------------------------------------------------------------------------------- /gridworld/distribution_system/__init__.py: -------------------------------------------------------------------------------- 1 | from .opendss import OpenDSSSolver 2 | -------------------------------------------------------------------------------- /gridworld/distribution_system/data/ieee_13_dss/IEEE13Node_BusXY.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/data/ieee_13_dss/IEEE13Node_BusXY.csv -------------------------------------------------------------------------------- /gridworld/distribution_system/data/ieee_13_dss/IEEE13Nodeckt.dss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/data/ieee_13_dss/IEEE13Nodeckt.dss -------------------------------------------------------------------------------- /gridworld/distribution_system/data/ieee_13_dss/IEEELineCodes.dss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/data/ieee_13_dss/IEEELineCodes.dss -------------------------------------------------------------------------------- /gridworld/distribution_system/data/ieee_13_dss/annual_hourly_load_profile.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/data/ieee_13_dss/annual_hourly_load_profile.csv -------------------------------------------------------------------------------- /gridworld/distribution_system/opendss.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/opendss.py -------------------------------------------------------------------------------- /gridworld/distribution_system/powerflow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/distribution_system/powerflow.py -------------------------------------------------------------------------------- /gridworld/log.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/log.py -------------------------------------------------------------------------------- /gridworld/multiagent_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/multiagent_env.py -------------------------------------------------------------------------------- /gridworld/multiagent_list_interface_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/multiagent_list_interface_env.py -------------------------------------------------------------------------------- /gridworld/scenarios/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gridworld/scenarios/buildings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/scenarios/buildings.py -------------------------------------------------------------------------------- /gridworld/scenarios/heterogeneous.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/scenarios/heterogeneous.py -------------------------------------------------------------------------------- /gridworld/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/gridworld/utils.py -------------------------------------------------------------------------------- /paper/fig2/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/README.md -------------------------------------------------------------------------------- /paper/fig2/fig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/fig2.png -------------------------------------------------------------------------------- /paper/fig2/paper_results/learning_curves/default_experiment_agrewards.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/paper_results/learning_curves/default_experiment_agrewards.pkl -------------------------------------------------------------------------------- /paper/fig2/paper_results/learning_curves/default_experiment_ploss.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/paper_results/learning_curves/default_experiment_ploss.pkl -------------------------------------------------------------------------------- /paper/fig2/paper_results/learning_curves/default_experiment_qloss.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/paper_results/learning_curves/default_experiment_qloss.pkl -------------------------------------------------------------------------------- /paper/fig2/paper_results/learning_curves/default_experiment_rewards.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/paper_results/learning_curves/default_experiment_rewards.pkl -------------------------------------------------------------------------------- /paper/fig2/paper_results/learning_curves/default_experiment_vvio.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/paper_results/learning_curves/default_experiment_vvio.pkl -------------------------------------------------------------------------------- /paper/fig2/plot_learning_curves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig2/plot_learning_curves.py -------------------------------------------------------------------------------- /paper/fig3/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/README.md -------------------------------------------------------------------------------- /paper/fig3/args.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/args.py -------------------------------------------------------------------------------- /paper/fig3/fig3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/fig3.png -------------------------------------------------------------------------------- /paper/fig3/plots.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/plots.ipynb -------------------------------------------------------------------------------- /paper/fig3/ray_results/PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17/.gitignore: -------------------------------------------------------------------------------- 1 | checkpoint_* 2 | -------------------------------------------------------------------------------- /paper/fig3/ray_results/PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17/params.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/ray_results/PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17/params.json -------------------------------------------------------------------------------- /paper/fig3/ray_results/PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17/progress.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/ray_results/PPO_power-gridworld_b4178_00000_0_framework=torch_2021-11-02_20-28-17/progress.csv -------------------------------------------------------------------------------- /paper/fig3/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/paper/fig3/train.py -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/pyproject.toml -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/setup.py -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/README.md -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/agents/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/agents/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/agents/conftest.py -------------------------------------------------------------------------------- /tests/agents/test_building.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/agents/test_building.py -------------------------------------------------------------------------------- /tests/agents/test_energy_storage.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/agents/test_energy_storage.py -------------------------------------------------------------------------------- /tests/agents/test_ev_charging.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/agents/test_ev_charging.py -------------------------------------------------------------------------------- /tests/agents/test_pv.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/agents/test_pv.py -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/conftest.py -------------------------------------------------------------------------------- /tests/distribution_system/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/distribution_system/conftest.py -------------------------------------------------------------------------------- /tests/distribution_system/test_opendss.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/distribution_system/test_opendss.py -------------------------------------------------------------------------------- /tests/test_multiagent_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/test_multiagent_env.py -------------------------------------------------------------------------------- /tests/test_multicomponent_env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/PowerGridworld/HEAD/tests/test_multicomponent_env.py --------------------------------------------------------------------------------