Skip to content

Instantly share code, notes, and snippets.

@DavidSanwald
Last active October 24, 2016 10:58
Show Gist options
  • Save DavidSanwald/5ed5342829464363690481c8c6d5d205 to your computer and use it in GitHub Desktop.
Save DavidSanwald/5ed5342829464363690481c8c6d5d205 to your computer and use it in GitHub Desktop.
Not finished but I need some help/input (:
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Unfinished WIP by David Sanwald.**\n",
"\n",
"\n",
"Hello, I'm David a soon to be finished student from Berlin. I uploaded this because I need some feedback. It would be very kind of you if you have some input. The text is kind of stupid, I dislike the tutorial tone of voice and all the not so funny comments on sex and cocaine (;\n",
"So please see the text just as a placeholder I will rewrite it.\n",
"\n",
"**I'm thankful for every input and critique but I'm especially stuck with the following questions*:\n",
"\n",
"1. The whole plotting makes everything kind of messy. Should I leave it in there or just put it in an extra file and import it to reduce the distraction from the main topic?\n",
"2. Does anybody know how I can smooth the rewards over episodes plot? I think some filter maybe Wiener? Or splines? Tried many things but I can't find the right parameters."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#: imports, nothing to see here\n",
"import random\n",
"from collections import defaultdict, namedtuple\n",
"from itertools import product, starmap\n",
"\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import seaborn as sns\n",
"from IPython.display import Image\n",
"from scipy import stats\n",
"%matplotlib inline\n",
"sns.set()\n",
"states_colors = matplotlib.colors.ListedColormap(\n",
" ['#9A9A9A', '#D886BA', '#4D314A', '#6E9183'])\n",
"cmap_default = 'Blues'\n",
"cpal_default = sns.color_palette((\"Blues_d\"))\n",
"\n",
"sns.set_style(\"white\")\n",
"sns.set_context(\"poster\")\n",
"random.seed(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Discovering reinforcement learning\n",
"## Hands on, light on math (:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Why this tutorial, why RL?\n",
"\n",
"Reinforcement learning is a lot of fun (some even say it's pretty *rewarding*). Temporal Difference learning is closely related to the mechanics of *dopamine* in the brain. \n",
"And it's widely known that *dopamine* has something to do with **COCAINE** and **SEX** and I've been told those are pretty popular these days.\n",
"So reinforcement learning is as close as machine learning gets to *sex*, *drugs* and rock 'n roll.\n",
"\n",
"Sadly most of the resources to get startet involve a decent amount of math.\n",
"Although I enjoy math, too many equations sometimes can trigger one's escape reflex.\n",
"Math is pretty important for RL but I think it's well possible to get startet, understand the basics and gain some intution without heavy math.\n",
"So I wrote this hands on tutorial with an emphasis of code and tried to be very light on the math.\n",
"Also the code of some great frameworks like the openai gym is optimized for flexibility and not to learn RL by reading the code. \n",
"These frameworks utilize the observer observer pattern and many factories , so they are great to use but there's a lot of magic happening."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## How RL describes the world\n",
"\n",
"Let's begin with a example and look at a small \"toy\" problem, called Gridworld, borrowed from the Sutton and Barto the grandfathers and pioneers of RL.\n",
"Here is a plot of the gridworld:\n",
"![Cliffworld](img/cliff_map.png)\n",
"The world our agent has to deal with consists of just 4 $\\times$ 12 squares, representing all possible **states** of our world. The rules of this particular gridworld are the following.\n",
"\n",
"1. The agent starts at the beginning of each episode on the green square in the upper left corner.\n",
"2. At each timestep the agent can move one step.\n",
"3. The agent can't leave the board.\n",
"4. There are two ways an episode can end:\n",
" 1. The agent reaches the goal state\n",
" 2. The agent steps on one of the pink states. If the agent steps on those squares she falls of a cliff and the episode also terminates.\n",
"5. Living means suffering. Thus each timestep the agent recieves a negative reward of **-1**. If the agent falls of the cliff he gets a penality of **-100**\n",
"\n",
"So the basic loop of reinforcement learning is:\n",
"\n",
"```\n",
"while episode is non terminal: \n",
" agent choses action\n",
" environment changes state\n",
" agent observes new state an recieves reward for new state\n",
" REPEAT\n",
" \n",
"```\n",
"\n",
"The goal of RL is to finde the sequence of action which maximizes the expected return over time.\n",
"\n",
"What does that mean for our small gridworld?\n",
"\n",
"Because life sucks there's not much to win in our gridworld. But each moment in our little world means pain thus the agent wants to end a episode as fast as possible. Except suicide by jumping off the cliff is even more painful.\n",
"\n",
"So in our example maximizing the reward (minimizing the negative reward) means finding the shortest path from the start state to the goal in the upper right corner without falling off the cliffs.\n",
"\n",
"But of course our poor agent doesn't know that yet.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we play god and create our gridworld. Basically our environment, the small gridworld domain, has to be able to do just two things:\n",
" \n",
" 1. Recieve the agents action and change its state according to this action.\n",
" 2. Compute the reward signal for a state.\n",
" \n",
"The other methods are only to log states, make sure the agent doesn't make any impossible moves check whether an episode terminated or is still running.\n",
"\n",
"Let's defome some parameters."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"State = namedtuple('State', ['m', 'n'])\n",
"\n",
"all_states = [State(0, 0), State(0, 1), State(0, 2), State(0, 3), State(0, 4),\n",
" State(0, 5), State(0, 6), State(0, 7), State(0, 8), State(0, 9),\n",
" State(0, 10), State(0, 11), State(1, 0), State(1, 1),\n",
" State(1, 2), State(1, 3), State(1, 4), State(1, 5), State(1, 6),\n",
" State(1, 7), State(1, 8), State(1, 9), State(1, 10),\n",
" State(1, 11), State(2, 0), State(2, 1), State(2, 2), State(2, 3),\n",
" State(2, 4), State(2, 5), State(2, 6), State(2, 7), State(2, 8),\n",
" State(2, 9), State(2, 10), State(2, 11), State(3, 0),\n",
" State(3, 1), State(3, 2), State(3, 3), State(3, 4), State(3, 5),\n",
" State(3, 6), State(3, 7), State(3, 8), State(3, 9), State(3, 10),\n",
" State(3, 11)]\n",
"\n",
"cliff_states = all_states[1:11]\n",
"goal_state = State(m=0, n=11)\n",
"start_state = State(m=0, n=0)\n",
"\n",
"terminal = cliff_states + [goal_state]\n",
"dflt_reward = -1\n",
"cliff_reward = -100\n",
"\n",
"moves = {'>': State(0, 1),\n",
" 'v': State(1, 0),\n",
" '<': State(0, -1),\n",
" '^': State(-1, 0)}\n",
"\n",
"parameters = {'all_states': all_states,\n",
" 'cliff_states': cliff_states,\n",
" 'goal_state': goal_state,\n",
" 'start_state': start_state,\n",
" 'terminal': terminal,\n",
" 'dflt_reward': dflt_reward,\n",
" 'cliff_reward': cliff_reward,\n",
" 'moves': moves}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nqKVixYqKiYlRREREtrec/eKLL5SQkKAiRYooNTVV33//vUqUKKHmzZtndR85ckR9+vTRK6+8wpIA\nIN/hNQkA4EWNGjVSixYt9O6772b7LsCSFBcXp2eeeUYej0fDhw/32hytWrVSQkKCFixYoDJlymTd\nRtS4cWOdPHlSr732mmrVqqUyZcpIunJVoE2bNvrhhx+yXnx71Z49exQdHa2GDRuqePHitzRH06ZN\nFRwcrH/+859KSEjIOh4XF6f169ff9ON9fHzUpUsXnTp1StOnT7/mV/C3bNmis2fPqkOHDsbHSebV\nigsXLqhMmTLGgpCZmanFixdLkvFaEh8fHzmOY3x8u3btst7a9JfOnTunwYMHa8SIEfLx8dHFixfV\ns2dPPf/888Z5YWFhCg4Olq+v7027ASCvcSUBALxs6tSpGjRokKZOnaq3335bbdu2VYkSJXTkyBGt\nX79eCQkJGjZsWNa7Cl1PTr+h17XOu/pag/3796tTp05Zx5s0aSLpytuBPvroo8bHjBgxQnv27NGo\nUaMUHR2te++9V0eOHNGaNWtUsmRJ4516cqpw4cIaP368Ro4cqa5du6p79+7KzMzU6tWrc/yajVGj\nRunw4cNaunSpPv74Y7Vv314VKlTQ5cuXtWfPHr3//vtq3ry5+vTpk/UxZcqUkeM4WrlypU6ePKnO\nnTurZcuW2rRpk4YNG6ZmzZopPj5eb731lg4dOiRfX1/Fx8cbHy9deZeitLQ0Pfzww+rataveeecd\n/fOf/9TRo0fVokULJSYmas2aNTp//rymTZumgIAA3XHHHerRo4dWr16tJ598MutKwrvvvquYmBiN\nGjXqln8eAcDbWBIAwMuCg4O1fPlybdq0SRs2bNDKlSsVFxen4OBgNW7cWFFRUcZ771/PtW6tyel5\n/v7+uv/++/Xuu++qadOmWcdDQ0NVvnx5/fzzz9mWlLJly+qNN97Q3Llz9cEHH2jDhg0qU6aMunbt\nqkGDBunOO+/M8Ty/nKljx44qVaqU5s6dq5dffllFihRR586dddddd2nSpEk3/XxFixbVq6++qn/9\n61965513tHbtWl24cEFFixbVPffco0mTJumRRx4xPqZjx47atm2btm/frp07d6pdu3YaP368goOD\n9f777+ujjz5S6dKlFRERoeeff14TJ07Uvn37lJqaqoCAADVq1EidO3fWe++9py+//FL169dXSEiI\n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\nBpYEAAAAAAaWBAAAAAAGlgQAAAAABpYEAAAAAAaWBAAAAAAGlgQAAAAABpYEAAAAAAaWhDzQrl07\ndejQwe0x8oxNvTa1Snb12tQq2dVrU6tkV69NrZJdvTa1SvmjlyXByxo0aKBKlSq5PUaesanXplbJ\nrl6bWiW7em1qlezqtalVsqvXplYp//T6uT1AQeXv769mzZopLCxMjuO4PY7X2dRrU6tkV69NrZJd\nvTa1Snb12tQq2dVrU6uU/3q5kuAFZcuWVc+ePVW5cmXt27dPHo/H7ZG8yqZem1olu3ptapXs6rWp\nVbKr16ZWya5em1ql/NnLlQQvCA4OVlxcnKKjo3X27FlFRka6PZJX2dRrU6tkV69NrZJdvTa1Snb1\n2tQq2dVrU6uUP3tZErzg8OHDOnTokNtj5Bmbem1qlezqtalVsqvXplbJrl6bWiW7em1qlfJnL7cb\neUF+uI8sL9nUa1OrZFevTa2SXb02tUp29drUKtnVa1OrlD97WRIAAAAAGLjd6Dfy9fVVQECAcSwz\nM1MpKSkuTeRdNvXa1CrZ1WtTq2RXr02tkl29NrVKdvXa1Crdfr0sCb9RWFiYmjdvbhyLj4/XmjVr\nXJrIu2zqtalVsqvXplbJrl6bWiW7em1qlezqtalVuv16XV0SbuWV2x6PR3v37vXiNLcmNjZWmzdv\nNo6lp6e7NI332dRrU6tkV69NrZJdvTa1Snb12tQq2dVrU6t0+/W6uiRMnz5df/nLX+Tn56c+ffrk\ni/eEzamkpCQlJSW5PUaesanXplbJrl6bWiW7em1qlezqtalVsqvXplbp9ut1dUlo3bq1Fi5cqKio\nKJUqVUq9e/d2cxwAAAAAygfvbhQZGalhw4Zp1qxZSkhIcHscr8iPb2vlTTb12tQq2dVrU6tkV69N\nrZJdvTa1Snb12tQq5Y/efPHC5aioKFWuXFmXL19WsWLF3B4n1y1evNjtEfKUTb02tUp29drUKtnV\na1OrZFevTa2SXb02tUr5ozdfLAkBAQFq06aN22MAAAAAUD643QgAAABA/sKSAAAAAMDAkgAAAADA\nwJIAAAAAwMCSAAAAAMDAkgAAAADAwJIAAAAAwMCSAAAAAMDAkgAAAADAwJIAAAAAwMCSAAAAAMDA\nkgAAAADAwJIAAAAAwMCSAAAAAMDAkgAAAADAwJIAAAAAwMCSAAAAAMDAkgAAAADA4HerH3Ds2DFF\nR0frzJkzyszMzPa4x+PRkCFDcmU4AAAAAHnvlpaEt956S6NHj1Z6evp1z2FJAAAAAG5vt7QkzJ49\nW6GhoZo4caIqVqwoX19fb80FAAAAwCW3tCScPn1ao0eP1n333eeteQAAAAC4zOM4jpPTkx9//HFV\nqVJF48aN8+ZMAAAAAFx0S0vCkSNH9MQTT6hr165q2bKlSpcuLY/Hk+28ChUq5OqQAAAAAPLOLS0J\nMTExeuqpp3To0KEbnvfdd9/97sFy08KFC90eIU8MHDhQkh29NrVKdvXa1CrRW5DZ1CrZ1WtTq2RX\nr02t0n96r+WWXpMwduxYHT16VJ07d1ZoaCgvXAYAAAAKoFtaEr766is9+eSTGjp0qLfmAQAAAOCy\nW/qOy2XKlFHx4sW9NQsAAACAfOCWloR+/fpp+fLlOn78uLfmAQAAAOCyW7rdKDY2VhkZGerQoYOq\nVKmi0qVLZ3tdgsfj0YIFC3J1SAAAAAB555aWhK1bt8rX11dly5ZVfHy84uPjs51zrbdEBQAAAHD7\nuKUl4YMPPvDWHAAAAADyiVt6TQIAAACAgo8lAQAAAICBJQEAAACAgSUBAAAAgIElAQAAAICBJQEA\nAACAgSUBAAAAgIElAQAAAICBJQEAAACAgSUBAAAAgIElAQAAAICBJQEAAACAgSUhD7Rr104dOnRw\ne4w8Y1OvTa2SXb02tUp29drUKtnVa1OrZFevTa1S/uhlSfCyBg0aqFKlSm6PkWds6rWpVbKr16ZW\nya5em1olu3ptapXs6rWpVco/vX5uD1BQ+fv7q1mzZgoLC5PjOG6P43U29drUKtnVa1OrZFevTa2S\nXb02tUp29drUKuW/Xq4keEHZsmXVs2dPVa5cWfv27ZPH43F7JK+yqdemVsmuXptaJbt6bWqV7Oq1\nqVWyq9emVil/9nIlwQuCg4MVFxen6OhonT17VpGRkW6P5FU29drUKtnVa1OrZFevTa2SXb02tUp2\n9drUKuXP3nyxJCQnJ6tw4cLXfCwzM1OXLl1SiRIl8niq3+7w4cM6dOiQ22PkGZt6bWqV7Oq1qVWy\nq9emVsmuXptaJbt6bWqV8mevq7cbLV68WE2bNlXdunXVsmVLrVy5Mts5X331lRo3buzCdL9dfriP\nLC/Z1GtTq2RXr02tkl29NrVKdvXa1CrZ1WtTq5Q/e11bElauXKkXXnhB7du317PPPqvQ0FBNmjRJ\nf/7zn5Wenu7WWAAAAID1XLvdaNWqVRo0aJCGDh0qSerbt6/WrVunCRMmKD09XTNnzpSPT/59XbWv\nr68CAgLjsWjJAAAWAUlEQVSMY5mZmUpJSXFpIu+yqdemVsmuXptaJbt6bWqV7Oq1qVWyq9emVun2\n63VtSTh58qTq1atnHOvWrZsKFSqkUaNG6a9//aumTJni0nQ3FxYWpubNmxvH4uPjtWbNGpcm8i6b\nem1qlezqtalVsqvXplbJrl6bWiW7em1qlW6/XteWhPLly+vLL79Uo0aNjOOdO3fWuXPnNHXqVAUH\nB7v+3eauJzY2Vps3bzaOFeTbpGzqtalVsqvXplbJrl6bWiW7em1qlezqtalVuv16XVsSunXrppde\nekkpKSlq27atwsPDsx7r16+fzp8/rwULFmjXrl1ujXhDSUlJSkpKcnuMPGNTr02tkl29NrVKdvXa\n1CrZ1WtTq2RXr02t0u3X69qSEBUVpYSEBC1btkwXL17U2LFjjcefeeYZlS5dWjNmzHBpQgAAAMBO\nri0JPj4+euqppzRkyBAlJCRc85yoqCh17NhRO3bsyOPpcld+fFsrb7Kp16ZWya5em1olu3ptapXs\n6rWpVbKr16ZWKX/0uv7N1Hx8fBQUFHTdx++44w49/PDDeThR7lu8eLHbI+Qpm3ptapXs6rWpVbKr\n16ZWya5em1olu3ptapXyR2/+fY9RAAAAAK5gSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkA\nAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAA\nAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAA\nAGDwOI7juD0EAAAAgPyDKwkAAAAADH5uD5AXFi5c6PYIeWLgwIGS7Oi1qVWyq9emVonegsymVsmu\nXptaJbt6bWqV/tN7LVxJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJ\nAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgSQAAAABgYEkA\nAAAAYGBJAAAAAGBgSQAAAABgYEkAAAAAYGBJAAAAAGBgScgD7dq1U4cOHdweI8/Y1GtTq2RXr02t\nkl29NrVKdvXa1CrZ1WtTq5Q/elkSvKxBgwaqVKmS22PkGZt6bWqV7Oq1qVWyq9emVsmuXptaJbt6\nbWqV8k+vn9sDFFT+/v5q1qyZwsLC5DiO2+N4nU29NrVKdvXa1CrZ1WtTq2RXr02tkl29NrVK+a+X\nKwleULZsWfXs2VOVK1fWvn375PF43B7Jq2zqtalVsqvXplbJrl6bWiW7em1qlezqtalVyp+9XEnw\nguDgYMXFxSk6Olpnz55VZGSk2yN5lU29NrVKdvXa1CrZ1WtTq2RXr02tkl29NrVK+bOXJcELDh8+\nrEOHDrk9Rp6xqdemVsmuXptaJbt6bWqV7Oq1qVWyq9emVil/9ubL240yMjJ07tw5t8f4zfLDfWR5\nyaZem1olu3ptapXs6rWpVbKr16ZWya5em1ql/Nnr6pJw6tQpzZ8/X7NmzVJMTIwkadasWYqMjNT9\n99+v+++/Xxs2bHBzRAAAAMA6rt1u9O233+qxxx5Tenq6PB6Pli1bpoEDB2rBggXq27evqlevrh07\ndmjMmDEKDAxU27Zt3Rr1mnx9fRUQEGAcy8zMVEpKiksTeZdNvTa1Snb12tQq2dVrU6tkV69NrZJd\nvTa1Srdfr2tLwtSpU1WvXj3NnDlTvr6+evbZZzVr1iwNGTJEQ4cOlSR17txZRYoU0bx58/LdkhAW\nFqbmzZsbx+Lj47VmzRqXJvIum3ptapXs6rWpVbKr16ZWya5em1olu3ptapVuv17XloQvv/xSL7/8\nsgoVKiRJeuqpp7Rx40Y1atTIOK99+/Zav369GyPeUGxsrDZv3mwcS09Pd2ka77Op16ZWya5em1ol\nu3ptapXs6rWpVbKr16ZW6fbrdW1JKFmypI4dO6bGjRtLkipWrKihQ4cqKCjIOO/48eO644473Bjx\nhpKSkpSUlOT2GHnGpl6bWiW7em1qlezqtalVsqvXplbJrl6bWqXbr9e1JaFTp06aPn26kpOT1bVr\nVxUvXjzrNiNJunz5srZu3aoXXnhB3bt3d2tMAAAAwDquvbvR0KFD1alTJ/3jH//QiRMnsj2+ZcsW\njRkzRo0aNTKWh9tRfnxbK2+yqdemVsmuXptaJbt6bWqV7Oq1qVWyq9emVil/9Lp2JcHf31/jx4/X\niBEjVKRIkWyPP/DAA9q8ebPCwsJcmC53LV682O0R8pRNvTa1Snb12tQq2dVrU6tkV69NrZJdvTa1\nSvmj1/XvuFysWLFrHi9TpozKlCmTx9MAAAAAyJffcRkAAACAe1gSAAAAABhYEgAAAAAYWBIAAAAA\nGFgSAAAAABhYEgAAAAAYWBIAAAAAGFgSAAAAABhYEgAAAAAYWBIAAAAAGFgSAAAAABhYEgAAAAAY\nWBIAAAAAGFgSAAAAABhYEgAAAAAYWBIAAAAAGFgSAAAAABhYEgAAAAAYWBIAAAAAGFgSAAAAABhY\nEgAAAAAYWBIAAAAAGDyO4zhuDwEAAAAg/+BKAgAAAAADSwIAAAAAA0sCAAAAAANLAgAAAAADSwIA\nAAAAA0sCAAAAAANLAgAAAAADSwIAAAAAA0sCAAAAAANLAgAAAAADSwIAAAAAA0tCLlu7dq3at2+v\n2rVrq2fPntq/f7/bI+WJ999/X5GRkW6P4TWZmZlaunSpOnbsqLp16+rBBx/UypUr3R7La9LS0vTi\niy+qVatWqlu3rqKiovTtt9+6PZbXpaamqkOHDhozZozbo3jNhQsXFB4enu2fp59+2u3RvGLXrl3q\n3r27ateurVatWmn27NlyHMftsXLdnj17rvnrGh4erurVq+vUqVNuj5jrMjMztXDhQrVr105169ZV\n9+7dtXv3brfH8orLly/rb3/7m5o2barIyEj1799f33//vdtj5brrPZeYN2+eWrZsqTp16uiJJ57Q\nDz/84MJ0ue9mz52WLFmiLl265OFEJj/XfuQCaP369ZowYYKGDh2qiIgIvfrqqxowYIDefPNN/eEP\nf3B7PK/Zt2+f/vKXv7g9hlfNnTtXixYt0pAhQ1SrVi19/vnnev7555WcnKz+/fu7PV6ue/7557Vp\n0yaNHDlSlSpV0vLly/XYY49p06ZNKl++vNvjec2cOXN09OhR1alTx+1RvOb777+Xx+PRkiVLFBgY\nmHW8RIkSLk7lHXv37tXAgQPVuXNnjRgxQt98841eeukl+fj4aMiQIW6Pl6vuvfderV271jiWnJys\nYcOGqWbNmgXy9+2iRYs0c+ZMPf3006pZs6Zef/11DRgwQK+//rrCw8PdHi9XPfXUU/r3v/+tYcOG\n6Z577tHGjRvVu3dvvfHGGwoNDXV7vFxxvecSc+bM0aJFizRy5EhVqFBBL7/8svr166e3335bxYoV\nc2HS3HGz505btmzRCy+8oLvvvjsPp/oVB7mmZcuWzsSJE7P+PS0tzWndurUzefJkF6fynpSUFGfB\n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\nw/8H0/m8srgB3msAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f818724a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rewards = np.full((4,12), -1, dtype='int64')\n",
"color = np.zeros((4,12))\n",
"for x in all_states:\n",
" if x == start_state:\n",
" rewards[x] = -1\n",
" color[x] = 4\n",
" if x == goal_state:\n",
" rewards[x] = -1\n",
" color[x] = 2\n",
" if x in cliff_states:\n",
" rewards[x] = -100\n",
" color[x] = 1\n",
"\n",
"ax = sns.heatmap(color, cmap=states_colors, annot=rewards, cbar=False, square=True, linewidths=1, fmt='' )\n",
"ax.set_title('Cliffworld States\\n')\n",
"ax.set(ylabel='m', xlabel='n')\n",
"sns.plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class CliffWorld:\n",
" \"\"\"Cliffworld domain for RL.\n",
"\n",
" A simple domain with 4 x 12 = 48 possible discrete states.\n",
" Originally from Sutton and Barto:\n",
" http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node65.html\n",
"\n",
" Args:\n",
"\n",
" Specified in the dictionary above because this class is not\n",
" intended for use outside this notebook.\n",
"\n",
"\n",
" \"\"\"\n",
"\n",
" def __init__(self, *initial_data, **kwargs):\n",
" for dictionary in initial_data:\n",
" for key in dictionary:\n",
" setattr(self, key, dictionary[key])\n",
" for key in kwargs:\n",
" setattr(self, key, kwargs[key])\n",
" self.record_list = []\n",
" self.position = [self.start_state]\n",
" self.log_dict = {}\n",
" self.reward_sum = 0\n",
"\n",
" def newstate(self, state, action):\n",
" \"\"\"Computes the newstate.\n",
"\n",
" Takes an state and an action from the agent and computes its next position.\n",
"\n",
" Args:\n",
" state: a tuple (n, m) representing the coordinates of the current state\n",
" action: index of an action\n",
"\n",
" Returns:\n",
" newstate: a tuple (m, x) representing the coordinates of the new position\n",
"\n",
" \"\"\"\n",
" move = moves[action]\n",
" newstate = State(state.m + move.m, state.n + move.n)\n",
" self.position.append(newstate)\n",
" return newstate\n",
"\n",
" def reward(self, state):\n",
" \"\"\"Computes the reward signal for a given state.\n",
"\n",
" Takes an state and checks if it's a cliff or just a normal state.\n",
"\n",
" Args:\n",
" state: a named tuple (m, n) \n",
" representing the coordinates of the current state\n",
"\n",
" Returns:\n",
" reward: a scalar value. -100 for a cliff state -1 otherwise.\n",
"\n",
" \"\"\"\n",
" if state in self.cliff_states:\n",
" reward = self.cliff_reward\n",
" else:\n",
" reward = self.dflt_reward\n",
" self.reward_sum += reward\n",
" return reward\n",
"\n",
" def is_terminal(self, state):\n",
" \"\"\"Checks if state is terminal.\n",
"\n",
" If the agent reached its goal or fell of a cliff the episode ends.\n",
" Otherwise it will continue.\n",
"\n",
" Args:\n",
" state: namedtuple, State(m, n), representing position.\n",
"\n",
" Returns:\n",
" True if state is terminal, False otherwise.\n",
"\n",
" \"\"\"\n",
" if state in self.terminal:\n",
" self.log_stuff(state)\n",
" return True\n",
" else:\n",
" return False\n",
"\n",
" def log_stuff(self, state):\n",
" \"\"\"Log things for analysis.\n",
"\n",
" You can safely ignore this.\n",
" I will refactor this as a mixin or use a decorator instead later.\n",
"\n",
" \"\"\"\n",
" self.position.append(state)\n",
" self.log_dict['visited_states'] = self.position[:]\n",
" self.log_dict['reward'] = self.reward_sum\n",
" self.record_list.append(self.log_dict)\n",
" self.log_dict = {}\n",
" self.position = [self.start_state]\n",
" self.log_dict = {}\n",
" self.reward_sum = 0\n",
" pass\n",
"\n",
" def valid_actions(self, state):\n",
" \"\"\"Compute valid actions for given state.\n",
"\n",
" It's unimportant for understanding RL. Just ignore.\n",
"\n",
" \"\"\"\n",
"\n",
" valid_actions = []\n",
" if (state.m + moves['>'].m, state.n + moves['>'].n) in self.all_states:\n",
" valid_actions.append('>')\n",
" if (state.m + moves['v'].m, state.n + moves['v'].n) in self.all_states:\n",
" valid_actions.append('v')\n",
" if (state.m + moves['<'].m, state.n + moves['<'].n) in self.all_states:\n",
" valid_actions.append('<')\n",
" if (state.m + moves['^'].m, state.n + moves['^'].n) in self.all_states:\n",
" valid_actions.append('^')\n",
" return valid_actions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To understand how agent and environment interact and test our Cliffworld domain, we write an radom acting agent.\n",
"This agent choses action at random and its learning function does nothing at all.\n",
"But it's a good oportunity, to understand which methods we have to implement to interact with the environment.\n",
"\n",
"The agent only has 2 main methods. One puts out an action and one is a learning method."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class RandomAgent:\n",
" \"\"\"Just chosing actions at random. Learns nothing.\n",
"\n",
" We write this for the purpose of understanding the interface between\n",
" agent and domain we later use for the real RL-agent.\n",
"\n",
" \"\"\"\n",
"\n",
" def __init__(self):\n",
" self.reward_sum = 0\n",
" pass\n",
"\n",
" def act(self, state, valid_actions):\n",
" \"\"\"Take state and valid actions for that state. Return action.\"\"\"\n",
" action = random.choice(valid_actions)\n",
" return action\n",
"\n",
" def learn(self, state, action, newstate, reward):\n",
" \"\"\"Never learns anything. Basically like the AFD.\"\"\"\n",
" self.reward_sum += reward\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"No we instanciate the random agent and the Cliffworld domain and let them interact in an episode loop, which is the same as the reinforcement learning loop we just talked about."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#: Just some agent randomly roaming through a \n",
"#: gridlike domain with 4x12 discrete states.\n",
"#: Ocasionally jumping off cliffs.\n",
"#: Hey, it's still a better lovestory than twilight.\n",
"\n",
"random_agent = RandomAgent() #: Instanciate an agent object\n",
"domain = CliffWorld(parameters) #: Create our small world\n",
"\n",
"def run_episode(domain, agent):\n",
" state = domain.start_state\n",
" while not domain.is_terminal(state):\n",
" valid_actions = domain.valid_actions(state) #: Get a list of allowed moves for the current state.\n",
" action = agent.act(state, valid_actions) #: Take the current state as input and compute an action.\n",
" newstate = domain.newstate(state, action) #: Take the action and compute the changed state.\n",
" reward = domain.reward(newstate) #: Compute reward.\n",
" agent.learn(state, action, newstate, reward)#: Learn.\n",
" state = newstate #: Newstate becomes the current state for next iteration.\n",
" pass\n",
"\n",
"run_episode(domain, random_agent)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwkAAAFVCAYAAACkSKMpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8znXjx/H3tZPDnGbOlk1ol3ZgI8yhzGnRibodcmiO\nqUjKr8Jd3dzUkpBzWMKNEIUiflQqOYUb3SQZZnPIWduY2fb9/dG969enOWbbl+31fDz2eHR9rs+u\n6/25pu37vr6Hy2FZliUAAAAA+C83uwMAAAAAuL1QEgAAAAAYKAkAAAAADJQEAAAAAAZKAgAAAAAD\nJQEAAACAgZIAoMCbNGmSnE5ntq+QkBA1bdpUgwYN0s8//3xLzxEfH2/c7tatm4KCgm7pMW/U5cuX\n9Y9//EP169dXrVq19NZbb+XJ896KZs2aKSoqyu4Yd7Q//5sDgJvhYXcAALgdOBwOdejQQXXr1nWN\nXb58WYcOHdLcuXP11Vdf6aOPPpLT6bzpx542bZqmTp2qHTt2ZHvOvLBw4UItXLhQ999/v6KiolSj\nRo08eV7Yp2/fvkpPT9cHH3xgdxQAdyhKAgD8V1hYmB555JFs46Ghoerfv7/Gjx+vqVOn3vTjrl+/\nXunp6TkR8S/Zt2+fHA6HXn31VVWrVs22HMg733zzjRo2bGh3DAB3MA43AoDraNGihby9vbV161a7\no/wlaWlpkqRixYrZnAQAcKegJADADXBzc8u2N2DFihWKjo5W/fr1FRwcrEaNGunFF1/U4cOHXXOc\nTqe2bt2q9PR0OZ1ODRkyxHiMn376Sb169VJYWJjuu+8+9evXz/j+a/nll180YMAARUREKCQkRFFR\nUZowYYIuXbokSTpy5IicTqeWLVsmSXrggQdUs2bNqz7eli1b5HQ6tWDBAkVHRyskJETNmzdXcnKy\npN/3iPTt21cREREKDg5W/fr19cwzz2j37t3G4zidTsXExGjlypVq166dQkND1bhxYw0fPtz1WFlS\nU1M1evRoNWvWTLVq1VL79u21YcOGK+Y7d+6cRo4cqWbNmik4OFhNmjTR0KFDdezYMWNet27d1LZt\nW+3cuVPdunVTWFiYGjZsqJEjRyotLU0bNmxQx44dVbt2bTVv3lzTp0+/odf7119/1T//+U+1atVK\noaGhCgsL02OPPaZ58+Zlm3vgwAHXzyYsLEx9+/ZVXFyc7r333mz/BuLi4vTCCy+oQYMGCgkJ0UMP\nPaQZM2YoIyPDNSfrZzlnzhz961//Ups2bRQSEqLIyEiNGzfO9W8z62focDi0YcMG1axZU0uXLr2h\n9QHAH3G4EQBcx65du5SUlKT69eu7xmJjY/Xuu++qSZMmeuGFF+Tu7q6tW7fq888/186dO7V27Vq5\nublp9OjRmjp1quLj4zVq1CjdddddrsfIyMhQ165d1bp1aw0dOlQ//fSTFixYoL1792r16tXy8Lj6\nr+gtW7aoT58+Kly4sJ588kmVL19eGzdu1JQpU7RhwwbNmTNHpUuX1ujRo7Vw4UJt27ZNr7/+ukqU\nKHHd9b7zzjtq3Lix3njjDZ05c0bFihXTypUrNWjQINWqVUvPPfecChcurN27d2vJkiXatm2b1qxZ\no1KlSrkeY+3atfrkk0/UuXNnde7cWV9++aU++ugj/fbbbxozZowkKTMzU927d9fOnTv12GOPqXbt\n2tq1a5eefvppubu7q0KFCq7HO3XqlDp27Kjjx4/riSee0L333qu4uDgtWLBAX3/9tRYsWCB/f3/X\n/OPHj6tXr15q166dHnnkEX3xxReaO3eu4uPjtXPnTj355JN64okntGDBAo0bN05+fn5q06bNVV+T\npKQktW/fXmlpaercubMqV66sU6dOadGiRRoxYoS8vLzUvn17Sb8XhI4dO8qyLHXr1k2+vr5auXKl\nOnfunO1xd+zYoR49esjHx0fdu3dXyZIltWnTJo0ZM0Y7duzQ5MmTjfmzZ8/WpUuX1KVLF/n6+mrp\n0qWaNm2aJOnFF19U9erVNXr0aL388suqUaOG+vbtq9q1a1/3Zw4A2VgAUMBNnDjRcjqd1ty5c60z\nZ864vo4ePWqtXr3aat68uVWzZk1rw4YNlmVZVkZGhlW/fn2rY8eO2R7rpZdespxOp7Vnzx7XWNeu\nXa2goCBjXteuXS2n02nNnDnTGB86dKjldDqtH3744ap5MzMzrebNm1u1a9e2EhISsq0lMDDQmjJl\nimts8ODBltPptI4fP37N12Hz5s1WYGCg9dBDD2W7r23btlazZs2stLQ0Y3zs2LGW0+m01qxZ4xoL\nDAy0atasaf3000/G3DZt2ljBwcFWamqqZVmWtXjxYiswMNCaPn26MW/+/PlWYGCg1apVq2xrWLFi\nhTF306ZNVmBgoNW9e3fXWNZrO2fOHNdYUlKSFRwcbDmdTmvdunWu8fj4eCswMNB65ZVXrvnazJ49\n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\nABgoCQAAAAAMlAQAAAAABkoCAAAAAAMlAQAAAICBkgAAAADAQEkAAAAAYKAkAAAAADA4LMuy7A4B\nAAAA4PZ5Pmz6AAAOMklEQVTBngQAAAAABkoCAAAAAAMlAQAAAICBkgAAAADAQEkAAAAAYKAkAAAA\nADBQEgAAAAAYKAkAAAAADJQEAAAAAAZKAgAAAAADJQEAAACAgZKQwxYtWqSoqCjVqlVLnTp10o4d\nO+yOlCe+/PJLhYeH2x0j12RmZurDDz9UmzZtFBYWpoceekjz5s2zO1auuXz5ssaNG6dmzZopLCxM\n0dHR2rNnj92xcl1aWppat26tIUOG2B0l15w7d05OpzPb1wsvvGB3tFyxceNGdejQQbVq1VKzZs00\nceJEWZZld6wct2XLliv+XJ1Op2rWrKljx47ZHTHHZWZmasaMGWrVqpXCwsLUoUMHbdq0ye5YueLC\nhQv65z//qUaNGik8PFy9evXS3r177Y6V4662LTF16lRFRkaqdu3a6tmzpw4cOGBDupx3vW2nmTNn\nqm3btnmYyORh2zPnQ59++qmGDRum/v37Kzg4WHPnzlXv3r21bNkyVa5c2e54uWb79u165ZVX7I6R\nqyZPnqzY2Fj169dPoaGh2rp1q9566y2lpqaqV69edsfLcW+99ZY+++wzvfzyy6pSpYpmz56tp556\nSp999pkqVqxod7xcM2nSJB08eFC1a9e2O0qu2bt3rxwOh2bOnClvb2/XeKlSpWxMlTu2bdumPn36\n6NFHH9WgQYO0e/duvffee3Jzc1O/fv3sjpejgoKCtGjRImMsNTVVAwYMUEhISL78/zY2Nlbjx4/X\nCy+8oJCQEC1evFi9e/fW4sWL5XQ67Y6Xo55//nn9+9//1oABA3TPPfdo+fLl6tKli5YsWaKAgAC7\n4+WIq21LTJo0SbGxsXr55ZdVqVIlTZkyRT169NCKFStUrFgxG5LmjOttO61atUpjx45VjRo18jDV\nn1jIMZGRkdbw4cNdty9fvmw1b97cGjlypI2pcs+lS5es6dOnW8HBwVa9evWssLAwuyPlioyMDCs8\nPNyaMGGCMT58+HCrYcOGNqXKPUlJSVZwcLA1a9Ys11hqaqpVq1Yta+rUqTYmy127d++2ateubUVE\nRFiDBw+2O06umTVrltWoUSO7Y+SJzp07W88884wxNmbMGKtbt242JcpbI0eOtCIiIqyzZ8/aHSVX\ntG7d2vh/NSMjw2ratKk1YsQIG1PlvP/85z9WYGCgtWjRImO8Y8eO1sCBA21KlXOutS2RnJxshYWF\nWbGxsa6x8+fPW+Hh4daHH35oQ9pbd71tp6SkJCsmJsZyOp1WvXr1rLZt29qU1LI43CiHxMfH6+jR\no4qMjHSNeXh4qGnTpvruu+9sTJZ7vv32W8XGxmrw4MHq2rWr3XFyTXJystq1a6eWLVsa41WrVtWZ\nM2eUmppqU7LcUaRIEX388cd6/PHHXWPu7u5yOBxKS0uzMVnuycjI0N///nf17t1b5cqVsztOrvr5\n558VGBhod4xcd+bMGW3fvl0dO3Y0xl966SXNmTPHplR5Z//+/Zo/f75efPHFfLmXSPr98MA/7g1z\nc3NTsWLFdO7cORtT5bxDhw7J4XCoUaNGxnh4eLjWr19vU6qcc61tiZ07d+rixYvGtlWJEiV03333\n3bHbVtfbdlq0aJG++OILjRs3Tvfff78NCf8fJSGHZP1P7O/vb4z7+fkpISEhXx4DGxoaqi+//FJd\nunSRw+GwO06uKVGihF577bVsu6+/+uorVahQQYULF7YpWe5wd3eX0+lU8eLFZVmWEhISNHToUDkc\nDj322GN2x8sV06dPV3p6uvr27Wt3lFz3888/6+LFi+rUqZNCQ0P1wAMP6IMPPrA7Vo7bt2+fJKlQ\noUJ65plnFBoaqoYNG2rSpEn58vfxn40bN05Vq1ZV+/bt7Y6Sa7p06aJly5Zp48aNSk5O1uzZsxUX\nF6eHH37Y7mg5qkKFCrIsS0ePHjXGExMTlZycrN9++82mZDnjWtsSBw8elCRVqVLFGL/rrrt06NCh\nvIqYo6637dSyZUutWbNGDz74oA3pTJyTkEOSk5MlyXhXI+t2ZmamLly4kO2+O11+f8f1Wj7++GNt\n3LhRr7/+ut1RctXkyZM1adIkORwODRgwIFsJzg/i4uI0bdo0zZkzRx4e+ftXYmZmpuLi4lS0aFG9\n+uqrqlSpktatW6cxY8bo0qVLeu655+yOmGPOnDkjy7I0ePBgPfzww+rZs6e2bNmiqVOnqnDhwurd\nu7fdEXNNQkKCvv76a40cOdLuKLnqySef1KZNm9SjRw9JksPh0MCBA9W0aVN7g+WwkJAQBQQEaPjw\n4YqJiZG/v79WrFihb7/9VpJ08eJFlShRwuaUf921tiVSUlLk5eWV7Xezt7e3a7vrTnO9bae77ror\nj5JcX/7+i5iHst6Zuto76m5u7LTJL5YvX65hw4apdevW6tKli91xclWrVq3UoEEDbdq0SZMnT9bl\ny5c1YMAAu2PlGMuy9Nprr6l9+/YKDQ21O06emDZtmipVquT6Q3TfffcpJSVFM2bMUO/eveXl5WVz\nwpyRnp4uSWrSpIlefvllSVK9evV09uxZTZ06Vb169cq3e0A//vhjlSxZUo888ojdUXJV1lVuhg8f\nrrvvvlsbNmzQxIkTVbx4cXXu3NnueDnGy8tLkydP1qBBg1x7hmrXrq3evXtr8uTJ+W5v9h9ZlsV2\nlY0oCTmkePHikn5vvaVLl3aNp6SkyN3dXUWKFLErGnLQhx9+qHfeeUctWrTQ6NGj7Y6T6+655x5J\nUt26dZWSkqIPPvhA/fr1k7u7u83JcsacOXN0/PhxzZgxQxkZGcZhKBkZGflmnVnc3NxUv379bONN\nmjTRwoULdfjwYVWvXt2GZDmvaNGikqTGjRsb4w0bNtT8+fOVmJh4W71jl5O+/PJLtWjRQp6ennZH\nyTXbtm3T9u3bNWHCBLVq1UrS74U3PT1do0ePVrt27fLV391q1app6dKl+vXXX5Wenq7KlStr0qRJ\ncnNzc21/5EfFihVTWlpatt/HKSkp+XrdtwtqWA7x9/d3Hb/9R4mJifnm8mQF3dixYzVq1Ci1bdtW\n48ePz7eHppw6dUqffPKJLly4YIzXrFlTaWlp+eqkwLVr1+r48eOqW7eugoKCFBwcrJ9//lmffvqp\ngoODsx0DfKc7ceKEFi1apLNnzxrjly5dkiT5+PjYEStXZB0ad/nyZWM8aw9Dft2LcOzYMcXFxbk2\nnPOr48ePy+FwqFatWsZ4nTp1lJqaqiNHjtiULOelpqZq2bJlOnHihMqXL++6pPq+fftUo0aNfP2O\nekBAgCzLUmJiojGekJCgqlWr2pSq4Mi//7LyWEBAgCpWrKi1a9e6xi5fvqx169YpIiLCxmTICbNn\nz9b06dPVvXt3xcTE5Otfyr/99puGDh2q1atXG+Pr16+Xr6+vfH19bUqW80aMGKHFixdryZIlri9/\nf39FRkZqyZIl+e68m7S0NL3xxhtavny5Mb5q1SoFBATkq59t9erVVb58ea1atcoYX7duncqVKyc/\nPz+bkuWuXbt2XXHjOb/J2njctm2bMb5jxw65u7urQoUKNiXLeR4eHho2bJhWrlzpGktISNA333xj\nXPUnPwoLC5OXl5exbXX+/Hn98MMPbFvlgfz5VqhN+vTpo5EjR6p48eIKDw/X3Llzde7cOUVHR9sd\nDbfg5MmTGjNmjAIDA9W6dWvt3LnTuD8kJCRflYa7775bUVFRevvtt5WWlqa77rpLq1ev1meffaaY\nmBi74+WoK+3lK1y4sEqVKqV777037wPlMj8/Pz300EMaP368HA6HqlWrpi+++EJr167VlClT7I6X\noxwOh1588UUNGTJEw4YNU1RUlDZs2KBly5Zp+PDhdsfLNb/88ot8fHzu6BNZb0RQUJCaNm2q4cOH\n69y5c6pWrZo2b96s2NhYRUdH39EfsvVnHh4e+tvf/qb3339fpUuXlre3t8aMGSNfX191797d7ni5\nqmjRouratavrd5a/v7/ef/99lShRQn/729/sjpfvURJyUOfOnZWWlqY5c+Zozpw5cjqdmjlzZr59\nx+rP8uvu+/Xr1+vy5cvat2+fOnXqlO3+jRs35rvrkL/zzjuaNGmSpk+frpMnT6p69eqaMGFCts+K\nyI8cDke+/bcsSTExMZo8ebLmzJmjkydPqlq1apo4cWK+uyKMJLVt21ZeXl56//339emnn6pChQoa\nPnx4vr4s6OnTp/N9QcgyYcIEjRs3TtOmTdP58+fl7++vN954Qx06dLA7Wo77n//5H7m5uWn06NFK\nS0tTgwYN9PLLL6tkyZJ2R8txf/79+9JLL8nd3V0zZ87UhQsXFB4ernfeeSffFMHr/b2x8++RwyoI\nF4wGAAAAcMPyzzESAAAAAHIEJQEAAACAgZIAAAAAwEBJAAAAAGCgJAAAAAAwUBIAAAAAGCgJAAAA\nAAyUBAAAAAAGSgIAAAAAAyUBAAAAgIGSAAAAAMDgYXcAAED+1qxZM7Vo0ULVq1fXzJkzdfToUfn7\n+6tfv3568MEH7Y4HALgCh2VZlt0hAAD5V7NmzWRZltLS0vTUU0+pWLFimjVrlo4cOaLPP/9cd999\nt90RAQB/wp4EAECuO3nypFauXKkqVapIkkJCQtShQwetWrVKzz33nM3pAAB/xjkJAIBcd88997gK\ngiQ5nU5J0unTp+2KBAC4BkoCACDX+fj4GLe9vLwkSRkZGXbEAQBcByUBAJDr3Nz4cwMAdxJ+awMA\nAAAwUBIAAAAAGCgJAAAAAAyUBABArnI4HHI4HDc8DgCwHx+mBgAAAMDAngQAAAAABkoCAAAAAAMl\nAQAAAICBkgAAAADAQEkAAAAAYKAkAAAAADBQEgAAAAAYKAkAAAAADJQEAAAAAAZKAgAAAADD/wHq\nDIriw+sQBgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f7ee1e198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"agent_position_log = domain.record_list[-1]['visited_states']\n",
"\n",
"agent_path = np.empty((4, 12), dtype=str)\n",
"\n",
"for state_visited in agent_position_log:\n",
" if state_visited in terminal:\n",
" agent_path[state_visited] = 'X'\n",
" else:\n",
" agent_path[state_visited] = 'O'\n",
"\n",
"ax = plt.axes()\n",
"ax.set_title('Path of random agent\\n')\n",
"figure = sns.heatmap(color,\n",
" annot = agent_path,\n",
" fmt = '',\n",
" ax=ax,\n",
" cbar=False,\n",
" linewidth = 1,\n",
" cmap = states_colors,\n",
" square=True)\n",
"figure.set(xlabel='n', ylabel='m')\n",
"sns.plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Okay clearly just acting randomly doesn't get us very far or even worse, sooner or later it gets us killed.\n",
"So there has to be annother way.\n",
"\n",
"There are two main concepts RL is based on\n",
"\n",
"#### Model based methods\n",
"\n",
"The agent tries to understand how the actual world works. He tries to learn how the different states are connected and what happens when taking a particular action in a particular state.\n",
"\n",
"If we can learn some model of the world, we can *plan*. We can think about what the consequences of our actions could be before actually taking them.\n",
"\n",
"An important advantage is that we can get the largest amount of juice out of our data/experience if we use model based reinforcement learning. The downside is that planning in general is computationally quite expensive. \n",
"Model based approaches come in handy for applications like robotics where we don't get that much data (we can't just take some cluster and run a billion episodes if we use some real robot, because reality is quite slow ;) but the upside of a slow robot is that there could be some time to make computations for *planning* our actions.\n",
"\n",
"#### Value based methods\n",
"\n",
"In this tutorial we will explore a value based method. These methods don't try to make sense of the world because it may not be possible. It's also how the dopamine pathway and **pleasure reward seeking** works, so we also often make decisions without trying to understand how the world really works (:\n",
"\n",
"## The concept of a value function\n",
"\n",
"We try to find a sequence of actions to maximize return. So we don't have to consider how our domain works if we just find a way to estimate how good the indiviual states are and how good it is to take a particular action in a state we're done.\n",
"We just take the best action in every state and get to the goal without falling off the cliff.\n",
"\n",
"But how?\n",
"\n",
"For every action the agent recieves a reward. Sometimes there's a discount on this reward, so that that reward on the next step is favorable to reward in the distant future.\n",
"If we are at timestep $t$ the return $G_t$ is the sum of rewards from that timestep on\n",
"\n",
"$$G_{t} = r_{t+1}+r_{t+2}+r_{t+3}+\\dots +r_{n}$$\n",
"\n",
"Iin the discounted case, rewards get multiplied with some $\\gamma<0$ raised to the power of the number of timesteps this reward is away from the next reward. So if a reward is $k$ timesteps aways it's discounted by $\\gamma^{k-1}$:\n",
"\n",
"$$ G_{t} = r_{t+1}+ \\gamma r_{t+2}+ \\gamma^2 r_{t+3}+ \\dots = \\sum_{k=0}^{\\infty}\\gamma^k r_{t+k+1} $$\n",
"\n",
"Because the future is, well, in the future but we have to decide now which action to take next, we express the return in a different way as the sum of just two parts:\n",
"\n",
"$$G_{t}= r_{t+1} + \\gamma G_{t+1}$$\n",
"\n",
"So the return at timestept $t$ is the immediate reward on the next timestep $r_{t+1}$ plus the discounted return from this timestep on.\n",
"\n",
"Now we use this to introduce a function, $Q(s,a)$ , which assigns some value to every possible action in each state which tells us how good this action is in terms of maximizing the return $G_{t}$.\n",
"\n",
"Like the return $G_{t}$ the Q funtion can be split in the same manner. The maximum value for taking some action $a$ in state $t$ is the sum of the reward for taking that action and the maximum (discounted) value for taking the optimal action on the next timestep. \n",
"\n",
"$$Q(s_t,a_t)= r_{t+1} + \\gamma max_{a_{t+1}} Q(s_{t+1}, a_{t+1})$$\n",
"\n",
"We want to know the $Q(s, a)$ for all possible state/action-pairs. If we know the true Q-values, we can just take the actions with the highest value assigned to them.\n",
"\n",
"This leads to the learning rule of the Q-learning algorithm (I use capital letters to indicate actual tabular values):\n",
"\n",
"$$Q(S_{t}A_{t})\\gets Q(S_{t}A_{t})+\\alpha[R_{t+1}+\\gamma \\max_{A}Q(S_{t+1},A)-Q(S_{t},A_{t})]$$\n",
"\n",
"We have some estimation of the value of taking action $A_t$ in state $S_t$, now we execute this action and receive some reward $R_{t+1}$ for this. And because of it's definition we now can update $Q(s_t,a_t)$ with the new information. The update it into the direction of the reward we received plus the (discounted) difference to the maximum of the estimate $Q(S_{t+1}$ of the state we now reached times some small step size paramter $\\alpha$.\n",
"\n",
"A simple intuition for this:\n",
"\n",
"Because the value of a state action pair $Q(S_t,A_t)$ can be estimated as the reward $R_{t+1}$ for taking that action plus the estimated value $Q(S_{t+1},A_{t+1})$ for taking the best action on the next timestep, we can update our estimate of $Q(S_t,A_t)$ when we receive the actual reward $R_{t+1}$ on the next timestep.\n",
"\n",
"If you think you'll need 60 minutes for the way from your home to your workplace but you get in a traffic jam afters 10 minutes you already know you'll be late and can call your boss before actually ariving. \n",
"The closer you get to your workplace, the smaller your updates to your estimated arival will get.\n",
"If your at the first floor but notice the elevator isn't working that day having to take the stairs does not change the time you estimated for the way from home to work anymore.\n",
"\n",
"This part is also called $[R_{t+1}+\\gamma \\max_{a}Q(S_{t+1},a)-Q(S_{t},A_{t})]$ the temporal difference error because it resembles the temporal difference mechanism which explains the influence of the neurotransmitter dopamine on behaviour (sex, cocain, you know). \n",
"The resulting algorithm:\n",
"\n",
"```\n",
"initialize values Q[states, actions] arbitrarily (as zero)\n",
"begin at start state S\n",
" while episode non terminal:\n",
" execute action A with highest Q\n",
" observe reward R' and newstate S'\n",
" Q[S, A] = Q[S', A']+ alpha * [R'+ gamma max_a[Q[S', A'] - Q[S, A]]\n",
" S = S'\n",
" \n",
"```\n",
"\n",
"Because we don't know anything yet, we innitially assign all Q-values as zero. For the cliffworld this could be an array with the size $possible\\, states \\times actions$, in our case $(4 \\times 12) \\times 4$ because we can go *left*, *right*, *up* or *down*.\n",
"We often don't know number of possible states and sometimes not even the actions available at any time, so we use a Python *defaultdict* keyed by a nestet tuple in the form (action (row-index, colum-index)) instead of an array. Whenever there's no existing value for an state/action-key the dictionary returns 0.\n",
"\n",
"There's one more thing to know and that's $\\epsilon-greedy$ action selection.\n",
"If we just stick to what we've learnt and never try anything new, we also won't discover any new stuff. \n",
"So we select our actions $\\epsilon-greedy$. That means in a proportion of $1-\\epsilon$ we don't select the action with the highest value and just act randomly. We decrease the value of $\\epsilon$ over time as our experience grows.\n",
"\n",
"Sometimes I think we should all **increase** our personal $\\epsilon$ and just dare to do something new from time to time (:\n",
"\n",
"\n",
"The python manifestation of the Q-learning agent:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class QAgent:\n",
" \"\"\"Q-Learning agent.\n",
"\n",
" A value based, off-policy RL-agent.\n",
" Uses defaultdict to return 0 for unknown state/action pairs.\n",
" This has the same purpose as innitializing all unkown states to zero.\n",
"\n",
"\n",
" Args:\n",
" epsilon: Parameter for epsilon-greedy action selection.\n",
" epsilon_modifier: scalar value the\n",
" alpha: Learning rate or stepsize. Usually <<1\n",
" gamma: discount of future rewards <=1\n",
"\n",
" Attrs:\n",
" Q: Python defaultdict with defaultvalue 0 containing\n",
" the Q-values for state action pairs..\n",
" Keyed by a nested state action tuple.\n",
" Example:\n",
" {\n",
" (State(m=0, n=0), '>'): -99.94360791266038,\n",
" (State(m=0, n=0), 'v'): -1.1111111111107184,\n",
" (State(m=1, n=0), '>'): -1.111111111107987,\n",
" (State(m=1, n=0), 'v'): -1.1111111111079839,\n",
" (State(m=1, n=0), '^'): -1.111111111108079\n",
" }\n",
" A: Defaultdict keyed by state tuple, values\n",
" are keys of executed actions. Is used to determine\n",
" whether an action in a state took place in the past.\n",
" If there's no memory len(A[state]) == 0\n",
"\n",
"\n",
" \"\"\"\n",
"\n",
" def __init__(self, alpha, epsilon, gamma):\n",
" self.epsilon = epsilon\n",
" self.alpha = alpha\n",
" self.gamma = gamma\n",
" self.Q = defaultdict(int)\n",
" self.A = defaultdict(set)\n",
" self.td_list = []\n",
"\n",
" def act(self, state, valid_actions):\n",
" \"\"\"Chose action.\n",
"\n",
" Take state tuple and valid actions and chose action.\n",
" Action can either be random or greedy to ensure exploration.\n",
" Probability of selecting random actions depends on epsilon.\n",
" Smaller epsilon means less randomness.\n",
"\n",
" Args:\n",
" state: state tuple (n,m) describes current position.\n",
" valid_actions: list of indices of valid actions for a state.\n",
"\n",
" Returns:\n",
" action: Index of selected action.\n",
" Can either be chosen at random or greedy.\n",
"\n",
" \"\"\"\n",
" if random.random() > self.epsilon:\n",
" action = self.act_greedy(state, valid_actions)\n",
" else:\n",
" action = self.act_random(valid_actions)\n",
" return action\n",
"\n",
" def learn(self, state, action, newstate, reward):\n",
" \"\"\"Compute update of Q-function.\n",
"\n",
" Update Q-values when reaching new state and receiving reward.\n",
" New value equals to the old value + the computet td-error times\n",
" the stepsize parameter alpha.\n",
" Also adds the executed action to A, to keep track of all state\n",
" action pairs.\n",
"\n",
"\n",
" Args:\n",
" state: namedtuple (m, n) the state of the last timestep.\n",
" action: index of executed action at the last timestep.\n",
" newstate: current state reached after executing action.\n",
" reward: scalar value received for reaching newstate.\n",
"\n",
"\n",
" Returns:\n",
" pass\n",
"\n",
" \"\"\"\n",
" self.Q[state, action] = (self.Q[state, action] + self.alpha *\n",
" (self.td(state, action, newstate, reward)))\n",
" self.A[state].add(action)\n",
" pass\n",
"\n",
" def act_random(self, valid_actions):\n",
" \"\"\"Chose index of action from valid actions at random.\n",
"\n",
" Called, either if epsilon greedy policy returns random\n",
" or if there's no previous knowledge of action values for\n",
" a state.\n",
"\n",
" Args:\n",
" valid: List of indices of valid actions for a state.\n",
"\n",
" Returns:\n",
" action: Index of selected action.\n",
" Can either be chosen at random or greedy.\n",
"\n",
" \"\"\"\n",
" random_action = random.choice(valid_actions)\n",
" return random_action\n",
"\n",
" def act_greedy(self, state, valid_actions):\n",
" \"\"\"Chose action with the highest Q-value.\n",
"\n",
" First checks wether the agent previously has executed any actions at all\n",
" in the current state. If not it calls the random act_random method.\n",
"\n",
" Args:\n",
" valid_actions: List of indices of valid actions for a state.\n",
" state: namedtuple, State(n, m),\n",
" representing coordinates of the current state.\n",
"\n",
" Returns:\n",
" chosen_action: Index of selected action.\n",
" Can either be chosen at random or greedy.\n",
"\n",
" \"\"\"\n",
" if len(self.A[state]) == 0:\n",
" chosen_action = self.act_random(valid_actions)\n",
" else:\n",
" q_s = {actions: self.Q[state, actions]\n",
" for actions in self.A[state]}\n",
" chosen_action = max(q_s, key=q_s.get)\n",
" return chosen_action\n",
"\n",
" def td(self, state, action, newstate, reward):\n",
" \"\"\"Compute td error to update value dict\n",
"\n",
" First checks wether the agent previously as executed any actions at all in\n",
" the current state. If not the maximum Q-value for that state defaults to 0.\n",
" It fetches Q-values for all previously exectued actions in newstate tracked in A.\n",
" Next computes the key of the largest Q-value and queris the fetches Q-values.\n",
" Finally computes the td error for the learning update.\n",
"\n",
" Args:\n",
" state: state of the last timestep.\n",
" action: index of selected action in that state\n",
" newstate: state the agent just reached.\n",
" reward: scalar value\n",
"\n",
" Returns:\n",
" td: td error. You know, cocaine, baby.\n",
"\n",
" \"\"\"\n",
" if len(self.A[newstate]) == 0:\n",
" max_qval = 0\n",
" else:\n",
" q_vals = {actions: self.Q[newstate, actions]\n",
" for actions in self.A[newstate]}\n",
" max_qval_key = max(q_vals, key=q_vals.get)\n",
" max_qval = q_vals[max_qval_key]\n",
" td = reward + self.gamma * max_qval - self.Q[state, action]\n",
" self.td_list.append(td)\n",
" return td"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"The only thing missing to finally test our Q-Agent is a function to conduct multiple episodes.\n",
"And the parameters for the agent.\n",
"As we progress, the amount of exploration by acting randomly is gradually reduced on each episode by modifying epsilon with a decay parameter. For evaluation purposes in the last episode the the agent exploits the learned value function without any eploration."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def run_experiment(domain, agent, epsilon_decay, n_episodes):\n",
" for i in range(n_episodes):\n",
" agent.epsilon *= epsilon_decay\n",
" run_episode(domain, agent)\n",
" print('Setting epsilon paramter to zero',\n",
" 'to prevent random actions and evaluate learned policy.\\n')\n",
" agent.epsilon = 0\n",
" run_episode(domain, agent)\n",
" last_reward = domain.record_list[-1]['reward']\n",
" print('Trained for {0} episodes.\\n' \n",
" '\\nGained reward of {1} points in the last episode.'.format(n_episodes, last_reward)) \n",
" pass\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"epsilon = 0.9\n",
"epsilon_decay = 0.99\n",
"gamma = 0.9\n",
"alpha = 0.25\n",
"n_episodes = 500"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"q_agent = QAgent(alpha, epsilon, gamma)\n",
"domain = CliffWorld(parameters)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Setting epsilon paramter to zero to prevent random actions and evaluate learned policy.\n",
"\n",
"Trained for 500 episodes.\n",
"\n",
"Gained reward of -15 points in the last episode.\n"
]
}
],
"source": [
"run_experiment(domain, q_agent, epsilon_decay, n_episodes)\n",
"\n",
"logged_data = domain.record_list\n",
"Q_table = q_agent.Q\n",
"A_table = q_agent.A\n",
"td = q_agent.td_list"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"action_array = np.empty((4,12), dtype=str)\n",
"value_array = np.empty((4,12), dtype=float)\n",
"for state in domain.all_states:\n",
" if len(A_table[state])==0:\n",
" chosen_action = 'c'\n",
" else:\n",
" q_s = {actions: Q_table[state, actions] \n",
" for actions in A_table[state]}\n",
" chosen_action = max(q_s, key=q_s.get)\n",
" max_qval = q_s[chosen_action]\n",
" action_array[state] = chosen_action\n",
" value_array[state] = max_qval\n",
" action_array[(0,11)] = 'g'\n",
" \n",
"\n",
" \n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nBCIiIiIiEmBIICIiIiIiAYYEIiIiIiISYEggIiIiIiIBhgQiIiIiIhJgSCAiIiIiIgGGBCIiIiIi\nEmBIICIiIiIiAYYEIiIiIiISMJC6AG0rVkldARERERHR88mkhjTAMwlERERERCTAkEBERERERAIM\nCUREREREJMCQQEREREREAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCURERERE\nJMCQQEREREREAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQERE\nREREAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJ\nREREREQkwJBAREREREQCDAn1ZMniRfBq74Hr165Wue2H75bCq70Hrl65LEFl2pWYmICP5s5Gv17+\n6PZSJ4wMDsSmjb9BrVZLXVq906VeAd3qV5d6BXSrX13qFdCtfnWpV0C3+tWlXi/HX8Kbb7wKf18f\n+Pv6YM6//4Urly/Dq70Hflq1QtLa9OfNmzdP0gr+n1qtRmFhIcrKymBoaFhvz6sqr7eneipHR0eE\nbd0CExMTdPfvIbht3qcfw8nZBW+/+544xYjk1s2bmBg6GkmJiRgxagwGDR6CvNw8/L5hHfLz8tC9\nR0+pS6w3utQroFv96lKvgG71q0u9ArrVry71CuhWv7rU67mzZzDttSlQKBSYMHESunbzw+lTJ7Et\nbAtKSkrwkk8XvOTTRet1GNRwykCmljCWJScnY926dTh+/DjkcjnKyx8f0evr68Pd3R2+vr6YNGkS\n3Nzc/vIYxar6qvbZxo0OwcOMDByMOQ6ZTAYAOBN3Gm+8Ohn/+vccvDJ5injFiGDqpAm4fu0atmwL\nh7t7M832t2dMR+zJE4g6fBR2dnYSVlh/dKlXQLf61aVeAd3qV5d6BXSrX13qFdCtfnWp15CgochI\nT8OOPRFwcHAEAJSUlGD82JG4e+cOpr05E9NnvKX1OkwMqt9ew2btu3TpEl577TXY2NigV69ecHNz\ng7m5OQBAoVDgwYMHiImJwY4dO/Drr7+iQ4cOUpVaa0HDR2DxooU4FXsSft39AQB79+yCvr4BAgKH\nSVxd/crJycbFC+fRf+AgwYcYAD6bvwCKggI0atRIourqly71CuhWv7rUK6Bb/epSr4Bu9atLvQK6\n1a8u9Xr3zh3cu3sH4ye8ogkIAGBsbIypr76Bj+bOlrC6xyQLCV9//TW8vb2xatUqGBhUX8acOXMw\nY8YMLFq0CJs3bxa5wrobEjAU3/5nMSL27oFfd3+UlJTg0MEo+Pfo0WBSb4XUlBSo1eoqH2IAcHBw\nFLzh/+l0qVdAt/rVpV4B3epXl3oFdKtfXeoV0K1+danXhIT7AICmzar22rxFS7HLqZZkFy7fuHED\nEyZMqDEgAIChoSEmTJiAmzdviljZX2dlbY1effoi5nA0iouLcTj6IAoLCxEUPELq0uqdUvV4HlfF\ntKqGTJd6BXSrX13qFdCtfnWpV0C3+tWlXgHd6lenelUqAQBGRkZVbjMxNRG7nGpJFhKcnZ1x9WrV\nlYAqu3Dhwj/q1FLQ8BAUFhbi+NEj2B+xF9Y2Nuj5ci+py6p3ro1dAQCJCQlVbrt44Tw+nPNv3Lh+\nTeSqtEOXegV0q19d6hXQrX51qVdAt/rVpV4B3epXl3pt6u4OALh/716V2+7fuytyNdWTLCS8+uqr\nWLFiBRYsWIDjx48jKSkJjx49QlZWFuRyOWJjY7FgwQL88ssveOWVV6Qqs858/brDwdERu3btwKnY\nkwgYOuypZ0v+qezs7dHeswOOHY3BgwdywW2/b1iPA/sjYGdvL1F19UuXegV0q19d6hXQrX51qVdA\nt/rVpV4B3epXl3pt2/ZFNHV3x769u5GdnaXZrlKpsPG3Dc/F2RRJVzfasWMHli9fjpSUlCovhlqt\nhouLC15//XWEhob+5THEXN2owvIfvsOaX/4LmUyGrdt2oHUbD/GLEMG1q1fw2pRXYGRkhDHjxsPB\n0REnjh3FsaNHRLsiXyy61CugW/3qUq+AbvWrS70CutWvLvUK6Fa/utRr3OlTmDHtddjZ22H0mHEw\nNTXFvj27ce/ePZSUFGP6jLcw7c2ZWq+jptWNJA0JFRITE5GQkICCggKo1WpYWlqiadOmcP//UzF/\nhxQhISkxEUFDB6GNR1tsCQsXvwAR3b1zBz+tWo6zZ+JQUlKCZs2aI3TiKxgaGCR1afVOl3oFdKtf\nXeoV0K1+dalXQLf61aVeAd3qV5d6PX/uLFatWIbr167CwMAQL/fqjW5+fvjkwzl49733MeXV17Ve\nw3MdErRJipBARERERFQTtVqNrKysale/PBAZgTn//he++PJrBAYN13otNYUEya5JICIiIiLSRWq1\nGkMG9MG016dWuW3v7t2QyWTo4OUlQWX/0/CuqCUiIiIieo7p6elheMhI/LFlE9579y34dfdHmaoM\nR2IOI+50LMaGjkfTpu6S1sjpRkREREREIlOr1Qj7Ywt2bt+GpKREAECz5i0wYtRoDBfxb2zxmgQi\nIiIiIhLgNQlERERERFQrDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQk\nwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBARERE\nREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBAREREREQCDAlE\nRERERCRgIHUB2laqKpe6BNGUKHWnVwAoUpZJXYJoikt1p1cAKNSxfgtKVFKXIJrMohKpSxBVmqJY\n6hJE8/tJudQliCo5OU/qEkSTnpQudQmiUt+7IHUJoiq6uKLa7TyTQEREREREAgwJREREREQkwJBA\nREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBAREREREQC\nDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBAREREREQCDAlERERE\nRCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBARERERCShKcF+UJxfhldHdJe6\nFA2GhHqiUCikLkE0hTrUK6Bb/RYW6k6vAFCkQ/3qUq8AUFJUKHUJpCWmhvpSlyAac2Pd6RUALEwM\npC5BMjNDe0GtBt4K7S11KRr68+bNmyd1EdpUolKLMk7/l32RlpoKZxcX2NnZizJmZWXl4vQ6pF93\npKemwsnZBbYS9QoAKpH6HTG4J9LTUuHo7IJGtnaijFmZqkycXscH9kZGeiocnJwl6xUAlCL1+9qI\nfshMT4W9ozNsGknXb2lZudbHeDd0EB5lpMHWwQnWEvZaqCoTZZz5UwORk5kOG3snWNrYijJmdQqU\nKsnGFttleZ4o40S81Q1OliZIzytGdqFSlDGrk59fovUxLiwcAFdbU6RkFyGzoFTr49VEkSvOlwzy\ndePRxN4C8swCZOQWizJmtbJTRR2un29bvD2+NxavOYBhvTviwvUk3El6KNr4n0wfUu12hoR68kCe\n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\nG0lBqtWNpCLV6kZSkGp1I6lItbqRVKRY3UgqUq1uJBWxVjeqcHLbWpzZtxUyyDB+wUo4vNBctLGl\nWt1IKlKsbiQVqVY3koqYqxs9D2pa3UhP5Dqq8Pb2xjvvvINly5ahoECc9W+JiIgaonY9BkAGGRya\nNBc1IBBRw/NcXLg8adIkNGvWDIWFhbCw0O5ydERERA2VjZMrZq3dL3UZRNQAPBchwcjICP369ZO6\nDCIiIiIiwnMw3YiIiIiIiJ4vDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJRERE\nREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkwJBA\nREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgwJREREREQkYFDXByQlJSEu\nLg4PHz5EeXl5ldtlMhlmzpxZL8UREREREZH46hQS9u7di7lz50KlUtV4H4YEIiIiIqJ/tjqFhOXL\nl8Pd3R3z58+Hm5sb9PX1tVUXERERERFJpE4hISMjA3PnzkXnzp21VQ8REREREUmsThcud+zYEbdv\n39ZWLURERERE9Byo05mETz/9FFOnToWVlRV69+4NOzs7yGSyKvdr3LhxvRX4d5Uoq15c3VAVKcuk\nLkFUxaW602+hDvUKAAUlNV/31BBlFpVIXYJo0hTFUpcgqoTsUqlLEE1TJ0upSyCqF+nwlrqE50Kd\nQoKBgQGsra3x008/4aeffqrxfjdu3PjbhRERERERkTTqFBI++eQT3L9/H8OGDYO7uzsvXCYiIiIi\naoDqFBKuXLmCadOm4a233tJWPUREREREJLE6Xbhsb28PS0vOOSQiIiIiasjqFBKmTJmC9evXQy6X\na6seIiIiIiKSWJ2mGz148ABlZWUYPHgwWrRoATs7uyrXJchkMvz888/1WiQREREREYmnTiHhwIED\n0NfXh6OjI/Lz85Gfn1/lPtUtiUpERERERP8cdQoJhw8f1lYdRERERET0nKjTNQlERERERNTwMSQQ\nEREREZEAQwIREREREQkwJBARERERkQBDAhERERERCTAkEBERERGRAEMCEREREREJMCQQEREREZEA\nQwIREREREQkwJBARERERkQBDAhERERERCTAkEBERERGRAEMCERER0T9AoKczjr3vj6AOzlKXonVj\n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\neMH7ZTTvEQDrxg1vjXl9GeDT1AZ9W9nDw8kcpapyxCZkI+pmJuQ50kxnI2qIJAsJLi4uuHz5Mrp1\n6ybYPmzYMDx69AiLFy+GtbU1Bg8eLFGFdRM8pC9yc7LR2NUNb82ajSHDgmFpaSV1WVoxblh/5OXm\nwLmxG6a9/W8MHBoEiwbaKwBMGTkIebk5cHJxxdQZ/0K/wUGwsNTuVCqpzBg3BHl5OXBydsXEabPQ\na+AwrU8bk9LsyYHIz8uFg1NjjH71Hfj3GwqzBtrvV9NHQpGXC1snFwS8MgMv9R4MU/OG2SsArP7X\neBTl58Ha0Rkvj30DL/oPgImWp1JJJXLeFJQo8mBu5wTPYVPRpGs/GJk2zF4BYPmIdrA0NkBGQSk2\nnk/BsTtZKJTomjyihkyykDBq1Ch8//33KCkpQf/+/eHh4aG5bcqUKcjOzsbPP/+MU6dOSVVinbR9\nsT1CRo9DN78eUpeidW3atkfQyLHw8fWXuhRRtPRoh6HBY9C5a3epS9G6Fm1exMCg0fDy8ZO6FFG4\nt3oRfYaOhGdnX6lL0Tq3Fh7wGxSMNp26Sl2KKJyatYZX32Fw7+AjdSlaZ9OkJVr4D4VT285SlyKK\ne48KEXUrE5ermZZCRPVHstWNysvLsXLlSqxbtw7BwcH45JNPqtxn/fr1WLp0KZRK5T9udSMpSLW6\nkVSkWt1IClKtbiQVqVY3kooUqxtJRarVjaQixepGUpFqdSOpiLkEqtTEXAL1eSDmEqjPg+dyCVTg\ncVgoKCiAlVX101UePnyIEydOIDg4+C89P0NCw8WQ0HAxJDRcDAkNF0NCw8WQ0LDVFBIkXz5IT0+v\nxoAAAA4ODn85IBARERERUd1JHhKIiIiIiOj5wpBAREREREQCDAlERERERCTAkEBERERERAIMCURE\nREREJMCQQEREREREAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQ\nQEREREREAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQERERERE\nAgwJREREREQkwJBAREREREQCDAlERERERCTAkEBERERERAIMCUREREREJMCQQEREREREAgZSF6Bt\nyrJyqUsQTblaLXUJotKlbmVSFyAyA5ludWyiry91CaKxMm7wv3YEHC1053dQsdJE6hJEVapLxxfl\n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\nfxFKAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f7f0f22b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure = sns.heatmap(value_array, annot = action_array, fmt= '', square=True, cbar=False, cmap= cmap_default)\n",
"ax = plt.axes()\n",
"ax.set_title('Final Q-function and resulting policy\\n')\n",
"figure.set(xlabel='n', ylabel='m')\n",
"sns.plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwkAAAFVCAYAAACkSKMpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8z/X///H7e2MOw3IIQ4zJ3jLMkGOfj4kkn5KKac6h\n5BAqFakP6ZNKlFNiCB8hREmab07lLHycTyVsROQwZma2vX5/9PP+9LQ5fXpvL9vrdr1c/LHn+7X3\n+/7YZnvd36/X6/12WZZlCQAAAAD+Px+7AwAAAAC4s1ASAAAAABgoCQAAAAAMlAQAAAAABkoCAAAA\nAAMlAQAAAICBkgDgjjdu3Di53e50/6pWrapGjRrppZde0v79+//SYxw5csT4uEOHDqpSpcpfus+r\nvvvuO/Xo0UMRERGqXr26mjRpohdffFE//vijV+7/Tnbt1/V6Nm7cqMcee0zVqlVT/fr1tXnzZrnd\nbr3xxhuZmm/hwoVyu936+uuvM/VxMrJp0ya53W598sknjnpsANlDLrsDAMCtcLlcatOmjWrVquVZ\nu3Llig4fPqyZM2dqxYoVmj17ttxu923f98SJEzVhwgRt27Yt3WP+FQkJCXrppZf0/fffq3r16oqK\nilKRIkV07NgxLV68WB06dFBkZKTeeOMN5cqV834dDxkyRBs2bFBMTMwNt7MsS/369VNSUpL69esn\nf39/hYaGasSIESpXrlym5/yr3+f/VXBwsEaMGKHKlSvb8vgAcCM5768SgByrRo0aevTRR9OtV6tW\nTb1799bo0aM1YcKE277fNWvWKCUlxRsRDS+//LJWr16tN998U1FRUcZtffr00bBhwzRr1izlzp1b\ngwcP9vrj2+2HH35Q7ty5b7rdqVOndPbsWTVv3lzPPPOMZz2j73VOUrRo0Rw/I4Dsi9ONAGR7TZo0\nkb+/vzZv3mx3FI+lS5dq1apVateuXbqCIP3x7PWbb76pmjVratasWdq5c6cNKe8MycnJkqQCBQrY\nnAQAcBUlAUCO4OPjk+5owDfffKNOnTqpTp06Cg0NVYMGDdS/f3/FxsZ6tnG73dq8ebNSUlLkdrs1\ncOBA4z727t2rrl27qkaNGqpdu7Z69eplfP71fPHFF3K5XMYz4xl59tlnlZaWpoULF97SnOfPn9fI\nkSP1j3/8Q2FhYapevboeeeQRjR8/Xqmpqca2v/32mwYOHKiGDRsqLCxMHTp00LZt29S0aVN17NjR\n2PbEiRMaOHCgHnjgAVWtWlVNmzbVqFGjdOnSJWM7t9ut4cOHa8mSJWrVqpWqVaumhg0baujQoUpI\nSJAkHTt2TG63W8ePH9eRI0fkdrs1bty4DOcZOHCgmjRpIpfLpXnz5nm2vXoff74moXHjxurdu7fW\nr1+vtm3bKiwsTHXq1NGAAQP022+/GfebnJysTz75RE888YRq1KihqlWrqkmTJho+fLgSExNv6Wt9\nrfj4eP3rX/9S48aNFRoaqkaNGumtt97SmTNnjO0aN26sHj166Pvvv1fLli1VvXp1NW3aVBMmTDC+\nRxldFxAbG6sXXnhBjRo1UtWqVdW4ceMMHyMpKUmjR49Ws2bNFBoaqnr16qlfv376+eef0+Xet2+f\nevToofvvv1+1a9fWq6++qtOnT2c448GDB9W3b1/VrVtXVatWVYsWLRQdHZ3uZwtAzsfpRgCyvR07\ndujChQuqU6eOZ23y5Mn64IMP9MADD6hv377y9fXV5s2btXjxYm3fvl3Lli2Tj4+PRowYoQkTJujI\nkSN67733dM8993juIzU1Ve3bt1fz5s01aNAg7d27V3PmzNG+ffu0dOnSG15HsGnTJgUGBiowMPCG\n2evVqyeXy6VNmzbddM6UlBR17NhRR44cUdu2bVWxYkXFx8fryy+/1NixY5WcnKz+/ftLks6cOaPI\nyEidOXNGUVFRKlu2rH744Qd16tRJvr6+Rq64uDhFRkZKktq2basSJUpox44dmjx5sjZs2KCZM2fK\nz8/Ps/2yZcu0YMECRUVFKSoqSsuXL9fs2bM9BaZIkSIaMWKE3nnnHfn6+uq1115TpUqVMpypbdu2\nqly5st555x3VqVNHrVu3vu62krRr1y717NlTTz75pJ588klt2bJFX375peLi4jRnzhzPdn369NGa\nNWvUunVrPf3007p06ZKWLl2q6dOn6/Tp0/rggw9u+vX+s/j4eLVp00anTp1SZGSkypcvr59++kmf\nf/65Vq9erblz56pw4cKe7fft26fevXurZcuWioyM1KpVqzR69Gj99NNPGjVq1HUfo2PHjnK5XGrX\nrp2KFCmiPXv2aPbs2dq+fbu++OILSdKlS5fUvn177dmzR82bN1fnzp114sQJzZo1S99//72mTJmi\n8PBwSdLOnTvVsWNH5c2bV507d5a/v78WLVqkZcuWpbsWY9u2berSpYsKFy6szp07KyAgQBs2bNDI\nkSO1bds2jR8//ra+ZgCyOQsA7nBjx4613G63NXPmTOvMmTOef7/++qu1dOlS68EHH7QqV65srVu3\nzrIsy0pNTbXq1KljRUZGpruvF1980XK73daePXs8a+3bt7eqVKlibNe+fXvL7XZbU6dONdYHDRpk\nud1u68cff7xu3nPnzlkhISEZPn5G6tata9WqVeum2y1btsxyu93W7NmzjfULFy5Y1apVsx577DHP\n2tChQy23222tXLnS2Pb111+3QkJCrA4dOnjWnnnmGev++++3jh8/bmy7aNEiKyQkxIqOjvashYSE\nWJUrV7b27t1rbPvII49YoaGhVlJSkmctIiLCeuihh24619GjR62QkBBr8ODBN1yLiIiw3G63tXz5\ncuPzu3XrZrndbuvIkSOWZVnW3r17LbfbbX3wwQfGdqmpqVZERIRVs2ZNz9qCBQsst9ttLVq06IYZ\n33jjDSs0NNTavXu3sf7jjz9abrfbGjJkSLqcn376qbFt3759jZ+djRs3WiEhIdaECRMsy7Ksb7/9\n1goJCbFiYmKMzxs1apTVqlUr68SJE5Zl/fH/ISQkxJo0aZKx3S+//GJVrVrVatasmWetXbt2VlhY\nmBUbG+tZS05OtqKioiy32+15bMuyrObNm1tNmjSxEhISjPudMGGC5Xa7rSVLltzwawQgZ+F0IwDZ\ngmVZGjZsmOrVq+f5FxERob59+0qSRo0apXr16kn649Sj1atXKzo62riPCxcuKG/evJKkixcv3tLj\ntmzZ0vg4LCxMknTy5Mm/NM+fZXSqVEYefPBBbdy4UU899ZSxfubMGRUsWNA4jSYmJkaVKlVSo0aN\njG379OljfHz+/HmtW7dOtWvXVp48eXT27FnPvwYNGsjf31/fffed8TnBwcHpXkWqSpUqSklJ0blz\n525l5P9Z/vz51bhxY2MtNDRU0h8XQEv/PYWsd+/exnYnT55UQEDA/3S60dKlS3XvvfcqMDDQ+BpV\nqFBBFSpUSPc1CggIUPv27Y21Z599VpZlaenSpRk+RqlSpSRJEyZM0MqVK5WUlCRJ6t+/vxYsWKAS\nJUp4shQqVEhdunQxPr98+fJq2bKljhw5oj179ujcuXPasmWLGjdubBwhy507t7p06SLLsjxr+/bt\n0y+//KK///3vSk5ONmZs1qyZLMtKNyOAnI3TjQBkCy6XS127dlWDBg08H/v5+alkyZKenas/y507\ntzZu3KilS5fq0KFDOnr0qE6cOOH53D/vIF2Pj4+PihQpYqzlyZNHlmV5LrbNSEBAgPLmzXtLRSI5\nOVnx8fGeGS5fvqwLFy5cN4evr69mz56tzZs3Ky4uTrGxsZ5rAUqXLi3pj9NWzpw5Y5x+dVWJEiWM\nC4QPHz4sy7K0fPlyLVu2LN32LpdLx44dM9aKFi2abrurpyNl9rnr134//vzYaWlpnrXcuXNr0aJF\nWr9+vWJjYxUbG6v4+HhJt/+Sp2fOnFF8fLzOnz/vKaJ/5nK55HK5lJyc7MkSFBSU7nS08uXLS/rj\n9K6MVKtWTT169FB0dLSef/55+fn5KTw8XI0aNVKrVq0UEBDg+fyKFStmeLpbxYoVJUlHjx5VWlqa\nLMvK8GVkr2531aFDhyRJn332mWbOnJnhjL/++muGuQHkTJQEANlGxYoVM9xJy0i/fv0UExOjkJAQ\nVa9eXc2aNVOVKlW0Zs2aW36Z1L/y+vm1a9fWmjVrdPToUZUpU+a62/34449KSUnxvP/DkiVL0l08\nXbp0aS1fvlyxsbGKiorS+fPnVbduXdWvX1+dO3dWjRo1jGeGr1y5IknGdQR/dvVoiiTP5zzyyCPp\njlBcde3LmPr42HcQ+lYeOz4+XpGRkYqLi1Pt2rVVs2ZNRUZGKiwsTMOGDbul6z/+7Gr5qF27tnr2\n7HndgvnnnfaMvvZX78fX1/e6j9WvXz9FRUVp5cqVWrt2rTZt2qQNGzZo4sSJ+vzzz1W2bNkbFtyr\nt/358a8ekcgoy7Wf16FDB0VERGR43/7+/td9XAA5DyUBQI6zZcsWxcTEqFWrVho+fLhx21dffZUl\nGZ588kmtXr1akyZN0ltvveVZ//nnnzVlyhS1a9dOoaGhio6Olsvl0pNPPilJeuCBB/Tpp58a93V1\np37ixIk6ffq0pk+frvvvv99ze1pams6cOeO5cLZo0aIqWLCgfvnll3S5zp8/r9OnT6tChQqS/nv0\nITk5OcMCtnTpUs822cVnn32mI0eO6J133lGrVq2M266eknQ7ihQpovz58yshIUF169ZNd/uqVatU\noEABo8Bk9ApYBw8elCTP1/5av//+u3766SfVrl1bkZGRioyMlGVZmjZtmt577z3NmTNHr7zyiu65\n5x7FxsYqJSUl3dGEAwcOSJICAwNVsmRJ+fj4ZPhzcPjwYePjq0XWx8cn3c/B5cuXtXLlSt19990Z\n5gaQM3FNAoAc5+zZs5Kke++911iPi4vzvPvvn68B8PX1TffM6o3cyhGGhx9+WI0aNdK8efM0ffp0\nz/q5c+e0Y8cOtWnTRu3atdOGDRvUsmVL1axZU5JUrFgx47qLevXqqUaNGp7PldKfKjJz5kwlJiZ6\nTvVxuVx6+OGHtWvXrnTvHTFlyhTjmehixYopPDxcK1eu1K5du4xtFy5cqL59+3peVed23e7X1Vuu\nfp2u/f4vW7bMs8N8O7l8fHz04IMPau/evelOydq4caN69OihSZMmGeu//fabvvnmG2Nt0qRJnu9N\nRr788kt16dLFeAyXy6WqVatK+u8RnYceekjnz5/X1KlTjc8/dOiQFi9erLJlyyokJEQBAQGqX7++\nVq9erd27d3u2S0tL06effmr8HIeGhqpUqVKaP39+utOKoqOj1a9fP61atepGXyYAOQxHEgBkC7dy\nDcFV4eHhCggI0Mcff6wLFy6odOnSOnjwoL744gvPtQRXz+OX/njm3bIsjR07VrVq1brpKU23mmXk\nyJEaMGCA3n33XS1evFhNmzZVsWLF1KxZM02dOlVbt26Vj4+PmjVrdkv3FxERoRUrVqhbt2568skn\n5XK5tHbtWi1fvlx58+Y1rmXo27evVq1apa5du3peAnX9+vVavXq15xz6q/75z3+qffv2at++vdq2\nbavg4GDt2bNH8+bNU5kyZdSzZ89bynetokWLateuXZo2bZpq1Kih6tWr/0/3c7siIiI0Y8YMvfji\ni4qKilL+/Pm1ZcsWLV68WHnz5vVc93H1HP9b+X6+/PLL2rRpk/r166cnnnhCoaGhOnz4sObMmaO7\n7rpLr776qrF97ty5NWjQIG3fvl3lypXT8uXLtX79enXo0EFVqlTJ8DGeeOIJzZo1S6+//rq2b9+u\n4OBgnTx5UnPmzFFAQIDndLBu3bppxYoV+vDDD7V3717Vrl1bJ06c0OzZs+Xr66t//etfnvscPHiw\n2rZtqw4dOqhDhw66++67tWTJknRHOnx8fDRs2DA9//zzatWqldq2bavSpUtr8+bN+vrrr1WlSpUM\n3xQQQM5FSQCQLdzO9QFFihTR1KlTNXLkSM2aNUupqakKDAzU008/rebNm6tVq1Zas2aNmjZtKknq\n3r27fvrpJ02aNEnbtm27aUm41Sz+/v76+OOPtWzZMs2fP1+zZs3S2bNnVbRoUTVo0EBNmzZVTEyM\n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\n0tChQ1WmTBn5+vpmVi4AAAAANrmtknDy5Em99tprqlmzZmblAQAAAGAzl2VZ1q1u3LlzZwUHB+uN\nN97IzEwDn0xOAAAYZUlEQVQAAAAAbHRbJeHgwYN65pln9MQTTygiIkJFixaVy+VKt12pUqW8GhIA\nAABA1rmtknDkyBH16dNHP/300w2327t3718O5k3R0dF2R8gS3bt3l+SMeZ00q+SseZ00q8S8OZmT\nZpWcNa+TZpWcNa+TZpX+O29GbuuahMGDB+vQoUN67LHHFBQUxIXLAAAAQA50WyVh586deu6559S7\nd+/MygMAAADAZrf1jsvFihVTwYIFMysLAAAAgDvAbZWELl26aPr06YqLi8usPAAAAABsdlunGx09\nelSpqalq3ry5goODVbRo0XTXJbhcLk2aNMmrIQEAAABkndsqCUuXLpWvr6+KFy+uCxcu6MKFC+m2\nyeglUQEAAABkH7dVElasWJFZOQAAAADcIW7rmgQAAAAAOR8lAQAAAICBkgAAAADAQEkAAAAAYKAk\nAAAAADBQEgAAAAAYKAkAAAAADJQEAAAAAAZKAgAAAAADJQEAAACAgZIAAAAAwEBJAAAAAGDIZXcA\nZF/BwcGqWLGiihUrJj8/PyUmJurUqVPau3evjh8/bnc8r3PSvE6aVXLWvE6aVXLWvE6aVXLWvE6a\nVXLWvHfyrJQE3DY/Pz81adJEpUqV0qlTp7Rr1y5dunRJBQoUUMWKFdWiRQvt379fa9askWVZdsf9\ny5w0r5NmlZw1r5NmlZw1r5NmlZw1r5NmlZw1b3aYlZKA29akSRMFBgZq3bp12rNnj3Hb1q1bVb9+\nfd13331KTU3VunXrbErpPU6a10mzSs6a10mzSs6a10mzSs6a10mzSs6aNzvMyjUJuC3BwcEqVaqU\ndu/ene6H+qp169bpxIkTqly5sooVK5bFCb3LSfM6aVbJWfM6aVbJWfM6aVbJWfM6aVbJWfNml1kp\nCbgtbrdblmVp586dN9xu+/btcrlcqlSpUhYlyxxOmtdJs0rOmtdJs0rOmtdJs0rOmtdJs0rOmje7\nzHpHlISkpKTr3paWlqZz585lYRrcSPHixZWYmKiLFy/ecLtjx47JsiwFBgZmUbLM4aR5nTSr5Kx5\nnTSr5Kx5nTSr5Kx5nTSr5Kx5s8ustpaEKVOmqEGDBqpRo4YiIiL02Wefpdtm586dqlevng3pcK08\nefLI19f3pj/U0h/l7vLly/L398+CZJnDSfM6aVbJWfM6aVbJWfM6aVbJWfM6aVbJWfNmp1ltKwmf\nffaZRo0apWbNmmnQoEEKCgrSsGHD1L9/f6WkpNgVCzfgcrkk6Zavss/urzzgpHmdNKvkrHmdNKvk\nrHmdNKvkrHmdNKvkrHmz06y2vbrRrFmz9Pzzz6t3796SpA4dOmjevHkaMmSIUlJSNHr0aPn43BFn\nQ+H/S0pKUmpqqvLly3fTbX18fJQnTx7Fx8dnQbLM4aR5nTSr5Kx5nTSr5Kx5nTSr5Kx5nTSr5Kx5\ns9Ostu2F//rrr6pVq5ax1rp1aw0fPlzLli3T66+/blMy3Mjx48dVsGDBmx76KlmypHx8fGx/I5C/\nyknzOmlWyVnzOmlWyVnzOmlWyVnzOmlWyVnzZpdZbSsJgYGB2rFjR7r1xx57TK+88ooWLlyod999\n14ZkuJH9+/fL5XIpLCzshtuFhYXJsiwdOHAgi5JlDifN66RZJWfN66RZJWfN66RZJWfN66RZJWfN\nm11mte10o9atW+ujjz7S5cuX1bRpU7ndbs9tXbp00dmzZzVp0iStX7/erojIwKFDhxQbGyu32634\n+Hjt2rUr3TZ169ZVYGCg9u7dq99//92GlN7jpHmdNKvkrHmdNKvkrHmdNKvkrHmdNKvkrHmzy6y2\nlYROnTopISFB06ZNU3x8vAYPHmzc/uKLL6po0aIaOXKkTQlxPStWrFBERITq1Kmj4OBgHTp0yPNW\n4sHBwQoICNCBAwe0YcMGu6N6hZPmddKskrPmddKskrPmddKskrPmddKskrPmzQ6z2lYSfHx81KdP\nH/Xq1UsJCQkZbtOpUyc98sgjWrNmTRanw42kpKTou+++U9myZeV2u3XfffcpX758SkxM1MmTJ7V2\n7dpsfa7gtZw0r5NmlZw1r5NmlZw1r5NmlZw1r5NmlZw1b3aY1baScJWPj48KFSp03dvvvvtutWrV\nKgsT4VbFxsYqNjbW7hhZxknzOmlWyVnzOmlWyVnzOmlWyVnzOmlWyVnz3smz8hqjAAAAAAyUBAAA\nAAAGSgIAAAAAAyUBAAAAgIGSAAAAAMBASQAAAABgoCQAAAAAMFASAAAAABgoCQAAAAAMlAQAAAAA\nBkoCAAAAAAMlAQAAAICBkgAAAADAQEkAAAAAYKAkAAAAADBQEgAAAAAYKAkAAAAADJQEAAAAAAZK\nAgAAAAADJQEAAACAgZIAAAAAwEBJAAAAAGBwWZZl2R0CAAAAwJ2DIwkAAAAADLnsDpAVoqOj7Y6Q\nJbp37y7JGfM6aVbJWfM6aVaJeXMyJ80qOWteJ80qOWteJ80q/XfejHAkAQAAAICBkgAAAADAQEkA\nAAAAYKAkAAAAADBQEgAAAAAYKAkAAAAADJQEAAAAAAZKAgAAAAADJQEAAACAgZIAAAAAwEBJAAAA\nAGCgJAAAAAAwUBIAAAAAGCgJAAAAAAyUBAAAAAAGSgIAAAAAAyUBAAAAgIGSAAAAAMBASQAAAABg\noCQAAAAAMFASAAAAABgoCQAAAAAMlAQAAAAABkoCAAAAAAMlAQAAAIDhjiwJqampOn36tN0xAAAA\nAEeytSQcP35cn3zyicaMGaMjR45IksaMGaPw8HA1bNhQDRs21JdffmlnRAAAAMBxctn1wHv27FHH\njh2VkpIil8uladOmqXv37po0aZI6dOigypUra82aNRo4cKD8/f3VtGlTu6ICAAAAjmJbSXjvvfdU\nq1YtjR49Wr6+vho0aJDGjBmjXr16qXfv3pKkxx57TPny5dOECRMoCQAAAEAWse10ox07dqhTp07K\nkyePcuXKpT59+siyLNWtW9fYrlmzZvr5559tSgkAAAA4j20loXDhwoqNjfV8XKZMGfXu3VuFChUy\ntouLi9Pdd9+d1fEAAAAAx7LtdKNHH31UI0aMUFJSkp544gkVLFjQc5qRJCUmJmrp0qUaNWqU2rRp\nY1dMAAAAwHFsO5LQu3dvPfroo/rggw907NixdLfHxMRo4MCBqlu3rlEeAAAAAGQu244k5M6dW//8\n5z/10ksvKV++fOlu/9vf/qYlS5aoQoUKNqQDAAAAnMu2knBVgQIFMlwvVqyYihUrlsVpAAAAANyR\n77gMAAAAwD6UBAAAAAAGSgIAAAAAAyUBAAAAgIGSAAAAAMBASQAAAABgoCQAAAAAMFASAAAAABgo\nCQAAAAAMlAQAAAAABkoCAAAAAAMlAQAAAICBkgAAAADAQEkAAAAAYKAkAAAAADBQEgAAAAAYKAkA\nAAAADJQEAAAAAAZKAgAAAAADJQEAAACAgZIAAAAAwEBJAAAAAGBwWZZl2R0CAAAAwJ2DIwkAAAAA\nDJQEAAAAAAZKAgAAAAADJQEAAACAgZIAAAAAwEBJAAAAAGCgJAAAAAAwUBIAAAAAGCgJAAAAAAyU\nBAAAAAAGSgIAAAAAAyXBy+bOnatmzZqpevXqatu2rbZt22Z3pCyxfPlyhYeH2x0j06SlpenTTz/V\nI488oho1aqhFixb67LPP7I6Vaa5cuaIPP/xQjRs3Vo0aNdSpUyft2bPH7liZLjk5Wc2bN9fAgQPt\njpJpzp07J7fbne5f37597Y6WKdavX682bdqoevXqaty4scaOHSvLsuyO5XWbNm3K8PvqdrtVuXJl\nHT9+3O6IXpeWlqbo6Gg99NBDqlGjhtq0aaMNGzbYHStTJCYm6q233lKDBg0UHh6url27at++fXbH\n8rrr7UtMmDBBERERCgsL0zPPPKNffvnFhnTed7N9p6lTp+rxxx/PwkSmXLY9cg60cOFCDRkyRL17\n91ZoaKhmzpypbt266auvvlLp0qXtjpdptm7dqldeecXuGJlq/Pjxmjx5snr16qVq1app8+bNeued\nd5SUlKSuXbvaHc/r3nnnHX399dcaMGCAypYtq+nTp6tjx476+uuvFRgYaHe8TDNu3DgdOnRIYWFh\ndkfJNPv27ZPL5dLUqVPl7+/vWb/rrrtsTJU5tmzZou7du+uxxx7TSy+9pN27d+ujjz6Sj4+PevXq\nZXc8r6pSpYrmzp1rrCUlJemFF15Q1apVc+T/28mTJ2v06NHq27evqlatqvnz56tbt26aP3++3G63\n3fG8qk+fPvrPf/6jF154QZUqVdKiRYvUrl07ffHFFwoKCrI7nldcb19i3Lhxmjx5sgYMGKBSpUrp\n448/VpcuXfTNN9+oQIECNiT1jpvtO8XExGjUqFG69957szDVNSx4TUREhDV06FDPx1euXLEefPBB\n6+2337YxVea5fPmyNWnSJCs0NNS6//77rRo1atgdKVOkpqZa4eHh1pgxY4z1oUOHWvXr17cpVea5\ncOGCFRoaak2bNs2zlpSUZFWvXt2aMGGCjcky1+7du62wsDCrXr161muvvWZ3nEwzbdo0q0GDBnbH\nyBJRUVFWjx49jLWRI0daHTp0sClR1nr77betevXqWWfPnrU7SqZo3ry58X81NTXVatSokTVs2DAb\nU3nfrl27rJCQEGvu3LnGemRkpNWvXz+bUnnPjfYlEhISrBo1aliTJ0/2rMXHx1vh4eHWp59+akPa\nv+5m+04XLlywhg8fbrndbuv++++3Hn/8cZuSWhanG3nJkSNH9OuvvyoiIsKzlitXLjVq1EirV6+2\nMVnm+eGHHzR58mS99tprat++vd1xMk1CQoJatWqlpk2bGuvly5fXmTNnlJSUZFOyzJEvXz7NmzdP\nTzzxhGfN19dXLpdLycnJNibLPKmpqXr99dfVrVs3FS9e3O44mWr//v0KCQmxO0amO3PmjLZu3arI\nyEhj/cUXX9SMGTNsSpV1fv75Z82aNUv9+/fPkUeJpD9OD/zz0TAfHx8VKFBA586dszGV9x0+fFgu\nl0sNGjQw1sPDw7VmzRqbUnnPjfYltm/frkuXLhn7VoUKFVLt2rWz7b7Vzfad5s6dq2+//VYffvih\n/va3v9mQ8L8oCV5y9T9xuXLljPUyZcooLi4uR54DW61aNS1fvlzt2rWTy+WyO06mKVSokAYPHpzu\n8PWKFStUsmRJ5c2b16ZkmcPX11dut1sFCxaUZVmKi4vToEGD5HK51LJlS7vjZYpJkyYpJSVFzz33\nnN1RMt3+/ft16dIltW3bVtWqVdPf//53TZkyxe5YXnfgwAFJUp48edSjRw9Vq1ZN9evX17hx43Lk\n7+Nrffjhhypfvrxat25td5RM065dO3311Vdav369EhISNH36dB08eFD/+Mc/7I7mVSVLlpRlWfr1\n11+N9aNHjyohIUHnz5+3KZl33Ghf4tChQ5KksmXLGuv33HOPDh8+nFURvepm+05NmzbVd999p4cf\nftiGdCauSfCShIQESTKe1bj6cVpamhITE9Pdlt3l9Gdcb2TevHlav3693njjDbujZKrx48dr3Lhx\ncrlceuGFF9KV4Jzg4MGDmjhxombMmKFcuXL2r8S0tDQdPHhQ+fPn16uvvqpSpUpp1apVGjlypC5f\nvqyePXvaHdFrzpw5I8uy9Nprr+kf//iHnnnmGW3atEkTJkxQ3rx51a1bN7sjZpq4uDitXLlSb7/9\ntt1RMtXTTz+tDRs2qEuXLpIkl8ulfv36qVGjRvYG87KqVasqKChIQ4cO1fDhw1WuXDl98803+uGH\nHyRJly5dUqFChWxO+b+70b7ExYsX5efnl+53s7+/v2e/K7u52b7TPffck0VJbi5n/0XMQlefmbre\nM+o+Phy0ySkWLVqkIUOGqHnz5mrXrp3dcTLVQw89pLp162rDhg0aP368rly5ohdeeMHuWF5jWZYG\nDx6s1q1bq1q1anbHyRITJ05UqVKlPH+IateurYsXLyo6OlrdunWTn5+fzQm9IyUlRZL0wAMPaMCA\nAZKk+++/X2fPntWECRPUtWvXHHsEdN68eQoICNCjjz5qd5RMdfVVboYOHaoKFSpo3bp1Gjt2rAoW\nLKioqCi743mNn5+fxo8fr5deeslzZCgsLEzdunXT+PHjc9zR7D+zLIv9KhtRErykYMGCkv5ovUWK\nFPGsX7x4Ub6+vsqXL59d0eBFn376qd5//301adJEI0aMsDtOpqtUqZIkqVatWrp48aKmTJmiXr16\nydfX1+Zk3jFjxgydOHFC0dHRSk1NNU5DSU1NzTFzXuXj46M6deqkW3/ggQf0+eefKzY2VhUrVrQh\nmfflz59fktSwYUNjvX79+po1a5aOHj16Rz1j503Lly9XkyZNlDt3brujZJotW7Zo69atGjNmjB56\n6CFJfxTelJQUjRgxQq1atcpRf3eDg4P15Zdf6rffflNKSopKly6tcePGycfHx7P/kRMVKFBAycnJ\n6X4fX7x4MUfPfaeghnlJuXLlPOdv/9nRo0dzzMuTOd2oUaP03nvv6fHHH9fo0aNz7Kkpv//+uxYs\nWKDExERjvXLlykpOTs5RFwUuW7ZMJ06cUK1atVSlShWFhoZq//79WrhwoUJDQ9OdA5zdnTx5UnPn\nztXZs2eN9cuXL0uSChcubEesTHH11LgrV64Y61ePMOTUowjHjx/XwYMHPTvOOdWJEyfkcrlUvXp1\nY71mzZpKSkrSsWPHbErmfUlJSfrqq6908uRJlShRwvOS6gcOHNC9996bo59RDwoKkmVZOnr0qLEe\nFxen8uXL25TKOXLuT1YWCwoKUmBgoJYtW+ZZu3LlilatWqV69erZmAzeMH36dE2aNEmdO3fW8OHD\nc/Qv5fPnz2vQoEFaunSpsb5mzRoVLVpURYsWtSmZ9w0bNkzz58/XF1984flXrlw5RURE6Isvvshx\n190kJyfrzTff1KJFi4z1mJgYBQUF5ajvbcWKFVWiRAnFxMQY66tWrVLx4sVVpkwZm5Jlrh07dmS4\n85zTXN153LJli7G+bds2+fr6qmTJkjYl875cuXJpyJAhWrJkiWctLi5O33//vfGqPzlRjRo15Ofn\nZ+xbxcfH68cff2TfKgvkzKdCbdK9e3e9/fbbKliwoMLDwzVz5kydO3dOnTp1sjsa/oJTp05p5MiR\nCgkJUfPmzbV9+3bj9qpVq+ao0lChQgU1a9ZM7777rpKTk3XPPfdo6dKl+vrrrzV8+HC743lVRkf5\n8ubNq7vuukv33Xdf1gfKZGXKlFGLFi00evRouVwuBQcH69tvv9WyZcv08ccf2x3Pq1wul/r376+B\nAwdqyJAhatasmdatW6evvvpKQ4cOtTtepvnpp59UuHDhbH0h662oUqWKGjVqpKFDh+rcuXMKDg7W\nxo0bNXnyZHXq1Clbv8nWtXLlyqWnnnpKn3zyiYoUKSJ/f3+NHDlSRYsWVefOne2Ol6ny58+v9u3b\ne35nlStXTp988okKFSqkp556yu54OR4lwYuioqKUnJysGTNmaMaMGXK73Zo6dWqOfcbqWjn18P2a\nNWt05coVHThwQG3btk13+/r163Pc65C///77GjdunCZNmqRTp06pYsWKGjNmTLr3isiJXC5Xjv1Z\nlqThw4dr/PjxmjFjhk6dOqXg4GCNHTs2x70ijCQ9/vjj8vPz0yeffKKFCxeqZMmSGjp0aI5+WdDT\np0/n+IJw1ZgxY/Thhx9q4sSJio+PV7ly5fTmm2+qTZs2dkfzupdfflk+Pj4aMWKEkpOTVbduXQ0Y\nMEABAQF2R/O6a3//vvjii/L19dXUqVOVmJio8PBwvf/++zmmCN7s742df49clhNeMBoAAADALcs5\n50gAAAAA8ApKAgAAAAADJQEAAACAgZIAAAAAwEBJAAAAAGCgJAAAAAAwUBIAAAAAGCgJAAAAAAyU\nBAAAAAAGSgIAAAAAAyUBAAAAgCGX3QEAADlb48aN1aRJE1WsWFFTp07Vr7/+qnLlyqlXr156+OGH\n7Y4HAMiAy7Isy+4QAICcq3HjxrIsS8nJyerYsaMKFCigadOm6dixY1q8eLEqVKhgd0QAwDU4kgAA\nyHSnTp3SkiVLVLZsWUlS1apV1aZNG8XExKhnz542pwMAXItrEgAAma5SpUqegiBJbrdbknT69Gm7\nIgEAboCSAADIdIULFzY+9vPzkySlpqbaEQcAcBOUBABApvPx4c8NAGQn/NYGAAAAYKAkAAAAADBQ\nEgAAAAAYKAkAgEzlcrnkcrlueR0AYD/eTA0AAACAgSMJAAAAAAyUBAAAAAAGSgIAAAAAAyUBAAAA\ngIGSAAAAAMBASQAAAABgoCQAAAAAMFASAAAAABgoCQAAAAAMlAQAAAAAhv8Hzv2aefj6zVYAAAAA\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f7edacb70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"agent_position_log = domain.record_list[-1]['visited_states']\n",
"\n",
"agent_path = np.empty((4, 12), dtype=str)\n",
"\n",
"for state_visited in agent_position_log:\n",
" if state_visited in terminal:\n",
" agent_path[state_visited] = 'X'\n",
" else:\n",
" agent_path[state_visited] = 'O'\n",
"\n",
"ax = plt.axes()\n",
"ax.set_title('Path Q-agent final episode \\n')\n",
"figure = sns.heatmap(color,\n",
" annot=agent_path,\n",
" fmt='',\n",
" ax=ax,\n",
" cbar=False,\n",
" linewidth=1,\n",
" cmap=states_colors,\n",
" square=True)\n",
"figure.set(xlabel='n', ylabel='m')\n",
"sns.plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nK9N3UCpjjCZNmqSePXuqVatWpR6n76Asc+fOVXBwsEJCQiRJbdu2VWFhoRYsWKDhw4df9b5DYCmn\nwMBAST/+BaJGjRqe8sLCQvn6+qpKlSoVdWuwWLVq1VRUVCS32y1fX19PeWFhoadPVatWTYWFhY5z\nf1oHv10LFy7USy+9pMTERP3lL3+RRL9B+TRr1kyS1KZNGxUWFuqvf/2rxo4dS99BqdLT03XixAnN\nnz9fbrfbayq72+3mcwdl8vHx0e233+4o/5//+R8tXbpUVapUuep9hzhcTg0bNvTMF/6pI0eOKDQ0\ntGJuCtYLDQ2VMUZHjhzxKs/Pz1dYWJinzldffaWioqIy6+C3aebMmXrxxRfVvXt3zZ492zOcTr9B\nWb766iu9++67+uGHH7zKmzdvrqKiIt144430HZQqOztbJ06cUJs2bXTLLbcoMjJSe/bs0YoVKxQZ\nGSl/f3/6Dkp16tQpLVu2TGfOnPEqv3DhgiRdk88dAks5hYaG6uabb1Z2dran7OLFi9q4caPatWtX\ngXcGm0VHR8vf39+r33z33Xf65z//6ek37dq1U3FxsdavX++pc/DgQX3xxRe68847r/k949p44403\nNG/ePA0aNEjPP/+815A4/QZl+f777/X0008rKyvLq/zjjz9WzZo1lZiYSN9BqaZNm6a3335b77zz\njucnNDRUHTp00DvvvKPOnTvTd1CqoqIi/elPf9KqVau8ytesWaOwsDB17NjxqvcdpoT9AkOHDtWz\nzz6rwMBAxcTEaPHixfr22281cODAir41WKpq1arq16+fZs+e7dll7rXXXlNQUJB69Ogh6ccdMjp1\n6qRnnnlGZ8+eVWBgoF555RU1b95cCQkJFdwCXA2nT5/WjBkzFB4ers6dOysvL8/reGRkJP0GpWrU\nqJGSkpL0wgsvqKioSCEhIcrKylJmZqaef/55BQQE0HdQqtJmg1SuXFm/+93v1KJFC0mi76BU9evX\n17333uvpG40bN9bq1auVnZ2ttLQ0ValS5ar3HZdhP95fZNGiRUpPT9eZM2cUERGhCRMmlLp4Dden\nlJQULVy4UNu3b/eUud1uzZ492zONIyYmRhMnTvQaAj1//rymT5+urKwsGWN05513auLEiapdu3ZF\nNANX2YoVK/T000+XeTw3N1eBgYH0G5TqwoULSklJ0QcffKDTp0+rSZMmevTRRz3P9eEzB+X1wAMP\nqHnz5po+fbok+g7KVlRUpNTUVL3//vs6ffq0GjdurBEjRnjCxtXuOwQWAAAAANZiDQsAAAAAaxFY\nAAAAAFiLwAIAAADAWgQWAAAAANYisAAAAACwFoEFAAAAgLUILAAAAACsRWABAFivf//+6tKlyzV7\nvxUrVigiIkK7du26Zu8JACidX0XfAAAAP+exxx7ThQsXrul7ulyua/p+AIDSEVgAANZr165dRd8C\nAKCCMCUMAAAAgLUILACAMsXHx2v69OlatmyZOnXqpFatWqlr165as2bNz57rdrv16quvqmPHjmrZ\nsqUSExOVmpoqt9vtqZOcnKzo6Gjt3btXvXv3VlRUlJKSkvTWW295XavkGpZjx47p0Ucf1V133aWo\nqCh1795db7/9tuMe/va3v+m+++5Ty5Yt1b59e02ePFnffvutV53CwkJNnTpV7du3V0xMjCZNmqSi\noiLHtc6dO6cXX3xRcXFxatmypbp06aIlS5Z41SkqKtKf//xnxcfHq2XLlkpISNCMGTNKvR4AoHyY\nEgYAuKJ169bp/fff14ABA1StWjUtWrRIY8aMUbNmzdSoUaMyzxs3bpyysrLUu3dvNWvWTJ999plS\nUlL05ZdfasaMGZJ+XCdSXFysP/zhD4qOjla3bt20fv16TZkyRQUFBRoyZIjjusXFxRoyZIiKioo0\ndOhQBQQE6IMPPtCkSZNUtWpVT7CZPn260tPTFRcXp4ceekiHDx/W4sWL9cknn2jZsmUKCAiQJA0b\nNkx5eXnq37+/goOD9d577ykrK8vrPd1ut4YMGaLdu3erb9++qlevnrZu3app06bp5MmTGjNmjCRp\n6tSpWr16tQYNGqR69eopLy9P8+fP19mzZzVlypRf49cBANcfAwBAGTp06GBuueUWc+jQIU9ZXl6e\nCQ8PN6mpqWWet2XLFhMeHm5WrVrlVb5kyRITERFhtm3bZowxJjk52YSHh5tx48Z51RswYICJjo42\nBQUFxhhj+vXrZzp37uz1/mvXrvXULy4uNj169DBz5swxxhizb98+ExER4bju2rVrTXh4uJk9e7Yx\nxpj169eb8PBws3z5ck+dCxcumPvuu89ERESYvLw8Y4wxy5YtM82bNzeffPKJ1/VefPFF06JFC3P4\n8GFjjDFRUVFm2rRpXnUmTZpkhg4dWua/FQDgypgSBgC4ombNmqlBgwae1xEREZKkr7/+usxzsrOz\n5efnp3bt2unMmTOen9jYWEnSxo0bPXVdLpdjJKV///46d+6c/vEB++9AAAAFL0lEQVSPfziuXadO\nHblcLs2dO1e5ublyu93y9fXV8uXL9cQTT3hdf+jQoV7n3nPPPWrUqJFycnIkSZs2bZK/v7/uv/9+\nTx1/f3/16NHD67ycnBzVrVtXjRo18mpPfHy83G63Nm3a5Lm31atXa9WqVSooKJAkTZs2TfPmzSvz\n3woAcGVMCQMAXFH16tW9Xvv7+0uS11qUkvLz81VcXKz27ds7jrlcLp04ccLrdVhYmFedBg0ayBij\no0ePOs6vU6eOxo4dq1mzZmnw4MEKCgpS+/bt1a1bN8XFxUmSjh49KpfL5RW0LmvcuLG2bdsm6ce1\nMHXq1FGlSpW86pS8n/z8fB0/frzU3cp+2p4pU6Zo9OjRGj9+vPz8/NS2bVslJSXpgQce8Py7AQB+\nGQILAOCKfHx++WC82+1WjRo1NHPmTBljHMdr1qzpdX1fX1+v45cuXZIkR/llQ4YM8Sz+37Rpk7Kz\ns/XBBx+ob9++euaZZ0p9z5/e208DSmnPdyl5vtvtVpMmTTRx4sRSrx0cHCzpx+2XN2zYoOzsbG3c\nuFGbN2/Wli1btHTpUi1fvrzM9gAAysaUMADAry44OFjff/+9oqOj1a5dO89P69atdebMGVWpUsVT\n1+1269ixY17nHzx4UJLUsGFDx7XPnj2rbdu2qWbNmho4cKBef/11bd68WW3atNHSpUtVVFSkevXq\nyRjjuc5PHThwQHXq1JEk1a9fX19//bV++OEHrzr5+fmltueOO+7wak9ERIQKCgpUpUoVXbx4Ubt2\n7dLZs2fVrVs3zZw5U1u2bNGgQYO0e/duz6gOAOCXIbAAAH51cXFxKi4u1oIFC7zKMzIyNGbMGO3Y\nscNTZozx2h740qVLevPNN3XjjTeqTZs2jmtv27ZNAwcO1IYNGzxlgYGBCgkJkfTjFK24uDgZYxzv\nn52drQMHDnimjiUmJsrtdis9Pd1Tp7i4WMuXL3e05+TJk3rvvfe8ylNTU/XEE08oPz9fBQUFevDB\nBzV//nzPcV9fX8+aH0ZXAOA/w5QwAMCvLiEhQbGxsUpJSdGBAwfUtm1b7du3T0uXLlVMTIw6d+7s\nVT8jI0NnzpxRZGSk1qxZo08//VTPP/98qes+YmNj1bRpU02cOFGfffaZ6tevr88//1wrV65U7969\nValSJTVr1kx9+/ZVRkaGvvvuO9199906dOiQMjIyFBoaqocffljSj1O4EhMTNWfOHB07dkzh4eF6\n//33dfr0aa/37NOnj1asWKFJkyZp586datGihbZv366VK1cqKSlJrVu3liR1795dGRkZOn/+vKKi\nonTy5Em9+eabatq0qdq2bXuV/rUB4LeNwAIAKJPL5ZLL5Sp3+U+lpqbqtddeU2ZmptauXavatWur\nX79+GjFihNcaEpfLpdTUVM2YMUOrV69Wo0aNlJycrMTERMd7Sj8u+l+wYIFmzZqllStX6ptvvtHN\nN9+sUaNGee029swzz6hhw4ZaunSpXnjhBdWoUUO9e/fWyJEjVa1aNU+9WbNmKTk5We+9954yMzMV\nGxurfv36aezYsZ46/v7+evPNNzVnzhytW7dOK1asUN26dTVy5Eiv95w8ebLq1q2rv//978rMzFRg\nYKCSkpI0evTo/2gtEABAcpkrrUwEAOAqSklJUWpqqj7++GOvhfgAAFzGn3sAAAAAWIvAAgAAAMBa\nBBYAAAAA1mINCwAAAABrMcICAAAAwFoEFgAAAADWIrAAAAAAsBaBBQAAAIC1CCwAAAAArEVgAQAA\nAGCt/wVnX7Cfise3DQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f7f0d3630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"points = [i['reward'] for i in logged_data]\n",
"figure = sns.tsplot(points, color= cpal_default)\n",
"figure.set(xlabel='n episodes', ylabel='reward per episode')\n",
"sns.despine()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nmlW0aNqNi6xnzv3p1OV636Y1+vq7H/Tvz75S53tbq9eIW3nUrndXKyzsxrXth4c/6ZhEpFLZUjoe\n/6vj4uzcp0arSd2aacZz9do1NX6wX4rnd2xYoezZskq6cZ+vR0ZOVoikt5bN1l358xp+v55S575e\njr97d47VsD7dDL92wStv6F/vfChJ2rL2JeWOypmpWDoPHqPjtxWJN21bt0w5I3Ok8grpo+1fasqc\nW13g0zovMyNoBpdL0sCBA7Vu3Tq9+OKL2rFjh4YOHarz58+rd+/evg4NAGCi3Lky90N+U+2qFTXh\nsb4ul9+VL48a1q4uSYoudJfmTfmnOrRo7JF9p5bIjBrYS2MG99aUJwZJupHw7Nu0Ru+8PEcbV8z1\nyH5vVzKmqL585xXNf3qMVs952vDrPly9QDkjc+jlmZP18P33aO5To3V/2+ZO64wf2lcxhQs6HpeI\nLqxCd+VXvjy5VaV8aUnSIw92SHM/txcd0o0r6vnyRGnN/Gednq9fq6ry582tahXKqE2T+im2s+S5\nCep8b2un554b85hj7MLoQY/ovlZNFF24oJY8N0F3V6ukKuVLq3jRwho3pI9qV62oXg92UN3qlTVp\nxADHNkJDQ/XGoumOx0+NHJTm+0nL/KfHqut9bTSy/8PasHSWU9EhSSViimj6+BFuFR2S1LpJPbVv\n0Ug1K5fX5McHOp7PlydKD7Rrocjs2RzjH2tXraiJw/urfKnirjanxnVq3Pq7bk29OOWfisoZqVqV\ny6vR3dXTjSdLRITmTR2jhzq00sszJqt/9we0dPpER9Eh3TgvP3p1oT5Zu8QnRYckx/9Bm00pzp30\n9Ot+v0YN7KWXZ0zOdNEhSVOf+IdCQ0KUJSJcI/r1UNYsEWrfrIHLosObgqrFQ7oxpuO1117TuXPn\nVKFCBU2YMEHVqlUz/HpaPAD4g6dGDtLXBw/pw21fenW/RsZuReWMVMliRXXg//4rSVr87HhNnLnY\naaaxl2dM1sBx09Lczqfrlun9zTt0V/68mjhzUZrrvjZvmr7cd0DL176tnDmy6eN/LVaWiAidOfen\nrl+/rl3ffKdPd+7Rnv84j/crVrSQzv15UYmJiRo5oKcevKelJOn7//6kC5cS9PiUWY51SxUrqjeX\n3JjK+a+r1xwTW1y/nqjmXQfq2vXrmvnk4xr7/Py0P59ckZo2eqhKxhRR16HjlJiYpNcXPa8S0UX0\n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\nAQDcrlevXurRo4fS09P1/fffq2vXrtq7d6/ef/99derUSX379nWqv2DBAp06dUrt2rXTxx9/rJ07\nd2r69OlXXBfRo0cPtWzZUikpKfrqq68UFBSkr7/+WkuXLtWgQYN03XXXqVWrVhoyZIgWLFigM2fO\n6NZbb9WBAwe0YMECNWvWTCNHjpR08dKo+Ph4zZo1S0eOHFFYWJj+/ve/6+TJk059Dh48WEuWLFFq\naqp27dqlNm3a6IsvvtDSpUvVp08fde7cWZJ05513asGCBfrpp58UERGh48eP6+2331bLli3VtWtX\ni95tAKgaCB4AgFLZbDbZbDaXy38pIyNDc+bM0fLly7VmzRoFBARo6NCheuihh5zWWNhsNmVkZGjm\nzJlatWqVWrRoobS0NMXHx5foU7q4uH3u3Ll6+eWXtXTpUuXl5alRo0YaN26c092xnnzySYWEhOj9\n99/Xc889p/r162vQoEEaO3as/P39HfVefvllpaWl6aOPPtLy5cvVo0cPDR06VI899pijjo+Pj95+\n+23NmjVLa9eu1ZIlS9SwYUONHTvWqc+nn35aDRs21IoVK7R8+XLVrl1bffr00SOPPPKb1soAgCex\nmbJW4AEAYKH09HRlZGTo008/dVpwDgDwPPz8AgAAAMByBA8AAAAAliN4AAAAALAcazwAAAAAWI4z\nHgAAAAAsR/AAAAAAYDmCBwAAAADLETwAAAAAWI7gAQAAAMByBA8AAAAAlvv/XlVqc9TrUUMAAAAA\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6f7ec907f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure = sns.tsplot(td, color= cpal_default)\n",
"figure.set(xlabel='n episodes', ylabel='reward per episode')\n",
"sns.despine()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment