{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Actions as vector, and RL agent training" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is recommended to have a look at the [0_basic_functionalities](0_basic_functionalities.ipynb), [1_Observation_Agents](1_Observation_Agents.ipynb) and [2_Action_GridManipulation](2_Action_GridManipulation.ipynb) notebooks before getting into this one." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Objectives**\n", "\n", "In this notebook we will expose :\n", "* how to use the \"converters\": some specific action_space that allows to manipulate a specific action representation\n", "* how to train a (stupid) Agent using reinforcement learning.\n", "* how to inspect (rapidly) the action taken by the Agent\n", "\n", "**NB** for this tutorial we train an Agent inspired from this blog post: [deep-reinforcement-learning-tutorial-with-open-ai-gym](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368). Many other different reinforcement learning tutorial exist. The code showed in this notebook has no pretention except to demonstrate how to use Grid2Op functionality to train a Deep Reinforcement learning Agent and inspect its behaviour. There are absolutely nothing implied about the performance, training strategy, type of Agent, meta parameters etc. All of them are purely \"random\".\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import sys\n", "import grid2op" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
run previous cell, wait for 2 seconds
\n", "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "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) Manipulating action representation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Grid2op package has been built with an \"object oriented\" perspective: almost everything is encapsulated in a dedicated `class`. This allows for more customization of the plateform.\n", "\n", "The downside of this approach is that machine learning method, and especially deep learning, often prefers to deal with vectors rather than with `complex` objects. Indeed, as we covered in the previous tutorials on the platform, building our own actions can be tedious and can sometime require knowledge of the powergrid.\n", "\n", "On the contrary, in most of standard Reinforcement Learning environment, actions have an higher representation. For example in pacman, there are 4 different types of actions: turn left, turn right, go up or do down. This allows for easy sampling (you need to achieve a uniform sampling you simply need to sample a number between 0 and 3 included) and an easy representation: each action is a different component of a vector of dimension 4 [because there are 4 actions]. \n", "\n", "On the other hand this representation is not \"human friendly\". It is quite convenient in the case of pacman because the action space is rather small making it possible to remember which action corresponds to which component, but in the case of the grid2op package, there are hundreds, sometimes thousands of actions, making it impossible to remember which component corresponds to which actions. We suppose we don't really care about this fact here, as tutorials on Reinforcement Learning with discrete action space often assume that actions are labelled with integer (such as in pacman for example).\n", "\n", "Howerever, to allow the training of RL agent more easily, we allows to make some \"[Converters](https://grid2op.readthedocs.io/en/latest/converter.html)\" which roles are to allow an agent to deal with a custom representation of the action space. The class [AgentWithConverter](https://grid2op.readthedocs.io/en/latest/agent.html#grid2op.Agent.AgentWithConverter) is perfect for such usage." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/tezirg/Code/Grid2Op.BDonnot/getting_started/grid2op/MakeEnv.py:592: UserWarning:\n", "\n", "Your are using only 2 chronics for this environment. More can be download by running, from a command line:\n", "python -m grid2op.download --name \"case14_redisp\" --path_save PATH\\WHERE\\YOU\\WANT\\TO\\DOWNLOAD\\DATA\n", "\n" ] } ], "source": [ "# import the usefull class\n", "import numpy as np\n", "\n", "from grid2op import make\n", "from grid2op.Agent import RandomAgent \n", "from grid2op.Converter import IdToAct\n", "max_iter = 100 # to make computation much faster we will only consider 50 time steps instead of 287\n", "\n", "env = make(name_env=\"case14_redisp\")\n", "env.seed(0)\n", "my_agent = RandomAgent(env.action_space)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that's it. This agent will be able to perform any action, but instead of going through the description of the actions from a powersystem point of view (ie setting what is connected to what, what is disconnected etc.) it will simply choose an integer with the method `my_act` this integer will then be converter back to a proper valid action.\n", "\n", "Here we have an example on the action representation as seen by the Agent:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "172\n", "47\n", "117\n" ] } ], "source": [ "for el in range(3):\n", " print(my_agent.my_act(None, None))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And below you can see the \"`act`\" functions behaves as expected:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This action will:\n", "\t - NOT change anything to the injections\n", "\t - NOT perform any redispatching action\n", "\t - NOT force any line status\n", "\t - NOT switch any line status\n", "\t - NOT switch anything in the topology\n", "\t - Set the bus of the following element:\n", "\t \t - assign bus 2 to line (origin) 2 [on substation 8]\n", "\t \t - assign bus 2 to line (origin) 3 [on substation 8]\n", "\t \t - assign bus 1 to line (extremity) 16 [on substation 8]\n", "\t \t - assign bus 2 to line (extremity) 19 [on substation 8]\n", "\t \t - assign bus 1 to load 6 [on substation 8]\n", "This action will:\n", "\t - NOT change anything to the injections\n", "\t - NOT perform any redispatching action\n", "\t - force reconnection of 1 powerlines ([7])\n", "\t - NOT switch any line status\n", "\t - NOT switch anything in the topology\n", "\t - Set the bus of the following element:\n", "\t \t - assign bus 2 to line (origin) 7 [on substation 1]\n", "\t \t - assign bus 1 to line (extremity) 7 [on substation 2]\n", "This action will:\n", "\t - NOT change anything to the injections\n", "\t - NOT perform any redispatching action\n", "\t - NOT force any line status\n", "\t - NOT switch any line status\n", "\t - NOT switch anything in the topology\n", "\t - Set the bus of the following element:\n", "\t \t - assign bus 2 to line (origin) 2 [on substation 8]\n", "\t \t - assign bus 1 to line (origin) 3 [on substation 8]\n", "\t \t - assign bus 2 to line (extremity) 16 [on substation 8]\n", "\t \t - assign bus 2 to line (extremity) 19 [on substation 8]\n", "\t \t - assign bus 1 to load 6 [on substation 8]\n" ] } ], "source": [ "for el in range(3):\n", " print(my_agent.act(None, None))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**NB** lots of these actions are equivalent to the \"do nothing\" action at some point. For example, when trying to reconnect a powerline that is already connected will do nothing. Same for the topology. If everything is already connected to bus 1, then the action to connect things to bus 1 on the same substation will not affect the powergrid." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II) Training an Agent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this tutorial, we will expose to built a Q-learning Agent. Most of the code (except the neural network architecture) are inspired from this blog post: [https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368).\n", "\n", "**Requirements** This notebook require to have `keras` installed on your machine.\n", "\n", "As always in these notebook, we will use the `case14_fromfile` Environment. No proper care has been taken to set the thermal limits on this grid. It's unlikely that the agent can learn anything in this context." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### II.A) Defining some \"helpers\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The type of Agent were are using require a bit of set up, independantly of Grid2Op. We will reuse the code showed in \n", "[https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368) and in [Reinforcement-Learning-Tutorial](https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial) from Abhinav Sagar code under a *MIT license* found here: [MIT License](https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial/blob/master/LICENSE).\n", "\n", "This first section is here to define these classes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But first let's import the necessary dependencies" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#tf2.0 friendly\n", "import numpy as np\n", "import random\n", "import warnings\n", "with warnings.catch_warnings():\n", " warnings.filterwarnings(\"ignore\", category=FutureWarning)\n", " import tensorflow.keras\n", " import tensorflow.keras.backend as K\n", " from tensorflow.keras.models import load_model, Sequential, Model\n", " from tensorflow.keras.optimizers import Adam\n", " from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense, subtract, add\n", " from tensorflow.keras.layers import Input, Lambda, Concatenate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### a) Replay buffer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " First we define a \"replay buffer\" necessary to train the Agent." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Credit Abhinav Sagar: \n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial\n", "# Code under MIT license, available at:\n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial/blob/master/LICENSE\n", "from collections import deque\n", "\n", "class ReplayBuffer:\n", " \"\"\"Constructs a buffer object that stores the past moves\n", " and samples a set of subsamples\"\"\"\n", "\n", " def __init__(self, buffer_size):\n", " self.buffer_size = buffer_size\n", " self.count = 0\n", " self.buffer = deque()\n", "\n", " def add(self, s, a, r, d, s2):\n", " \"\"\"Add an experience to the buffer\"\"\"\n", " # S represents current state, a is action,\n", " # r is reward, d is whether it is the end, \n", " # and s2 is next state\n", " experience = (s, a, r, d, s2)\n", " if self.count < self.buffer_size:\n", " self.buffer.append(experience)\n", " self.count += 1\n", " else: \n", " self.buffer.popleft()\n", " self.buffer.append(experience)\n", "\n", " def size(self):\n", " return self.count\n", "\n", " def sample(self, batch_size):\n", " \"\"\"Samples a total of elements equal to batch_size from buffer\n", " if buffer contains enough elements. Otherwise return all elements\"\"\"\n", "\n", " batch = []\n", "\n", " if self.count < batch_size:\n", " batch = random.sample(self.buffer, self.count)\n", " else:\n", " batch = random.sample(self.buffer, batch_size)\n", "\n", " # Maps each experience in batch in batches of states, actions, rewards\n", " # and new states\n", " s_batch, a_batch, r_batch, d_batch, s2_batch = list(map(np.array, list(zip(*batch))))\n", "\n", " return s_batch, a_batch, r_batch, d_batch, s2_batch\n", "\n", " def clear(self):\n", " self.buffer.clear()\n", " self.count = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### b) Meta parameters of the methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we re-use the default parameters, note that these can be optimized. Nothing has been changed for this example.\n", "\n", "For more information about them, please refer to the blog post of Abhinav Sagar [available here](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "DECAY_RATE = 0.9\n", "BUFFER_SIZE = 40000\n", "MINIBATCH_SIZE = 64\n", "TOT_FRAME = 3000000\n", "EPSILON_DECAY = 10000\n", "MIN_OBSERVATION = 42 #5000\n", "FINAL_EPSILON = 1/300 # have on average 1 random action per scenario of approx 287 time steps\n", "INITIAL_EPSILON = 0.1\n", "TAU = 0.01\n", "ALPHA = 1\n", "# Number of frames to \"throw\" into network\n", "NUM_FRAMES = 1 ## this has been changed compared to the original implementation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### II.B) Adapatation of the inputs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the original code, the models were used to play an Atari game and the inputs were images. For our system, the inputs are \"Observation\" converted as vector.\n", "\n", "For a more detailed description of the code used, please check:\n", "* [https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368)\n", "* and [Reinforcement-Learning-Tutorial](https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial)\n", "\n", "\n", "This is why we adapted the original code from Abhinav Sagar:\n", "* We replaced convolutional layers with fully connected (dense) layers\n", "* We made sure not to look at all the observations, but rather at only some part of it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### a) extracting relevant information of observation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we extract relevant information about the dimension of the observation space, and the action space." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "OBSERVATION_SIZE = env.observation_space.size()\n", "NUM_ACTIONS = my_agent.action_space.n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A few comments here.\n", "\n", "First, we don't change anything to the observation space. This means that the vector the agent will receive is really big, not scaled and with lots of informations that are not really usefull." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### b) Code the neural networks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The code of the neural networks used have been impacted only slightly to adapt them to our problem. The biggest changes comes from removing the convolutional layers, as well as adapting the input and output size.\n", "\n", "For each of the method bellow, we specify what have been adapted." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to emphasize here that these models are used through the \"`predict_movement`\" method. This method outputs an integer: the action id. It's perfectly suited to use a representation of actions with integer rather than with complete descriptions of what the agent is doing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### II.C) Making the code of the Agent and train it" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the \"reference\" article [https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368](https://towardsdatascience.com/deep-reinforcement-learning-tutorial-with-open-ai-gym-c0de4471f368), the author Abhinav Sagar made a dedicated environment based on SpaceInvader in the gym repository. We proceed here on a similar way, but with a the grid2op environment." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### a) Adapated code" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Credit Abhinav Sagar: \n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial\n", "# Code under MIT license, available at:\n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial/blob/master/LICENSE\n", "\n", "class DeepQ(object):\n", " \"\"\"Constructs the desired deep q learning network\"\"\"\n", " def __init__(self, action_size, lr=1e-5, observation_size=OBSERVATION_SIZE):\n", " # It is not modified from Abhinav Sagar's code, except for adding the possibility to change the learning rate\n", " # in parameter is also present the size of the action space\n", " # (it used to be a global variable in the original code)\n", " self.action_size = action_size\n", " self.observation_size = observation_size\n", " self.model = None\n", " self.target_model = None\n", " self.lr_ = lr\n", " self.qvalue_evolution = []\n", " self.construct_q_network()\n", " \n", " def construct_q_network(self):\n", " # replacement of the Convolution layers by Dense layers, and change the size of the input space and output space\n", " \n", " # Uses the network architecture found in DeepMind paper\n", " self.model = Sequential()\n", " input_layer = Input(shape = (self.observation_size*NUM_FRAMES,))\n", " layer1 = Dense(self.observation_size*NUM_FRAMES)(input_layer)\n", " layer1 = Activation('relu')(layer1)\n", " layer2 = Dense(self.observation_size)(layer1)\n", " layer2 = Activation('relu')(layer2)\n", " layer3 = Dense(self.observation_size)(layer2)\n", " layer3 = Activation('relu')(layer3)\n", " layer4 = Dense(2*NUM_ACTIONS)(layer3)\n", " layer4 = Activation('relu')(layer4)\n", " output = Dense(NUM_ACTIONS)(layer4)\n", " \n", " self.model = Model(inputs=[input_layer], outputs=[output])\n", " self.model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " self.target_model = Model(inputs=[input_layer], outputs=[output])\n", " self.target_model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " self.target_model.set_weights(self.model.get_weights())\n", " \n", " def predict_movement(self, data, epsilon):\n", " \"\"\"Predict movement of game controler where is epsilon\n", " probability randomly move.\"\"\"\n", " # nothing has changed from the original implementation\n", " rand_val = np.random.random()\n", " q_actions = self.model.predict(data.reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " \n", " if rand_val < epsilon:\n", " opt_policy = np.random.randint(0, NUM_ACTIONS)\n", " else:\n", " opt_policy = np.argmax(np.abs(q_actions))\n", " \n", " self.qvalue_evolution.append(q_actions[0,opt_policy])\n", "\n", " return opt_policy, q_actions[0, opt_policy]\n", "\n", " def train(self, s_batch, a_batch, r_batch, d_batch, s2_batch, observation_num):\n", " \"\"\"Trains network to fit given parameters\"\"\"\n", " # nothing has changed from the original implementation, except for changing the input dimension 'reshape'\n", " batch_size = s_batch.shape[0]\n", " targets = np.zeros((batch_size, NUM_ACTIONS))\n", "\n", " for i in range(batch_size):\n", " targets[i] = self.model.predict(s_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " fut_action = self.target_model.predict(s2_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " targets[i, a_batch[i]] = r_batch[i]\n", " if d_batch[i] == False:\n", " targets[i, a_batch[i]] += DECAY_RATE * np.max(fut_action)\n", " loss = self.model.train_on_batch(s_batch, targets)\n", " # Print the loss every 100 iterations.\n", " if observation_num % 100 == 0:\n", " print(\"We had a loss equal to \", loss)\n", "\n", " def save_network(self, path):\n", " # Saves model at specified path as h5 file\n", " # nothing has changed\n", " self.model.save(path)\n", " print(\"Successfully saved network.\")\n", "\n", " def load_network(self, path):\n", " # nothing has changed\n", " self.model = load_model(path)\n", " print(\"Succesfully loaded network.\")\n", "\n", " def target_train(self):\n", " # nothing has changed from the original implementation\n", " model_weights = self.model.get_weights()\n", " target_model_weights = self.target_model.get_weights()\n", " for i in range(len(model_weights)):\n", " target_model_weights[i] = TAU * model_weights[i] + (1 - TAU) * target_model_weights[i]\n", " self.target_model.set_weights(target_model_weights)\n", " \n", "class DuelQ(object):\n", " \"\"\"Constructs the desired deep q learning network\"\"\"\n", " def __init__(self, action_size, lr=0.00001, observation_size=OBSERVATION_SIZE):\n", " # It is not modified from Abhinav Sagar's code, except for adding the possibility to change the learning rate\n", " # in parameter is also present the size of the action space\n", " # (it used to be a global variable in the original code)\n", " self.action_size = action_size\n", " self.observation_size = observation_size\n", " self.lr_ = lr\n", " self.model = None\n", " self.qvalue_evolution = []\n", " self.construct_q_network()\n", "\n", " def construct_q_network(self):\n", " # Uses the network architecture found in DeepMind paper\n", " # The inputs and outputs size have changed, as well as replacing the convolution by dense layers.\n", " self.model = Sequential()\n", " \n", " input_layer = Input(shape = (self.observation_size*NUM_FRAMES,))\n", " lay1 = Dense(self.observation_size*NUM_FRAMES)(input_layer)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay2 = Dense(self.observation_size)(lay1)\n", " lay2 = Activation('relu')(lay2)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay2)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " fc1 = Dense(NUM_ACTIONS)(lay3)\n", " advantage = Dense(NUM_ACTIONS)(fc1)\n", " fc2 = Dense(NUM_ACTIONS)(lay3)\n", " value = Dense(1)(fc2)\n", " \n", " meaner = Lambda(lambda x: K.mean(x, axis=1) )\n", " mn_ = meaner(advantage) \n", " tmp = subtract([advantage, mn_]) # keras doesn't like this part...\n", " policy = add([tmp, value])\n", "\n", " self.model = Model(inputs=[input_layer], outputs=[policy])\n", " self.model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", "\n", " self.target_model = Model(inputs=[input_layer], outputs=[policy])\n", " self.target_model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " print(\"Successfully constructed networks.\")\n", " \n", " def predict_movement(self, data, epsilon):\n", " \"\"\"Predict movement of game controler where is epsilon\n", " probability randomly move.\"\"\"\n", " # only changes lie in adapting the input shape\n", " q_actions = self.model.predict(data.reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " opt_policy = np.argmax(q_actions)\n", " rand_val = np.random.random()\n", " if rand_val < epsilon:\n", " opt_policy = np.random.randint(0, NUM_ACTIONS)\n", " \n", " self.qvalue_evolution.append(q_actions[0,opt_policy])\n", "\n", " return opt_policy, q_actions[0, opt_policy]\n", "\n", " def train(self, s_batch, a_batch, r_batch, d_batch, s2_batch, observation_num):\n", " \"\"\"Trains network to fit given parameters\"\"\"\n", " # nothing has changed except adapting the input shapes\n", " batch_size = s_batch.shape[0]\n", " targets = np.zeros((batch_size, NUM_ACTIONS))\n", "\n", " for i in range(batch_size):\n", " targets[i] = self.model.predict(s_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " fut_action = self.target_model.predict(s2_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " targets[i, a_batch[i]] = r_batch[i]\n", " if d_batch[i] == False:\n", " targets[i, a_batch[i]] += DECAY_RATE * np.max(fut_action)\n", "\n", " loss = self.model.train_on_batch(s_batch, targets)\n", "\n", " # Print the loss every 100 iterations.\n", " if observation_num % 100 == 0:\n", " print(\"We had a loss equal to \", loss)\n", "\n", " def save_network(self, path):\n", " # Saves model at specified path as h5 file\n", " # nothing has changed\n", " self.model.save(path)\n", " print(\"Successfully saved network.\")\n", "\n", " def load_network(self, path):\n", " # nothing has changed\n", " self.model.load_weights(path)\n", " self.target_model.load_weights(path)\n", " print(\"Succesfully loaded network.\")\n", "\n", " def target_train(self):\n", " # nothing has changed\n", " model_weights = self.model.get_weights()\n", " self.target_model.set_weights(model_weights)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another custom made version of the Q-Learning algorithm" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "class RealQ(object):\n", " \"\"\"Constructs the desired deep q learning network\"\"\"\n", " def __init__(self, action_size, lr=1e-5, observation_size=OBSERVATION_SIZE, mean_reg=False):\n", "\n", " self.action_size = action_size\n", " self.observation_size = observation_size\n", " self.model = None\n", " self.target_model = None\n", " self.lr_ = lr\n", " self.mean_reg = mean_reg\n", " \n", " self.qvalue_evolution=[]\n", "\n", " self.construct_q_network()\n", " \n", " def construct_q_network(self):\n", "\n", " self.model = Sequential()\n", " \n", " input_states = Input(shape = (self.observation_size,))\n", " input_action = Input(shape = (NUM_ACTIONS,))\n", " input_layer = Concatenate()([input_states, input_action])\n", " \n", " lay1 = Dense(self.observation_size)(input_layer)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay2 = Dense(self.observation_size)(lay1)\n", " lay2 = Activation('relu')(lay2)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay2)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " fc1 = Dense(NUM_ACTIONS)(lay3)\n", " advantage = Dense(1, activation = 'linear')(fc1)\n", " \n", " if self.mean_reg==True:\n", " advantage = Lambda(lambda x : x - K.mean(x))(advantage)\n", " \n", " self.model = Model(inputs=[input_states, input_action], outputs=[advantage])\n", " self.model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " \n", " self.model_copy = Model(inputs=[input_states, input_action], outputs=[advantage])\n", " self.model_copy.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " self.model_copy.set_weights(self.model.get_weights())\n", " \n", " def predict_movement(self, states, epsilon):\n", " \"\"\"Predict movement of game controler where is epsilon\n", " probability randomly move.\"\"\"\n", " # nothing has changed from the original implementation\n", " rand_val = np.random.random()\n", " q_actions = self.model.predict([np.tile(states.reshape(1, self.observation_size),(NUM_ACTIONS,1)), np.eye(NUM_ACTIONS)]).reshape(1,-1)\n", " if rand_val < epsilon:\n", " opt_policy = np.random.randint(0, NUM_ACTIONS)\n", " else:\n", " opt_policy = np.argmax(np.abs(q_actions))\n", " \n", " self.qvalue_evolution.append(q_actions[0,opt_policy])\n", " \n", " return opt_policy, q_actions[0,opt_policy]\n", "\n", " def train(self, s_batch, a_batch, r_batch, d_batch, s2_batch, observation_num):\n", " \"\"\"Trains network to fit given parameters\"\"\"\n", " # nothing has changed from the original implementation, except for changing the input dimension 'reshape'\n", " batch_size = s_batch.shape[0]\n", " targets = np.zeros(batch_size)\n", " last_action=np.zeros((batch_size, NUM_ACTIONS))\n", " for i in range(batch_size):\n", " last_action[i,a_batch[i]] = 1\n", " q_pre = self.model.predict([s_batch[i].reshape(1, self.observation_size), last_action[i].reshape(1,-1)], batch_size=1).reshape(1,-1)\n", " q_fut = self.model_copy.predict([np.tile(s2_batch[i].reshape(1, self.observation_size),(NUM_ACTIONS,1)), np.eye(NUM_ACTIONS)]).reshape(1,-1)\n", " fut_action = np.max(q_fut)\n", " if d_batch[i] == False:\n", " targets[i] = ALPHA * (r_batch[i] + DECAY_RATE * fut_action - q_pre)\n", " else:\n", " targets[i] = ALPHA * (r_batch[i] - q_pre)\n", " loss = self.model.train_on_batch([s_batch, last_action], targets)\n", " # Print the loss every 100 iterations.\n", " if observation_num % 100 == 0:\n", " print(\"We had a loss equal to \", loss)\n", "\n", " def save_network(self, path):\n", " # Saves model at specified path as h5 file\n", " # nothing has changed\n", " self.model.save(path)\n", " print(\"Successfully saved network.\")\n", "\n", " def load_network(self, path):\n", " # nothing has changed\n", " self.model = load_model(path)\n", " print(\"Succesfully loaded network.\")\n", "\n", " def target_train(self):\n", " # nothing has changed from the original implementation\n", " model_weights = self.model.get_weights() \n", " target_model_weights = self.model_copy.get_weights()\n", " for i in range(len(model_weights)):\n", " target_model_weights[i] = TAU * model_weights[i] + (1 - TAU) * target_model_weights[i]\n", " self.model_copy.set_weights(model_weights)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A version of SAC algorithm as described in https://spinningup.openai.com/en/latest/algorithms/sac.html" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "class SAC(object):\n", " \"\"\"Constructs the desired deep q learning network\"\"\"\n", " def __init__(self, action_size, lr=1e-5, observation_size=OBSERVATION_SIZE):\n", "\n", " self.action_size = action_size\n", " self.observation_size = observation_size\n", " self.model = None\n", " self.target_model = None\n", " self.lr_ = lr\n", " self.average_reward = 0\n", " self.life_spent = 1\n", " self.qvalue_evolution = []\n", " self.Is_nan = False\n", "\n", " self.construct_q_network()\n", " \n", " def build_q_NN(self):\n", " model = Sequential()\n", " \n", " input_states = Input(shape = (self.observation_size,))\n", " input_action = Input(shape = (NUM_ACTIONS,))\n", " input_layer = Concatenate()([input_states, input_action])\n", " \n", " lay1 = Dense(self.observation_size)(input_layer)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay2 = Dense(self.observation_size)(lay1)\n", " lay2 = Activation('relu')(lay2)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay2)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " advantage = Dense(1, activation = 'linear')(lay3)\n", " \n", " model = Model(inputs=[input_states, input_action], outputs=[advantage])\n", " model.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " \n", " return model\n", " \n", " def construct_q_network(self):\n", " #construct double Q networks\n", " self.model_Q = self.build_q_NN()\n", " self.model_Q2 = self.build_q_NN()\n", "\n", " \n", " #state value function approximation\n", " self.model_value = Sequential()\n", " \n", " input_states = Input(shape = (self.observation_size,))\n", " \n", " lay1 = Dense(self.observation_size)(input_states)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay1)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " advantage = Dense(NUM_ACTIONS, activation = 'relu')(lay3)\n", " state_value = Dense(1, activation = 'linear')(advantage)\n", " \n", " self.model_value = Model(inputs=[input_states], outputs=[state_value])\n", " self.model_value.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " \n", " self.model_value_target = Sequential()\n", " \n", " input_states = Input(shape = (self.observation_size,))\n", " \n", " lay1 = Dense(self.observation_size)(input_states)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay1)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " advantage = Dense(NUM_ACTIONS, activation = 'relu')(lay3)\n", " state_value = Dense(1, activation = 'linear')(advantage)\n", " \n", " self.model_value_target = Model(inputs=[input_states], outputs=[state_value])\n", " self.model_value_target.compile(loss='mse', optimizer=Adam(lr=self.lr_))\n", " self.model_value_target.set_weights(self.model_value.get_weights())\n", " #policy function approximation\n", " \n", " self.model_policy = Sequential()\n", " input_states = Input(shape = (self.observation_size,))\n", " lay1 = Dense(self.observation_size)(input_states)\n", " lay1 = Activation('relu')(lay1)\n", " \n", " lay2 = Dense(self.observation_size)(lay1)\n", " lay2 = Activation('relu')(lay2)\n", " \n", " lay3 = Dense(2*NUM_ACTIONS)(lay2)\n", " lay3 = Activation('relu')(lay3)\n", " \n", " soft_proba = Dense(NUM_ACTIONS, activation=\"softmax\", kernel_initializer='uniform')(lay3)\n", " \n", " self.model_policy = Model(inputs=[input_states], outputs=[soft_proba])\n", " self.model_policy.compile(loss='categorical_crossentropy', optimizer=Adam(lr=self.lr_))\n", " \n", " print(\"Successfully constructed networks.\")\n", " \n", " def predict_movement(self, states, epsilon):\n", " \"\"\"Predict movement of game controler where is epsilon\n", " probability randomly move.\"\"\"\n", " # nothing has changed from the original implementation\n", " p_actions = self.model_policy.predict(states.reshape(1, self.observation_size)).ravel()\n", " rand_val = np.random.random()\n", " \n", " if rand_val < epsilon / 10:\n", " opt_policy = np.random.randint(0, NUM_ACTIONS)\n", " else:\n", " #opt_policy = np.random.choice(np.arange(NUM_ACTIONS, dtype=int), size=1, p = p_actions)\n", " opt_policy = np.argmax(p_actions)\n", " \n", " return np.int(opt_policy), p_actions[opt_policy]\n", "\n", " def train(self, s_batch, a_batch, r_batch, d_batch, s2_batch, observation_num):\n", " \"\"\"Trains networks to fit given parameters\"\"\"\n", "\n", " # nothing has changed from the original implementation, except for changing the input dimension 'reshape'\n", " batch_size = s_batch.shape[0]\n", " target = np.zeros((batch_size, 1))\n", " new_proba = np.zeros((batch_size, NUM_ACTIONS))\n", " last_action=np.zeros((batch_size, NUM_ACTIONS))\n", " \n", " #training of the action state value networks\n", " last_action=np.zeros((batch_size, NUM_ACTIONS))\n", "\n", " for i in range(batch_size):\n", " last_action[i,a_batch[i]] = 1\n", "\n", " v_t = self.model_value_target.predict(s_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " \n", " self.qvalue_evolution.append(v_t[0])\n", " fut_action = self.model_value_target.predict(s2_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", "\n", " target[i,0] = r_batch[i] + (1 - d_batch[i]) * DECAY_RATE * fut_action \n", "\n", " \n", " loss = self.model_Q.train_on_batch([s_batch, last_action], target)\n", " loss_2 = self.model_Q2.train_on_batch([s_batch, last_action], target) \n", " \n", " #training of the policy\n", " \n", " for i in range(batch_size):\n", " self.life_spent += 1\n", " temp = 1 / np.log(self.life_spent) / 2\n", " new_values = self.model_Q.predict([np.tile(s_batch[i].reshape(1, self.observation_size),(NUM_ACTIONS,1)),\n", " np.eye(NUM_ACTIONS)]).reshape(1,-1)\n", " new_values -= np.amax(new_values, axis=-1)\n", " new_proba[i] = np.exp(new_values / temp) / np.sum(np.exp(new_values / temp), axis=-1)\n", " \n", " loss_policy = self.model_policy.train_on_batch(s_batch, new_proba)\n", " \n", " #training of the value_function\n", " value_target = np.zeros(batch_size)\n", " for i in range(batch_size):\n", " target_pi = self.model_policy.predict(s_batch[i].reshape(1, self.observation_size*NUM_FRAMES), batch_size = 1)\n", " action_v1 = self.model_Q.predict([np.tile(s_batch[i].reshape(1, self.observation_size),(NUM_ACTIONS,1)),\n", " np.eye(NUM_ACTIONS)]).reshape(1,-1)\n", " action_v2 = self.model_Q2.predict([np.tile(s_batch[i].reshape(1, self.observation_size),(NUM_ACTIONS,1)),\n", " np.eye(NUM_ACTIONS)]).reshape(1,-1)\n", " value_target[i] = np.fmin(action_v1[0,a_batch[i]], action_v2[0,a_batch[i]]) - np.sum(target_pi * np.log(target_pi + 1e-6))\n", " \n", " loss_value = self.model_value.train_on_batch(s_batch, value_target.reshape(-1,1))\n", " \n", " self.Is_nan = np.isnan(loss) + np.isnan(loss_2) + np.isnan(loss_policy) + np.isnan(loss_value)\n", " # Print the loss every 100 iterations.\n", " if observation_num % 100 == 0:\n", " print(\"We had a loss equal to \", loss, loss_2, loss_policy, loss_value)\n", "\n", " def save_network(self, path):\n", " # Saves model at specified path as h5 file\n", " # nothing has changed\n", " self.model_policy.save(\"policy_\"+path)\n", " self.model_value_target.save(\"value_\"+path)\n", " print(\"Successfully saved network.\")\n", "\n", " def load_network(self, path):\n", " # nothing has changed\n", " self.model_policy = load_model(\"policy_\"+path)\n", " elf.model_value_target = load_model(\"value_\"+path)\n", " print(\"Succesfully loaded network.\")\n", "\n", " def target_train(self):\n", " # nothing has changed from the original implementation\n", " model_weights = self.model_value.get_weights() \n", " target_model_weights = self.model_value_target.get_weights()\n", " for i in range(len(model_weights)):\n", " target_model_weights[i] = TAU * model_weights[i] + (1 - TAU) * target_model_weights[i]\n", " self.model_value_target.set_weights(model_weights)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first show how the agent code looks like without the \"utilities\" to train it. As we can see, defining this agent is pretty simple. The only real method that need to be adapted it \"`my_act`\" that is a method of 2 lines of code." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Credit Abhinav Sagar: \n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial\n", "# Code under MIT license, available at:\n", "# https://github.com/abhinavsagar/Reinforcement-Learning-Tutorial/blob/master/LICENSE\n", "\n", "from grid2op.Parameters import Parameters\n", "from grid2op.Agent import AgentWithConverter\n", "from grid2op.Converter import IdToAct\n", "import pdb\n", "\n", "\n", "class DeepQAgent(AgentWithConverter):\n", " # first change: An Agent must derived from grid2op.Agent (in this case MLAgent, because we manipulate vector instead\n", " # of classes)\n", " \n", " def convert_obs(self, observation):\n", " return observation.to_vect()\n", " \n", " def my_act(self, transformed_observation, reward, done=False):\n", " if self.deep_q is None:\n", " self.init_deep_q(transformed_observation)\n", " predict_movement_int, *_ = self.deep_q.predict_movement(transformed_observation, epsilon=0.0)\n", " # print(\"predict_movement_int: {}\".format(predict_movement_int))\n", " return predict_movement_int\n", " \n", " def init_deep_q(self, transformed_observation):\n", " if self.deep_q is None:\n", " # the first time an observation is observed, I set up the neural network with the proper dimensions.\n", " if self.mode == \"DQN\":\n", " cls = DeepQ\n", " elif self.mode == \"DDQN\":\n", " cls = DuelQ\n", " elif self.mode == \"RealQ\":\n", " cls = RealQ\n", " elif self.mode == \"SAC\":\n", " cls = SAC\n", " else:\n", " raise RuntimeError(\"Unknown neural network named \\\"{}\\\"\".format(self.mode))\n", " self.deep_q = cls(self.action_space.size(), observation_size=transformed_observation.shape[0], lr=self.lr)\n", " \n", " def __init__(self, action_space, mode=\"DDQN\", lr=1e-5):\n", " # this function has been adapted.\n", " \n", " # to built a AgentWithConverter, we need an action_space. \n", " # No problem, we add it in the constructor.\n", " AgentWithConverter.__init__(self, action_space, action_space_converter=IdToAct)\n", " \n", " # and now back to the origin implementation\n", " self.replay_buffer = ReplayBuffer(BUFFER_SIZE)\n", " \n", " # compare to original implementation, i don't know the observation space size. \n", " # Because it depends on the component of the observation we want to look at. So these neural network will\n", " # be initialized the first time an observation is observe.\n", " self.deep_q = None\n", " self.mode = mode\n", " self.lr=lr\n", " \n", " def load_network(self, path):\n", " # not modified compare to original implementation\n", " self.deep_q.load_network(path)\n", " \n", " def convert_process_buffer(self):\n", " \"\"\"Converts the list of NUM_FRAMES images in the process buffer\n", " into one training sample\"\"\"\n", " # here i simply concatenate the action in case of multiple action in the \"buffer\"\n", " # this function existed in the original implementation, bus has been adapted.\n", " return np.concatenate(self.process_buffer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now we will also define some utility class (as defined in the blog post) to make the training easier." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from grid2op.Reward import L2RPNReward\n", "from grid2op.Reward import RedispReward\n", "\n", "class L2RPNReward_LoadWise(L2RPNReward):\n", " \"\"\"\n", " Update the L2RPN reward to tke into account the fact that a change in the loads sum shall not be allocated as reward for the agent.\n", " \n", " \"\"\"\n", " def __init__(self):\n", " super().__init__()\n", " \n", " def initialize(self, env):\n", " super().initialize(env)\n", " self.reward_min = - 10 * env.backend.n_line\n", " self.previous_loads = self.reward_max * np.ones(env.backend.n_line)\n", " \n", " def __call__(self, action, env, has_error, is_done, is_illegal, is_ambiguous):\n", " if not is_done and not has_error:\n", " line_cap = self._L2RPNReward__get_lines_capacity_usage(env)\n", " \n", " new_loads, _, _ = env.backend.loads_info()\n", " new_flows = np.abs(env.backend.get_line_flow())\n", " loads_variation = (np.sum(new_loads) - np.sum(self.previous_loads)) / np.sum(self.previous_loads)\n", " \n", " res = np.sum(line_cap + loads_variation)\n", " else:\n", " # no more data to consider, no powerflow has been run, reward is what it is\n", " res = self.reward_min\n", " return res\n", " \n", "class L2RPNReward_LoadWise_ActionWise(L2RPNReward):\n", " \"\"\"\n", " Update the L2RPN reward to tke into account the fact that a change in the loads sum shall not be allocated as reward for the agent.\n", " \n", " \"\"\"\n", " def __init__(self):\n", " super().__init__()\n", " \n", " def initialize(self, env):\n", " super().initialize(env)\n", " self.reward_min = - 10 * env.backend.n_line\n", " self.previous_loads = self.reward_max * np.ones(env.backend.n_line)\n", " self.last_action = env.helper_action_env({})\n", " \n", " def __call__(self, action, env, has_error, is_done, is_illegal, is_ambiguous):\n", " if not is_done and not has_error:\n", " line_cap = self._L2RPNReward__get_lines_capacity_usage(env)\n", " \n", " new_loads, _, _ = env.backend.loads_info()\n", " new_flows = np.abs(env.backend.get_line_flow())\n", " loads_variation = (np.sum(new_loads) - np.sum(self.previous_loads)) / np.sum(self.previous_loads)\n", " \n", " res = np.sum(line_cap + loads_variation)\n", " else:\n", " # no more data to consider, no powerflow has been run, reward is what it is\n", " res = self.reward_min\n", " \n", " res -= (action != env.helper_action_env({})) * (action == self.last_action) * env.backend.n_line / 2\n", " \n", " self.last_action = action\n", " \n", " return res\n", " \n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "class TrainAgent(object):\n", " def __init__(self, agent, reward_fun=RedispReward, env=None):\n", " self.agent = agent\n", " self.reward_fun = reward_fun\n", " self.env = env\n", " \n", " def _build_valid_env(self):\n", " # now we are creating a valid Environment\n", " # it's mandatory because no environment are created when the agent is \n", " # an Agent should not get direct access to the environment, but can interact with it only by:\n", " # * receiving reward\n", " # * receiving observation\n", " # * sending action\n", " \n", " close_env = False\n", " \n", " if self.env is None:\n", " self.env = grid2op.make(action_class=type(self.agent.action_space({})),\n", " reward_class=self.reward_fun)\n", " close_env = True\n", " \n", " # I make sure the action space of the user and the environment are the same.\n", " if not isinstance(self.agent.init_action_space, type(self.env.action_space)):\n", " raise RuntimeError(\"Imposssible to build an agent with 2 different action space\")\n", " if not isinstance(self.env.action_space, type(self.agent.init_action_space)):\n", " raise RuntimeError(\"Imposssible to build an agent with 2 different action space\")\n", " \n", " # A buffer that keeps the last `NUM_FRAMES` images\n", " self.agent.replay_buffer.clear()\n", " self.agent.process_buffer = []\n", " \n", " # make sure the environment is reset\n", " obs = self.env.reset()\n", " self.agent.process_buffer.append(self.agent.convert_obs(obs))\n", " do_nothing = self.env.action_space()\n", " for _ in range(NUM_FRAMES-1):\n", " # Initialize buffer with the first frames\n", " s1, r1, _, _ = self.env.step(do_nothing)\n", " self.agent.process_buffer.append(self.agent.convert_obs(s1)) \n", " return close_env\n", " \n", " def train(self, num_frames, env=None):\n", " # this function existed in the original implementation, but has been slightly adapted.\n", " \n", " # first we create an environment or make sure the given environment is valid\n", " close_env = self._build_valid_env()\n", " \n", " # bellow that, only slight modification has been made. They are highlighted\n", " observation_num = 0\n", " curr_state = self.agent.convert_process_buffer()\n", " epsilon = INITIAL_EPSILON\n", " alive_frame = 0\n", " total_reward = 0\n", "\n", " while observation_num < num_frames:\n", " if observation_num % 1000 == 999:\n", " print((\"Executing loop %d\" %observation_num))\n", "\n", " # Slowly decay the learning rate\n", " if epsilon > FINAL_EPSILON:\n", " epsilon -= (INITIAL_EPSILON-FINAL_EPSILON)/EPSILON_DECAY\n", "\n", " initial_state = self.agent.convert_process_buffer()\n", " self.agent.process_buffer = []\n", "\n", " # it's a bit less convenient that using the SpaceInvader environment.\n", " # first we need to initiliaze the neural network\n", " self.agent.init_deep_q(curr_state)\n", " # then we need to predict the next move\n", " predict_movement_int, predict_q_value = self.agent.deep_q.predict_movement(curr_state, epsilon)\n", " # and then we convert it to a valid action\n", " act = self.agent.convert_act(predict_movement_int)\n", " \n", " reward, done = 0, False\n", " for i in range(NUM_FRAMES):\n", " temp_observation_obj, temp_reward, temp_done, _ = self.env.step(act)\n", " # here it has been adapted too. The observation get from the environment is\n", " # first converted to vector\n", " \n", " # below this line no changed have been made to the original implementation.\n", " reward += temp_reward\n", " self.agent.process_buffer.append(self.agent.convert_obs(temp_observation_obj))\n", " done = done | temp_done\n", "\n", " if done:\n", " print(\"Lived with maximum time \", alive_frame)\n", " print(\"Earned a total of reward equal to \", total_reward)\n", " # reset the environment\n", " self.env.reset()\n", " \n", " alive_frame = 0\n", " total_reward = 0\n", "\n", " new_state = self.agent.convert_process_buffer()\n", " self.agent.replay_buffer.add(initial_state, predict_movement_int, reward, done, new_state)\n", " total_reward += reward\n", " if self.agent.replay_buffer.size() > MIN_OBSERVATION:\n", " s_batch, a_batch, r_batch, d_batch, s2_batch = self.agent.replay_buffer.sample(MINIBATCH_SIZE)\n", " self.agent.deep_q.train(s_batch, a_batch, r_batch, d_batch, s2_batch, observation_num)\n", " self.agent.deep_q.target_train()\n", "\n", " # Save the network every 1000 iterations after 50000 iterations\n", " if observation_num > 50000 and observation_num % 1000 == 0 and self.agent.deep_q.Is_nan == 0:\n", " print(\"Saving Network\")\n", " self.agent.deep_q.save_network(\"saved_agent_\"+self.agent.mode+\".h5\")\n", "\n", " alive_frame += 1\n", " observation_num += 1\n", " \n", " if close_env:\n", " print(\"closing env\")\n", " self.env.close()\n", " \n", " def calculate_mean(self, num_episode = 100, env=None):\n", " # this method has been only slightly adapted from the original implementation\n", " \n", " # Note that it is NOT the recommended method to evaluate an Agent. Please use \"Grid2Op.Runner\" instead\n", " \n", " # first we create an environment or make sure the given environment is valid\n", " close_env = self._build_valid_env()\n", " \n", " reward_list = []\n", " print(\"Printing scores of each trial\")\n", " for i in range(num_episode):\n", " done = False\n", " tot_award = 0\n", " self.env.reset()\n", " while not done:\n", " state = self.convert_process_buffer()\n", " \n", " # same adapation as in \"train\" function. \n", " predict_movement_int = self.agent.deep_q.predict_movement(state, 0.0)[0]\n", " predict_movement = self.agent.convert_act(predict_movement_int)\n", " \n", " # same adapation as in the \"train\" funciton\n", " observation_obj, reward, done, _ = self.env.step(predict_movement)\n", " observation_vect_full = observation_obj.to_vect()\n", " \n", " tot_award += reward\n", " self.process_buffer.append(observation)\n", " self.process_buffer = self.process_buffer[1:]\n", " print(tot_award)\n", " reward_list.append(tot_award)\n", " \n", " if close_env:\n", " self.env.close()\n", " return np.mean(reward_list), np.std(reward_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### b) Training the model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can define the model (agent), and then train it.\n", "\n", "This is done exactly the same way as in the Abhinav Sagar implementation.\n", "\n", "**NB** The code bellow can take a few minutes to run. It's training a Deep Reinforcement Learning Agent afterall. It this takes too long on your machine, you can always decrease the \"nb_frame\", and set it to 1000 for example. In this case, the Agent will probably not be really good.\n", "\n", "**NB** For a real Agent, it would take much longer to train." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/tezirg/Code/Grid2Op.BDonnot/getting_started/grid2op/MakeEnv.py:592: UserWarning:\n", "\n", "Your are using only 2 chronics for this environment. More can be download by running, from a command line:\n", "python -m grid2op.download --name \"case14_redisp\" --path_save PATH\\WHERE\\YOU\\WANT\\TO\\DOWNLOAD\\DATA\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Successfully constructed networks.\n", "Lived with maximum time 3\n", "Earned a total of reward equal to 3265.510168153268\n", "Lived with maximum time 4\n", "Earned a total of reward equal to 3211.0176961992283\n", "Lived with maximum time 5\n", "Earned a total of reward equal to 4351.474102870227\n", "Lived with maximum time 5\n", "Earned a total of reward equal to 4297.903349713559\n", "Lived with maximum time 7\n", "Earned a total of reward equal to 6575.526890023941\n", "Lived with maximum time 4\n", "Earned a total of reward equal to 3211.0176961992283\n", "Lived with maximum time 2\n", "Earned a total of reward equal to 1075.9133274380465\n", "Lived with maximum time 51\n", "Earned a total of reward equal to 58436.087906076275\n", "Lived with maximum time 1\n", "Earned a total of reward equal to -10\n", "Lived with maximum time 7\n", "Earned a total of reward equal to 6490.193902990617\n", "Lived with maximum time 4\n", "Earned a total of reward equal to 3254.6406007128016\n", "Lived with maximum time 6\n", "Earned a total of reward equal to 5380.771770361067\n", "Successfully saved network.\n" ] } ], "source": [ "nb_frame = 100\n", "\n", "env = make(name_env=\"case14_redisp\")\n", "my_agent = DeepQAgent(env.action_space, mode=\"DDQN\")\n", "trainer = TrainAgent(agent=my_agent, env=env, reward_fun=RedispReward)\n", "trainer.train(nb_frame)\n", "trainer.agent.deep_q.save_network(\"saved_agent_\"+trainer.agent.mode+\".h5\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# To see whether the agent learnt something during training: lets plot the learning curve" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 100.0)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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5xcAAAAAAEA//P3lN8Vrztket949jl/6vmPiF7/v2N6EObsjS5Puxh6uhW6aXwAAAAAAAB27Y7mIN33wsjj7P74aj3rI3vGXL3lSHH/o5mh7rZcP07hzuejkbDu/AAAAAAAAeuBTV94cZ559cdzyzXH84vceE//1GcfEwjDt+loPSN5h82u282uYdHL+roRfAAAAAADAlnLHchFv/tBl8f5//2oc++C94i9+6qQ44dD9ur7WHsmHg1kI1bbZzi/NLwAAAAAAgHZ96sqb4zVnb4+b7xrFzz/96PjlZx67adte62XpIMYdhV914yzryY404RcAAAAAADD37hyttr3+9nOrba8/e/FT48RHbO6213p5Ooiis7GH1ewOfSD8AgAAAAAA5to/XHlzvOac7XHTnaN41dOPjl9+xrGxmG3+ttd62bAHzS/hFwAAAAAAQHPWt72OefBecc7PPzUeP0dtr/XydDALodpWlNNIB0mkg6ST83cl/AIAAAAAAObOP37h63Hm2RfPddtrvXw4mI0fbFtRTiNL+xF8RQi/AAAAAACAOXLnqIi3fOjyeN/nrpv7ttd6WZp0N/awnPZm5GGE8AsAAAAAAJgT//SFr8er19peP/e0o+NXnjnfba/18jSNclpFOa1aHz84nkwjF34BAAAAAABsjLtGRbzlw5fHey+8Lo4++EFx9queEk84bP+ur9WqbLgaeK3u32o38Cs0vwAAAAAAADbGP63t9vranaN45dOOil995iO3TNtrvbp5NS6nrf/7i7KKfCj8AgAAAAAAeMDuGhXxOx+5PN7zb6ttr7Ne9ZT4ri3W9lqvDp/Gk/b3fq3u/Gp31OK3I/wCAAAAAAA2lX/+4tfjzLO3x413LMcrv+eo+NVnbc2213p186soOwi/JsYeAgAAAAAA3G+rba8r4j3/dm0cpe11D3X4VEyq1s8uyqmxhwAAAAAAAPfHp794S7z67IvjhjuW4xXfc1T8mrbXPWT12MOybP3sopzOmmd9IPwCAAAAAAB665srk/idj1we/+tfr42jDnpQnPVzT4knHq7ttas6fBp30fyaVMYeAgAAAAAAfCf/ctUtccZZq22vl/+XI+PXv/9R2l73IR8mEREx7mLnVzmNffKs9XPvi/ALAAAAAADolW+uTOJ3P3J5vHvW9jo1nnj4AV1fq9fydDUULLoIvybTyNOk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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "plt.figure(figsize=(30,20))\n", "plt.plot(my_agent.deep_q.qvalue_evolution)\n", "plt.axhline(y=0, linewidth=3, color='red')\n", "plt.xlim(0, len(my_agent.deep_q.qvalue_evolution))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The learning curve shown above is really poor. It's because the agent has not been trained for a long time (and because it uses a very poor input data). If you train this agent for approximately 10-12 hours, using only the relative flow (`obs.rho` see the last section of this notebook for an example) you will get the following:\n", "\n", "![](img/trained_agent.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## III) Evaluating the Agent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now, time to test this trained agent.\n", "\n", "To do that, we have multiple choices.\n", "\n", "Either we recode the \"DeepQAgent\" class to load the stored weights (that have been saved during trainig) when it is initialized (not covered in this notebook), or we can also directly specified the \"instance\" of the Agent to use in the Grid2Op Runner.\n", "\n", "To do that, it's fairly simple. First, you need to specify that you won't use the \"*agentClass*\" argument, by setting it to ``None``, and secondly you simply provide the agent to use in the *agentInstance* argument.\n", "\n", "**NB** If you don't do that, the Runner will be created (the constructor will raise an exception). And if you choose to use the \"*agentClass*\" argument, your agent will be reloaded from scratch. So **if it doesn't load the weights** it will behave as a non trained agent, unlikely to perform well on the task." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### III.A) Evaluate the Agent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have \"successfully\" trained our Agent, we will evaluating it. As opposed to the trainining, the evaluation is done classically using a standard Runner.\n", "\n", "Note that the Runner will use a \"scoring function\" that might be different from the \"reward function\" used during training. In our case, it's not. We use the `L2RPNReward` in both cases.\n", "\n", "In the code bellow, we commented on what can be different and what must be identical for training and evaluation of model." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "from grid2op.Runner import Runner\n", "from grid2op.Chronics import GridStateFromFileWithForecasts, Multifolder\n", "scoring_function = L2RPNReward\n", "\n", "dict_params = env.get_params_for_runner()\n", "dict_params[\"gridStateclass_kwargs\"][\"max_iter\"] = max_iter\n", "# make a runner from an intialized environment\n", "runner = Runner(**dict_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the Agent and save the results. As opposed to the multiple times we exposed the \"runner.run\" call, we never really dive into the \"path_save\" argument. This path allows you to save lots of information about your Agent behaviour. Please All the informations present are shown on the documentation [here](file:///home/donnotben/Documents/Grid2Op/documentation/html/runner.html)." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The results for the trained agent are:\n", "\tFor chronics located at 0\n", "\t\t - cumulative reward: 121368.512117\n", "\t\t - number of time steps completed: 100 / 100\n" ] } ], "source": [ "import shutil\n", "path_save=\"trained_agent_log\"\n", "\n", "# delete the previous stored results\n", "if os.path.exists(path_save):\n", " shutil.rmtree(path_save)\n", "\n", "# run the episode\n", "res = runner.run(nb_episode=1, path_save=path_save)\n", "print(\"The results for the trained agent are:\")\n", "for _, chron_name, cum_reward, nb_time_step, max_ts in res:\n", " msg_tmp = \"\\tFor chronics located at {}\\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": [ "### III.B) Inspect the Agent " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please refer to the official document for more information about the content of the directory where the data are saved. Note that the saving of the information is triggered by the \"path_save\" argument sent to the \"runner.run\" function.\n", "\n", "Some information that will be present in this repository are:\n", "If enabled, the :class:`Runner` will save the information in a structured way. For each episode there will be a folder\n", "with:\n", "\n", " - \"episode_meta.json\" that represents some meta information about:\n", "\n", " - \"backend_type\": the name of the `grid2op.Backend` class used\n", " - \"chronics_max_timestep\": the **maximum** number of timestep for the chronics used\n", " - \"chronics_path\": the path where the temporal data (chronics) are located\n", " - \"env_type\": the name of the `grid2op.Environment` class used.\n", " - \"grid_path\": the path where the powergrid has been loaded from\n", "\n", " - \"episode_times.json\": gives some information about the total time spend in multiple part of the runner, mainly the\n", " `grid2op.Agent` (and especially its method `grid2op.Agent.act`) and amount of time spent in the\n", " `grid2op.Environment`\n", "\n", " - \"_parameters.json\": is a representation as json of a the `grid2op.Parameters` used for this episode\n", " - \"rewards.npy\" is a numpy 1d array giving the rewards at each time step. We adopted the convention that the stored\n", " reward at index `i` is the one observed by the agent at time `i` and **NOT** the reward sent by the\n", " `grid2op.Environment` after the action has been implemented.\n", " - \"exec_times.npy\" is a numpy 1d array giving the execution time of each time step of the episode\n", " - \"actions.npy\" gives the actions that has been taken by the `grid2op.Agent`. At row `i` of \"actions.npy\" is a\n", " vectorized representation of the action performed by the agent at timestep `i` *ie.* **after** having observed\n", " the observation present at row `i` of \"observation.npy\" and the reward showed in row `i` of \"rewards.npy\".\n", " - \"disc_lines.npy\" gives which lines have been disconnected during the simulation of the cascading failure at each\n", " time step. The same convention as for \"rewards.npy\" has been adopted. This means that the powerlines are\n", " disconnected when the `grid2op.Agent` takes the `grid2op.Action` at time step `i`.\n", " - \"observations.npy\" is a numpy 2d array reprensenting the `grid2op.Observation` at the disposal of the\n", " `grid2op.Agent` when he took his action.\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can first look at the repository were the data are stored:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\t\t\tdict_env_modification_space.json\r\n", "dict_action_space.json\tdict_observation_space.json\r\n" ] } ], "source": [ "!ls trained_agent_log" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, there is only one folder there. It's named \"1\" because, in the original data, this came from the folder named \"1\" (the original data are located at \"/home/donnotben/.local/lib/python3.6/site-packages/grid2op/data/test_multi_chronics/\")\n", "\n", "If there were multiple episode, each episode would have it's own folder, with a name as resemblant as possible to the origin name of the data. This is done to ease the studying of the results.\n", "\n", "Now let's see what is inside this folder:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "actions.npy\t\t\t env_modifications.npy observations.npy\r\n", "agent_exec_times.npy\t\t episode_meta.json\t _parameters.json\r\n", "disc_lines_cascading_failure.npy episode_times.json\t rewards.npy\r\n" ] } ], "source": [ "!ls trained_agent_log/0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can for example load the \"actions\" performed by the Agent, and have a look at them.\n", "\n", "To do that we will load the action array (represented as vector) and use the action_space to convert it back into valid action class." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "all_actions = np.load(os.path.join(\"trained_agent_log\", \"0\", \"actions.npy\"))\n", "li_actions = []\n", "for i in range(all_actions.shape[0]):\n", " try:\n", " tmp = runner.env.action_space.from_vect(all_actions[i,:])\n", " li_actions.append(tmp)\n", " except:\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This allows us to have a deeper look at the action, and their effect. Note that here, we used action that can only **set** the line status, so looking at their effect is pretty straightforward.\n", "\n", "Also, note that as oppose to \"change\", if a powerline is already connected, trying to **set** it as connected has absolutely no impact." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "line_disc = 0\n", "line_reco = 0\n", "for act in li_actions:\n", " dict_ = act.as_dict()\n", " if \"set_line_status\" in dict_:\n", " line_reco += dict_[\"set_line_status\"][\"nb_connected\"]\n", " line_disc += dict_[\"set_line_status\"][\"nb_disconnected\"]\n", "line_reco" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As wa can see for our event, the agent always try to reconnect a powerline. As all lines are alway reconnected, this Agent does basically nothing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also do the same kind of post analysis for the observation, even though here, as the observations come from files, it's probably not particularly intersting." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_observations = np.load(os.path.join(\"trained_agent_log\", \"0\", \"observations.npy\"))\n", "li_observations = []\n", "nb_real_disc = 0\n", "for i in range(all_observations.shape[0]):\n", " try:\n", " tmp = runner.env.observation_space.from_vect(all_observations[i,:])\n", " li_observations.append(tmp)\n", " nb_real_disc += (np.sum(tmp.line_status) - tmp.line_status.shape[0])\n", " except:\n", " break\n", "nb_real_disc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also look at the type of action the agent did:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of different actions played: 1\n" ] } ], "source": [ "actions_count = {}\n", "for act in li_actions:\n", " act_as_vect = tuple(act.to_vect())\n", " if not act_as_vect in actions_count:\n", " actions_count[act_as_vect] = 0\n", " actions_count[act_as_vect] += 1\n", "print(\"Number of different actions played: {}\".format(len(actions_count)))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This action will:\n", "\t - NOT change anything to the injections\n", "\t - NOT perform any redispatching action\n", "\t - NOT force any line status\n", "\t - NOT switch any line status\n", "\t - NOT switch anything in the topology\n", "\t - NOT force any particular bus configuration\n" ] } ], "source": [ "print(runner.env.action_space.from_vect(np.array(list(actions_count.keys())[0])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The agent only did one action (note that this number can really vary on the number of training step and the . This is not really good, the agent didn't learn anything." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## IV) Improve your Agent " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw, the agent we develop was not really interesting. To improve it, we could think about:\n", "\n", "- a better encoding of the observation. For now everything is fed to the neural network, without any normalization of any kind. This is a real problem for learning algorithm.\n", "- a better neural network architecture (as said, we didn't pay any attention to it in our model)\n", "- train it for a longer time\n", "- adapt the learning rate and all the meta parameters of the learning algorithm.\n", "- etc.\n", "\n", "In this notebook, we will focus on changing the observation representation, by only feeding the agent only some informations.\n", "\n", "To do so, the only modification we need to do is to modify the way the observation are converted. So the \"*convert_obs*\" method, and that is it. Nothing else need changing. Here for example we could think of only using the flow ratio (*ie* the current flows divided by the thermal limites) part of the observation (named rho) instead of feeding the whole observation." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "class DeepQAgent_Improved(DeepQAgent):\n", " def __init__(self, action_space, mode=\"DDQN\"):\n", " DeepQAgent.__init__(self, action_space, mode=mode)\n", " \n", " def convert_obs(self, observation):\n", " return observation.rho" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can reuse exactly the same code to train it :-)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Successfully constructed networks.\n", "Lived with maximum time 27\n", "Earned a total of reward equal to 30455.13538629611\n", "Lived with maximum time 5\n", "Earned a total of reward equal to 4352.546473986533\n", "Lived with maximum time 43\n", "Earned a total of reward equal to 48400.2926498057\n", "Lived with maximum time 14\n", "Earned a total of reward equal to 13357.726978636152\n", "Lived with maximum time 9\n", "Earned a total of reward equal to 8691.820546873894\n" ] }, { "data": { "image/png": "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5xcAAAAAAEA//P3lN8Vrztket949jl/6vmPiF7/v2N6EObsjS5Puxh6uhW6aXwAAAAAAAB27Y7mIN33wsjj7P74aj3rI3vGXL3lSHH/o5mh7rZcP07hzuejkbDu/AAAAAAAAeuBTV94cZ559cdzyzXH84vceE//1GcfEwjDt+loPSN5h82u282uYdHL+roRfAAAAAADAlnLHchFv/tBl8f5//2oc++C94i9+6qQ44dD9ur7WHsmHg1kI1bbZzi/NLwAAAAAAgHZ96sqb4zVnb4+b7xrFzz/96PjlZx67adte62XpIMYdhV914yzryY404RcAAAAAADD37hyttr3+9nOrba8/e/FT48RHbO6213p5Ooiis7GH1ewOfSD8AgAAAAAA5to/XHlzvOac7XHTnaN41dOPjl9+xrGxmG3+ttd62bAHzS/hFwAAAAAAQHPWt72OefBecc7PPzUeP0dtr/XydDALodpWlNNIB0mkg6ST83cl/AIAAAAAAObOP37h63Hm2RfPddtrvXw4mI0fbFtRTiNL+xF8RQi/AAAAAACAOXLnqIi3fOjyeN/nrpv7ttd6WZp0N/awnPZm5GGE8AsAAAAAAJgT//SFr8er19peP/e0o+NXnjnfba/18jSNclpFOa1aHz84nkwjF34BAAAAAABsjLtGRbzlw5fHey+8Lo4++EFx9queEk84bP+ur9WqbLgaeK3u32o38Cs0vwAAAAAAADbGP63t9vranaN45dOOil995iO3TNtrvbp5NS6nrf/7i7KKfCj8AgAAAAAAeMDuGhXxOx+5PN7zb6ttr7Ne9ZT4ri3W9lqvDp/Gk/b3fq3u/Gp31OK3I/wCAAAAAAA2lX/+4tfjzLO3x413LMcrv+eo+NVnbc2213p186soOwi/JsYeAgAAAAAA3G+rba8r4j3/dm0cpe11D3X4VEyq1s8uyqmxhwAAAAAAAPfHp794S7z67IvjhjuW4xXfc1T8mrbXPWT12MOybP3sopzOmmd9IPwCAAAAAAB665srk/idj1we/+tfr42jDnpQnPVzT4knHq7ttas6fBp30fyaVMYeAgAAAAAAfCf/ctUtccZZq22vl/+XI+PXv/9R2l73IR8mEREx7mLnVzmNffKs9XPvi/ALAAAAAADolW+uTOJ3P3J5vHvW9jo1nnj4AV1fq9fydDUULLoIvybTyNOk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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "my_agent = DeepQAgent_Improved(env.action_space, mode=\"DDQN\")\n", "trainer = TrainAgent(agent=my_agent, env=env)\n", "trainer.train(nb_frame)\n", "\n", "plt.figure(figsize=(30,20))\n", "plt.plot(my_agent.deep_q.qvalue_evolution)\n", "plt.axhline(y=0, linewidth=3, color='red')\n", "_ = plt.xlim(0, len(my_agent.deep_q.qvalue_evolution))" ] } ], "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }