diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-10 03:47:02 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-10 03:47:02 +0000 |
commit | 84a5062c4be71c1bbaed7e31c6ce2169bfa1013c (patch) | |
tree | e99ff14f12abe12f7f6533c7afdc4f338b9df4eb | |
parent | e40acee3da1efd9b43198791e21fd82dd917c0d6 (diff) |
automatic import of python-grid2opopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-grid2op.spec | 996 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 998 insertions, 0 deletions
@@ -0,0 +1 @@ +/Grid2Op-1.8.1.tar.gz diff --git a/python-grid2op.spec b/python-grid2op.spec new file mode 100644 index 0000000..b5eacf4 --- /dev/null +++ b/python-grid2op.spec @@ -0,0 +1,996 @@ +%global _empty_manifest_terminate_build 0 +Name: python-Grid2Op +Version: 1.8.1 +Release: 1 +Summary: An gym compatible environment to model sequential decision making for powersystems +License: Mozilla Public License 2.0 (MPL 2.0) +URL: https://github.com/rte-france/Grid2Op +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ed/a8/64325a0f46c509c28633d6858bc616adf015f2393e1278ba2e4e07d9ddbc/Grid2Op-1.8.1.tar.gz +BuildArch: noarch + + +%description +# Grid2Op +[](https://pepy.tech/project/grid2op) +[](https://pypi.org/project/Grid2Op/) +[](https://pypi.org/project/Grid2Op/) +[](https://www.mozilla.org/en-US/MPL/2.0/) +[](https://grid2op.readthedocs.io/en/latest/?badge=latest) +[](https://circleci.com/gh/rte-france/Grid2Op) +[]( https://discord.gg/cYsYrPT) +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Grid2Op is a platform, built with modularity in mind, that allows to perform powergrid operation. +And that's what it stands for: Grid To Operate. +Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +This framework allows to perform most kind of powergrid operations, from modifying the setpoint of generators, +to load shedding, performing maintenance operations or modifying the *topology* of a powergrid +to solve security issues. + +Official documentation: the official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +* [1 Installation](#installation) + * [1.1 Setup a Virtualenv (optional)](#setup-a-virtualenv-optional) + * [1.2 Install from source](#install-from-source) + * [1.3 Install from PyPI](#install-from-pypi) + * [1.4 Install for contributors](#install-for-contributors) + * [1.5 Docker](#docker) +* [2 Main features of Grid2Op](#main-features-of-grid2op) +* [3 Getting Started](#getting-started) + * [0 Basic features](getting_started/0_basic_functionalities.ipynb) + * [1 BaseObservation Agents](getting_started/1_Observation_Agents.ipynb) + * [2 BaseAction Grid Manipulation](getting_started/2_Action_GridManipulation.ipynb) + * [3 Training An BaseAgent](getting_started/3_TrainingAnAgent.ipynb) + * [4 Study Your BaseAgent](getting_started/4_StudyYourAgent.ipynb) +* [4 Citing](#Citing) +* [5 Documentation](#documentation) +* [6 Contribute](#contributing) +* [7 Test and known issues](#tests-and-known-issues) +* [8 License information](#license-information) + +# Installation +## Requirements: +* Python >= 3.6 + +## Setup a Virtualenv (optional) +### Create a virtual environment +```commandline +cd my-project-folder +pip3 install -U virtualenv +python3 -m virtualenv venv_grid2op +``` +### Enter virtual environment +```commandline +source venv_grid2op/bin/activate +``` + +## Install from source +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -U . +cd .. +``` + +## Install from PyPI +```commandline +pip3 install grid2op +``` + +## Install for contributors +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -e . +pip3 install -e .[optional] +pip3 install -e .[docs] +``` + +## Docker +Grid2Op docker containers are available on [dockerhub](https://hub.docker.com/r/bdonnot/grid2op/tags). + +To install the latest Grid2Op container locally, use the following: +```commandline +docker pull bdonnot/grid2op:latest +``` + +# Main features of Grid2Op +## Core functionalities +Built with modulartiy in mind, Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +Its main features are: +* emulates the behavior of a powergrid of any size at any format (provided that a *backend* is properly implemented) +* allows for grid modifications (active and reactive load values, generator voltages setpoints and active production) +* allows for maintenance operations and powergrid topological changes +* can adopt any powergrid modeling, especially Alternating Current (AC) and Direct Current (DC) approximation to + when performing the compitations +* supports changes of powerflow solvers, actions, observations to better suit any need in performing power system operations modeling +* has an RL-focused interface, compatible with [OpenAI-gym](https://gym.openai.com/): same interface for the + Environment class. +* parameters, game rules or type of actions are perfectly parametrizable +* can adapt to any kind of input data, in various format (might require the rewriting of a class) + +## Powerflow solver +Grid2Op relies on an open source powerflow solver ([PandaPower](https://www.pandapower.org/)), +but is also compatible with other *Backend*. If you have at your disposal another powerflow solver, +the documentation of [grid2op/Backend](grid2op/Backend/Backend.py) can help you integrate it into a proper "Backend" +and have Grid2Op using this powerflow instead of PandaPower. + +# Getting Started +Some Jupyter notebook are provided as tutorials for the Grid2Op package. They are located in the +[getting_started](getting_started) directories. + +These notebooks will help you in understanding how this framework is used and cover the most +interesting part of this framework: + +* [00_Introduction](getting_started/00_Introduction.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_Introduction.ipynb) + and [00_SmallExample](getting_started/00_SmallExample.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_SmallExample.ipynb) + describe what is + adressed by the grid2op framework (with a tiny introductions to both power systems and reinforcement learning) + and give and introductory example to a small powergrid manipulation. +* [01_Grid2opFramework](getting_started/01_Grid2opFramework.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/01_Grid2opFramework.ipynb) + covers the basics + of the + Grid2Op framework. It also covers how to create a valid environment and how to use the + `Runner` class to assess how well an agent is performing rapidly. +* [02_Observation](getting_started/02_Observation.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/02_Observation.ipynb) + details how to create + an "expert agent" that will take pre defined actions based on the observation it gets from + the environment. This Notebook also covers the functioning of the BaseObservation class. +* [03_Action](getting_started/03_Action.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/03_Action.ipynb) + demonstrates + how to use the BaseAction class and how to manipulate the powergrid. +* [04_TrainingAnAgent](getting_started/04_TrainingAnAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/04_TrainingAnAgent.ipynb) + shows how to get started with + reinforcement learning with the grid2op environment. It shows the basic on how to train a "PPO" model operating the grid relying on "stable baselines 3" PPO implementation. +* [05_StudyYourAgent](getting_started/05_StudyYourAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/05_StudyYourAgent.ipynb) + shows how to study an BaseAgent, for example + the methods to reload a saved experiment, or to plot the powergrid given an observation for + example. This is an introductory notebook. More user friendly graphical interface should + come soon. +* [06_Redispatching_Curtailment](getting_started/06_Redispatching_Curtailment.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/06_Redispatching_Curtailment.ipynb) + explains what is the + "redispatching" and curtailment from the point + of view of a company who's in charge of keeping the powergrid safe (aka a Transmission System Operator) and how to + manipulate this concept in grid2op. Redispatching (and curtailment) allows you to perform **continuous** + actions on the powergrid + problem. +* [07_MultiEnv](getting_started/07_MultiEnv.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/07_MultiEnv.ipynb) + details how grid2op natively support a single agent interacting + with multiple environments at the same time. This is particularly handy to train "asynchronous" agent in the + Reinforcement Learning community for example. +* [08_PlottingCapabilities](getting_started/08_PlottingCapabilities.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/08_PlottingCapabilities.ipynb) + shows you the different ways with which you + can represent (visually) the grid your agent interact with. A renderer is available like in many open AI gym + environment. But you also have the possibility to post process an agent and make some movies out of it, and we also + developed a Graphical User Interface (GUI) called "[grid2viz](https://github.com/mjothy/grid2viz)" that allows + to perform in depth study of your agent's behaviour on different scenarios and even to compare it with baselines. +* [09_EnvironmentModifications](getting_started/09_EnvironmentModifications.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/09_EnvironmentModifications.ipynb) + elaborates on the maintenance, + hazards + and attacks. All three of these represents external events that can disconnect some powerlines. This notebook + covers how to spot when such things happened and what can be done when the maintenance or the attack is over. +* [10_StorageUnits](getting_started/10_StorageUnits.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/10_StorageUnits.ipynb) + details the usage and behaviour of the storage units + in grid2op. +* [11_IntegrationWithExistingRLFrameworks](getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + explains how to use grid2op with other reinforcement learning framework. + +Try them out in your own browser without installing +anything with the help of mybinder: +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Or thanks to google colab (all links are provided near the notebook description) + +# Citing + +If you use this package in one of your work, please cite: +``` +@misc{grid2op, + author = {B. Donnot}, + title = {{Grid2op- A testbed platform to model sequential decision making in power systems. }}, + year = {2020}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://GitHub.com/rte-france/grid2op}}, +} +``` + +# Documentation + +The official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +## Build the documentation locally + +A copy of the documentation can be built if the project is installed *from source*: +you will need Sphinx, a Documentation building tool, and a nice-looking custom +[Sphinx theme similar to the one of readthedocs.io](https://sphinx-rtd-theme.readthedocs.io/en/latest/). These +can be installed with: +```commandline +pip3 install -U grid2op[docs] +``` +This installs both the Sphinx package and the custom template. + +Then, on systems where `make` is available (mainly gnu-linux and macos) the documentation can be built with the command: +```commandline +make html +``` + +For windows, or systems where `make` is not available, the command: +```commandline +sphinx-build -b html docs documentation +``` + + +This will create a "documentation" subdirectory and the main entry point of the document will be located at +[index.html](documentation/html/index.html). + +It is recommended to build this documentation locally, for convenience. +For example, the "getting started" notebooks referenced some pages of the help. + +<!-- sphinx-build -b html docs documentation--> + +# Contributing + +We welcome contributions from everyone. They can take the form of pull requests for smaller changed. +In case of a major change (or if you have a doubt on what is "a small change"), please open an issue first +to discuss what you would like to change. + +To contribute to this code, you need to: + +1. fork the repository located at https://github.com/rte-france/Grid2Op +2. synch your fork with the "latest developement branch of grid2op". For example, if the latest grid2op release + on pypi is `1.6.5` you need to synch your repo with the branch named `dev_1.6.6` or `dev_1.7.0` (if + the branch `dev_1.6.6` does not exist). It will be the highest number in the branches `dev_*` on + grid2op official github repository. +3. implement your functionality / code your modifications or anything else +4. make sure to add tests and documentation if applicable +5. once it is developed, synch your repo with the last development branch again (see point 2 above) and + make sure to solve any possible conflicts +6. write a pull request and make sure to target the right branch (the "last development branch") + + +Code in the contribution should pass all the tests, have some dedicated tests for the new feature (if applicable) +and documentation (if applicable). + +Before implementing any major feature, please write a github issue first. + +# Tests and known issues + +## Tests performed currently +Grid2op is currently tested on windows, linux and macos. + +The unit tests includes testing, on linux machines the correct integration of grid2op with: + +- python 3.7 +- python 3.8 +- python 3.9 +- python 3.10 + +On all of these cases, we tested grid2op on all available numpy version >= 1.20 (**nb** available numpy versions depend +on python version). + +The complete test suit is run on linux with the latest numpy version on python 3.8. + +**NB** grid2op should work on python 3.11 but as numba is not (yet) compatible with this python version, +and because numba is used for some tests, we do not test grid2op with python 3.11 yet. + +## Known issue + +Due to the underlying behaviour of the "multiprocessing" package on windows based python versions, +the "multiprocessing" of the grid2op "Runner" is not supported on windows. This might change in the future, +but it is currently not on our priorities. + +## Perform tests locally +Provided that Grid2Op is installed *from source*: + +### Install additional dependencies +```commandline +pip3 install -U grid2op[optional] +``` +### Launch tests +```commandline +cd grid2op/tests +python3 -m unittest discover +``` + +# License information +Copyright 2019-2020 RTE France + + RTE: http://www.rte-france.com + +This Source Code is subject to the terms of the Mozilla Public License (MPL) v2 also available +[here](https://www.mozilla.org/en-US/MPL/2.0/) + +%package -n python3-Grid2Op +Summary: An gym compatible environment to model sequential decision making for powersystems +Provides: python-Grid2Op +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-Grid2Op +# Grid2Op +[](https://pepy.tech/project/grid2op) +[](https://pypi.org/project/Grid2Op/) +[](https://pypi.org/project/Grid2Op/) +[](https://www.mozilla.org/en-US/MPL/2.0/) +[](https://grid2op.readthedocs.io/en/latest/?badge=latest) +[](https://circleci.com/gh/rte-france/Grid2Op) +[]( https://discord.gg/cYsYrPT) +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Grid2Op is a platform, built with modularity in mind, that allows to perform powergrid operation. +And that's what it stands for: Grid To Operate. +Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +This framework allows to perform most kind of powergrid operations, from modifying the setpoint of generators, +to load shedding, performing maintenance operations or modifying the *topology* of a powergrid +to solve security issues. + +Official documentation: the official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +* [1 Installation](#installation) + * [1.1 Setup a Virtualenv (optional)](#setup-a-virtualenv-optional) + * [1.2 Install from source](#install-from-source) + * [1.3 Install from PyPI](#install-from-pypi) + * [1.4 Install for contributors](#install-for-contributors) + * [1.5 Docker](#docker) +* [2 Main features of Grid2Op](#main-features-of-grid2op) +* [3 Getting Started](#getting-started) + * [0 Basic features](getting_started/0_basic_functionalities.ipynb) + * [1 BaseObservation Agents](getting_started/1_Observation_Agents.ipynb) + * [2 BaseAction Grid Manipulation](getting_started/2_Action_GridManipulation.ipynb) + * [3 Training An BaseAgent](getting_started/3_TrainingAnAgent.ipynb) + * [4 Study Your BaseAgent](getting_started/4_StudyYourAgent.ipynb) +* [4 Citing](#Citing) +* [5 Documentation](#documentation) +* [6 Contribute](#contributing) +* [7 Test and known issues](#tests-and-known-issues) +* [8 License information](#license-information) + +# Installation +## Requirements: +* Python >= 3.6 + +## Setup a Virtualenv (optional) +### Create a virtual environment +```commandline +cd my-project-folder +pip3 install -U virtualenv +python3 -m virtualenv venv_grid2op +``` +### Enter virtual environment +```commandline +source venv_grid2op/bin/activate +``` + +## Install from source +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -U . +cd .. +``` + +## Install from PyPI +```commandline +pip3 install grid2op +``` + +## Install for contributors +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -e . +pip3 install -e .[optional] +pip3 install -e .[docs] +``` + +## Docker +Grid2Op docker containers are available on [dockerhub](https://hub.docker.com/r/bdonnot/grid2op/tags). + +To install the latest Grid2Op container locally, use the following: +```commandline +docker pull bdonnot/grid2op:latest +``` + +# Main features of Grid2Op +## Core functionalities +Built with modulartiy in mind, Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +Its main features are: +* emulates the behavior of a powergrid of any size at any format (provided that a *backend* is properly implemented) +* allows for grid modifications (active and reactive load values, generator voltages setpoints and active production) +* allows for maintenance operations and powergrid topological changes +* can adopt any powergrid modeling, especially Alternating Current (AC) and Direct Current (DC) approximation to + when performing the compitations +* supports changes of powerflow solvers, actions, observations to better suit any need in performing power system operations modeling +* has an RL-focused interface, compatible with [OpenAI-gym](https://gym.openai.com/): same interface for the + Environment class. +* parameters, game rules or type of actions are perfectly parametrizable +* can adapt to any kind of input data, in various format (might require the rewriting of a class) + +## Powerflow solver +Grid2Op relies on an open source powerflow solver ([PandaPower](https://www.pandapower.org/)), +but is also compatible with other *Backend*. If you have at your disposal another powerflow solver, +the documentation of [grid2op/Backend](grid2op/Backend/Backend.py) can help you integrate it into a proper "Backend" +and have Grid2Op using this powerflow instead of PandaPower. + +# Getting Started +Some Jupyter notebook are provided as tutorials for the Grid2Op package. They are located in the +[getting_started](getting_started) directories. + +These notebooks will help you in understanding how this framework is used and cover the most +interesting part of this framework: + +* [00_Introduction](getting_started/00_Introduction.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_Introduction.ipynb) + and [00_SmallExample](getting_started/00_SmallExample.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_SmallExample.ipynb) + describe what is + adressed by the grid2op framework (with a tiny introductions to both power systems and reinforcement learning) + and give and introductory example to a small powergrid manipulation. +* [01_Grid2opFramework](getting_started/01_Grid2opFramework.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/01_Grid2opFramework.ipynb) + covers the basics + of the + Grid2Op framework. It also covers how to create a valid environment and how to use the + `Runner` class to assess how well an agent is performing rapidly. +* [02_Observation](getting_started/02_Observation.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/02_Observation.ipynb) + details how to create + an "expert agent" that will take pre defined actions based on the observation it gets from + the environment. This Notebook also covers the functioning of the BaseObservation class. +* [03_Action](getting_started/03_Action.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/03_Action.ipynb) + demonstrates + how to use the BaseAction class and how to manipulate the powergrid. +* [04_TrainingAnAgent](getting_started/04_TrainingAnAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/04_TrainingAnAgent.ipynb) + shows how to get started with + reinforcement learning with the grid2op environment. It shows the basic on how to train a "PPO" model operating the grid relying on "stable baselines 3" PPO implementation. +* [05_StudyYourAgent](getting_started/05_StudyYourAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/05_StudyYourAgent.ipynb) + shows how to study an BaseAgent, for example + the methods to reload a saved experiment, or to plot the powergrid given an observation for + example. This is an introductory notebook. More user friendly graphical interface should + come soon. +* [06_Redispatching_Curtailment](getting_started/06_Redispatching_Curtailment.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/06_Redispatching_Curtailment.ipynb) + explains what is the + "redispatching" and curtailment from the point + of view of a company who's in charge of keeping the powergrid safe (aka a Transmission System Operator) and how to + manipulate this concept in grid2op. Redispatching (and curtailment) allows you to perform **continuous** + actions on the powergrid + problem. +* [07_MultiEnv](getting_started/07_MultiEnv.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/07_MultiEnv.ipynb) + details how grid2op natively support a single agent interacting + with multiple environments at the same time. This is particularly handy to train "asynchronous" agent in the + Reinforcement Learning community for example. +* [08_PlottingCapabilities](getting_started/08_PlottingCapabilities.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/08_PlottingCapabilities.ipynb) + shows you the different ways with which you + can represent (visually) the grid your agent interact with. A renderer is available like in many open AI gym + environment. But you also have the possibility to post process an agent and make some movies out of it, and we also + developed a Graphical User Interface (GUI) called "[grid2viz](https://github.com/mjothy/grid2viz)" that allows + to perform in depth study of your agent's behaviour on different scenarios and even to compare it with baselines. +* [09_EnvironmentModifications](getting_started/09_EnvironmentModifications.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/09_EnvironmentModifications.ipynb) + elaborates on the maintenance, + hazards + and attacks. All three of these represents external events that can disconnect some powerlines. This notebook + covers how to spot when such things happened and what can be done when the maintenance or the attack is over. +* [10_StorageUnits](getting_started/10_StorageUnits.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/10_StorageUnits.ipynb) + details the usage and behaviour of the storage units + in grid2op. +* [11_IntegrationWithExistingRLFrameworks](getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + explains how to use grid2op with other reinforcement learning framework. + +Try them out in your own browser without installing +anything with the help of mybinder: +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Or thanks to google colab (all links are provided near the notebook description) + +# Citing + +If you use this package in one of your work, please cite: +``` +@misc{grid2op, + author = {B. Donnot}, + title = {{Grid2op- A testbed platform to model sequential decision making in power systems. }}, + year = {2020}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://GitHub.com/rte-france/grid2op}}, +} +``` + +# Documentation + +The official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +## Build the documentation locally + +A copy of the documentation can be built if the project is installed *from source*: +you will need Sphinx, a Documentation building tool, and a nice-looking custom +[Sphinx theme similar to the one of readthedocs.io](https://sphinx-rtd-theme.readthedocs.io/en/latest/). These +can be installed with: +```commandline +pip3 install -U grid2op[docs] +``` +This installs both the Sphinx package and the custom template. + +Then, on systems where `make` is available (mainly gnu-linux and macos) the documentation can be built with the command: +```commandline +make html +``` + +For windows, or systems where `make` is not available, the command: +```commandline +sphinx-build -b html docs documentation +``` + + +This will create a "documentation" subdirectory and the main entry point of the document will be located at +[index.html](documentation/html/index.html). + +It is recommended to build this documentation locally, for convenience. +For example, the "getting started" notebooks referenced some pages of the help. + +<!-- sphinx-build -b html docs documentation--> + +# Contributing + +We welcome contributions from everyone. They can take the form of pull requests for smaller changed. +In case of a major change (or if you have a doubt on what is "a small change"), please open an issue first +to discuss what you would like to change. + +To contribute to this code, you need to: + +1. fork the repository located at https://github.com/rte-france/Grid2Op +2. synch your fork with the "latest developement branch of grid2op". For example, if the latest grid2op release + on pypi is `1.6.5` you need to synch your repo with the branch named `dev_1.6.6` or `dev_1.7.0` (if + the branch `dev_1.6.6` does not exist). It will be the highest number in the branches `dev_*` on + grid2op official github repository. +3. implement your functionality / code your modifications or anything else +4. make sure to add tests and documentation if applicable +5. once it is developed, synch your repo with the last development branch again (see point 2 above) and + make sure to solve any possible conflicts +6. write a pull request and make sure to target the right branch (the "last development branch") + + +Code in the contribution should pass all the tests, have some dedicated tests for the new feature (if applicable) +and documentation (if applicable). + +Before implementing any major feature, please write a github issue first. + +# Tests and known issues + +## Tests performed currently +Grid2op is currently tested on windows, linux and macos. + +The unit tests includes testing, on linux machines the correct integration of grid2op with: + +- python 3.7 +- python 3.8 +- python 3.9 +- python 3.10 + +On all of these cases, we tested grid2op on all available numpy version >= 1.20 (**nb** available numpy versions depend +on python version). + +The complete test suit is run on linux with the latest numpy version on python 3.8. + +**NB** grid2op should work on python 3.11 but as numba is not (yet) compatible with this python version, +and because numba is used for some tests, we do not test grid2op with python 3.11 yet. + +## Known issue + +Due to the underlying behaviour of the "multiprocessing" package on windows based python versions, +the "multiprocessing" of the grid2op "Runner" is not supported on windows. This might change in the future, +but it is currently not on our priorities. + +## Perform tests locally +Provided that Grid2Op is installed *from source*: + +### Install additional dependencies +```commandline +pip3 install -U grid2op[optional] +``` +### Launch tests +```commandline +cd grid2op/tests +python3 -m unittest discover +``` + +# License information +Copyright 2019-2020 RTE France + + RTE: http://www.rte-france.com + +This Source Code is subject to the terms of the Mozilla Public License (MPL) v2 also available +[here](https://www.mozilla.org/en-US/MPL/2.0/) + +%package help +Summary: Development documents and examples for Grid2Op +Provides: python3-Grid2Op-doc +%description help +# Grid2Op +[](https://pepy.tech/project/grid2op) +[](https://pypi.org/project/Grid2Op/) +[](https://pypi.org/project/Grid2Op/) +[](https://www.mozilla.org/en-US/MPL/2.0/) +[](https://grid2op.readthedocs.io/en/latest/?badge=latest) +[](https://circleci.com/gh/rte-france/Grid2Op) +[]( https://discord.gg/cYsYrPT) +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Grid2Op is a platform, built with modularity in mind, that allows to perform powergrid operation. +And that's what it stands for: Grid To Operate. +Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +This framework allows to perform most kind of powergrid operations, from modifying the setpoint of generators, +to load shedding, performing maintenance operations or modifying the *topology* of a powergrid +to solve security issues. + +Official documentation: the official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +* [1 Installation](#installation) + * [1.1 Setup a Virtualenv (optional)](#setup-a-virtualenv-optional) + * [1.2 Install from source](#install-from-source) + * [1.3 Install from PyPI](#install-from-pypi) + * [1.4 Install for contributors](#install-for-contributors) + * [1.5 Docker](#docker) +* [2 Main features of Grid2Op](#main-features-of-grid2op) +* [3 Getting Started](#getting-started) + * [0 Basic features](getting_started/0_basic_functionalities.ipynb) + * [1 BaseObservation Agents](getting_started/1_Observation_Agents.ipynb) + * [2 BaseAction Grid Manipulation](getting_started/2_Action_GridManipulation.ipynb) + * [3 Training An BaseAgent](getting_started/3_TrainingAnAgent.ipynb) + * [4 Study Your BaseAgent](getting_started/4_StudyYourAgent.ipynb) +* [4 Citing](#Citing) +* [5 Documentation](#documentation) +* [6 Contribute](#contributing) +* [7 Test and known issues](#tests-and-known-issues) +* [8 License information](#license-information) + +# Installation +## Requirements: +* Python >= 3.6 + +## Setup a Virtualenv (optional) +### Create a virtual environment +```commandline +cd my-project-folder +pip3 install -U virtualenv +python3 -m virtualenv venv_grid2op +``` +### Enter virtual environment +```commandline +source venv_grid2op/bin/activate +``` + +## Install from source +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -U . +cd .. +``` + +## Install from PyPI +```commandline +pip3 install grid2op +``` + +## Install for contributors +```commandline +git clone https://github.com/rte-france/Grid2Op.git +cd Grid2Op +pip3 install -e . +pip3 install -e .[optional] +pip3 install -e .[docs] +``` + +## Docker +Grid2Op docker containers are available on [dockerhub](https://hub.docker.com/r/bdonnot/grid2op/tags). + +To install the latest Grid2Op container locally, use the following: +```commandline +docker pull bdonnot/grid2op:latest +``` + +# Main features of Grid2Op +## Core functionalities +Built with modulartiy in mind, Grid2Op acts as a replacement of [pypownet](https://github.com/MarvinLer/pypownet) +as a library used for the Learning To Run Power Network [L2RPN](https://l2rpn.chalearn.org/). + +Its main features are: +* emulates the behavior of a powergrid of any size at any format (provided that a *backend* is properly implemented) +* allows for grid modifications (active and reactive load values, generator voltages setpoints and active production) +* allows for maintenance operations and powergrid topological changes +* can adopt any powergrid modeling, especially Alternating Current (AC) and Direct Current (DC) approximation to + when performing the compitations +* supports changes of powerflow solvers, actions, observations to better suit any need in performing power system operations modeling +* has an RL-focused interface, compatible with [OpenAI-gym](https://gym.openai.com/): same interface for the + Environment class. +* parameters, game rules or type of actions are perfectly parametrizable +* can adapt to any kind of input data, in various format (might require the rewriting of a class) + +## Powerflow solver +Grid2Op relies on an open source powerflow solver ([PandaPower](https://www.pandapower.org/)), +but is also compatible with other *Backend*. If you have at your disposal another powerflow solver, +the documentation of [grid2op/Backend](grid2op/Backend/Backend.py) can help you integrate it into a proper "Backend" +and have Grid2Op using this powerflow instead of PandaPower. + +# Getting Started +Some Jupyter notebook are provided as tutorials for the Grid2Op package. They are located in the +[getting_started](getting_started) directories. + +These notebooks will help you in understanding how this framework is used and cover the most +interesting part of this framework: + +* [00_Introduction](getting_started/00_Introduction.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_Introduction.ipynb) + and [00_SmallExample](getting_started/00_SmallExample.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/00_SmallExample.ipynb) + describe what is + adressed by the grid2op framework (with a tiny introductions to both power systems and reinforcement learning) + and give and introductory example to a small powergrid manipulation. +* [01_Grid2opFramework](getting_started/01_Grid2opFramework.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/01_Grid2opFramework.ipynb) + covers the basics + of the + Grid2Op framework. It also covers how to create a valid environment and how to use the + `Runner` class to assess how well an agent is performing rapidly. +* [02_Observation](getting_started/02_Observation.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/02_Observation.ipynb) + details how to create + an "expert agent" that will take pre defined actions based on the observation it gets from + the environment. This Notebook also covers the functioning of the BaseObservation class. +* [03_Action](getting_started/03_Action.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/03_Action.ipynb) + demonstrates + how to use the BaseAction class and how to manipulate the powergrid. +* [04_TrainingAnAgent](getting_started/04_TrainingAnAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/04_TrainingAnAgent.ipynb) + shows how to get started with + reinforcement learning with the grid2op environment. It shows the basic on how to train a "PPO" model operating the grid relying on "stable baselines 3" PPO implementation. +* [05_StudyYourAgent](getting_started/05_StudyYourAgent.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/05_StudyYourAgent.ipynb) + shows how to study an BaseAgent, for example + the methods to reload a saved experiment, or to plot the powergrid given an observation for + example. This is an introductory notebook. More user friendly graphical interface should + come soon. +* [06_Redispatching_Curtailment](getting_started/06_Redispatching_Curtailment.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/06_Redispatching_Curtailment.ipynb) + explains what is the + "redispatching" and curtailment from the point + of view of a company who's in charge of keeping the powergrid safe (aka a Transmission System Operator) and how to + manipulate this concept in grid2op. Redispatching (and curtailment) allows you to perform **continuous** + actions on the powergrid + problem. +* [07_MultiEnv](getting_started/07_MultiEnv.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/07_MultiEnv.ipynb) + details how grid2op natively support a single agent interacting + with multiple environments at the same time. This is particularly handy to train "asynchronous" agent in the + Reinforcement Learning community for example. +* [08_PlottingCapabilities](getting_started/08_PlottingCapabilities.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/08_PlottingCapabilities.ipynb) + shows you the different ways with which you + can represent (visually) the grid your agent interact with. A renderer is available like in many open AI gym + environment. But you also have the possibility to post process an agent and make some movies out of it, and we also + developed a Graphical User Interface (GUI) called "[grid2viz](https://github.com/mjothy/grid2viz)" that allows + to perform in depth study of your agent's behaviour on different scenarios and even to compare it with baselines. +* [09_EnvironmentModifications](getting_started/09_EnvironmentModifications.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/09_EnvironmentModifications.ipynb) + elaborates on the maintenance, + hazards + and attacks. All three of these represents external events that can disconnect some powerlines. This notebook + covers how to spot when such things happened and what can be done when the maintenance or the attack is over. +* [10_StorageUnits](getting_started/10_StorageUnits.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/10_StorageUnits.ipynb) + details the usage and behaviour of the storage units + in grid2op. +* [11_IntegrationWithExistingRLFrameworks](getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + [](https://colab.research.google.com/github/rte-france/Grid2Op/blob/master/getting_started/11_IntegrationWithExistingRLFrameworks.ipynb) + explains how to use grid2op with other reinforcement learning framework. + +Try them out in your own browser without installing +anything with the help of mybinder: +[](https://mybinder.org/v2/gh/rte-france/Grid2Op/master) + +Or thanks to google colab (all links are provided near the notebook description) + +# Citing + +If you use this package in one of your work, please cite: +``` +@misc{grid2op, + author = {B. Donnot}, + title = {{Grid2op- A testbed platform to model sequential decision making in power systems. }}, + year = {2020}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://GitHub.com/rte-france/grid2op}}, +} +``` + +# Documentation + +The official documentation is available at +[https://grid2op.readthedocs.io/](https://grid2op.readthedocs.io/). + +## Build the documentation locally + +A copy of the documentation can be built if the project is installed *from source*: +you will need Sphinx, a Documentation building tool, and a nice-looking custom +[Sphinx theme similar to the one of readthedocs.io](https://sphinx-rtd-theme.readthedocs.io/en/latest/). These +can be installed with: +```commandline +pip3 install -U grid2op[docs] +``` +This installs both the Sphinx package and the custom template. + +Then, on systems where `make` is available (mainly gnu-linux and macos) the documentation can be built with the command: +```commandline +make html +``` + +For windows, or systems where `make` is not available, the command: +```commandline +sphinx-build -b html docs documentation +``` + + +This will create a "documentation" subdirectory and the main entry point of the document will be located at +[index.html](documentation/html/index.html). + +It is recommended to build this documentation locally, for convenience. +For example, the "getting started" notebooks referenced some pages of the help. + +<!-- sphinx-build -b html docs documentation--> + +# Contributing + +We welcome contributions from everyone. They can take the form of pull requests for smaller changed. +In case of a major change (or if you have a doubt on what is "a small change"), please open an issue first +to discuss what you would like to change. + +To contribute to this code, you need to: + +1. fork the repository located at https://github.com/rte-france/Grid2Op +2. synch your fork with the "latest developement branch of grid2op". For example, if the latest grid2op release + on pypi is `1.6.5` you need to synch your repo with the branch named `dev_1.6.6` or `dev_1.7.0` (if + the branch `dev_1.6.6` does not exist). It will be the highest number in the branches `dev_*` on + grid2op official github repository. +3. implement your functionality / code your modifications or anything else +4. make sure to add tests and documentation if applicable +5. once it is developed, synch your repo with the last development branch again (see point 2 above) and + make sure to solve any possible conflicts +6. write a pull request and make sure to target the right branch (the "last development branch") + + +Code in the contribution should pass all the tests, have some dedicated tests for the new feature (if applicable) +and documentation (if applicable). + +Before implementing any major feature, please write a github issue first. + +# Tests and known issues + +## Tests performed currently +Grid2op is currently tested on windows, linux and macos. + +The unit tests includes testing, on linux machines the correct integration of grid2op with: + +- python 3.7 +- python 3.8 +- python 3.9 +- python 3.10 + +On all of these cases, we tested grid2op on all available numpy version >= 1.20 (**nb** available numpy versions depend +on python version). + +The complete test suit is run on linux with the latest numpy version on python 3.8. + +**NB** grid2op should work on python 3.11 but as numba is not (yet) compatible with this python version, +and because numba is used for some tests, we do not test grid2op with python 3.11 yet. + +## Known issue + +Due to the underlying behaviour of the "multiprocessing" package on windows based python versions, +the "multiprocessing" of the grid2op "Runner" is not supported on windows. This might change in the future, +but it is currently not on our priorities. + +## Perform tests locally +Provided that Grid2Op is installed *from source*: + +### Install additional dependencies +```commandline +pip3 install -U grid2op[optional] +``` +### Launch tests +```commandline +cd grid2op/tests +python3 -m unittest discover +``` + +# License information +Copyright 2019-2020 RTE France + + RTE: http://www.rte-france.com + +This Source Code is subject to the terms of the Mozilla Public License (MPL) v2 also available +[here](https://www.mozilla.org/en-US/MPL/2.0/) + +%prep +%autosetup -n Grid2Op-1.8.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-Grid2Op -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 1.8.1-1 +- Package Spec generated @@ -0,0 +1 @@ +1a42a591eed2d738133a9d225a0caebc Grid2Op-1.8.1.tar.gz |