Package: gym-anm
Gym-ANMgym-anmis a framework for designing reinforcement learning (RL) environments that model Active Network
Management (ANM) tasks in electricity distribution networks. It is built on top of theOpenAI Gymtoolkit.Thegym-anmframework was designed with one goal in mind:bridge the gap between research in RL and in
the management of power systems. We attempt to do this by providing RL researchers with an easy-to-work-with
library of environments that model decision-making tasks in power grids.Papers:Gym-ANM: Reinforcement Learning Environments for Active Network Management Tasks in Electricity Distribution SystemsGym-ANM: Open-source software to leverage reinforcement learning for power system management in research and educationKey featuresVery little background in electricity systems modelling it required. This makesgym-anman ideal starting point
for RL students and researchers looking to enter the field.The environments (tasks) generated bygym-anmfollow theOpenAI Gymframework, with which a large part of the RL community is already familiar.The flexibility ofgym-anm, with its different customizable components, makes it a suitable framework
to model a wide range of ANM tasks, from simple ones that can be used for educational purposes, to complex ones
designed to conduct advanced research.DocumentationDocumentation is provided online athttps://gym-anm.readthedocs.io/en/latest/.InstallationRequirementsgym-anmrequires Python 3.8+ and can run on Linux, MaxOS, and Windows. Some rendering features may not work properly
on Windows (not tested).We recommend installinggym-anmin a Python environment (e.g.,virtualenvorconda).Using pipUsing pip (preferably after activating your virtual environment):pip install gym-anmBuilding from sourceAlternatively, you can buildgym-anmdirectly from source:git clone https://github.com/robinhenry/gym-anm.git
cd gym-anm
pip install -e .ExampleThe following code snippet illustrates howgym-anmenvironments can be used. In this example,
actions are randomly sampled from the action space of the environmentANM6Easy-v0. For more information
about the agent-environment interface, see the officialOpenAI Gym documentation.import gym
import time

def run():
   env = gym.make('gym_anm:ANM6Easy-v0')
   o = env.reset()

   for i in range(100):
       a = env.action_space.sample()
       o, r, done, info = env.step(a)
       env.render()
       time.sleep(0.5)  # otherwise the rendering is too fast for the human eye.

   env.close()

if __name__ == '__main__':
    run()The above code would render the environment in your default web browser as shown in the image below:Additional example scripts can be found inexamples/.Testing the installationAll unit tests ingym-anmcan be ran from the project root directory with:python -m pytest testsContributingContributions are always welcome! Please read thecontribution guidelinesfirst.Citing the projectAll publications derived from the use ofgym-anmshould cite the following two 2021 papers:@article{HENRY2021100092,
    title = {Gym-ANM: Reinforcement learning environments for active network management tasks in electricity distribution systems},
    journal = {Energy and AI},
    volume = {5},
    pages = {100092},
    year = {2021},
    issn = {2666-5468},
    doi = {https://doi.org/10.1016/j.egyai.2021.100092},
    author = {Robin Henry and Damien Ernst},
}@article{HENRY2021100092,
    title = {Gym-ANM: Open-source software to leverage reinforcement learning for power system management in research and education},
    journal = {Software Impacts},
    volume = {9},
    pages = {100092},
    year = {2021},
    issn = {2665-9638},
    doi = {https://doi.org/10.1016/j.simpa.2021.100092},
    author = {Robin Henry and Damien Ernst}
}Maintainersgym-anmis currently maintained byRobin Henry.LicenseThis project is licensed under the MIT License - see theLICENSE.mdfile for details.