{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Q-learning " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "try:\n", " import google.colab\n", " IN_COLAB = True\n", "except:\n", " IN_COLAB = False\n", "\n", "if IN_COLAB:\n", " !pip install -U gymnasium pygame moviepy\n", " !pip install gymnasium[box2d]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gym version: 0.26.3\n" ] } ], "source": [ "import numpy as np\n", "rng = np.random.default_rng()\n", "import matplotlib.pyplot as plt\n", "import os\n", "\n", "import gymnasium as gym\n", "print(\"gym version:\", gym.__version__)\n", "\n", "from moviepy.editor import ImageSequenceClip, ipython_display\n", "\n", "class GymRecorder(object):\n", " \"\"\"\n", " Simple wrapper over moviepy to generate a .gif with the frames of a gym environment.\n", " \n", " The environment must have the render_mode `rgb_array_list`.\n", " \"\"\"\n", " def __init__(self, env):\n", " self.env = env\n", " self._frames = []\n", "\n", " def record(self, frames):\n", " \"To be called at the end of an episode.\"\n", " for frame in frames:\n", " self._frames.append(np.array(frame))\n", "\n", " def make_video(self, filename):\n", " \"Generates the gif video.\"\n", " directory = os.path.dirname(os.path.abspath(filename))\n", " if not os.path.exists(directory):\n", " os.mkdir(directory)\n", " self.clip = ImageSequenceClip(list(self._frames), fps=self.env.metadata[\"render_fps\"])\n", " self.clip.write_gif(filename, fps=self.env.metadata[\"render_fps\"], loop=0)\n", " del self._frames\n", " self._frames = []\n", "\n", "def running_average(x, N):\n", " kernel = np.ones(N) / N\n", " return np.convolve(x, kernel, mode='same')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this short exercise, we are going to apply **Q-learning** on the Taxi environment used last time for MC control.\n", "\n", "As a reminder, Q-learning updates the Q-value of a state-action pair **after each transition**, using the update rule:\n", "\n", "$$\\Delta Q(s_t, a_t) = \\alpha \\, (r_{t+1} + \\gamma \\, \\max_{a'} \\, Q(s_{t+1}, a') - Q(s_t, a_t))$$\n", "\n", "**Q:** Update the class you designed for online MC in the last exercise so that it implements Q-learning. \n", "\n", "The main difference is that the `update()` method has to be called after each step of the episode, not at the end. It simplifies a lot the code too (no need to iterate backwards on the episode).\n", "\n", "You can use the following parameters at the beginning, but feel free to change them:\n", "\n", "* Discount factor $\\gamma = 0.9$. \n", "* Learning rate $\\alpha = 0.1$.\n", "* Epsilon-greedy action selection, with an initial exploration parameter of 1.0 and an exponential decay of $10^{-5}$ after each update (i.e. every step!).\n", "* A total number of episodes of 20000.\n", "\n", "Keep the general structure of the class: `train()` for the main loop, `test()` to run one episode without exploration, etc. \n", "\n", "Plot the training and test performance in the end and render the learned deterministic policy for one episode.\n", "\n", "*Note:* if $s_{t+1}$ is terminal (`done` is true after the transition), the target should not be $r_{t+1} + \\gamma \\, \\max_{a'} \\, Q(s_{t+1}, a')$, but simply $r_{t+1}$ as there is no next action." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "class QLearningAgent:\n", " \"\"\"\n", " Q-learning agent.\n", " \"\"\"\n", " \n", " def __init__(self, env, gamma, epsilon, decay_epsilon, alpha):\n", " \"\"\"\n", " :param env: gym-like environment\n", " :param gamma: discount factor\n", " :param epsilon: exploration parameter\n", " :param decay_epsilon: exploration decay parameter\n", " :param alpha: learning rate\n", " \"\"\"\n", " self.env = env\n", " self.gamma = gamma\n", " self.epsilon = epsilon\n", " self.decay_epsilon = decay_epsilon\n", " self.alpha = alpha\n", " \n", " # Q_table\n", " self.Q = np.zeros([self.env.observation_space.n, self.env.action_space.n])\n", " \n", " def act(self, state):\n", " \"Returns an action using epsilon-greedy action selection.\"\n", " \n", " action = rng.choice(np.where(self.Q[state, :] == self.Q[state, :].max())[0])\n", " \n", " if rng.random() < self.epsilon:\n", " action = self.env.action_space.sample() \n", " \n", " return action\n", " \n", " def update(self, state, action, reward, next_state, done):\n", " \"Updates the agent using a single transition.\"\n", " \n", " # Bellman target\n", " target = reward\n", " \n", " if not done:\n", " target += self.gamma * self.Q[next_state, :].max()\n", " \n", " # Update the Q-value\n", " self.Q[state, action] += self.alpha * (target - self.Q[state, action])\n", " \n", " # Decay epsilon\n", " self.epsilon = self.epsilon * (1 - self.decay_epsilon)\n", " \n", " \n", " def train(self, nb_episodes, recorder=None):\n", " \"Runs the agent on the environment for nb_episodes. Returns the list of obtained returns.\"\n", "\n", " # Returns\n", " returns = []\n", " steps = []\n", "\n", " # Fixed number of episodes\n", " for episode in range(nb_episodes):\n", "\n", " # Reset\n", " state, info = self.env.reset()\n", " done = False\n", " nb_steps = 0\n", "\n", " # Store rewards\n", " return_episode = 0.0\n", "\n", " # Sample the episode\n", " while not done:\n", "\n", " # Select an action \n", " action = self.act(state)\n", "\n", " # Perform the action\n", " next_state, reward, terminal, truncated, info = self.env.step(action)\n", " \n", " # End of the episode\n", " done = terminal or truncated\n", "\n", " # Learn from the transition\n", " self.update(state, action, reward, next_state, done)\n", "\n", " # Go in the next state\n", " state = next_state\n", "\n", " # Increment time\n", " nb_steps += 1\n", " return_episode += reward \n", " \n", "\n", " # Record at the end of the episode\n", " if recorder is not None and episode == nb_episodes -1:\n", " recorder.record(self.env.render())\n", "\n", " # Store info\n", " returns.append(return_episode)\n", " steps.append(nb_steps)\n", " \n", " \n", " return returns, steps\n", " \n", " def test(self, recorder=None):\n", " \"Performs a test episode without exploration.\"\n", " previous_epsilon = self.epsilon\n", " self.epsilon = 0.0\n", " \n", " # Reset\n", " state, info = self.env.reset()\n", " done = False\n", " nb_steps = 0\n", " return_episode= 0\n", "\n", " # Sample the episode\n", " while not done:\n", " action = self.act(state)\n", " next_state, reward, terminal, truncated, info = self.env.step(action)\n", " done = terminal or truncated\n", " return_episode += reward\n", " state = next_state\n", " nb_steps += 1\n", " \n", " self.epsilon = previous_epsilon\n", " \n", " if recorder is not None:\n", " recorder.record(self.env.render())\n", "\n", " return return_episode, nb_steps" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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qO48dmcuBJFf6NTflu6poHWRpIyqV5ytq7UaMnIKytla/STu0/WH9el6z8x3V9898QCgNCYga+BuHdLB2yUAAAB43aJFi9wez507V61atdL69et18cUXu7bbbDbFxMTUd3k+IUeBeqdwlCb7LdZ0///oTcd4FfjonwNzfzjguv/D3hO1Oscry/bqlWV7ZfOzyF7oPi/bLXPXamfKqQoXfTjT3R9uqHDfnGV79PHaRJ3MzteWIxlaWTwstHtsWK3qLnHmyrFzf9jvthpseUFfPXdA85hTeQV6oHh+vtEJMWpm882fWwCQ6BHX4AX6W71dAgAAQIOTkVE011dkZKTb9u+++06tWrVS165dNWXKFKWmppZ3eJP1cuE1rvsfB/zZi5V4ztur9lfZ5ovNScovLH8RhDNDOEnamXLK7b8VSa9Gz7wdyZk6mV3U7qdfT4eGS3ZUsLJrNQenpmS6927bddS91jPPsiMpUz/v98xCFkt/Oao9xdfLK3Do801HlJZ9+rU4kWXX459v04/7ip6vw2nqyy1l596r7tDUvILT75HdA73Z1h9MO+tzNCWJJ3P01dbkCntx1tS2Ixn6odQiK0BTQxAHAAAAn2KapqZNm6YLL7xQCQkJru1jx47VvHnztGzZMs2ePVtr167VJZdcIrvdXuG57Ha7MjMz3W6NWbpCNafwKklSP8seRapxP98S9320UX9Z6PlJ+n9XjbnWSmcXpcPA98qZH06SDqdVbzis2zWq0eayV76v8XnLs+FQmm57d51GvrRSkvTs1zv1h4836cZ//OR2rfd+PKgb//GTK6jbfLjqhTIqUt1wsrqe+GK7TuWVN1QW5bnoueWaOm+DFmw64pHzXT5nlW765886kl7zn3WgMSCIAwAAgE+55557tGXLFn300Udu26+//nqNGzdOCQkJGj9+vL7++mvt3r1bCxdWPB/arFmzFB4e7rrFx8dX2LYuvHR973q9nuTeK+5h/w/r/freUlHwdTa2HM6oslfclsPpNTrnnqNZOpmdr8STOTU67szOSqfyCl33a3quEr8eK7uowcozVlz9ckuypKLegw6nqe1JGTqaeTr8thc49coZc9eVzBdXukPc4bQcncgqOs40Ta3ee1wbDqXp0Ikct6TRqGY3utRTeUqqJOg5lVeo3UdPKTffobwCh3amZLp6fJ35uDpKnntNVvGt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iIiI1KNnxImIiIiIiIiIiESBMuKOQc3sTiUlJc1cExEREWktavoNmiWyZVM/T0RERI7W0fTzFIg7BqWlpQB07NixmWsiIiIirU1paSnJycnNXQ1pgPp5IiIicqya0s+zjP4se9QCgQC7d+8mMTHxhMz0VFJSQseOHdmxYwdJSUnHff8tjdrbtqm9bZva27apvceXMYbS0lJyc3Ox2fR0kJZK/bzjS+1t29Tetk3tbdvU3uPraPp5yog7BjabjQ4dOpzw4yQlJZ0Ub4gaam/bpva2bWpv26b2Hj/KhGv51M87MdTetk3tbdvU3rZN7T1+mtrP059jRUREREREREREokCBOBERERERERERkShQIK4FcrvdPPzww7jd7uauSlSovW2b2tu2qb1tm9orcvydbPeZ2tu2qb1tm9rbtqm9zUeTNYiIiIiIiIiIiESBMuJERERERERERESiQIE4ERERERERERGRKFAgTkREREREREREJAoUiBMREREREREREYkCBeJamKeffpquXbsSExPD4MGD+eyzz5q7So167LHHOP3000lMTCQzM5NLLrmE9evXh5WZMmUKlmWF/QwbNiysjMfj4c477yQ9PZ34+Hguuugidu7cGVamsLCQ66+/nuTkZJKTk7n++uspKio60U0M88gjj9RrS3Z2dmi9MYZHHnmE3NxcYmNjOfPMM1m9enXYPlpLWwG6dOlSr72WZXHHHXcArf/afvrpp1x44YXk5uZiWRbvvPNO2PpoXs/t27dz4YUXEh8fT3p6OnfddRderzdq7fX5fPz4xz+mf//+xMfHk5ubyw9+8AN2794dto8zzzyz3jW/6qqrWl17Ibr3b0tob6T3smVZ/OY3vwmVaU3XtynfP23tPSytm/p5LbMvUJv6eerntebvCPXz3glbr36e+nnQQq+xkRbj9ddfN06n0zz33HNmzZo1ZsaMGSY+Pt5s27atuat2ROedd56ZPXu2WbVqlVm+fLm54IILTKdOnUxZWVmozOTJk82ECRPMnj17Qj8FBQVh+5k2bZpp3769mTt3rlm6dKk566yzzIABA4zf7w+VmTBhgsnLyzMLFy40CxcuNHl5eWbSpElRa6sxxjz88MOmX79+YW3Zt29faP2sWbNMYmKi+cc//mFWrlxprrzySpOTk2NKSkpaXVuNMWbfvn1hbZ07d64BzPz5840x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zaJFi8yiRYtM//79oz7V+3333WcWLFhgNm/ebL788kszadIkk5iYGLpOs2bNMsnJyeatt94yK1euNFdffXXEKZRbQ1trVFVVmU6dOpkf//jHYcvbwrUtLS01y5YtM8uWLTOAefLJJ82yZctCs0dF63rWTIl99tlnm6VLl5p58+aZDh06HPdpwI/UXp/PZy666CLToUMHs3z58rD3s8fjMcYYs3HjRvPzn//cfP3112bLli1mzpw5pnfv3mbgwIGtrr3RvH9bQntrFBcXm7i4OPPMM8/U2761Xd/Gvn+MaXvvYWm91M9ruX2B2tTPO6wtXFv189TPUz/vsNZ2fdtyP0+BuBbmj3/8o+ncubNxuVxm0KBBYVPDt1RAxJ/Zs2cbY4wpLy8348ePNxkZGcbpdJpOnTqZyZMnm+3bt4ftp6KiwkyfPt2kpaWZ2NhYM2nSpHplCgoKzLXXXmsSExNNYmKiufbaa01hYWGUWhp05ZVXmpycHON0Ok1ubq657LLLzOrVq0PrA4GAefjhh012drZxu91mzJgxZuXKlWH7aC1trfHhhx8awKxfvz5seVu4tvPnz494/06ePNkYE93ruW3bNnPBBReY2NhYk5aWZqZPn24qKyuj1t4tW7Y0+H6eP3++McaY7du3mzFjxpi0tDTjcrlM9+7dzV133WUKCgpaXXujff82d3tr/PnPfzaxsbGmqKio3vat7fo29v1jTNt7D0vrpn5ey+wL1KZ+3mFt4dqqn6d+nvp5h7W269uW+3lWdQNFRERERERERETkBNIz4kRERERERERERKJAgTgREREREREREZEoUCBOREREREREREQkChSIExERERERERERiQIF4kRERERERERERKJAgTgREREREREREZEoUCBOREREREREREQkChSIExFpwNatW7Esi+XLl5+wY0yZMoVLLrnkhO1fREREROpTP09EmosCcSLSZk2ZMgXLsur9TJgwoUnbd+zYkT179pCXl3eCayoiIiIiR0P9PBFprRzNXQERkRNpwoQJzJ49O2yZ2+1u0rZ2u53s7OwTUS0RERER+S+pnycirZEy4kSkTXO73WRnZ4f9pKamAmBZFs888wwTJ04kNjaWrl278uabb4a2rTtkobCwkGuvvZaMjAxiY2Pp2bNnWOdv5cqVjBs3jtjYWNq1a8ctt9xCWVlZaH1VVRX33nsvKSkptGvXjh/96EcYY8Lqa4zh8ccfp1u3bsTGxjJgwAD+/ve/h9Y3VgcRERGRk4X6eSLSGikQJyIntYceeojLL7+cFStWcN1113H11Vezdu3aBsuuWbOGf//736xdu5ZnnnmG9PR0AMrLy5kwYQKpqal8/fXXvPnmm8ybN4/p06eHtn/iiSd48cUXeeGFF/j88885ePAgb7/9dtgxHnzwQWbPns0zzzzD6tWrueeee7juuuv45JNPGq2DiIiIiBymfp6ItEhGRKSNmjx5srHb7SY+Pj7s59FHHzXGGAOYadOmhW0zdOhQc9tttxljjNmyZYsBzLJly4wxxlx44YXmhhtuiHisZ5991qSmppqysrLQsjlz5hibzWby8/ONMcbk5OSYWbNmhdb7fD7ToUMHc/HFFxtjjCkrKzMxMTFm4cKFYfueOnWqufrqqxutg4iIiMjJQv08EWmt9Iw4EWnTzjrrLJ555pmwZWlpaaHfhw8fHrZu+PDhDc6eddttt3H55ZezdOlSxo8fzyWXXMKIESMAWLt2LQMGDCA+Pj5UfuTIkQQCAdavX09MTAx79uwJO57D4WDIkCGhYQtr1qyhsrKSc889N+y4Xq+XgQMHNloHERERkZOJ+nki0hopECcibVp8fDw9evQ4qm0sy4q4fOLEiWzbto05c+Ywb948zj77bO644w5++9vfYoxpcLuGltcVCAQAmDNnDu3btw9bV/Pg4SPVQURERORkon6eiLRGekaciJzUvvzyy3qve/fu3WD5jIwMpkyZwquvvspTTz3Fs88+C0Dfvn1Zvnw5hw4dCpX94osvsNls9OrVi+TkZHJycsKO5/f7WbJkSeh13759cbvdbN++nR49eoT9dOzYsdE6iIiIiMhh6ueJSEukjDgRadM8Hg/5+flhyxwOR+jBt2+++SZDhgxh1KhRvPbaayxevJgXXngh4r5+9rOfMXjwYPr164fH4+Ff//oXffr0AeDaa6/l4YcfZvLkyTzyyCPs37+fO++8k+uvv56srCwAZsyYwaxZs+jZsyd9+vThySefpKioKLT/xMRE7r//fu655x4CgQCjRo2ipKSEhQsXkpCQwOTJk49YBxEREZGTifp5ItIaKRAnIm3aBx98QE5OTtiyU045hXXr1gHw85//nNdff53bb7+d7OxsXnvtNfr27RtxXy6XiwceeICtW7cSGxvL6NGjef311wGIi4vjww8/ZMaMGZx++unExcVx+eWX8+STT4a2v++++9izZw9TpkzBZrNx4403cumll1JcXBwq84tf/ILMzEwee+wxNm/eTEpKCoMGDeInP/lJo3UQEREROZmonycirZFlap4eKSJykrEsi7fffptLLrmkuasiIiIiIseR+nki0lLpGXEiIiIiIiIiIiJRoECciIiIiIiIiIhIFGhoqoiIiIiIiIiISBQoI05ERERERERERCQKFIgTERERERERERGJAgXiREREREREREREokCBOBERERERERERkShQIE5ERERERERERCQKFIgTERERERERERGJAgXiREREREREREREokCBOBERERERERERkShQIE5ERERERERERCQK/j+8j1jmDI59qQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Parameters\n", "gamma = 0.9\n", "epsilon = 1.0\n", "decay_epsilon = 1e-5\n", "alpha = 0.1\n", "nb_episodes = 20000\n", "\n", "# Create the environment\n", "env = gym.make(\"Taxi-v3\")\n", "\n", "# Create the agent\n", "agent = QLearningAgent(env, gamma, epsilon, decay_epsilon, alpha)\n", "\n", "# Train the agent \n", "returns, steps = agent.train(nb_episodes)\n", "\n", "# Plot training returns\n", "plt.figure(figsize=(15, 6))\n", "plt.subplot(121)\n", "plt.plot(returns)\n", "plt.plot(running_average(returns, 1000))\n", "plt.xlabel(\"Episodes\")\n", "plt.ylabel(\"Returns\")\n", "plt.subplot(122)\n", "plt.plot(steps)\n", "plt.plot(running_average(steps, 1000))\n", "plt.xlabel(\"Episodes\")\n", "plt.ylabel(\"steps\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test performance 7.9\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABMIAAAINCAYAAADcGdP7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABA/UlEQVR4nO3df5RXZb0v8PfEwIAIJBAzzAGRc8IfOaSGXg09Av4AKUXDc7E8mRy9HrsKSaAlWsuxcwL1JFpQdCov+CPSte4StWupmIoRWUqSYuaPQsWCS3kQRGlA2PePlt/rCCgwAwPt12utvdbsZz9778/egTy959l7VxVFUQQAAAAA/sa9r60LAAAAAIBdQRAGAAAAQCkIwgAAAAAoBUEYAAAAAKUgCAMAAACgFARhAAAAAJSCIAwAAACAUhCEAQAAAFAK1W1dwI7YtGlT/vjHP6ZLly6pqqpq63IAgD1EURR57bXXUl9fn/e9z+8Dd0fGeQDAjtjWcd4eGYT98Y9/TN++fdu6DABgD7Vs2bL06dOnrctgC4zzAICWeK9x3h4ZhHXp0iXJXy+ua9eubVwNALCnWLNmTfr27VsZS7D7Mc4DAHbEto7z9sgg7K1p8l27djVAAgC2m0fudl/GeQBAS7zXOM/LMQAAAAAoBUEYAAAAAKUgCAMAAACgFARhAAAAAJSCIAwAAACAUhCEAQAAAFAK2xWETZ06NUcccUS6dOmSXr165bTTTsszzzzTrM/YsWNTVVXVbDnqqKOa9Wlqasr48ePTs2fPdO7cOaNGjcrLL7/c8qsBAAAAgK3YriBs/vz5ufDCC/PII49k3rx5efPNNzN8+PC8/vrrzfqddNJJWb58eWX50Y9+1Gz7hAkTMnfu3Nx6661ZsGBB1q5dm5NPPjkbN25s+RUBAAAAwBZUb0/ne+65p9n6rFmz0qtXryxatCjHHntspb2mpiZ1dXVbPMbq1atzww035Oabb84JJ5yQJLnlllvSt2/f3H///RkxYsT2XgMAAAAAvKcWvSNs9erVSZLu3bs3a3/ooYfSq1ev7L///jnvvPOycuXKyrZFixZlw4YNGT58eKWtvr4+DQ0NWbhw4RbP09TUlDVr1jRbAAAAAGB77HAQVhRFJk6cmGOOOSYNDQ2V9pEjR+b73/9+HnjggVx77bV59NFHc9xxx6WpqSlJsmLFinTo0CH77LNPs+PV1tZmxYoVWzzX1KlT061bt8rSt2/fHS0bAAAAgJLarkcj327cuHF54oknsmDBgmbtZ5xxRuXnhoaGHH744enXr1/uvvvujB49eqvHK4oiVVVVW9w2efLkTJw4sbK+Zs0aYRgAAAAA22WHZoSNHz8+d911Vx588MH06dPnXfv27t07/fr1y3PPPZckqaury/r167Nq1apm/VauXJna2totHqOmpiZdu3ZttgAAAADA9tiuIKwoiowbNy633357HnjggfTv3/8993nllVeybNmy9O7dO0kyaNCgtG/fPvPmzav0Wb58eZYsWZLBgwdvZ/kAAAAAsG2269HICy+8MHPmzMmdd96ZLl26VN7p1a1bt3Tq1Clr165NY2NjTj/99PTu3TsvvPBCLrvssvTs2TOf+MQnKn3PPffcTJo0KT169Ej37t1z8cUXZ+DAgZWvSAIAAABAa9uuIGzmzJlJkqFDhzZrnzVrVsaOHZt27drlySefzE033ZRXX301vXv3zrBhw3LbbbelS5culf7XXXddqqurM2bMmKxbty7HH398Zs+enXbt2rX8igAAAABgC6qKoijauojttWbNmnTr1i2rV6/2vjAAYJsZQ+z+/G8EAOyIbR1D7NDL8gEAAABgTyMIAwAAAKAUtusdYQB7iv0uvbutS2iRF676eFuXAACwWzLOA1rCjDAAAAAASkEQBgAAAEApCMIAAAAAKAVBGAAAmTp1ao444oh06dIlvXr1ymmnnZZnnnmmWZ+xY8emqqqq2XLUUUc169PU1JTx48enZ8+e6dy5c0aNGpWXX355V14KAMBWCcIAAMj8+fNz4YUX5pFHHsm8efPy5ptvZvjw4Xn99deb9TvppJOyfPnyyvKjH/2o2fYJEyZk7ty5ufXWW7NgwYKsXbs2J598cjZu3LgrLwcAYIt8NRIAgNxzzz3N1mfNmpVevXpl0aJFOfbYYyvtNTU1qaur2+IxVq9enRtuuCE333xzTjjhhCTJLbfckr59++b+++/PiBEjdt4FAABsAzPCAADYzOrVq5Mk3bt3b9b+0EMPpVevXtl///1z3nnnZeXKlZVtixYtyoYNGzJ8+PBKW319fRoaGrJw4cItnqepqSlr1qxptgAA7CyCMAAAmimKIhMnTswxxxyThoaGSvvIkSPz/e9/Pw888ECuvfbaPProoznuuOPS1NSUJFmxYkU6dOiQffbZp9nxamtrs2LFii2ea+rUqenWrVtl6du37867MACg9DwaCQBAM+PGjcsTTzyRBQsWNGs/44wzKj83NDTk8MMPT79+/XL33Xdn9OjRWz1eURSpqqra4rbJkydn4sSJlfU1a9YIwwCAncaMMAAAKsaPH5+77rorDz74YPr06fOufXv37p1+/frlueeeS5LU1dVl/fr1WbVqVbN+K1euTG1t7RaPUVNTk65duzZbAAB2FkEYAAApiiLjxo3L7bffngceeCD9+/d/z31eeeWVLFu2LL17906SDBo0KO3bt8+8efMqfZYvX54lS5Zk8ODBO612AIBt5dFIAABy4YUXZs6cObnzzjvTpUuXyju9unXrlk6dOmXt2rVpbGzM6aefnt69e+eFF17IZZddlp49e+YTn/hEpe+5556bSZMmpUePHunevXsuvvjiDBw4sPIVSQCAtiQIAwAgM2fOTJIMHTq0WfusWbMyduzYtGvXLk8++WRuuummvPrqq+ndu3eGDRuW2267LV26dKn0v+6661JdXZ0xY8Zk3bp1Of744zN79uy0a9duV14OAMAWCcIAAEhRFO+6vVOnTrn33nvf8zgdO3bM9OnTM3369NYqDQCg1XhHGAAAAAClIAgDAAAAoBQEYQAAAACUgiAMAAAAgFIQhAEAAABQCoIwAAAAAEpBEAYAAABAKQjCAAAAACgFQRgAAAAApSAIAwAAAKAUBGEAAAAAlIIgDAAAAIBSEIQBAAAAUAqCMAAAAABKQRAGAAAAQCkIwgAAAAAoBUEYAAAAAKUgCAMAAACgFARhAAAAAJSCIAwAAACAUhCEAQAAAFAKgjAAAAAASkEQBgAAAEApCMIAAAAAKAVBGAAAAAClIAgDAAAAoBQEYQAAAACUgiAMAAAAgFIQhAEAAABQCoIwAAAAAEpBEAYAAABAKQjCAAAAACgFQRgAAAAApSAIAwAAAKAUBGEAAAAAlIIgDAAAAIBSEIQBAAAAUAqCMAAAAABKQRAGAAAAQCkIwgAAAAAoBUEYAAAAAKUgCAMAAACgFARhAAAAAJSCIAwAAACAUhCEAQAAAFAKgjAAAAAASkEQBgAAAEApCMIAAAAAKAVBGAAAAAClIAgDAAAAoBQEYQAAAACUgiAMAAAAgFIQhAEAAABQCoIwAAAAAEpBEAYAAABAKQjCAAAAACgFQRgAAAAApSAIAwAAAKAUBGEAAAAAlIIgDAAAAIBSEIQBAAAAUArbFYRNnTo1RxxxRLp06ZJevXrltNNOyzPPPNOsT1EUaWxsTH19fTp16pShQ4fmqaeeatanqakp48ePT8+ePdO5c+eMGjUqL7/8csuvBgAAAAC2YruCsPnz5+fCCy/MI488knnz5uXNN9/M8OHD8/rrr1f6XHPNNZk2bVpmzJiRRx99NHV1dTnxxBPz2muvVfpMmDAhc+fOza233poFCxZk7dq1Ofnkk7Nx48bWuzIAAAAAeJvq7el8zz33NFufNWtWevXqlUWLFuXYY49NURS5/vrrc/nll2f06NFJkhtvvDG1tbWZM2dOzj///KxevTo33HBDbr755pxwwglJkltuuSV9+/bN/fffnxEjRrTSpQEAAADA/9eid4StXr06SdK9e/ckydKlS7NixYoMHz680qempiZDhgzJwoULkySLFi3Khg0bmvWpr69PQ0NDpQ8AAAAAtLbtmhH2dkVRZOLEiTnmmGPS0NCQJFmxYkWSpLa2tlnf2travPjii5U+HTp0yD777LNZn7f2f6empqY0NTVV1tesWbOjZQMAAABQUjs8I2zcuHF54okn8oMf/GCzbVVVVc3Wi6LYrO2d3q3P1KlT061bt8rSt2/fHS0bAAAAgJLaoSBs/Pjxueuuu/Lggw+mT58+lfa6urok2Wxm18qVKyuzxOrq6rJ+/fqsWrVqq33eafLkyVm9enVlWbZs2Y6UDQAAAECJbVcQVhRFxo0bl9tvvz0PPPBA+vfv32x7//79U1dXl3nz5lXa1q9fn/nz52fw4MFJkkGDBqV9+/bN+ixfvjxLliyp9HmnmpqadO3atdkCAAAAANtju94RduGFF2bOnDm5884706VLl8rMr27duqVTp06pqqrKhAkTMmXKlAwYMCADBgzIlClTstdee+XMM8+s9D333HMzadKk9OjRI927d8/FF1+cgQMHVr4iCQAAAACtbbuCsJkzZyZJhg4d2qx91qxZGTt2bJLkC1/4QtatW5cLLrggq1atypFHHpn77rsvXbp0qfS/7rrrUl1dnTFjxmTdunU5/vjjM3v27LRr165lVwMAAAAAW7FdQVhRFO/Zp6qqKo2NjWlsbNxqn44dO2b69OmZPn369pweAAAAAHbYDn81EgAAAAD2JIIw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0DLbcv9uuOGG4oMf/GDRsWPH4pBDDinuuOOOtit4N/Re93D58uXF2LFji/r6+qJjx47FAQccUFx77bXFpk2bdkl9VUVRFK0brQEAAADA7sfL8gEAAAAoBUEYAAAAAKUgCAMAAACgFARhAAAAAJSCIAwAAACAUhCEAQAAAFAKgjAAAAAASkEQBgAAQKt44YUXUlVVlcWLF7d1KRW//e1vc9RRR6Vjx4459NBD27ocoI0JwoBdauzYsamqqkpVVVWqq6uz77775n/+z/+ZVatWbdP+u+PgCgBgd/HWWOuqq65q1n7HHXekqqqqjapqW1dccUU6d+6cZ555Jj/5yU+2e/+xY8fmtNNOa/3CgDYhCAN2uZNOOinLly/PCy+8kO9973v54Q9/mAsuuGCX17F+/fpdfk4AgJ2tY8eOufrqq7f5F417gpaM2373u9/lmGOOSb9+/dKjR49WrArYEwnCgF2upqYmdXV16dOnT4YPH54zzjgj9913X2X7rFmzctBBB6Vjx4458MAD861vfauyrX///kmSww47LFVVVRk6dGiSZOjQoZkwYUKz85x22mkZO3ZsZX2//fbLv//7v2fs2LHp1q1bzjvvvMyePTvvf//7c++99+aggw7K3nvvXQnq3vLQQw/lv/23/5bOnTvn/e9/f44++ui8+OKLrX9jAABawQknnJC6urpMnTp1q30aGxs3e0zw+uuvz3777VdZf2sm1JQpU1JbW5v3v//9ufLKK/Pmm2/mkksuSffu3dOnT5/8r//1vzY7/m9/+9sMHjw4HTt2zMEHH5yHHnqo2fbf/OY3+djHPpa99947tbW1Oeuss/LnP/+5sn3o0KEZN25cJk6cmJ49e+bEE0/c4nVs2rQpX/nKV9KnT5/U1NTk0EMPzT333FPZXlVVlUWLFuUrX/lKqqqq0tjYuMXj/O///b8zcODAdOrUKT169MgJJ5yQ119/PY2Njbnxxhtz5513Vp5qeOta/vCHP+SMM87IPvvskx49euTUU0/NCy+8sNn9u/LKK9OrV6907do1559/frNQb2vnBXYeQRjQpn7/+9/nnnvuSfv27ZMk3/3ud3P55Zfnq1/9ap5++ulMmTIlX/7yl3PjjTcmSX75y18mSe6///4sX748t99++3ad7z/+4z/S0NCQRYsW5ctf/nKS5I033sjXvva13HzzzXn44Yfz0ksv5eKLL06SvPnmmznttNMyZMiQPPHEE/n5z3+ef/3Xfy3towUAwO6vXbt2mTJlSqZPn56XX365Rcd64IEH8sc//jEPP/xwpk2blsbGxpx88snZZ5998otf/CKf/exn89nPfjbLli1rtt8ll1ySSZMm5fHHH8/gwYMzatSovPLKK0mS5cuXZ8iQITn00EPz2GOP5Z577sn//b//N2PGjGl2jBtvvDHV1dX52c9+lv/8z//cYn1f//rXc+211+ZrX/tannjiiYwYMSKjRo3Kc889VznXwQcfnEmTJmX58uWVMd7bLV++PJ/61Kdyzjnn5Omnn85DDz2U0aNHpyiKXHzxxRkzZkzlF6XLly/P4MGD88Ybb2TYsGHZe++98/DDD2fBggWVX6i+Pej6yU9+kqeffjoPPvhgfvCDH2Tu3Lm58sor3/O8wE5UAOxCZ599dtGuXbuic+fORceOHYskRZJi2rRpRVEURd++fYs5c+Y02+ff/u3fio9+9KNFURTF0qVLiyTF448/3qzPkCFDiosuuqhZ26mnnlqcffbZlfV+/foVp512WrM+s2bNKpIUzz//fKXtm9/8ZlFbW1sURVG88sorRZLioYceasllAwDsEmeffXZx6qmnFkVRFEcddVRxzjnnFEVRFHPnzi3e/n//rrjiiuKQQw5ptu91111X9OvXr9mx+vXrV2zcuLHSdsABBxT/+I//WFl/8803i86dOxc/+MEPiqL4/2O1q666qtJnw4YNRZ8+fYqrr766KIqi+PKXv1wMHz682bmXLVtWJCmeeeaZoij+OrY79NBD3/N66+vri69+9avN2o444ojiggsuqKwfcsghxRVXXLHVYyxatKhIUrzwwgtb3P72e/qWG264oTjggAOKTZs2VdqampqKTp06Fffee29lv+7duxevv/56pc/MmTOLvffeu9i4ceN7nhfYOarbKoADymvYsGGZOXNm3njjjXzve9/Ls88+m/Hjx+dPf/pTli1blnPPPTfnnXdepf+bb76Zbt26tcq5Dz/88M3a9tprr/zDP/xDZb13795ZuXJlkqR79+4ZO3ZsRowYkRNPPDEnnHBCxowZk969e7dKPQAAO8vVV1+d4447LpMmTdrhYxx88MF53/v+/4NEtbW1aWhoqKy3a9cuPXr0qIyd3vLRj3608nN1dXUOP/zwPP3000mSRYsW5cEHH8zee++92fl+97vfZf/990+y5XHb261ZsyZ//OMfc/TRRzdrP/roo/PrX/96G68wOeSQQ3L88cdn4MCBGTFiRIYPH55/+qd/yj777LPVfRYtWpTnn38+Xbp0adb+l7/8Jb/73e+aHXuvvfaqrH/0ox/N2rVrs2zZsh06L9ByHo0EdrnOnTvngx/8YD784Q/nG9/4RpqamnLllVdm06ZNSf76eOTixYsry5IlS/LII4+86zHf9773bTaNfMOGDVs89zu99VjmW6qqqpoda9asWfn5z3+ewYMH57bbbsv+++//nvUAALS1Y489NiNGjMhll1222bZtHTttaZy0pba3xnHv5q1XS2zatCmnnHJKs/He4sWL89xzz+XYY4+t9N/SuO3djvuWoii26zUW7dq1y7x58/LjH/84H/rQhzJ9+vQccMABWbp06Vb32bRpUwYNGrTZNTz77LM588wzt6nmHTkv0HKCMKDNXXHFFfna176WjRs35u/+7u/y+9//Ph/84AebLW+9JL9Dhw5Jko0bNzY7xgc+8IFmL7jfuHFjlixZ0mo1HnbYYZk8eXIWLlyYhoaGzJkzp9WODQCws1x11VX54Q9/mIULFzZr/8AHPpAVK1Y0C8MWL17caud9+y8N33zzzSxatCgHHnhgkuQjH/lInnrqqey3336bjfm2NfxKkq5du6a+vj4LFixo1r5w4cIcdNBB21VvVVVVjj766Fx55ZV5/PHH06FDh8ydOzfJX8ef7xx7fuQjH8lzzz2XXr16bXYNb3+S4de//nXWrVtXWX/kkUey9957p0+fPu95XmDnEIQBbW7o0KE5+OCDM2XKlDQ2Nmbq1Kn5+te/nmeffTZPPvlkZs2alWnTpiVJevXqlU6dOlVeqrp69eokyXHHHZe77747d999d37729/mggsuyKuvvtri2pYuXZrJkyfn5z//eV588cXcd999efbZZ7d7cAUA0BYGDhyYf/7nf8706dObtQ8dOjR/+tOfcs011+R3v/tdvvnNb+bHP/5xq533m9/8ZubOnZvf/va3ufDCC7Nq1aqcc845SZILL7ww//Vf/5VPfepT+eUvf5nf//73ue+++3LOOedsFji9l0suuSRXX311brvttjzzzDO59NJLs3jx4lx00UXbfIxf/OIXmTJlSh577LG89NJLuf322/OnP/2pMt7bb7/98sQTT+SZZ57Jn//852zYsCH//M//nJ49e+bUU0/NT3/60yxdujTz58/PRRdd1OwDBevXr8+5556b3/zmN/nxj3+cK664IuPGjcv73ve+9zwvsHMIwoDdwsSJE/Pd7343I0aMyPe+973Mnj07AwcOzJAhQzJ79uzKjLDq6up84xvfyH/+53+mvr4+p556apLknHPOydlnn53PfOYzGTJkSPr3759hw4a1uK699torv/3tb3P66adn//33z7/+679m3LhxOf/881t8bACAXeHf/u3fNnsM8qCDDsq3vvWtfPOb38whhxySX/7yl1v8ouKOuuqqq3L11VfnkEMOyU9/+tPceeed6dmzZ5Kkvr4+P/vZz7Jx48aMGDEiDQ0Nueiii9KtW7dm7yPbFp/73OcyadKkTJo0KQMHDsw999yTu+66KwMGDNjmY3Tt2jUPP/xwPvaxj2X//ffPl770pVx77bUZOXJkkuS8887LAQcckMMPPzwf+MAH8rOf/Sx77bVXHn744ey7774ZPXp0DjrooJxzzjlZt25dunbtWjn28ccfnwEDBuTYY4/NmDFjcsopp6SxsXGbzgvsHFXFO/+LCAAAALTI2LFj8+qrr+aOO+5o61KAtzEjDAAAAIBSEIQBAAAAUAoejQQAAACgFMwIAwAAAKAUBGEAAAAAlIIgDAAAAIBSEIQBAAAAUAqCMAAAAABKQRAGAAAAQCkIwgAAAAAoBUEYAAAAAKUgCAMAAACgFP4fGnyLwIbgQr4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Test the agent for 1000 episodes\n", "test_returns = []\n", "test_steps = []\n", "for episode in range(1000):\n", " return_episode, nb_steps = agent.test()\n", " test_returns.append(return_episode)\n", " test_steps.append(nb_steps)\n", "print(\"Test performance\", np.mean(test_returns))\n", "\n", "plt.figure(figsize=(15, 6))\n", "plt.subplot(121)\n", "plt.hist(test_returns)\n", "plt.xlabel(\"Returns\")\n", "plt.subplot(122)\n", "plt.hist(test_steps)\n", "plt.xlabel(\"Number of steps\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MoviePy - Building file videos/taxi-trained-td.gif with imageio.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " \r" ] }, { "data": { "text/html": [ "