Skip to content

Instantly share code, notes, and snippets.

@ia35
Created January 27, 2020 09:20
Show Gist options
  • Save ia35/31cf83dcf8dfb6bf9a60652ae8afdd8f to your computer and use it in GitHub Desktop.
Save ia35/31cf83dcf8dfb6bf9a60652ae8afdd8f to your computer and use it in GitHub Desktop.
Taxi_v3.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Taxi_v3.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyO1t1teJXeJxiX34a5E7Kis",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/ia35/31cf83dcf8dfb6bf9a60652ae8afdd8f/taxi_v3.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lRdS6FIeu1g0",
"colab_type": "text"
},
"source": [
"[![](http://bec552ebfe.url-de-test.ws/ml/buttonBackProp.png)](https://www.backprop.fr)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "X8rGFwNRu6dU",
"colab_type": "text"
},
"source": [
"Le code originel est sur [Github](https://github.com/PacktPublishing/Hands-On-Q-Learning-with-Python)\n",
"\n",
"Ce code est présenté dans le livre suivant : \n",
"\n",
"- Livre : Hands-On Q-Learning with Python\n",
"- Nazia Habib\n",
"- § « Setting Up Your First Environment with OpenAI Gym »\n",
"\n",
"Modifications et Commentaires apportés par BackProp.fr pour des raisons pédagogiques."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "G30v0YAavu6I",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"Le logo BackProp est présenté chaque fois qu'une modification importante est apportée au code ou à chaque fois qu'un commentaire doit être signalé. \n",
"\n",
"Le texte en anglais est soit le texte d'origine soit un extrait de site qui apporte des explications."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4rl8HWV0iiqW",
"colab_type": "text"
},
"source": [
"Le logiciel présente de façon progressive comment appendre à un taxi à se diriger correctement en utilisant un algorithme d'apprentissage par renforcement de type Q learning"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RrzKYXOSmjrp",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">Taxi v3</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EPhdpslDuUV9",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Taxi-v3 est un [environnement](https://github.com/openai/gym/blob/master/gym/envs/toy_text/taxi.py) de Gym OpenAi"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "RWWI06bWsbcK",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"This [task](https://gym.openai.com/envs/Taxi-v3/) was introduced in [Dietterich2000] to illustrate some issues in hierarchical reinforcement learning. There are 4 locations (labeled by different letters) and your job is to pick up the passenger at one location and drop him off in another. \n",
"\n",
"You receive +20 points for a successful dropoff, and lose 1 point for every timestep it takes. There is also a 10 point penalty for illegal pick-up and drop-off actions."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qy7fOTYPxiHr",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Extrait des commentaires du code de Gym Taxi-v3 :"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KOpxU3uNmhy1",
"colab_type": "text"
},
"source": [
"Description:\n",
"There are four designated locations in the grid world indicated by <font color=\"red\">R(ed)</font>, <font color=\"blue\">B(lue)</font>, <font color=\"green\">G(reen)</font>, and <font color=\"yellow\">Y(ellow)</font>. \n",
"\n",
"When the episode starts, the taxi starts off at a random square and the passenger is at a random location. \n",
"The taxi drive to the passenger's location, pick up the passenger, drive to the passenger's destination (another one of the four specified locations), and then drop off the passenger. \n",
"\n",
"Once the passenger is dropped off, the episode ends.\n",
"\n",
"\n",
"<font color=\"cyan\">Observations</font>: \n",
"\n",
"There are 500 **discrete** states since there are \n",
"- 25 taxi positions, \n",
"- 5 possible locations of the passenger (including the case when the passenger is the taxi), and \n",
"- 4 destination locations. \n",
"\n",
"<font color=\"cyan\">Actions</font>: \n",
"\n",
"There are 6 discrete **deterministic** actions:\n",
"- 0: move south\n",
"- 1: move north\n",
"- 2: move east \n",
"- 3: move west \n",
"- 4: pickup passenger\n",
"- 5: dropoff passenger\n",
"\n",
"<font color=\"cyan\">Rewards</font>: \n",
"\n",
"There is a reward of -1 for each action and an additional reward of +20 for delievering the passenger. \n",
"There is a reward of -10 for executing actions \"pickup\" and \"dropoff\" illegally.\n",
"\n",
"<font color=\"cyan\">Rendering</font>: \n",
"\n",
"- blue: passenger\n",
"- magenta: destination\n",
"- yellow: empty taxi\n",
"- green: full taxi\n",
"- other letters: locations"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fm_vdn641ELL",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Import & Constantes</font>\n",
"\n",
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Tous les imports sont mis ici afin que si vous démarriez le code de n'importe vous n'ayez que ces lignes à exécuter"
]
},
{
"cell_type": "code",
"metadata": {
"id": "OjDPNpVlmp5A",
"colab_type": "code",
"outputId": "f523ff69-dfe5-4193-d6a4-937ab9be2d6a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"import gym\n",
"from time import sleep\n",
"import io\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from IPython.display import clear_output\n",
"\n",
"env = gym.make('Taxi-v3')\n",
"env.reset()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"284"
]
},
"metadata": {
"tags": []
},
"execution_count": 127
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "tnDi92RUuKnC",
"colab_type": "code",
"colab": {}
},
"source": [
"taxi_actions = {\n",
" 0 : 'South',\n",
" 1 : 'North',\n",
" 2 : 'East',\n",
" 3 : 'West',\n",
" 4 : 'Pickup',\n",
" 5 : 'Dropoff'\n",
"}"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "wQ6hPsci08zs",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"J'ajoute ces constantes pour une facilité d'écriture"
]
},
{
"cell_type": "code",
"metadata": {
"id": "FxCC3oCRmubx",
"colab_type": "code",
"colab": {}
},
"source": [
"REWARD_delivering = 20\n",
"SOUTH = 0\n",
"NORTH = 1\n",
"EAST = 2\n",
"WEST = 3\n",
"\n",
"MAX_Epochs = 10"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "fp0dKdDXm3fS",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Environnement</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Euj7q694Yj_Q",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"def_encode est défini dans la classe class TaxiEnv"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u0jQtNjHmxXn",
"colab_type": "text"
},
"source": [
"Le numéro de l'état est compris entre 0 et 499 \n",
"\n",
"Le calcul de l'état est le suivant\n",
"\n",
"def encode(self, taxi_row, taxi_col, passager_location, destination_idx):\n",
" # (5) 5, 5, 4\n",
" i = taxi_row\n",
" i *= 5\n",
" i += taxi_col\n",
" i *= 5\n",
" i += pass_loc\n",
" i *= 4\n",
" i += dest_idx\n",
" return i"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Dur6Zuunm7To",
"colab_type": "text"
},
"source": [
"You will notice that resetting the environment will return an integer. This number will be our initial state. All possible states in this environment are represented by an integer ranging from 0 to 499. We can determine the total number of possible states using the following command"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BuEuLZaamdwv",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Observation</font>\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "orKNyRmBm_ax",
"colab_type": "code",
"outputId": "8753edb3-12e7-4311-d6ca-e71ff1243ecb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 71
}
},
"source": [
"print(\"Action Space {}\".format(env.action_space))\n",
"print(\"State Space {}\".format(env.observation_space))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Action Space Discrete(6)\n",
"State Space Discrete(500)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "VR-0zLQNnB6o",
"colab_type": "code",
"outputId": "558f2290-f8e4-43f4-c289-464920886971",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"env.observation_space.dtype"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dtype('int64')"
]
},
"metadata": {
"tags": []
},
"execution_count": 154
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ir6dQTeTnEXD",
"colab_type": "code",
"outputId": "c825ad1b-5aaa-492f-c282-aaed233833c7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| |\u001b[43m \u001b[0m: | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (Dropoff)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TYf_YM5PnGNa",
"colab_type": "code",
"outputId": "b2cf8f49-fe88-45df-84bd-f17767673a3f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"x = env.step(SOUTH)\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| | : | : |\n",
"|\u001b[34;1mY\u001b[0m|\u001b[43m \u001b[0m: |B: |\n",
"+---------+\n",
" (South)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uCtNs26AnIgR",
"colab_type": "code",
"outputId": "67f8b0b6-8092-4536-835c-d56b59fd1ecc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"x"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(428, -1, False, {'prob': 1.0})"
]
},
"metadata": {
"tags": []
},
"execution_count": 157
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cbQdeNOPnNHv",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"env.step() retourne 4 valeurs :\n",
"- observation : le nouvel état\n",
"- reward : la récompense\n",
"- done : a t-on déposé le passager au bon endroit ?\n",
"- info : pour le debug"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8u029qNYMbqu",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"L'index du passage et la destination sont numérotés de 0 à 3, en commençant en haut à gauche et en finissant en bas à droite"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xUHcpsOZnKnK",
"colab_type": "code",
"outputId": "7f355dea-20bd-4229-b6c4-a62a47814911",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 186
}
},
"source": [
"state = env.encode(3, 1, 2, 0) # (taxi row, taxi column, passenger index, destination index)\n",
"# (3*5)=15\n",
"# (15+1)*5=80\n",
"# (80+2)*4=328\n",
"# (328+0)=328\n",
"print(\"State:\", state)\n",
"\n",
"env.env.s = state\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"State: 328\n",
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| |\u001b[43m \u001b[0m: | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (Dropoff)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FNL7A7pPpR4n",
"colab_type": "text"
},
"source": [
"We can take a random action using env.action_space.sample(), as follows:"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "s7dWFbVFnXPm",
"colab_type": "text"
},
"source": [
"You will notice that env.step(1) will return four variables.\n",
"In the future we will define these variables as so:\n",
"state, reward, done, info"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Lmyp-B1dnSZ1",
"colab_type": "code",
"outputId": "ca27757f-32dd-48fe-f8a0-cd85705fb140",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"env.step(env.action_space.sample()) # take a random action"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(328, -10, False, {'prob': 1.0})"
]
},
"metadata": {
"tags": []
},
"execution_count": 159
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "vpPRpuWUuQ81",
"colab_type": "code",
"outputId": "34af47ce-2c65-4f4e-9476-b10d4009d138",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"taxi_actions.get(env.action_space.sample())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'North'"
]
},
"metadata": {
"tags": []
},
"execution_count": 160
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QZHro0KOmuwo",
"colab_type": "text"
},
"source": [
"On peut aussi décoder un état."
]
},
{
"cell_type": "code",
"metadata": {
"id": "qGGLb2w6k-YN",
"colab_type": "code",
"outputId": "2fbd3dd4-9ea1-4c7c-9dd5-3f7e2ae0f0fa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 104
}
},
"source": [
"mon_etat = env.decode(328)\n",
"for par_etat in mon_etat:\n",
" print(par_etat)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"3\n",
"1\n",
"2\n",
"0\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "EBbPMg0znUd2",
"colab_type": "code",
"outputId": "b94bfbbe-bfd3-45e3-dc56-07b0e178b8b2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| |\u001b[43m \u001b[0m: | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (Dropoff)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "9ugQywvvnZm-",
"colab_type": "code",
"outputId": "69632246-ffc9-4a3f-acba-6855899db04b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"env.action_space"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Discrete(6)"
]
},
"metadata": {
"tags": []
},
"execution_count": 163
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "vX0bBRdmndoF",
"colab_type": "code",
"outputId": "ef1bda3d-0fc7-44f6-d3ee-19d59b55458f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"env.observation_space"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Discrete(500)"
]
},
"metadata": {
"tags": []
},
"execution_count": 164
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TW2y6EC-nfRO",
"colab_type": "code",
"outputId": "d2998ff5-f8c7-444d-80d6-6aac8d4b436c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"env.metadata"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'render.modes': ['human', 'ansi']}"
]
},
"metadata": {
"tags": []
},
"execution_count": 165
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "l96dDRuVn056",
"colab_type": "text"
},
"source": [
"### <font color=\"blue\">Setting a state manually</font>\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "SCqHocpvnxzZ",
"colab_type": "code",
"outputId": "ee4e2c84-060b-4160-e404-fde802b5ae59",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.env.s = 328\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| |\u001b[43m \u001b[0m: | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (Dropoff)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LyMHamgVnk_7",
"colab_type": "text"
},
"source": [
"### <font color=\"blue\">North</font>\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "eUHYHrttnhAP",
"colab_type": "code",
"outputId": "c9381bb6-98af-4916-90e7-c6b2aa32e596",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.step(NORTH)\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| :\u001b[43m \u001b[0m: : : |\n",
"| | : | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (North)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CCkCXE79nqj5",
"colab_type": "text"
},
"source": [
"### <font color=\"blue\">North</font>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "We64VaJknm6v",
"colab_type": "code",
"outputId": "c015f464-b510-49af-d880-0311439ba6d8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.step(NORTH)\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"| :\u001b[43m \u001b[0m| : : |\n",
"| : : : : |\n",
"| | : | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (North)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bLZlxXudnu7J",
"colab_type": "text"
},
"source": [
"### <font color=\"blue\">West</font>\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "5MOoP2M2ntDW",
"colab_type": "code",
"outputId": "4f8b567f-c8a0-4f07-c2cd-579e8609e3c9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 170
}
},
"source": [
"env.step(WEST)\n",
"env.render()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35mR\u001b[0m: | : :G|\n",
"|\u001b[43m \u001b[0m: | : : |\n",
"| : : : : |\n",
"| | : | : |\n",
"|\u001b[34;1mY\u001b[0m| : |B: |\n",
"+---------+\n",
" (West)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GlyiRSRpn35R",
"colab_type": "code",
"colab": {}
},
"source": [
"def print_frames(frames, nsleep):\n",
" for i, frame in enumerate(frames):\n",
" clear_output(wait=True)\n",
" print(frame['frame'])\n",
" print(f\"Timestep: {i + 1}\")\n",
" print(f\"State: {frame['state']}\")\n",
" print(f\"Action: {frame['action']}\")\n",
" print(f\"Reward: {frame['reward']}\")\n",
" sleep(nsleep)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "597iK4-rn96c",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">Baseline agent</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qy_UMAUHLDs_",
"colab_type": "text"
},
"source": [
"Dans le cas présent, les actions sont prises au hasard."
]
},
{
"cell_type": "code",
"metadata": {
"id": "LLL9NM7tn61w",
"colab_type": "code",
"colab": {}
},
"source": [
"state = env.reset()\n",
"reward = 0"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "avfkgalPoB4K",
"colab_type": "code",
"colab": {}
},
"source": [
"env.env.s = 328"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "8ElGCTKfoDzJ",
"colab_type": "code",
"colab": {}
},
"source": [
"frames = [] # for animation\n",
"count = 0"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "QZsJQDlpoF0T",
"colab_type": "code",
"outputId": "4decc290-6d1b-441d-c736-a493cf9d0eaa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 71
}
},
"source": [
"%%time\n",
"\n",
"while reward != REWARD_delivering:\n",
" action = env.action_space.sample()\n",
" observation, reward, done, info = env.step(action)\n",
" count+=1\n",
" \n",
" # Put each rendered frame into dict for animation\n",
" frames.append({\n",
" 'frame': env.render(mode='ansi'),\n",
" 'state': observation,\n",
" 'action': action,\n",
" 'reward': reward\n",
" }\n",
" )"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"CPU times: user 63.4 ms, sys: 0 ns, total: 63.4 ms\n",
"Wall time: 67.1 ms\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "BPEbllY8slCw",
"colab_type": "code",
"outputId": "d57db996-8aca-43d8-fdf5-24c07bf68f37",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"count"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1142"
]
},
"metadata": {
"tags": []
},
"execution_count": 227
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "kwInoO70oIeD",
"colab_type": "code",
"outputId": "03626585-9421-4071-e34a-11a2580d0b34",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 253
}
},
"source": [
"print_frames(frames, 0.01)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|\u001b[35m\u001b[34;1m\u001b[43mR\u001b[0m\u001b[0m\u001b[0m: | : :G|\n",
"| : | : : |\n",
"| : : : : |\n",
"| | : | : |\n",
"|Y| : |B: |\n",
"+---------+\n",
" (Dropoff)\n",
"\n",
"Timestep: 1142\n",
"State: 0\n",
"Action: 5\n",
"Reward: 20\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iLqwLsVHsB5-",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Fonctions ajoutées pour des raisons prédagogiques"
]
},
{
"cell_type": "code",
"metadata": {
"id": "F3_GyNa6JWpa",
"colab_type": "code",
"colab": {}
},
"source": [
"def baseline() : \n",
" env.reset()\n",
" reward = 0\n",
" count = 0\n",
"\n",
" while reward != REWARD_delivering:\n",
" action = env.action_space.sample()\n",
" observation, reward, done, info = env.step(action)\n",
" count+=1\n",
" return(count)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "rrSbsZzhMzje",
"colab_type": "code",
"colab": {}
},
"source": [
"baseline_epochs=[]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "3bQdylYgKDKC",
"colab_type": "code",
"colab": {}
},
"source": [
"for i in range(0,MAX_Epochs):\n",
" baseline_epochs.append(baseline())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "PxNpMM__LLs6",
"colab_type": "code",
"outputId": "675cd44b-c0e9-4ba5-8883-9b6e2aefb2f3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"baseline_epochs"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[589, 2124, 3111, 3943, 1925, 814, 7929, 213, 1464, 775]"
]
},
"metadata": {
"tags": []
},
"execution_count": 233
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "hDHDgPf6KGlB",
"colab_type": "code",
"outputId": "332250b6-86e3-454e-aa4f-f29a3c36ffa6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(baseline_epochs, color='blue', label='Baseline')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113dfff978>"
]
},
"metadata": {
"tags": []
},
"execution_count": 234
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XcR2uErUxaKn",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">Teaching a Smartcab to Drive Using Q-Learning</font>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AdaW71eZxxSF",
"colab_type": "text"
},
"source": [
"https://github.com/PacktPublishing/Hands-On-Q-Learning-with-Python/blob/master/Chapter04/Taxi-v2-Q-learning.py"
]
},
{
"cell_type": "code",
"metadata": {
"id": "RYY51_K1oKXS",
"colab_type": "code",
"colab": {}
},
"source": [
"import gym\n",
"import numpy as np\n",
"\n",
"#create environment\n",
"env = gym.make(\"Taxi-v3\")"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Sdcjwfnqx4W1",
"colab_type": "code",
"colab": {}
},
"source": [
"#initialize Q-table\n",
"Q = np.zeros([env.observation_space.n, env.action_space.n])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "OYk-WJsFx6jG",
"colab_type": "code",
"outputId": "4065d783-f48d-407b-fc81-1c2f6f45b4a0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"Q.shape"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(500, 6)"
]
},
"metadata": {
"tags": []
},
"execution_count": 246
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NqQJiEjSL1CP",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Q-table a été initialisée à 0"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yxSN-AGo1scD",
"colab_type": "code",
"outputId": "c21a16be-03ce-4062-8ac0-929dc874c8da",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 221
}
},
"source": [
"Q_df=pd.DataFrame(Q, columns=taxi_actions.values())\n",
"Q_df.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>South</th>\n",
" <th>North</th>\n",
" <th>East</th>\n",
" <th>West</th>\n",
" <th>Pickup</th>\n",
" <th>Dropoff</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" South North East West Pickup Dropoff\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0\n",
"1 0.0 0.0 0.0 0.0 0.0 0.0\n",
"2 0.0 0.0 0.0 0.0 0.0 0.0\n",
"3 0.0 0.0 0.0 0.0 0.0 0.0\n",
"4 0.0 0.0 0.0 0.0 0.0 0.0"
]
},
"metadata": {
"tags": []
},
"execution_count": 247
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oTRV3nW_x_9K",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Alpha</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rEyuXJYoyJze",
"colab_type": "text"
},
"source": [
"The goal of the learning parameter alpha is to smooth out the agent's update curve, protecting it against extreme outliers.\n",
"\n",
"In machine learning terms, a well-chosen alpha value is intended to prevent an RL model from overfitting. In other words, it keeps the model from learning too much from random noise and outliers and from making overly-specific generalizations about the specific data it has already seen."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wjuQqwzFx8du",
"colab_type": "code",
"colab": {}
},
"source": [
"alpha = 0.1"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "kk1nDZNSyZky",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Gamma</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yXphlKZ3yepG",
"colab_type": "text"
},
"source": [
"In this task, we choose a value of 0.1 for gamma.\n",
"Recall that gamma determines how much the agent prioritizes current over future rewards.\n",
"One purpose of gamma is to penalize the agent for taking too long to find a solution."
]
},
{
"cell_type": "code",
"metadata": {
"id": "kMxMAE6EyL4n",
"colab_type": "code",
"colab": {}
},
"source": [
"gamma = 0.1"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "y7bmfVjaylwW",
"colab_type": "text"
},
"source": [
"## <font color=\"orange\">Epsilon</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4oa2G6KwysEA",
"colab_type": "text"
},
"source": [
"When choosing an action, we select a random number within a specified range. If that number is less than epsilon, we choose a random action, and if it is greater than epsilon, we choose the current highest-valued action.\n",
"\n",
"Because of the high number of states we'll be working with, we'll start with a high value for epsilon to encourage a high exploration level.\n",
"\n",
"When we choose to decay epsilon, we'll do so slowly to allow for as much exploration as possible in the early stages of the task.\n",
"\n",
"We use epsilon to implement the exploration-exploitation process, which causes the agent to take random actions in search of potential reward paths that are higher-valued than the paths it has already seen.\n",
"\n",
"We decay epsilon to reduce the amount of exploration the agent carries out as it encounters more of the state space."
]
},
{
"cell_type": "code",
"metadata": {
"id": "rk8OvAefyd3Q",
"colab_type": "code",
"colab": {}
},
"source": [
"epsilon = 0.1\n",
"epsilon_decay = 0.99 #decay factor"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "WC2LRosMyvQy",
"colab_type": "code",
"colab": {}
},
"source": [
"total_epochs = 0\n",
"episodes = 100\n",
"epsislon_list = []\n",
"epochs_list = []"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "nkKdVAxzy4M5",
"colab_type": "code",
"colab": {}
},
"source": [
"state = env.reset()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "3S1XI_ID80UG",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">Ni alpha, ni epsilon, gamma=0.1</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bkUuRy75LaqA",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr)\n",
"\n",
"Ici on applique une version simplifiée du Q learning. Ni alpha, ni epsilon."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ilkffSmSBs8O",
"colab_type": "text"
},
"source": [
"$ Q(s,a)=R(s,a)+\\gamma [max(Q'(s',a')) ] $"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EOi1iVsLDiI4",
"colab_type": "text"
},
"source": [
"Ce qui se code : \n",
"\n",
"Q[state,action] = reward + gamma * np.max(Q[next_state])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3Pk31Gmbbzea",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr) \n",
"\n",
"La formule n'est pas si triviale qu'elle en a l'air !\n",
"\n",
"Petit aparté pour l'expliquer (en s'inspirant de [Random notes for Bell Man Equation](https://medium.com/@SeoJaeDuk/archived-post-random-notes-for-bell-man-equation-b1d62a9038ec))\n",
"\n",
"### L'équation de Bellman\n",
"\n",
"A partir de [Understanding RL: The Bellman Equations](https://joshgreaves.com/reinforcement-learning/understanding-rl-the-bellman-equations/)\n",
"\n",
"Le reward recherché, optimisé, à partir de l'état **t** est :\n",
"\n",
"$R_{t}=r_{t+1}+r_{t+2} + r_{t+3}+r_{t+4}+...=\\displaystyle\\sum\\limits_{k=0}^\\infty r_{t+k+1}$\n",
"\n",
"mais on utilisera de préférence un **cumulative discounted reward**\n",
"\n",
"$R_{t}=r_{t+1}+\\gamma r_{t+2}+ \\gamma^{2} r_{t+3}+ \\gamma^{3} r_{t+4}+...=\\displaystyle\\sum\\limits_{k=0}^\\infty \\gamma^{k} r_{t+k+1}$\n",
"\n",
"$\\gamma$ prend des valeurs entre 0 et 1. Si $\\gamma$ tend vers 1 alors on accorde presque autant d'importance aux récompenses futures qu'aux récompenses immédiates, tandis-que si $\\gamma$ tend vers 0, on privilégie la récompense immédiate"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1HRzG7P81S2o",
"colab_type": "code",
"colab": {}
},
"source": [
"#create environment\n",
"env = gym.make(\"Taxi-v3\")\n",
"\n",
"#initialize Q-table\n",
"Q = np.zeros([env.observation_space.n, env.action_space.n])\n",
"\n",
"#set hyperparameters\n",
"gamma = 0.1\n",
" \n",
"#initialize reward\n",
"reward = 0\n",
" \n",
"#initialize environment\n",
"state = env.reset()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "E0vAIk1B9Cgm",
"colab_type": "code",
"outputId": "25c3eaef-b86f-4867-ed56-936c06cfabe3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 186
}
},
"source": [
"#create update loop\n",
"count = 0\n",
"\n",
"while reward != REWARD_delivering: #while dropoff state has not been reached\n",
"\n",
" #choose current highest-valued action\n",
" action = np.argmax(Q[state])\n",
"\n",
" #obtain reward and next state resulting from taking action\n",
" next_state, reward, done, info = env.step(action)\n",
"\n",
" #update Q-value for state-action pair\n",
" Q[state, action] = reward + gamma * np.max(Q[next_state])\n",
" \n",
" #update state\n",
" state = next_state\n",
" count+=1\n",
"\n",
"#render final dropoff state\n",
"env.render()\n",
"print('Counter: {}'.format(count))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"+---------+\n",
"|R: | : :\u001b[35m\u001b[34;1m\u001b[43mG\u001b[0m\u001b[0m\u001b[0m|\n",
"| : | : : |\n",
"| : : : : |\n",
"| | : | : |\n",
"|Y| : |B: |\n",
"+---------+\n",
" (Dropoff)\n",
"Counter: 306\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zdXC3kMLea_L",
"colab_type": "text"
},
"source": [
"[![](https://raw.githubusercontent.com/BackProp-fr/meetup/master/images/LogoBackPropTranspSmall.png)](https://www.backprop.fr) \n",
"\n",
"On reprend la même chose mais on crée une fonction"
]
},
{
"cell_type": "code",
"metadata": {
"id": "KiAw-sL49luh",
"colab_type": "code",
"colab": {}
},
"source": [
"def gamma_only() : \n",
" state = env.reset()\n",
" env.reset()\n",
" reward = 0\n",
" count = 0\n",
" #initialize Q-table\n",
" Q = np.zeros([env.observation_space.n, env.action_space.n])\n",
" #set hyperparameters\n",
" gamma = 0.1\n",
"\n",
" while reward != REWARD_delivering:\n",
" #choose current highest-valued action\n",
" action = np.argmax(Q[state])\n",
"\n",
" #obtain reward and next state resulting from taking action\n",
" next_state, reward, done, info = env.step(action)\n",
"\n",
" #update Q-value for state-action pair\n",
" Q[state, action] = reward + gamma * np.max(Q[next_state])\n",
"\n",
" #update state\n",
" state = next_state\n",
" count+=1\n",
" \n",
" return(count)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "4lPllMdaOH0A",
"colab_type": "code",
"colab": {}
},
"source": [
"gamma_only_epochs = []\n",
"for i in range(0,MAX_Epochs):\n",
" gamma_only_epochs.append(baseline())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VtlQTFxgOQMb",
"colab_type": "code",
"outputId": "2fbbd9ef-a648-4a12-a68c-4771b57266e8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"gamma_only_epochs"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[168, 2658, 1209, 5016, 1379, 3804, 2223, 4874, 5026, 4954]"
]
},
"metadata": {
"tags": []
},
"execution_count": 258
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CkRgXutkvkD1",
"colab_type": "code",
"outputId": "8530d462-116b-4d20-8488-cd6536075736",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 374
}
},
"source": [
"Q_df=pd.DataFrame(Q, columns=taxi_actions.values())\n",
"Q_df.head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>South</th>\n",
" <th>North</th>\n",
" <th>East</th>\n",
" <th>West</th>\n",
" <th>Pickup</th>\n",
" <th>Dropoff</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1.0</td>\n",
" <td>-1.0</td>\n",
" <td>-1.0</td>\n",
" <td>-1.0</td>\n",
" <td>-1.1</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" South North East West Pickup Dropoff\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0\n",
"1 -1.0 -1.0 -1.0 -1.0 -1.1 0.0\n",
"2 0.0 0.0 0.0 0.0 0.0 0.0\n",
"3 0.0 0.0 0.0 0.0 0.0 0.0\n",
"4 0.0 0.0 0.0 0.0 0.0 0.0\n",
"5 0.0 0.0 0.0 0.0 0.0 0.0\n",
"6 0.0 0.0 0.0 0.0 0.0 0.0\n",
"7 0.0 0.0 0.0 0.0 0.0 0.0\n",
"8 0.0 0.0 0.0 0.0 0.0 0.0\n",
"9 0.0 0.0 0.0 0.0 0.0 0.0"
]
},
"metadata": {
"tags": []
},
"execution_count": 259
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4CEvvA6WOWLc",
"colab_type": "code",
"outputId": "dc50d593-924b-41de-ba75-564d0dfa1814",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(baseline_epochs, color='blue', label='Baseline')\n",
"plt.plot(gamma_only_epochs, color='red', label='Gamma seulement')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113cb1fac8>"
]
},
"metadata": {
"tags": []
},
"execution_count": 260
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VA6We-KItjAW",
"colab_type": "text"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AAez0hfYPzuu",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">alpha, gamma, epsilon</font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0D3PaoPqPtc7",
"colab_type": "text"
},
"source": [
"$ Q*(s,a)=Q(s,a) + \\alpha [ R(s,a)+\\gamma [max(Q'(s',a')) ] -Q(s,a) ] $"
]
},
{
"cell_type": "code",
"metadata": {
"id": "bJLHwhCGNirm",
"colab_type": "code",
"colab": {}
},
"source": [
"def gamma_alpha() : \n",
" state = env.reset()\n",
" reward = 0\n",
" count = 0\n",
" #initialize Q-table\n",
" Q = np.zeros([env.observation_space.n, env.action_space.n])\n",
" #set hyperparameters\n",
" gamma = 0.1\n",
" alpha = 0.1\n",
"\n",
" while reward != REWARD_delivering:\n",
" #choose current highest-valued action\n",
" action = np.argmax(Q[state])\n",
"\n",
" #obtain reward and next state resulting from taking action\n",
" next_state, reward, done, info = env.step(action)\n",
"\n",
" #update Q-value for state-action pair\n",
" Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])\n",
"\n",
" #update state\n",
" state = next_state\n",
" count+=1\n",
" \n",
" return(count) "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "U4UF3QjThbh4",
"colab_type": "code",
"colab": {}
},
"source": [
"gamma_alpha_epochs = []\n",
"for i in range(0,MAX_Epochs):\n",
" gamma_alpha_epochs.append(gamma_alpha())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "FFk0SM1ahmPv",
"colab_type": "code",
"outputId": "69129258-0f03-42a9-895d-2b2fc4f19e36",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"gamma_alpha_epochs"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[983, 456, 379, 456, 377, 983, 375, 902, 371, 883]"
]
},
"metadata": {
"tags": []
},
"execution_count": 263
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "AZiS56Sbh40j",
"colab_type": "code",
"outputId": "f693a17c-45e0-4fcf-e653-fc1384d8df5d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(baseline_epochs, color='blue', label='Baseline')\n",
"plt.plot(gamma_only_epochs, color='red', label='Gamma seulement')\n",
"plt.plot(gamma_alpha_epochs, color='green', label='Gamma et Alpha')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113cd97668>"
]
},
"metadata": {
"tags": []
},
"execution_count": 264
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_fncMl5F5Isn",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">update epsilon</font>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "EVGFmn5rjCjz",
"colab_type": "code",
"colab": {}
},
"source": [
"def updated_epsilon() : \n",
" state = env.reset()\n",
" reward = 0\n",
" count = 0\n",
" #initialize Q-table\n",
" Q = np.zeros([env.observation_space.n, env.action_space.n])\n",
" #set hyperparameters\n",
" gamma = 0.1\n",
" alpha = 0.1\n",
" epsilon = 0.1\n",
"\n",
" while reward != REWARD_delivering:\n",
" \n",
" if np.random.rand() < epsilon:\n",
" #exploration option\n",
" action = env.action_space.sample()\n",
"\n",
" else:\n",
" #choose current highest-valued action\n",
" action = np.argmax(Q[state])\n",
"\n",
" #obtain reward and next state resulting from taking action\n",
" next_state, reward, done, info = env.step(action)\n",
"\n",
" #update Q-value for state-action pair\n",
" Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])\n",
"\n",
" #update state\n",
" state = next_state\n",
" count+=1\n",
" \n",
" return(count) "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "zMQqocfu59WT",
"colab_type": "code",
"colab": {}
},
"source": [
"epsilon_epochs = []\n",
"for i in range(0,MAX_Epochs):\n",
" epsilon_epochs.append(updated_epsilon())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "cysGOnxP6CtV",
"colab_type": "code",
"outputId": "46f1fbbb-d595-49ff-b2a2-f1a9639c5158",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 54
}
},
"source": [
"epsilon_epochs"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[186, 283, 956, 913, 345, 893, 362, 677, 335, 489]"
]
},
"metadata": {
"tags": []
},
"execution_count": 267
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "gjQLg9MZ6EI3",
"colab_type": "code",
"outputId": "959c8fd7-a226-4d46-c6eb-b47c6c1670d9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(baseline_epochs, color='blue', label='Baseline')\n",
"plt.plot(gamma_only_epochs, color='red', label='Gamma seulement')\n",
"plt.plot(gamma_alpha_epochs, color='green', label='Gamma et Alpha')\n",
"plt.plot(epsilon_epochs, color='yellow', label='Epsilon')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113cae7ef0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 268
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nRG4SkcUSbNPPidQTMmHFBGk8vrEwEmk3sab8uqOTuN2VRH+2jUTkdRHZ76Mezx79Hzx+vrz8Y10p\n+xJSZWwVGb14tOw7FtyosCfTTsr0NdPlmsnX6HzZqAjpPqV7LvNlbhk+/P/bO/PoKKs0Dz9vEpIQ\nQhJARBZpoBWURRvFHTyCjjMODjbajtrKaUVaR1u0aQ8e7DnjAVtcGhx1js4oaBQckEZxaw3raVsF\n1JFVBWQRZd8xFUIIlaR+88etykYSWVJVoeo+59RJ1a3Kd9/vVn2/+353ed9V+sMfXlQodKukQZL+\nQ+67P1RvXRv3b9SDBX9U+sOuU2n16NGP/ceS1btX68G5D6rtn9uKsaj9xPZ6eMHDWr9vfdTrTkrR\n37bNLQfr0EHasqXaG9ddJ+XkHHUg7C2BLXr074+q8zOdxVh3kY2eN1pr98Yqf9ouSQ/KLaNMlfMe\nm9KdR7T5QdJDcl4/kvpImqzaQyXRZl/JPj328WNqN6GdUsahkQXdtDXwC4VCJtcpDZU0T1I0B5Rr\nev/lFZmau6GTLpyMssY3130f3qeN+zdGsf4jWbd3nUbPG10pbJ2f6axxfx+nLYEtdXw6KOlzSRMk\nDZGbxHeXe3l5O0l95doycqd0paTxkj6TVNVx7N0r9esnpaYH9fuXjn7sPxYUlRZp8tLJuvjli8VY\nlPZomobOGKoP1n4Q08UiSSf6RUUuh2l2dq28o4sWuVN+7LFjPmZ5Rblmr5+toTOGKnVcqhiLrnjt\nCk3/aroOldXvlRw/e+SGNrLkLoRhktZFoZ6ThYNyYn+O3M+jtVxn8ENUa924f6NGFoxU1vgsnfJn\n9Mqy7ioJnha24TQ5zzTWHuaR3v+mwla678MU5T1puunNm7RkWx2LvxuJ0rJSTf9quga+NrByD8zQ\nGUNVsK6gltgekDRf0iOSBqrm/o8zJN2hVavydcYZ67RgQeQOrlDS+3J3tedU+3xLSYNVWPi0rr9+\nuTIzK/TXv1bV9FNj/9EkFArp002f6vZ3b1fW+CwxFp39/NmauGiidhXvinr9dZF0or9okXPma+QM\nCYVcmqN27XSiKbG2F23X4588rm7PdRNjUeunWmvUnFFavXv1CR3XsU/Sv0vKlttY9WtJJzC4l3CE\n5IZ5blDV0M9QuSGBxhv6WbJtiW568yaljDNdnp+qRZu7qiLUTO6neYWkmXKea7yp6f0fLm+mqSua\n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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "N46DE2Wt7UUY",
"colab_type": "code",
"colab": {}
},
"source": [
"maxepochs = MAX_Epochs*3\n",
"\n",
"def boucle_all(maxepochs, fn):\n",
" all_epochs = []\n",
" for i in range(0,maxepochs):\n",
" all_epochs.append(fn())\n",
" return(all_epochs)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Fh0XisNa6JI0",
"colab_type": "code",
"colab": {}
},
"source": [
"ep1 = boucle_all(maxepochs, baseline)\n",
"ep2 = boucle_all(maxepochs, gamma_only)\n",
"ep3 = boucle_all(maxepochs, gamma_alpha)\n",
"ep4 = boucle_all(maxepochs, updated_epsilon)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ra2WcTZp_8yy",
"colab_type": "code",
"outputId": "249ec7c3-940e-423e-80cd-3431b92b7c96",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(ep1, color='blue', label='Baseline')\n",
"plt.plot(ep2, color='red', label='Gamma seulement')\n",
"plt.plot(ep3, color='green', label='Gamma et Alpha')\n",
"plt.plot(ep4, color='yellow', label='Epsilon')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113ca69be0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 271
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "98kiXOQufQ3p",
"colab_type": "code",
"outputId": "6b8c35bf-89a1-4b04-e406-2ccacd7931e1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(ep2, color='red', label='Gamma seulement')\n",
"plt.plot(ep3, color='green', label='Gamma et Alpha')\n",
"plt.plot(ep4, color='yellow', label='Epsilon')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113c9e99b0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 272
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n/P/2ja/oscIr7AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "BL6_f-LMQXHL",
"colab_type": "code",
"colab": {}
},
"source": [
"epdf=pd.DataFrame(ep1)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "CB5d0Op9Uc7t",
"colab_type": "code",
"colab": {}
},
"source": [
"epdf = pd.DataFrame({\n",
" 'Baseline': ep1,\n",
" 'Gamma seulement': ep2,\n",
" 'Gamma et Alpha': ep3,\n",
" 'Epsilon': ep4,\n",
"})"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "3e_7Iwl-UqH_",
"colab_type": "code",
"outputId": "f2d04f1b-c8a0-4019-f615-b8b99214960b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 221
}
},
"source": [
"epdf.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Baseline</th>\n",
" <th>Gamma seulement</th>\n",
" <th>Gamma et Alpha</th>\n",
" <th>Epsilon</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>644</td>\n",
" <td>529</td>\n",
" <td>984</td>\n",
" <td>884</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1861</td>\n",
" <td>454</td>\n",
" <td>205</td>\n",
" <td>606</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>447</td>\n",
" <td>271</td>\n",
" <td>589</td>\n",
" <td>945</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1562</td>\n",
" <td>229</td>\n",
" <td>557</td>\n",
" <td>548</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>782</td>\n",
" <td>383</td>\n",
" <td>505</td>\n",
" <td>523</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Baseline Gamma seulement Gamma et Alpha Epsilon\n",
"0 644 529 984 884\n",
"1 1861 454 205 606\n",
"2 447 271 589 945\n",
"3 1562 229 557 548\n",
"4 782 383 505 523"
]
},
"metadata": {
"tags": []
},
"execution_count": 275
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sNUQmaK_VBPL",
"colab_type": "code",
"outputId": "5f5e4cab-9b5a-4fe4-85ae-e5db830ac2cd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 313
}
},
"source": [
"epdf.describe()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Baseline</th>\n",
" <th>Gamma seulement</th>\n",
" <th>Gamma et Alpha</th>\n",
" <th>Epsilon</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>30.000000</td>\n",
" <td>30.000000</td>\n",
" <td>30.000000</td>\n",
" <td>30.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>2059.366667</td>\n",
" <td>521.633333</td>\n",
" <td>571.866667</td>\n",
" <td>679.933333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1962.046266</td>\n",
" <td>277.617882</td>\n",
" <td>204.932745</td>\n",
" <td>210.792091</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>43.000000</td>\n",
" <td>198.000000</td>\n",
" <td>205.000000</td>\n",
" <td>193.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>496.250000</td>\n",
" <td>319.000000</td>\n",
" <td>465.750000</td>\n",
" <td>536.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>1643.500000</td>\n",
" <td>439.000000</td>\n",
" <td>543.000000</td>\n",
" <td>591.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>3093.500000</td>\n",
" <td>587.500000</td>\n",
" <td>605.250000</td>\n",
" <td>905.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>6806.000000</td>\n",
" <td>1115.000000</td>\n",
" <td>984.000000</td>\n",
" <td>974.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Baseline Gamma seulement Gamma et Alpha Epsilon\n",
"count 30.000000 30.000000 30.000000 30.000000\n",
"mean 2059.366667 521.633333 571.866667 679.933333\n",
"std 1962.046266 277.617882 204.932745 210.792091\n",
"min 43.000000 198.000000 205.000000 193.000000\n",
"25% 496.250000 319.000000 465.750000 536.750000\n",
"50% 1643.500000 439.000000 543.000000 591.000000\n",
"75% 3093.500000 587.500000 605.250000 905.750000\n",
"max 6806.000000 1115.000000 984.000000 974.000000"
]
},
"metadata": {
"tags": []
},
"execution_count": 276
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "k87qcTf8ept2",
"colab_type": "text"
},
"source": [
"# <font color=\"teal\">decaying epsilon</font>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "bKwWy2jcVRxc",
"colab_type": "code",
"colab": {}
},
"source": [
"def decaying_epsilon(epsilon_decay) : \n",
" state = env.reset()\n",
" reward = 0\n",
" count = 0\n",
" #initialize Q-table\n",
" Q = np.zeros([env.observation_space.n, env.action_space.n])\n",
" #set hyperparameters\n",
" gamma = 0.1\n",
" alpha = 0.1\n",
" epsilon = 0.1\n",
"\n",
" while reward != REWARD_delivering:\n",
" \n",
" if np.random.rand() < epsilon:\n",
" #exploration option\n",
" action = env.action_space.sample()\n",
"\n",
" else:\n",
" #choose current highest-valued action\n",
" action = np.argmax(Q[state])\n",
"\n",
" #obtain reward and next state resulting from taking action\n",
" next_state, reward, done, info = env.step(action)\n",
"\n",
" #update Q-value for state-action pair\n",
" Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])\n",
"\n",
" #update state\n",
" state = next_state\n",
" count+=1\n",
" \n",
" return(count) "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "02Wo_uKhfV6z",
"colab_type": "code",
"colab": {}
},
"source": [
"epsilon_decay_epochs = []\n",
"maxepochs = MAX_Epochs*5\n",
"epsilon_decay = 0.99 #decay factor\n",
"epsilonpar = epsilon\n",
"\n",
"for i in range(0,maxepochs):\n",
" epsilon_decay_epochs.append(decaying_epsilon(epsilonpar))\n",
" epsilonpar = epsilonpar * epsilon_decay #decay step"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "JAHCtd4yf7My",
"colab_type": "code",
"outputId": "d7a22c72-3e1f-497e-f213-3a470b2b5b90",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
}
},
"source": [
"plt.plot(epsilon_decay_epochs, color='grey', label='Epsilon decay')\n",
"plt.legend()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f113c9c1da0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 279
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n8+bNq/kaGkFDKUVXVxeHDh1i/vz55T4cgwEwop9OxYV3YrEYU6ZMMYIfQESEKVOmmLswQ6Cwi765\nA61A0QeM4AcY890YgkZ9fX3qvDROv0JF32AwGJwiIjQ0NADG6YMR/aIIh8OsXLky9e873/lOwdvY\nvHkzX//61wH4r//6PdG7zQAACbNJREFUL772ta95fZj87//9v/nud7/r+XYNhkpDh3iM06/Agdwg\n0NjYyNatW11tY/Xq1axevdqjIzIYDLloamrixIkTRvSpcNH/xS9+wdGjRz3d5plnnsl1111X1Gvn\nzZvH7bffzs9//nMaGxt58sknWbhwIT/5yU/4+7//e8LhMC0tLbz22mu8+uqrfPe73+X5558fs40D\nBw5w99138/HHHzN16lQee+wx5syZw5e//GWam5vZvHkzR48e5Z//+Z+59dZbxx3DP/zDP7Bu3Tqm\nTZvG7NmzueCCCwDYt28f9957L52dnTQ1NfH973+fxYsXc+zYMf78z/+c/fv3A/DQQw9xySWXcMst\nt3Dw4EFisRjf+MY3WLt2LY8++ijbt2/nX//1XwH4/ve/z+7du/ne975X1OdlMJQK7fRNeMeEd4pi\ncHBwTHhn/fr1qedaWlrYsWMHX/va1/jmN78JwLe//W1++ctfsm3bNjZs2JBz23/5l3/JXXfdxfbt\n2/nCF76QCgEBHDlyhP/+7//m+eef57777hv32i1btvDUU0+xdetWXnzxRd55553Uc2vXruXBBx9k\ny5YtfPe73+WrX/0qAF//+tf5gz/4A7Zt28a7777L0qVLAXj00UfZsmULmzdv5oEHHqCrq4vbb7+d\n5557LtVg+rHHHuPuu+8u8lM0GEqHCe+cpqI/gWIduVtyhXfuuOOO1P9/9Vd/BcCll17Kl7/8ZW6/\n/XY++9nP5tz2m2++yU9/+lMAvvjFL/K3f/u3qeduueUWQqEQ5557LseOHRv32t/85jd85jOfoamp\nCYCbbroJGJ1+/sYbb3DbbacrWw8NDQHwyiuv8PjjjwOk7kQAHnjgAZ555hkADh48SHt7OxdffDFX\nX301zz//PEuWLCEej7Ns2bKc78dgCAJ6INeIfoWLfhCxpyzqx//xH//B22+/zQsvvMAFF1zAli1b\nitp2fX196nEhTceSySStra2OxyFeffVVNm7cyJtvvklTUxNXXnllKvf+T//0T/nHf/xHFi9ezFe+\n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\n1YyBAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "DsaSRdfMf8v9",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment