{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# This Notebook will develop how to build an Agent and assess its performance.\n", "Try me out interactively with: [![Binder](./img/badge_logo.svg)](https://mybinder.org/v2/gh/rte-france/Grid2Op/master)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Objective**\n", "\n", "This notebook covers the basics of the information that can be retrieved about the state of the powergrid. The basics are illustrated on examples of \"expert agents\" that can take actions based on some fixed rules. More generic types of *Agents*, relying for example on machine learning / deep learning will be covered in the notebook [04_TrainingAnAgent](04_TrainingAnAgent.ipynb).\n", "\n", "This notebook will also cover the description of the *Observation* class, which is useful to take some actions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Execute the cell below by removing the # character if you use google colab !\n", "\n", "Cell will look like:\n", "```python\n", "!pip install grid2op[optional] # for use with google colab (grid2Op is not installed by default)\n", "```\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# !pip install grid2op[optional] # for use with google colab (grid2Op is not installed by default)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/donnotben/Documents/grid2op_dev/getting_started/grid2op/Backend/pandaPowerBackend.py:30: UserWarning: Numba cannot be loaded. You will gain possibly massive speed if installing it by \n", "\t/bin/python3 -m pip install numba\n", "\n", " warnings.warn(\n" ] } ], "source": [ "import os\n", "import sys\n", "import numpy as np\n", "import grid2op" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Impossible to automatically add a menu / table of content to this notebook.\n", "You can download \"jyquickhelper\" package with: \n", "\"pip install jyquickhelper\"\n" ] } ], "source": [ "res = None\n", "try:\n", " from jyquickhelper import add_notebook_menu\n", " res = add_notebook_menu()\n", "except ModuleNotFoundError:\n", " print(\"Impossible to automatically add a menu / table of content to this notebook.\\nYou can download \\\"jyquickhelper\\\" package with: \\n\\\"pip install jyquickhelper\\\"\")\n", "res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## I) Description of the observations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NB** In this paragraph we will cover the basics of the observation class. Please visit the official documentation for more detailed information, or [here](https://grid2op.readthedocs.io/en/latest/observation.html) or in the [Observations.py](grid2op/Observation/Observation.py) files for more information. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### I.A) Obtaining an observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation can be accessed by calling `env.step()`. The next cell is dedicated to creating an environment and obtaining one instance of an observation. For illustration purposed, we use the default `rte_case14_realistic` environment from Grid2Op framework." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/donnotben/Documents/grid2op_dev/getting_started/grid2op/MakeEnv/Make.py:420: UserWarning: You are using a development environment. This environment is not intended for training agents. It might not be up to date and its primary use if for tests (hence the \"test=True\" you passed as argument). Use at your own risk.\n", " warnings.warn(_MAKE_DEV_ENV_WARN)\n" ] } ], "source": [ "env = grid2op.make(\"l2rpn_case14_sandbox\", test=True)\n", "obs = env.reset() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`obs` now contains the initial state of the grid." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### I.B) Information contained in an Observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Grid2Op` allows to model different kinds of observations. For example, some observations could have incomplete data, or noisy data, etc. As follows we will detail only the \"CompleteObservation\". `CompleteObservation` gives the full state of the powergrid, without any noise. It's the default type of observation used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### a) Some attributes of complete observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation has calendar data (eg the time stamp of the observation):" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2019, 1, 6, 0, 0, 6)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.year, obs.month, obs.day, obs.hour_of_day, obs.minute_of_hour, obs.day_of_week" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation has some powergrid generic information (that are static: the same environment has always these attributes, that have always th same values, but of course different environments can have different values)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of generators of the powergrid: 6\n", "Number of loads of the powergrid: 11\n", "Number of powerline of the powergrid: 20\n", "Number of elements connected to each substations in the powergrid: [3 6 4 6 5 7 3 2 5 3 3 3 4 3]\n", "Total number of elements: 57\n" ] } ], "source": [ "print(\"Number of generators of the powergrid: {}\".format(obs.n_gen))\n", "print(\"Number of loads of the powergrid: {}\".format(obs.n_load))\n", "print(\"Number of powerline of the powergrid: {}\".format(obs.n_line))\n", "print(\"Number of elements connected to each substations in the powergrid: {}\".format(obs.sub_info))\n", "print(\"Total number of elements: {}\".format(obs.dim_topo))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation has some information about the generators (each generator can be viewed as a point in a 3-dimensional space)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generators active production: [81.4 79.3 5.3 0. 0. 82.24667]\n", "Generators reactive production: [ 19.496038 71.34023 24.368923 24.368923 24.01807 -17.27466 ]\n", "Generators voltage setpoint : [142.1 142.1 22. 22. 13.200001 142.1 ]\n" ] } ], "source": [ "print(\"Generators active production: {}\".format(obs.gen_p))\n", "print(\"Generators reactive production: {}\".format(obs.gen_q))\n", "print(\"Generators voltage setpoint : {}\".format(obs.gen_v))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation has some information about the loads (each load is a point in a 3-dimensional space, too)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loads active consumption: [21.9 85.8 44.3 6.9 11.9 28.5 8.8 3.5 5.4 12.6 14.4]\n", "Loads reactive consumption: [15.4 59.7 30.8 4.8 8.3 19.4 6.1 2.4 3.9 8.8 10.5]\n", "Loads voltage (voltage magnitude of the bus to which it is connected) : [142.1 142.1 138.66075 139.29695 22. 21.13022\n", " 21.12955 21.478817 21.571596 21.432823 20.750198]\n" ] } ], "source": [ "print(\"Loads active consumption: {}\".format(obs.load_p))\n", "print(\"Loads reactive consumption: {}\".format(obs.load_q))\n", "print(\"Loads voltage (voltage magnitude of the bus to which it is connected) : {}\".format(obs.load_v))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this setting, a powerline can be viewed as a point in an 8-dimensional space:\n", " * active flow\n", " * reactive flow\n", " * voltage magnitude\n", " * current flow\n", " \n", "for both its origin and its extremity.\n", "\n", "For example, suppose the powerline `line1` is connecting two node `A` and `B`. There are two separate values for the active flow on `line1` : the active flow from `A` to `B` (origin) and the active flow from `B` to `A` (extremity).\n", "\n", "These powerline features can be accessed with :" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Origin active flow: [ 4.2346096e+01 3.9900578e+01 2.3991766e+01 4.1828262e+01\n", " 3.5666172e+01 1.7225140e+01 -2.7542929e+01 8.1183472e+00\n", " 7.4602180e+00 1.7347816e+01 4.3849845e+00 8.2175179e+00\n", " -4.4212246e+00 1.9712504e+00 6.4163899e+00 2.6171078e+01\n", " 1.4931423e+01 3.9526379e+01 -1.0408341e-14 -2.6171078e+01]\n", "Origin reactive flow: [-16.060501 -1.2141596 -7.423434 0.40774456 -0.44919857\n", " 7.7376227 -2.1186779 10.543067 5.6506634 15.18845\n", " -1.5994288 3.6139119 -7.7159214 1.5654972 7.370694\n", " -16.11945 -3.0833588 -5.630818 -23.178274 -4.492154 ]\n", "Origin current flow: [184.01025 162.1905 102.03776 169.9557 144.92264 76.722275\n", " 115.02098 349.20593 245.6016 605.0953 127.5342 245.28467\n", " 242.99077 67.37295 263.24207 127.98145 63.482616 165.48074\n", " 900.4441 725.5414 ]\n", "Origin voltage (voltage magnitude to the bus to which the origin end is connected): [142.1 142.1 142.1 142.1 142.1 142.1\n", " 138.66075 22. 22. 22. 21.13022 21.13022\n", " 21.12955 21.571596 21.432823 138.66075 138.66075 139.29695\n", " 14.861537 21.13022 ]\n", "Extremity active flow: [-4.1986198e+01 -3.9088322e+01 -2.3725140e+01 -4.0866714e+01\n", " -3.4981895e+01 -1.6992859e+01 2.7643835e+01 -7.9793596e+00\n", " -7.3712506e+00 -1.7057173e+01 -4.3787756e+00 -8.1257477e+00\n", " 4.4793596e+00 -1.9592170e+00 -6.2742519e+00 -2.6171078e+01\n", " -1.4931423e+01 -3.9526379e+01 1.0408341e-14 2.6171078e+01]\n", "Extremity reactive flow: [ 11.560926 -0.54758495 3.9026122 -1.0090021 -1.0585623\n", " -8.46951 2.4369648 -10.252009 -5.4654975 -14.616084\n", " 1.6159215 -3.4187043 7.8520093 -1.5546099 -7.0812955\n", " 17.991196 4.285767 9.055665 24.01807 5.187079 ]\n", "Extremity current flow: [ 176.93805 162.027 97.690315 170.2111 145.05737 79.05555\n", " 115.02098 349.20593 245.6016 605.0953 127.5342 245.28467\n", " 242.99077 67.37295 263.24207 1233.7778 424.4511 1064.1736\n", " 1050.5181 1036.4877 ]\n", "Extremity voltage (voltage magnitude to the bus to which the origin end is connected): [142.1 139.29695 142.1 138.66075 139.29695 138.66075\n", " 139.29695 21.478817 21.571596 21.432823 21.12955 20.750198\n", " 21.478817 21.432823 20.750198 14.861537 21.13022 22.\n", " 13.200001 14.861537]\n" ] } ], "source": [ "print(\"Origin active flow: {}\".format(obs.p_or))\n", "print(\"Origin reactive flow: {}\".format(obs.q_or))\n", "print(\"Origin current flow: {}\".format(obs.a_or))\n", "print(\"Origin voltage (voltage magnitude to the bus to which the origin end is connected): {}\".format(obs.v_or))\n", "print(\"Extremity active flow: {}\".format(obs.p_ex))\n", "print(\"Extremity reactive flow: {}\".format(obs.q_ex))\n", "print(\"Extremity current flow: {}\".format(obs.a_ex))\n", "print(\"Extremity voltage (voltage magnitude to the bus to which the origin end is connected): {}\".format(obs.v_ex))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another powerline feature is the $\\rho$ ratio, the ratio between the current flow in the powerline and its thermal limit, *ie.* for each powerline. This feature $\\rho$ can be accessed with:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.34012985, 0.36042336, 0.2721007 , 0.26722595, 0.82812935,\n", " 0.26920095, 0.3433462 , 0.5315159 , 0.4951645 , 0.7316751 ,\n", " 0.28853893, 0.38265938, 0.28927472, 0.43187788, 0.39644888,\n", " 0.5446019 , 0.53346735, 0.9244734 , 0.4533958 , 0.4615403 ],\n", " dtype=float32)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.rho" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The observation (*obs*) also stores information on the topology and the state of the powerline." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.timestep_overflow # the number of timestep each of the powerline is in overflow (1 powerline per component)\n", "obs.line_status # the status of each powerline: True connected, False disconnected\n", "obs.topo_vect # the topology vector the each element (generator, load, each end of a powerline) to which the object\n", "# is connected: 1 = bus 1, 2 = bus 2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In `grid2op`, all objects (end of a powerline, load or generator) can be either disconnected, connected to the first bus of its substation, or connected to the second bus of its substation.\n", "\n", "`topo_vect` is the vector containing the connection information, it is part of the observation.\n", "If an object is disconnected, then its corresponding component in `topo_vect` will be `-1`. If it's connected to the first bus of its substation, its component will be `1` and if it's connected to the second bus, its component will be `2`.\n", "\n", "For example, if you want to know at which bus the \"load 2\" is connected, you can do:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load_id = 2\n", "obs.topo_vect[obs.load_pos_topo_vect[load_id]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or alternatively" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.load_bus[load_id]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NB** of course the `obs.gen_bus`, `obs.line_or_bus`, `obs.line_ex_bus` or `obs.storage_bus` are also defined." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "More information about this topology vector is given in the documentation [here](https://grid2op.readthedocs.io/en/latest/observation.html). More information about this topology vector will be given in the notebook dedicated to vizualisation. \n", "\n", "#### b) Representation as \"a graph\"\n", "\n", "The powergrid can be represented as a graph. The \"topology vector\" is an efficient way to store and use the graph in terms of memory and speed. Some utilities functions in grid2op allows to build these graphs rapidly. \n", "\n", "We say \"these graphs\" because \"the\" graph of the grid can mean different things. Yes, you have a lot of information with something like:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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k7Jlyza+//77Y3Oes3DhwlLt2rWrU7Zs2cYVKlRo1KdPn2oHDhywvNUJ2Ag9YwJIVRV4Q0TmAB8Bi0XkLlWdFODQTMk0EyuMYYwxxhhjSqjU1FRZsWJFcGFdr2HDhumhoaGa1/aTJ08uN378+HVTpkxZ9/nnn0f16dOndr169Q4HBwfrzTffXHvMmDEbbrnllv3z588P7datWx2Xy6WPPfbY3506dTpw55131vR6vTgcDubMmRNZtWrV9G+++Sby9ttv3//9999HXnTRRSkhISGalpYm7du3r3f55Zcnr127dpmqcsstt1Tv3r17zXnz5q3JjuWTTz4p+957763/6quv1qempjpyJvxOZNq0aaVHjx69Yfz48ZtnzZoV1rlz5/odOnQ42LVr14M7duxwtW/fvv7gwYN3TJ06dV1SUpKzW7dutfr371910qRJm870Z1ycWULPmHOAqi4VkYuAl4CPRKQTMEhVDwY4NFOyzAJutnX0jDHGGGNMSbRixYrgiy66KK6wrvfHH38sv/DCCw/ntf2ll16a3Lt372SAnj17Jk+cODFp3Lhx5VwuF23btk3u16/ffoDWrVun3nvvvTvffffd8o899tjfnTt3PpiamuqcO3duaKlSpbxut1tvu+22v3/44YfI22+/ff+MGTMiu3btuh9g8uTJUYcOHXK+9dZbWx0O3+C4V155ZWutWrUarVu3zl27du1MgA4dOiT17NkzGSAiIsKbl/gvuOCClP79++/3n3+oQYMGafPnzw/r2rXrwbFjx5atXr16+vDhw/8GCAkJyXr88ce3denSpX5WVtYml8vSV8eyn4gx5whVTQPuFZFpwHiglYjcqKr/C3BopuSYBbiBlsBPgQ3FGGOMMcaYwtWwYcP0P/74Y3lhXu902levXj392O3FixeHulwurV+//lGJwbp166bv3LkzCCA8PFwTEhJSpk6dGhkcHKxt2rQ5cNVVVx0YM2ZMxf379zsWL14c9tZbb20CWL16dal9+/a5o6KimuTsLygoSNevXx+UndCrXr16xuneb0xMTGbO7dDQUO/BgwcdAGvWrAlevnx5aERExFHXFRG2bNnirlmz5lHnGkvoGXPOUdWvRKQRMBH4VUQeBl5S1Tw99TDmTKnqFhFZh2/arSX0jDHGGGNMiRIaGqqnM2KusG3evDnomO3g2NjYTLfbrRs2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4/38yTxUdbSqxvnbxanq49mJP//xd1S1tv91h6rmOsxJVduq6pe57H9PVa/NsZ2lqhGq2ivHvr9UVVT1uXz5ARhzvPX4qtseZxPVadAgfy/2888/k5KSwty5c7n55pupUKFCns6LjISYGDI5eqq7McaYfNBqWKvdpzNSryCSeYsXLw7++OOPo5KTkx1ut5vo6GgPgNPppHz58pl//fVXqZztb7755t1vvPFGxXnz5oVkZmYybty46NmzZ0fdfffde050jfT0dElPT3dER0d7oqOjvRs3bnQ//PDDlXO2ufHGG/d+/PHHZWfPnh2amZnJa6+9VnbVqlVHFhjs1KlTSt26ddP69u1bbdu2bS6A3bt3O997773SBw8etBxUPrIfpjGmqBiGb2TOfwIdiDHmHJYotzIpeCOJ0jzQoZhiwpekfjK3Q4e9QZQqlduRs+N0OmnZsiWlS5emf//+eT4v2Dde4vRXbTfGGHNKeU3qFUQyDyA9Pd3x/PPPV6pSpUqj8PDwpsOGDas6evToDXFxcekPP/zw9h9++KF0REREk3r16jUEGD58+K7bb7/97169etWOjo5u+sorr1ScOHHiujZt2qSe6BpRUVHel19+eePIkSMrhYaGNu3UqVPd66+/fn/ONvfee+/e/v377+rZs2edMmXKNJk7d254u3btkoODg70ALpeLmTNnrg4JCfE2a9bsvLCwsKaNGjVq+MUXX0SLiI3Yy0eS40G6Mcac00T4N/AE0ECVTYGOp0RJlDhgGRBPb10e6HCMyVWi1EScy3GGheBJW49mnk9vPeGHVmPyzDeX6U18a0EeUc6VxBOvRpHHWbFHzJo1i3bt2pGZmYnLdeIVcJ5++mk++ugjli1blqd+Y2PJ2LGDR1R58fQiMsaYkmXBggW1XC7XjHr16h0ICQk5rTV4f3nul/LTH5perd1T7Y6bfltQybxzXYMGDRped911+5599tmdgY4lLS0taPXq1ZFZWVntExIS1gc6noJkI/SMMUXJa8BW4KVAB2KMOcckigNxv094HTdXLABncHUQm4Zr8oeqonoPMAhIzt5dTTazenXeu/F4PBw+fJiMDN93x/T0dA4fPozX6+XHH39k3rx5pKenk5WVxcyZM3nttde48sor89R3Sgrs2oUb2HIad2aMMeY0nWikXklK5r3zzjvRKSkpkpqaKk888USF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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from grid2op.PlotGrid import PlotMatplot\n", "plot_helper = PlotMatplot(env.observation_space)\n", "_ = plot_helper.plot_obs(obs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### i) connectivity matrix\n", "\n", "One way to represent the `graph` of the power system is the `connectivity matrix`. The `connectivity matrix` has as many rows / columns as the number of elements in the powergrid (remember that an element is either an end of a powerline, or a generator or a load) and that tells if 2 elements are connected to one another or not:\n", "\n", "$$\n", "\\left\\{\n", "\\begin{aligned}\n", "\\text{conn mat}[i,j] = 0 & ~\\text{element i and j are NOT connected to the same bus}\\\\\n", "\\text{conn mat}[i,j] = 1 & ~\\text{element i and j are connected to the same bus, or i and j are both ends of the same powerline}\\\\\n", "\\end{aligned}\n", "\\right.\n", "$$\n", "\n", "**NB** If two objects are not connected at the same substation, they are necessarily not connected together, except if these elements are the two side of the same powerline." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 1., 1., ..., 0., 0., 0.],\n", " [1., 1., 1., ..., 0., 0., 0.],\n", " [1., 1., 1., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 1., 1., 1.],\n", " [0., 0., 0., ..., 1., 1., 1.],\n", " [0., 0., 0., ..., 1., 1., 1.]], dtype=float32)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# if \"as_csr_matrix\" is set to True, then the result will be given as a csr scipy sparse matrix\n", "mat = obs.connectivity_matrix(as_csr_matrix=False)\n", "mat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And if you want to know to which object a given element is connected you can do the following (we take the exemple of trying to recover to which element load 5 is connected)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 8, -1, -1, 10, -1, -1],\n", " [ 8, -1, -1, 11, -1, -1],\n", " [ 8, -1, -1, -1, 16, -1],\n", " [ 8, -1, -1, 19, -1, -1],\n", " [ 8, 5, -1, -1, -1, -1]], dtype=int32)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load_id = 5\n", "which_connected = mat[obs.load_pos_topo_vect[load_id]] == 1\n", "obs.grid_objects_types[which_connected,]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This will give you a matrix with as many rows as the number of elements that are connected to the element (in this case 5) with:\n", "- the first column indicate the substation. All the objects connected to a given element necessarily belong to the same substation, in our example substation 8.\n", "- the second column encodes for \"load\". If there is a \"-1\" it means the element is NOT a load, otherwise it gives the load. Here, looking at the last row, when can know that currently load 5 is... connected to load 5. It will always be the case, except if the element is disconnected of course.\n", "- the third column encodes for \"generator\". In this case, all this column is \"-1\" it means the load 5 is not currently directly connected to a generator.\n", "- fourth column encodes for \"origin side of powerline\". Here we see that our load 5 is connected to powerline (origin side) with ids 10, 11 and 19\n", "- fifth column encodes for \"extremity side of powerline\". We can see that our load 5 is connecte to powerline (extremity side) 16\n", "- finally last (sixth) column encodes for storage units. This load 5 is not directly connected to any storage unit here. \n", "\n", "You can check that everything is consistent with the plot above." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Advantages**: \n", "\n", " - has always the same dimension, regardless of the topology of the powergrid\n", " - binary matrix\n", " - all elements are represented and easily accessible\n", " - symmetric matrix\n", " \n", "**Drawbacks**:\n", "\n", " - do not contain any information regarding the flows, generations, loads, storage units etc.\n", " - large matrix\n", " \n", "#### ii) bus connectivity matrix\n", "\n", "Another way to represent the \"graph\" of the powergrid is the \"bus-bus\" matrix, that says if at least one powerline connect two bus together or not. \n", "\n", "In grid2op this is called \"bus_connectivity_matrix\". \n", "\n", "This `bus connectivity matrix` has as many rows / columns as the number of active buses of the powergrid. It should be understood as follows:\n", "\n", "$$\n", "\\left\\{\n", "\\begin{aligned}\n", "\\text{bus conn mat}[i,j] = 0 & ~\\text{if no powerline connects bus i to bus j}\\\\\n", "\\text{bus conn mat}[i,j] = 1 & ~\\text{if at least one powerline connects bus i to bus j (or i == j)}\\\\\n", "\\end{aligned}\n", "\\right.\n", "$$" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 1., 1., 1., 1., 0., 1., 0., 1., 0., 0., 0., 0., 0.],\n", " [1., 1., 0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 1., 1., 1., 0.],\n", " [0., 0., 0., 1., 0., 0., 1., 1., 1., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 1., 0., 0., 1., 0., 1., 1., 0., 0., 0., 1.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 1., 0., 0., 0., 1., 1., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 1., 1., 0.],\n", " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 1., 1., 1.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 1., 1.]],\n", " dtype=float32)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.bus_connectivity_matrix(as_csr_matrix=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Advantages**: \n", "\n", "- \"small\" matrix\n", "- binary matrix\n", "- symmetric matrix\n", " \n", "**Drawbacks**:\n", "\n", "- do not contain any information regarding the flows, generations, loads, storage units etc.\n", "- it's not easy to know which powerline connects which buses\n", "- it's not easy to know which element is connected to which buses (though the `obs.bus_connectivity_matrix(return_lines_index=True)` might help in this case)\n", "- its dimension changes: you can have 2, or 1 bus at any given substation.\n", " \n", "#### iii) \"flow bus\" matrix\n", "Finally, the third way to represent the graph is to introduce informations about flows (*eg* label) on your graph.\n", "\n", "This \"flow bus matrix\" has the following properties:\n", "\n", "- like the above \"bus connectivity matrix\" it has as many rows / columns as the number of different bus on a power\n", "- the diagonal coefficients are the power injected at this bus, which is defined at the sum of the generators connected at this bus minus the sum of the loads connected at this bus\n", "- the non diagonal coefficient `[i, j]` (i different from j then) is the amount of power flowing from bus i to bus j.\n", "\n", "In grid2op, you can do the following:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 8.2246674e+01, -4.2346096e+01, 0.0000000e+00, 0.0000000e+00,\n", " -3.9900578e+01, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 4.1986198e+01, 5.9500000e+01, -2.3991766e+01, -4.1828262e+01,\n", " -3.5666172e+01, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 2.3725140e+01, -6.5000000e+00, -1.7225140e+01,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 4.0866714e+01, 1.6992859e+01, -4.4299999e+01,\n", " 2.7542929e+01, 0.0000000e+00, -2.6171078e+01, 0.0000000e+00,\n", " -1.4931423e+01, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 3.9088322e+01, 3.4981895e+01, 0.0000000e+00, -2.7643835e+01,\n", " -6.9000001e+00, -3.9526379e+01, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 3.9526379e+01, -6.5999994e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, -8.1183472e+00, -7.4602180e+00,\n", " -1.7347816e+01, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 2.6171078e+01,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 1.0408341e-14,\n", " -2.6171078e+01, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, -1.0408341e-14, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 1.4931423e+01,\n", " 0.0000000e+00, 0.0000000e+00, 2.6171078e+01, 0.0000000e+00,\n", " -2.8500000e+01, -4.3849845e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, -8.2175179e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 4.3787756e+00, -8.8000002e+00, 4.4212246e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 7.9793596e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, -4.4793596e+00, -3.5000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 7.3712506e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, -5.4000001e+00,\n", " -1.9712504e+00, 0.0000000e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 1.7057173e+01, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 1.9592170e+00,\n", " -1.2600000e+01, -6.4163899e+00],\n", " [ 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 8.1257477e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 6.2742519e+00, -1.4400000e+01]], dtype=float32)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mat, (load_bus, gen_bus, stor_bus, lor_bus, lex_bus) = obs.flow_bus_matrix(active_flow=True, as_csr_matrix=False)\n", "mat, (load_bus, gen_bus, stor_bus, lor_bus, lex_bus) = obs.flow_bus_matrix(active_flow=True, as_csr_matrix=False)\n", "mat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's dive a bit on the arguments there:\n", "\n", "- `mat` is the flow bus matrix\n", "- `load_bus` indicates for each load, to which bus it is connected\n", "- `gen_bus` indicates for each generator, to which bus it is connected\n", "- `stor_bus` indicates for each load, to which bus it is connected\n", "- `lor_bus` indicates for each line (origin side), to which bus it is connected\n", "- `lex_bus` indicates for each line (extremity side), to which bus it is connected\n", "\n", "Let's take the same example as above with the load id 5." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The load 5 absorbs: 28.50MW\n", "It is connected to the bus id 8 of the matrix\n", "And we can see the diagonal coefficient of the \"flow bus matrix\" at this bus is: -28.50\n", "Also we can see that powerlines [10 11 19] have their origin side connected at this bus.\n", "And powerlines [16] have their extremity side connected at this bus.\n", "And, for example, if we look at powerline 10, that connects bus 8 to bus 9 we can see that:\n", "The flow from bus 8 to 9 is -4.38MW\n", "For information, the flow at the origin side of this line 10 is 4.38MW. And this is not a coincidence.\n", "\n", "Also, we want to emphasize that this matrix is NOT symmetrical, for example:\n", "\t the power from bus 8 to 9 is -4.38498 MW\n", "\t the power from bus 9 to 8 is 4.37878 MW\n" ] } ], "source": [ "load_id = 5\n", "this_load_bus = load_bus[load_id]\n", "lines_or_id = np.where(lor_bus == this_load_bus)[0]\n", "lines_ex_id = np.where(lex_bus == this_load_bus)[0]\n", "line_id = lines_or_id[0]\n", "print(f\"The load {load_id} absorbs: {obs.load_p[load_id]:.2f}MW\")\n", "print(f\"It is connected to the bus id {this_load_bus} of the matrix\")\n", "print(f\"And we can see the diagonal coefficient of the \\\"flow bus matrix\\\" \"\\\n", " f\"at this bus is: {mat[this_load_bus,this_load_bus]:.2f}\")\n", "print(f\"Also we can see that powerlines {lines_or_id} have their origin side connected at this bus.\")\n", "print(f\"And powerlines {lines_ex_id} have their extremity side connected at this bus.\")\n", "print(f\"And, for example, if we look at powerline {line_id}, that connects bus {lor_bus[line_id]} \"\\\n", " f\"to bus {lex_bus[line_id]} we can see that:\")\n", "print(f\"The flow from bus {lor_bus[line_id]} to {lex_bus[line_id]} is \"\\\n", " f\"{mat[lor_bus[line_id], lex_bus[line_id]]:.2f}MW\")\n", "print(f\"For information, the flow at the origin side of this line {line_id} is {obs.p_or[line_id]:.2f}MW. \"\\\n", " f\"And this is not a coincidence.\")\n", "print()\n", "print(f\"Also, we want to emphasize that this matrix is NOT symmetrical, for example:\")\n", "print(f\"\\t the power from bus {lor_bus[line_id]} to {lex_bus[line_id]} is \"\\\n", " f\"{mat[lor_bus[line_id], lex_bus[line_id]]:.5f} MW\")\n", "print(f\"\\t the power from bus {lex_bus[line_id]} to {lor_bus[line_id]} is \"\\\n", " f\"{mat[lex_bus[line_id], lor_bus[line_id]]:.5f} MW\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So you can see that the power from a bus to another has a sign (if it's positive from 8 to 9 it means that the flow is going from 9 to 8: power is injected at bus 8 from bus 9)\n", "\n", "And also, the two values (power injected at one side, from another) do not sum at 0. This is because there are losses on the grid, mainly due to Joule's effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Advantages**: \n", "\n", "- \"small\" matrix\n", "- contain lots of information regarding the flows, generators, loads, storage units etc.\n", "\n", "**Drawbacks**:\n", "\n", "- it's not easy to know which powerline connects which buses, even though the \"lor_bus\", \"lex_bus\", \"stor_bus\" etc. can be used to retrieve it [bus in any case it will be agregated]\n", "- it's not easy to know which elements are connected to which others\n", "- its dimension changes: you can have 2, or 1 bus at any given substation.\n", "- real number matrix\n", "- non symmetric matrix\n", "\n", "**NB** The power in alternative current contains two dimension called \"active\" and \"reactive\". We detailed here the example of the \"active flow\" matrix that is accessed with `obs.flow_bus_matrix(active_flow=True)` (active flows uses `obs.p_or`, `obs.p_ex`, `obs.load_p`, `obs.gen_p` and `obs.storage_power`). You can retrieve the \"reactive flow\" matrix with `obs.flow_bus_matrix(active_flow=False)` (reactive flows uses `obs.q_or`, `obs.q_ex`, `obs.load_q`, `obs.gen_q` and nothing for the storage reactive power)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### iv) networkx graph\n", "\n", "Lastly, the grid2op framework also offers the possibility to \"convert\" a given observation as a graph (representing as a networkx graph).\n", "\n", "This graphs has the following properties:\n", "\n", "- it counts as many nodes as the number of buses of the grid\n", "- it counts less edges than the number of lines of the grid (two lines connecting the same buses are \"merged\"\n", " into one single edge)\n", "- nodes have attributes:\n", "\n", " - \"p\": the active power produced at this node (negative means the sum of power produce minus power absorbed\n", " is negative)\n", " - \"q\": the reactive power produced at this node\n", " - \"v\": the voltage magnitude at this node\n", " - \"cooldown\": how much longer you need to wait before being able to merge / split or change this node\n", "\n", "- edges have attributes too:\n", "\n", " - \"rho\": the relative flow on this powerline\n", " - \"cooldown\": the number of step you need to wait before being able to act on this powerline\n", " - \"status\": whether this powerline is connected or not\n", " - \"thermal_limit\": maximum flow allowed on the the powerline (this is the \"a_or\" flow)\n", " - \"timestep_overflow\": number of time steps during which the powerline is on overflow\n", " - \"p_or\": active power injected at this node at the \"origin side\".\n", " - \"p_ex\": active power injected at this node at the \"extremity side\".\n", " - \"q_or\": reactive power injected at this node at the \"origin side\".\n", " - \"q_ex\": reactive power injected at this node at the \"extremity side\".\n", " - \"a_or\": current flow injected at this node at the \"origin side\".\n", " - \"a_ex\": current flow injected at this node at the \"extremity side\".\n", "\n", "**IMPORTANT NOTE** the \"origin\" and \"extremity\" of the networkx graph is not necessarily the same as the one\n", "in grid2op. The \"origin\" side will always be the nodes with the lowest id. For example, if an edges connects\n", "the bus 6 to the bus 8, then the \"origin\" of this powerline is bus 6 (**eg** p_or of this edge is the power\n", "injected at bus 6) and the \"extremity\" side is bus 8.\n", "\n", "\n", "An example is given in:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import networkx\n", "graph = obs.as_networkx()\n", "graph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And you can use any networkx methods you want with this graph, for example, you can plot it" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "networkx.draw_networkx(graph,\n", " with_labels=False,\n", " # I want to plot the \"rho\" value for edges\n", " edge_color=[graph.edges[el][\"rho\"] for el in graph.edges], \n", " # i use the position computed with grid2op\n", " # NB: this code only works if the number of bus per substation is 1 !\n", " pos=[plot_helper._grid_layout[sub_nm] for sub_nm in obs.name_sub]\n", " )" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "graph = obs.as_networkx()\n", "for node_id in graph.nodes:\n", " # check the or / ex convention is ok (kirchoff's law)\n", " p_ = graph.nodes[node_id][\"p\"]\n", " q_ = graph.nodes[node_id][\"q\"]\n", " \n", " # get the edges\n", " edges = graph.edges(node_id)\n", " p_line = 0 # all active power injected at this nodes on all powerlines\n", " q_line = 0 # all reactive power injected at this nodes on all powerlines\n", " for (k1, k2) in edges:\n", " # now retrieve the active / reactive power injected at this node (looking at either *_or or *_ex\n", " # depending on the direction of the powerline: remember that the \"origin\" is always the lowest\n", " # bus id.\n", " if k1 < k2:\n", " # the current inspected node is the lowest, so on the \"origin\" side\n", " p_line += graph.edges[(k1, k2)][\"p_or\"]\n", " q_line += graph.edges[(k1, k2)][\"q_or\"]\n", " else:\n", " # the current node is the largest, so on the \"extremity\" side\n", " p_line += graph.edges[(k1, k2)][\"p_ex\"]\n", " q_line += graph.edges[(k1, k2)][\"q_ex\"]\n", " assert abs(p_line - p_) <= 1e-5\n", " assert abs(q_line - q_) <= 1e-5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### c) Some other handy methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The observation can be converted to / from a flat numpy array. This conversion is useful for interacting with machine learning libraries or to store it, but it probably makes it less readable for a human. The function proceeds by stacking all the features mentionned above in a single `numpy.float64` vector." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.0190000e+03, 1.0000000e+00, 6.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 6.0000000e+00, 8.1400002e+01, 7.9300003e+01,\n", " 5.3000002e+00, 0.0000000e+00, 0.0000000e+00, 8.2246674e+01,\n", " 1.9496038e+01, 7.1340233e+01, 2.4368923e+01, 2.4368923e+01,\n", " 2.4018070e+01, -1.7274660e+01, 1.4210001e+02, 1.4210001e+02,\n", " 2.2000000e+01, 2.2000000e+01, 1.3200001e+01, 1.4210001e+02,\n", " 2.1900000e+01, 8.5800003e+01, 4.4299999e+01, 6.9000001e+00,\n", " 1.1900000e+01, 2.8500000e+01, 8.8000002e+00, 3.5000000e+00,\n", " 5.4000001e+00, 1.2600000e+01, 1.4400000e+01, 1.5400000e+01,\n", " 5.9700001e+01, 3.0799999e+01, 4.8000002e+00, 8.3000002e+00,\n", " 1.9400000e+01, 6.0999999e+00, 2.4000001e+00, 3.9000001e+00,\n", " 8.8000002e+00, 1.0500000e+01, 1.4210001e+02, 1.4210001e+02,\n", " 1.3866075e+02, 1.3929695e+02, 2.2000000e+01, 2.1130220e+01,\n", " 2.1129551e+01, 2.1478817e+01, 2.1571596e+01, 2.1432823e+01,\n", " 2.0750198e+01, 4.2346096e+01, 3.9900578e+01, 2.3991766e+01,\n", " 4.1828262e+01, 3.5666172e+01, 1.7225140e+01, -2.7542929e+01,\n", " 8.1183472e+00, 7.4602180e+00, 1.7347816e+01, 4.3849845e+00,\n", " 8.2175179e+00, -4.4212246e+00, 1.9712504e+00, 6.4163899e+00,\n", " 2.6171078e+01, 1.4931423e+01, 3.9526379e+01, -1.0408341e-14,\n", " -2.6171078e+01, -1.6060501e+01, -1.2141596e+00, -7.4234338e+00,\n", " 4.0774456e-01, -4.4919857e-01, 7.7376227e+00, -2.1186779e+00,\n", " 1.0543067e+01, 5.6506634e+00, 1.5188450e+01, -1.5994288e+00,\n", " 3.6139119e+00, -7.7159214e+00, 1.5654972e+00, 7.3706942e+00,\n", " -1.6119450e+01, -3.0833588e+00, -5.6308179e+00, -2.3178274e+01,\n", " -4.4921541e+00, 1.4210001e+02, 1.4210001e+02, 1.4210001e+02,\n", " 1.4210001e+02, 1.4210001e+02, 1.4210001e+02, 1.3866075e+02,\n", " 2.2000000e+01, 2.2000000e+01, 2.2000000e+01, 2.1130220e+01,\n", " 2.1130220e+01, 2.1129551e+01, 2.1571596e+01, 2.1432823e+01,\n", " 1.3866075e+02, 1.3866075e+02, 1.3929695e+02, 1.4861537e+01,\n", " 2.1130220e+01, 1.8401025e+02, 1.6219051e+02, 1.0203776e+02,\n", " 1.6995570e+02, 1.4492264e+02, 7.6722275e+01, 1.1502098e+02,\n", " 3.4920593e+02, 2.4560159e+02, 6.0509528e+02, 1.2753420e+02,\n", " 2.4528467e+02, 2.4299077e+02, 6.7372948e+01, 2.6324207e+02,\n", " 1.2798145e+02, 6.3482616e+01, 1.6548074e+02, 9.0044409e+02,\n", " 7.2554138e+02, -4.1986198e+01, -3.9088322e+01, -2.3725140e+01,\n", " -4.0866714e+01, -3.4981895e+01, -1.6992859e+01, 2.7643835e+01,\n", " -7.9793596e+00, -7.3712506e+00, -1.7057173e+01, -4.3787756e+00,\n", " -8.1257477e+00, 4.4793596e+00, -1.9592170e+00, -6.2742519e+00,\n", " -2.6171078e+01, -1.4931423e+01, -3.9526379e+01, 1.0408341e-14,\n", " 2.6171078e+01, 1.1560926e+01, -5.4758495e-01, 3.9026122e+00,\n", " -1.0090021e+00, -1.0585623e+00, -8.4695101e+00, 2.4369648e+00,\n", " -1.0252009e+01, -5.4654975e+00, -1.4616084e+01, 1.6159215e+00,\n", " -3.4187043e+00, 7.8520093e+00, -1.5546099e+00, -7.0812955e+00,\n", " 1.7991196e+01, 4.2857671e+00, 9.0556650e+00, 2.4018070e+01,\n", " 5.1870790e+00, 1.4210001e+02, 1.3929695e+02, 1.4210001e+02,\n", " 1.3866075e+02, 1.3929695e+02, 1.3866075e+02, 1.3929695e+02,\n", " 2.1478817e+01, 2.1571596e+01, 2.1432823e+01, 2.1129551e+01,\n", " 2.0750198e+01, 2.1478817e+01, 2.1432823e+01, 2.0750198e+01,\n", " 1.4861537e+01, 2.1130220e+01, 2.2000000e+01, 1.3200001e+01,\n", " 1.4861537e+01, 1.7693805e+02, 1.6202699e+02, 9.7690315e+01,\n", " 1.7021111e+02, 1.4505737e+02, 7.9055550e+01, 1.1502098e+02,\n", " 3.4920593e+02, 2.4560159e+02, 6.0509528e+02, 1.2753420e+02,\n", " 2.4528467e+02, 2.4299077e+02, 6.7372948e+01, 2.6324207e+02,\n", " 1.2337778e+03, 4.2445111e+02, 1.0641736e+03, 1.0505181e+03,\n", " 1.0364877e+03, 3.4012985e-01, 3.6042336e-01, 2.7210069e-01,\n", " 2.6722595e-01, 8.2812935e-01, 2.6920095e-01, 3.4334621e-01,\n", " 5.3151590e-01, 4.9516451e-01, 7.3167509e-01, 2.8853893e-01,\n", " 3.8265938e-01, 2.8927472e-01, 4.3187788e-01, 3.9644888e-01,\n", " 5.4460192e-01, 5.3346735e-01, 9.2447340e-01, 4.5339581e-01,\n", " 4.6154031e-01, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " -1.0000000e+00, -1.0000000e+00, -1.0000000e+00, -1.0000000e+00,\n", " -1.0000000e+00, -1.0000000e+00, -1.0000000e+00, -1.0000000e+00,\n", " -1.0000000e+00, -1.0000000e+00, -1.0000000e+00, -1.0000000e+00,\n", " -1.0000000e+00, -1.0000000e+00, -1.0000000e+00, -1.0000000e+00,\n", " -1.0000000e+00, -1.0000000e+00, -1.0000000e+00, -1.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 5.3000002e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 1.0000000e+00, 1.0000000e+00, 1.0000000e+00, 1.0000000e+00,\n", " 0.0000000e+00, -1.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 0.0000000e+00, -2.1208096e+01, 2.1130220e+01, 1.0000000e+00,\n", " 0.0000000e+00, 5.7500000e+02, 5.0000000e+00, 5.0000000e+00,\n", " 1.0000000e+01, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,\n", " 1.5000000e+01, 5.0000000e+00, 1.0000000e+01, 0.0000000e+00,\n", " 0.0000000e+00, 0.0000000e+00, 1.5000000e+01], dtype=float32)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vector_representation_of_observation = obs.to_vect()\n", "vector_representation_of_observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An observation can be copied, of course:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "obs2 = obs.copy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or reset:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[nan nan nan nan nan nan]\n" ] } ], "source": [ "obs2.reset()\n", "print(obs2.gen_p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or loaded from a vector:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([81.4 , 79.3 , 5.3 , 0. , 0. , 82.24667],\n", " dtype=float32)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs2.from_vect(vector_representation_of_observation)\n", "obs2.gen_p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to assess whether two observations are equal or not:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs == obs2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### d) Simulate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As opposed to most reinforcement learning (RL) problems, in this framework we add the possibility to \"simulate\" the impact of a possible action on the power grid. This helps calculating roll-outs in the RL setting, and can be close to \"model-based\" RL approaches (except that nothing more has to be learned).\n", "\n", "This \"simulate\" function uses the available forecast data (forecasts are made available by the same way we loaded the data here, with the class `GridStateFromFileWithForecasts`. For this class, only forecasts for 1 time step are provided, but this might be adapted in the future).\n", "\n", "Note that this `simulate` function can use a different simulator than the one used by the Environment. For more information, we encourage you to read the official documentation, or if it has been built locally (recommended), to consult [this page](https://grid2op.readthedocs.io/en/latest/observation.html#grid2op.Observation.Observation.simulate).\n", "\n", "This function will:\n", "\n", "1. apply the forecasted injection on the powergrid\n", "2. run a powerflow with the decidated `simulate` powerflow simulator\n", "3. return:\n", " 1. the anticipated observation (after the action has been taken)\n", " 2. the anticipated reward (of this simulated action)\n", " 3. whether or not there has been an error\n", " 4. some more informations\n", " \n", "From a user point of view, this is the main difference with the previous [pypownet](https://github.com/MarvinLer/pypownet) framework. In pypownet, this \"simulation\" used to be performed directly by the environment, thus giving direct access of the environment's future data to the agent, which could break the RL framework since the agent is only supposed to know about the current state of the environment (it was not the case in the first edition of the Learning to Run A Power Network as the Environment was fully observable). In grid2op, the simulation is now performed from the current state of the environment and it is imperfect since it does not have access to future information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is an example of some features of the observation, in the current state and in the simulated next state :" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "do_nothing_act = env.action_space({})\n", "obs_sim, reward_sim, is_done_sim, info_sim = obs.simulate(do_nothing_act)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([81.4 , 79.3 , 5.3 , 0. , 0. , 82.24667],\n", " dtype=float32)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs.gen_p" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([82.7 , 80.9 , 5.3 , 0. , 0. , 80.43334],\n", " dtype=float32)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs_sim.gen_p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### e) obs + act\n", "\n", "In gri2op >= 1.5 we also introduced a method that can be used to rapidly assess the effect of a given \"action\" (see next notebook for a more detailed explanation of the actions) on the grid.\n", "\n", "To use it, you can use the `obs.connectivity_matrix()` and `obs.bus_connectivity_matrix()` function combined with the grid2op `obs + act` implementation.\n", "\n", "An example is given here:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 1., 1., ..., 0., 0., 0.],\n", " [1., 1., 1., ..., 0., 0., 0.],\n", " [1., 1., 1., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 1., 1., 1.],\n", " [0., 0., 0., ..., 1., 1., 1.],\n", " [0., 0., 0., ..., 1., 1., 1.]], dtype=float32)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "action_description = {}\n", "act = env.action_space(action_description)\n", "resulting_partial_obs = obs + act\n", "resulting_partial_obs.connectivity_matrix()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NB** This is not commutative: `obs + act` is not the same as `act + obs` (the later will crash by the way).\n", "\n", "**NB** This `obs + act` method is much faster than the `env.step(act)` method or the `obs.simulate(act)` method, but the resulting \"partial observation\" is not complete at all. For example, it does not contain any information on the flows, nor the loads or generators etc. do not have anything regaring the time (date, hour of day etc.). We recommend to use it only combined with the `partial_obs.connectivity_matrix()` or `partial_obs.bus_connectivity_matrix()`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II) Taking actions based on the observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section we will make our first *Agent* that will act based on these observations.\n", "\n", "All *Agents* must derive from the grid2op.Agent class. The main function to implement for the Agents is the \"act\" function (more information can be found on the official documentation or [here](https://grid2op.readthedocs.io/en/latest/agent.html) ). \n", "\n", "Basically, the Agent receives a reward and an observation, and chooses a new action. Some different *Agents* are pre-defined in the `grid2op` package. We won't talk about them here (for more information, see the documentation or the [Agent.py](grid2op/Agent/Agent.py) file), but rather we will make a custom Agent.\n", "\n", "This *Agent* will select among:\n", "\n", "- doing nothing \n", "- disconnecting the powerline having the higher relative flows\n", "- reconnecting a powerline disconnected\n", "- disconnecting the powerline having the lower relative flows\n", "\n", "by using `simulate` on the corresponding actions, and choosing the one that has the highest predicted reward.\n", "\n", "Note that this kind of Agent is not particularly smart and is given only as an example for illustration purposes.\n", "\n", "More information about the creation / manipulation of *Action* will be given in the notebook [2_Action_GridManipulation](2_Action_GridManipulation.ipynb)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "from grid2op.Agent import BaseAgent\n", "import numpy as np\n", "\n", "\n", "class MyAgent(BaseAgent):\n", " def __init__(self, action_space):\n", " # python required method to code\n", " BaseAgent.__init__(self, action_space)\n", " self.do_nothing = self.action_space({})\n", " self.print_next = False\n", " \n", " def act(self, observation, reward, done=False):\n", " i_max = np.argmax(observation.rho)\n", " new_status_max = np.zeros(observation.rho.shape, dtype=int)\n", " new_status_max[i_max] = -1\n", " act_max = self.action_space({\"set_line_status\": new_status_max})\n", " \n", " i_min = np.argmin(observation.rho)\n", " new_status_min = np.zeros(observation.rho.shape, dtype=int)\n", " if observation.rho[i_min] > 0:\n", " # all powerlines are connected, i try to disconnect this one\n", " new_status_min[i_min] = -1\n", " act_min = self.action_space({\"set_line_status\": new_status_min})\n", " else:\n", " # at least one powerline is disconnected, i try to reconnect it\n", " new_status_min[i_min] = 1\n", "# act_min = self.action_space({\"set_status\": new_status_min})\n", " act_min = self.action_space({\"set_line_status\": new_status_min,\n", " \"set_bus\": {\"lines_or_id\": [(i_min, 1)], \"lines_ex_id\": [(i_min, 1)]}})\n", " \n", " _, reward_sim_dn, *_ = observation.simulate(self.do_nothing)\n", " _, reward_sim_max, *_ = observation.simulate(act_max)\n", " _, reward_sim_min, *_ = observation.simulate(act_min)\n", " \n", " if reward_sim_dn >= reward_sim_max and reward_sim_dn >= reward_sim_min:\n", " self.print_next = False\n", " res = self.do_nothing\n", " elif reward_sim_max >= reward_sim_min:\n", " self.print_next = True\n", " res = act_max\n", " else:\n", " self.print_next = True\n", " res = act_min\n", " return res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We compare this Agent with the `Donothing` agent (already coded) on the 3 episodes made available with this package. To make this comparison more interesting, it's better to use the L2RPN rewards (`L2RPNReward`)." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The results for DoNothing agent are:\n", "\tFor chronics with id 0000\n", "\t\t - cumulative reward: 645.702087\n", "\t\t - number of time steps completed: 10 / 10\n" ] } ], "source": [ "from grid2op.Runner import Runner\n", "from grid2op.Agent import DoNothingAgent\n", "from grid2op.Reward import L2RPNReward\n", "from grid2op.Chronics import GridStateFromFileWithForecasts\n", "\n", "max_iter = 10 # to make computation much faster we will only consider 50 time steps instead of 287\n", "runner = Runner(**env.get_params_for_runner(),\n", " agentClass=DoNothingAgent\n", " )\n", "res = runner.run(nb_episode=1, max_iter=max_iter)\n", "\n", "print(\"The results for DoNothing agent are:\")\n", "for _, chron_name, cum_reward, nb_time_step, max_ts in res:\n", " msg_tmp = \"\\tFor chronics with id {}\\n\".format(chron_name)\n", " msg_tmp += \"\\t\\t - cumulative reward: {:.6f}\\n\".format(cum_reward)\n", " msg_tmp += \"\\t\\t - number of time steps completed: {:.0f} / {:.0f}\".format(nb_time_step, max_ts)\n", " print(msg_tmp)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The results for the custom agent are:\n", "\tFor chronics with id 0000\n", "\t\t - cumulative reward: 645.705750\n", "\t\t - number of time steps completed: 10 / 10\n" ] } ], "source": [ "runner = Runner(**env.get_params_for_runner(),\n", " agentClass=MyAgent\n", " )\n", "res = runner.run(nb_episode=1, max_iter=max_iter)\n", "print(\"The results for the custom agent are:\")\n", "for _, chron_name, cum_reward, nb_time_step, max_ts in res:\n", " msg_tmp = \"\\tFor chronics with id {}\\n\".format(chron_name)\n", " msg_tmp += \"\\t\\t - cumulative reward: {:.6f}\\n\".format(cum_reward)\n", " msg_tmp += \"\\t\\t - number of time steps completed: {:.0f} / {:.0f}\".format(nb_time_step, max_ts)\n", " print(msg_tmp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, both agents obtain the same score here, but there would be a difference if we didn't limit the episode length to 10 time steps.\n", "\n", "**NB** Disabling the time limit for the episode can be done by setting `max_iter=-1` in the previous cells. Here, setting `max_iter=10` is only done so that this notebook can run faster, but increasing or disabling the time limit would allow us to spot differences in the agents' performances." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same can be done for the `PowerLineSwitch` agent :" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The results for the PowerLineSwitch agent are:\n", "\tFor chronics with id 0000\n", "\t\t - cumulative reward: 645.705750\n", "\t\t - number of time steps completed: 10 / 10\n" ] } ], "source": [ "from grid2op.Agent import PowerLineSwitch\n", "runner = Runner(**env.get_params_for_runner(),\n", " agentClass=PowerLineSwitch\n", " )\n", "res = runner.run(nb_episode=1, max_iter=max_iter)\n", "print(\"The results for the PowerLineSwitch agent are:\")\n", "for _, chron_name, cum_reward, nb_time_step, max_ts in res:\n", " msg_tmp = \"\\tFor chronics with id {}\\n\".format(chron_name)\n", " msg_tmp += \"\\t\\t - cumulative reward: {:.6f}\\n\".format(cum_reward)\n", " msg_tmp += \"\\t\\t - number of time steps completed: {:.0f} / {:.0f}\".format(nb_time_step, max_ts)\n", " print(msg_tmp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NB** As of grid2op version 1.5, you can also retrieve all the state of all the step of the episodes by passing the flag `add_detailed_output=True` to the `runner.run(..., add_detailed_output=True)`" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 2 }