Warning: The formal competitions ended up on June 19th 2019 but you could still submit your solution to measure the strength of your method.
Following the success of the Horizon prize to predict flows in the French long distance high voltage electricity transmission grid, managed by the company “Réseau de Transport d’Électricité” (RTE), we are organizing a new challenge. The goal of this challenge is to test the potential of Reinforcement Learning (RL) or other advanced control algorithm to control electricity transportation in power grids, while keeping people and equipment safe. Hence, it is the "gamification" of a serious problem: operating the grid in a increasingly complex environment including less predictable energy sources (wind, solar, ...), energy market globalization, limitations on new line construction, and growing consumption. To make "smart grid" materialize, it is becoming urgent to optimize more tightly grid operations, using more frequently a broader range of configuration changes, without compromising security.
To further proceed with the competition:
You are ready to get started and we are looking forward for your first submission in the Participate section to become the control room operator of the future !
A forum is available for comments and help.
In this section, we give you the instructions to help you:
The challenge is based on an environment (and not solely a dataset) in which an agent can learn by interactions. It runs under the Pypownet platform, which is made of 3 components:
The pypownet platform can be installed with the instructions on this git repository: https://github.com/MarvinLer/pypownet.
We recommend its docker installation rather than a local installation from git to avoid compatibility issues.
or if you want a docker image without Machine learning libraries (scikit-learn, Keras, TF, PyTorch)
A starting kit is available for you to download in the "Participate section"tab, with the proper game environment for the competition. Several notebooks should help you understand and run properly the Pypownet platform on chronics to train and test your agents. It also tells you how to check that your submission is valid to run on the competition servers.
A first sample of 50 scenarios of 1 month duration is available with the starting kit. This challenge runs under an environment that uses the "IEEE 14" case study grid. It includes 5 different power plants: nuclear, themal, wind, solar (big), solar (small). A larger additional sample of about 1000 scenarios is also available with the starting kit, to better train your agent. See Get Data in the Participate section.
Essentially, a submission should be a ZIP file containing at least these two files:
Upon reception of the challenger's submission, Codalab will see the metadata file (mandatory) and consider the submission of the participant as a code submission (contrary to results submission) and run the programs to process it. The structure of the file submission.py can be found in the starting kit.
The folder containing both submission.py and metada should then be zipped (the zip file name can be chosen by you arbitrarily, use it to track your various submissions) as explained in the starting kit notebook. Then, on Codalab:
Codalab will take some time to process the submission, and will print the scores on the same page (after refresh). As explained in the rules, if your submission takes more than 20 minutes, it wil be a timeout.
In the "Submit / View Results" sub-section of Participate, you can see the status of your submission. Once it is finished, you can review your submissions, its score and duration. Clicking on the blue cross of your submission, different logs are available. You can download your submission again if desired. More importantly you can get logs of your agents behavior over different scenarios in the folder "output from scoring step": indicators over all run scenarios can be visualized in the html file.
To compare your result to the other participants, please go on the Results page on which the Leaderboard is displayed. Be aware that only your last submission score is considered there.
This challenge is governed by the general ChaLearn contest rules.
This challenge starts on May 15th 2019 and ends on June 19th 2019.
This challenge would not have been possible without the help of many people.
Developpers of the pypownet platform:
Other contributors to the organization, starting kit, and datasets, include:
We also especially thanks our advisors:
As any system, a power grid can fail to operate properly, as illustrated on the challenge website. This can occur under conditions such as:
These conditions can appear when power lines in the grid get disconnected after being overloaded. When a line get disconnected, it loads gets distributed over other power lines, which in turn might get overloaded and thus disconnected as well, leading to a cascading failure (blackout).
In Pypownet, there are 3 "game over" modes, which you can experiment with:
- hard - The scenario stops running as soon as you have a game over because of the conditions described previously. This is a "real life setting", which is use for evaluating the agents that you submit on the competition platform. Use it to emulate the way in which your agents will be evaluated.
- soft - If you have a game over, you can continue playing the scenario (input sequence), but the grid configuration is reset to its reference topology. During training, this can be a useful mode to let your agent experiment with the whole length of a scenario, not limited to the stretch extending before the game over.
- easy - Line disconnections because of overloads are not executed. Except for a "stupid" action that would split the grid appart, you should not run into a game over in thos mode. It may be a useful mode to start training your agent, making the task easier at first. It could help you create a curriculum for your agent.
When the power in a line increases above its thermal limit, the line becomes overloaded. It can stay overloaded for few timesteps before it gets disconnected, if no proper agent action is taken to relieve this overload (2 timesteps are allowed in this challenge, see configuration.yml file in starting kit). If the overload is too high, the line gets disconnected immediately (above 150% of the thermal limit in this challenge). This is a 'hard' overload, as opposed to a 'soft' overflow described before.
With Pypownet, actions on lines and substations can be run. You can connect or disconnect lines. You can split a substation in two electrical nodes with different configurations or merge it back to one node. This is explained and can be visualized in the 101 and visualize_grid notebooks. In real life, for safety reason, it is not possible to do more than n actions at a time. In this challenge to introduce this operational constraint on that small system, you are allowed to a maximum of 1 action at a substation + 1 action on a line per timestep. In addition, certain actions on a grid can only be performed at a maximum frequency. In particular for lines and substations, a time of cooldown is required before reusing them. A cooldown of 3 timestep is set in this challenge.
Those parameters are accessible in the configuration.yaml file for each environment. During training, you can modify some of these parameters to relax some constraints and initialize your training better. However the initial parameters you will find will be the one used on Codalab for the competition to evaluate your submission.
Observations about the state of the grid can be retrieved from the environment to be used for your agent. Please read the table in the Pypownet documentation. You can recover information over current productions, loads, and more importantly about the flows over the lines and the topology of the grid. You are free to use whatever observation available, make the best of it!
Your agent is evaluated on 10 scenarios and can be compared to a "do nothing" agent and to a "random" agent.
|Line_Score||=||1 - (1-Line_Margin)²||=||Max(0, 1 - (Flow/ThermalLimit)²)|
|Score_step||=||Sum (Line_Score) over lines|
||,||if Game Over|
|=||sum (Score_step) over all timesteps
|Score||=|| sum (Score_scenario) over all scenarios
You can run and evalute an agent in the related notebook in the starting kit.
Locally during training, you can specify your own reward function, in a reward_signal.py file, to train your agent. However, the reward for the score when testing the submissions will be in any case the one specified above.
|Starting Kit||23.637||#1 Development phase|
Start: May 15, 2019, midnight
Description: Development phase: you can try your models in this phase
Start: Aug. 8, 2019, midnight
Description: Final phase : your last submission is pushed automaticly
June 30, 2020, 11 p.m.
You must be logged in to participate in competitions.Sign In