CS4287_Prj2_24273759_24293059_24284335.ipynb (194675B)
1 { 2 "cells": [ 3 { 4 "cell_type": "markdown", 5 "metadata": { 6 "id": "view-in-github", 7 "colab_type": "text" 8 }, 9 "source": [ 10 "<a href=\"https://colab.research.google.com/github/LindholmLabs/Neural-Computing/blob/main/CS4287_Prj2_24273759_24293059_24284335.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" 11 ] 12 }, 13 { 14 "cell_type": "markdown", 15 "source": [ 16 "Lars Jacobs (24293059)\n", 17 "William Lindholm (24273759)\n", 18 "Patrick Vorreiter (24284335)\n" 19 ], 20 "metadata": { 21 "id": "pC8VUn49vX5I" 22 } 23 }, 24 { 25 "cell_type": "markdown", 26 "source": [ 27 "The code executes until the end without error." 28 ], 29 "metadata": { 30 "id": "B85XazoOvX5M" 31 } 32 }, 33 { 34 "cell_type": "markdown", 35 "source": [ 36 "References:\n", 37 "\n", 38 " Inspiration taken from: Lecture P: RL – DQN and the Cartpole\n", 39 "\n", 40 " understanding of Cartpole problem: https://www.gymlibrary.dev/environments/classic_control/cart_pole/" 41 ], 42 "metadata": { 43 "id": "zHY7sojS4vsX" 44 } 45 }, 46 { 47 "cell_type": "markdown", 48 "source": [ 49 "# Assignment 3: Deep Reinforcement Learning" 50 ], 51 "metadata": { 52 "id": "laWM2ZbBvX5N" 53 } 54 }, 55 { 56 "cell_type": "markdown", 57 "source": [ 58 "# 1. Why Reinforcement Learning is the machine learning paradigm of choice for this task\n", 59 "\n", 60 "Reinforcement Learning (RL) is useful for sequential decision-making problems where an agent learns to achieve a goal by interacting with an environment. Unlike supervised learning, RL doesn’t rely on labeled data but uses feedback in the form of rewards. In the context of the Mountain Car problem that we are looking at in this assignment, RL is particularly suitable because::\n", 61 "-\tThe agent learns the optimal policy to move the car to the goal (the top of the mountain) by trial and error.\n", 62 "-\tRL is effective in handling the continuous state space of the car’s position and velocity." 63 ], 64 "metadata": { 65 "id": "wQPm2Et4vX5O" 66 } 67 }, 68 { 69 "cell_type": "markdown", 70 "source": [ 71 "# 2. The Gym Environment\n", 72 "\n", 73 "The Mountain Car environment is part of OpenAI Gym’s classic control suite with the following characteristics:\n", 74 "- Goal: Drive the car up the hill on the right.\n", 75 "- State Space: 2-dimensional vector (position, velocity).\n", 76 "- Action Space: 3 discrete actions: accelerate to the left, don’t accelerate or accelerate to the right.\n", 77 "- Reward: -1 per step until the goal is reached.\n" 78 ], 79 "metadata": { 80 "id": "K_FW4DITvX5O" 81 } 82 }, 83 { 84 "cell_type": "code", 85 "execution_count": null, 86 "metadata": { 87 "colab": { 88 "base_uri": "https://localhost:8080/" 89 }, 90 "outputId": "50677207-bcbc-4721-b60b-0478eb1c9f1f", 91 "id": "yxVXR0LOvX5O" 92 }, 93 "outputs": [ 94 { 95 "output_type": "stream", 96 "name": "stderr", 97 "text": [ 98 "/usr/local/lib/python3.10/dist-packages/tensorflow/lite/python/util.py:55: DeprecationWarning: jax.xla_computation is deprecated. Please use the AOT APIs; see https://jax.readthedocs.io/en/latest/aot.html. For example, replace xla_computation(f)(*xs) with jit(f).lower(*xs).compiler_ir('hlo'). See CHANGELOG.md for 0.4.30 for more examples.\n", 99 " from jax import xla_computation as _xla_computation\n", 100 "/usr/local/lib/python3.10/dist-packages/gym/core.py:317: DeprecationWarning: \u001b[33mWARN: Initializing wrapper in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", 101 " deprecation(\n", 102 "/usr/local/lib/python3.10/dist-packages/gym/wrappers/step_api_compatibility.py:39: DeprecationWarning: \u001b[33mWARN: Initializing environment in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", 103 " deprecation(\n" 104 ] 105 } 106 ], 107 "source": [ 108 "import gym\n", 109 "import numpy as np\n", 110 "import tensorflow as tf\n", 111 "from collections import deque\n", 112 "import matplotlib.pyplot as plt\n", 113 "\n", 114 "# Initialize the environment\n", 115 "env = gym.make('MountainCar-v0')\n", 116 "state_dim = env.observation_space.shape[0]\n", 117 "action_dim = env.action_space.n" 118 ] 119 }, 120 { 121 "cell_type": "markdown", 122 "source": [ 123 "# 3. Implementation\n", 124 "### a. Capture and sampling of the data" 125 ], 126 "metadata": { 127 "id": "BUDPRxQ6vX5O" 128 } 129 }, 130 { 131 "cell_type": "code", 132 "source": [ 133 "# Replay buffer for up to 50 000 experiences\n", 134 "replay_buffer = deque(maxlen=50000)" 135 ], 136 "metadata": { 137 "id": "WMbshJ-96vE7" 138 }, 139 "execution_count": null, 140 "outputs": [] 141 }, 142 { 143 "cell_type": "code", 144 "source": [ 145 "def sample_experiences(batch_size):\n", 146 " # Randomly select a batch of experiences from the replay buffer\n", 147 " indices = np.random.choice(len(replay_buffer), batch_size)\n", 148 " batch = [replay_buffer[index] for index in indices]\n", 149 "\n", 150 " # Unzip the batch into separate components\n", 151 " states, actions, rewards, next_states, dones = zip(*batch)\n", 152 " return (\n", 153 " np.array(states),\n", 154 " np.array(actions),\n", 155 " np.array(rewards),\n", 156 " np.array(next_states),\n", 157 " np.array(dones),\n", 158 " )" 159 ], 160 "metadata": { 161 "id": "B5iJCGZFvX5O" 162 }, 163 "execution_count": null, 164 "outputs": [] 165 }, 166 { 167 "cell_type": "markdown", 168 "source": [ 169 "### b. Network Structure\n", 170 "\n", 171 "For the DQN we use a simple feed-forward neural network to approximate Q-values for each action." 172 ], 173 "metadata": { 174 "id": "lxZB1apSvX5P" 175 } 176 }, 177 { 178 "cell_type": "code", 179 "source": [ 180 "# Define the DQN model\n", 181 "model = tf.keras.Sequential([\n", 182 " tf.keras.layers.Dense(128, activation=\"relu\", input_shape=(state_dim,)),\n", 183 " tf.keras.layers.Dense(128, activation=\"relu\"),\n", 184 " tf.keras.layers.Dense(action_dim)\n", 185 "])" 186 ], 187 "metadata": { 188 "colab": { 189 "base_uri": "https://localhost:8080/" 190 }, 191 "outputId": "0efe95a7-4ef4-409b-a284-892f3f485c67", 192 "id": "Zul0NK8svX5P" 193 }, 194 "execution_count": null, 195 "outputs": [ 196 { 197 "output_type": "stream", 198 "name": "stderr", 199 "text": [ 200 "/usr/local/lib/python3.10/dist-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", 201 " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" 202 ] 203 } 204 ] 205 }, 206 { 207 "cell_type": "code", 208 "source": [ 209 "optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)\n", 210 "loss_fn = tf.keras.losses.MeanSquaredError()" 211 ], 212 "metadata": { 213 "id": "Isf4udiz5Vzw" 214 }, 215 "execution_count": null, 216 "outputs": [] 217 }, 218 { 219 "cell_type": "markdown", 220 "source": [ 221 "### c. Q-Learning Update" 222 ], 223 "metadata": { 224 "id": "OFcaK5T5vX5P" 225 } 226 }, 227 { 228 "cell_type": "markdown", 229 "source": [ 230 "In Q-learning, the goal is to update the Q-values, which represent the expected cumulative rewards for taking an action in a given state. The Q-values are updated using the Bellman equation:\n", 231 "\n", 232 "$$\n", 233 "Q_{target} = r + \\gamma \\max_a Q(s', a)\n", 234 "$$\n", 235 "\n", 236 "Source: Lecture P: RL – DQN and the Cartpole slide 9\n", 237 "\n", 238 "Where $r$ is the immediate reward, $\\gamma$ is the discount factor, and $\\max_a Q(s', a)$ is the maximum Q-value for the next state.\n", 239 "\n", 240 "First, the model predicts the Q-values for the current state. The target Q-values are computed using the Bellman equation, where we add the immediate reward and the discounted maximum future Q-value from the next state. The loss is the difference between the predicted Q-values and the target Q-values, that we are calculating using the Mean Squared Error. This measures how far off the predictions are from the targets. The models weights are updated by minimizing this loss using gradient descent, which allows the agent to adjust its policy and improve over time." 241 ], 242 "metadata": { 243 "id": "SwVr5QOkF5he" 244 } 245 }, 246 { 247 "cell_type": "code", 248 "source": [ 249 "discount_factor = 0.95" 250 ], 251 "metadata": { 252 "id": "9F1u69bw5hpS" 253 }, 254 "execution_count": null, 255 "outputs": [] 256 }, 257 { 258 "cell_type": "code", 259 "source": [ 260 "def training_step(batch_size):\n", 261 " # Sample a batch of experiences from the replay buffer\n", 262 " states, actions, rewards, next_states, dones = sample_experiences(batch_size)\n", 263 "\n", 264 " # Get Q-values for the next states and compute the maximum Q-values\n", 265 " next_Q_values = model.predict(next_states, verbose=0)\n", 266 " max_next_Q_values = np.max(next_Q_values, axis=1)\n", 267 "\n", 268 " # Calculate the target Q-values using the Bellman equation (explained in 3.C)\n", 269 " target_Q_values = rewards + (1 - dones) * discount_factor * max_next_Q_values\n", 270 " target_Q_values = target_Q_values.reshape(-1, 1)\n", 271 "\n", 272 " # Create a mask for the selected actions\n", 273 " mask = tf.one_hot(actions, action_dim)\n", 274 "\n", 275 " # Compute gradients and apply updates to the model\n", 276 " with tf.GradientTape() as tape:\n", 277 " all_Q_values = model(states)\n", 278 " Q_values = tf.reduce_sum(all_Q_values * mask, axis=1, keepdims=True)\n", 279 " loss = loss_fn(target_Q_values, Q_values)\n", 280 "\n", 281 " grads = tape.gradient(loss, model.trainable_variables)\n", 282 " optimizer.apply_gradients(zip(grads, model.trainable_variables))" 283 ], 284 "metadata": { 285 "id": "UDg8rxyWvX5P" 286 }, 287 "execution_count": null, 288 "outputs": [] 289 }, 290 { 291 "cell_type": "code", 292 "source": [ 293 "# Epsilon-greedy policy\n", 294 "def epsilon_greedy_policy(state, epsilon):\n", 295 " # Explore: take a random action with probability epsilon\n", 296 " if np.random.rand() < epsilon:\n", 297 " return np.random.randint(action_dim)\n", 298 " # Exploit: choose the best action based on the model’s Q-values\n", 299 " else:\n", 300 " Q_values = model.predict(state[np.newaxis], verbose=0)\n", 301 " return np.argmax(Q_values[0])" 302 ], 303 "metadata": { 304 "id": "vsfpJoWSvX5P" 305 }, 306 "execution_count": null, 307 "outputs": [] 308 }, 309 { 310 "cell_type": "markdown", 311 "source": [ 312 "### d. Advanced concepts\n" 313 ], 314 "metadata": { 315 "id": "QApYeIjbvX5P" 316 } 317 }, 318 { 319 "cell_type": "markdown", 320 "source": [ 321 "**Random Seed Initialization**\n", 322 "\n", 323 "Random seed initialization ensures that the results of a model can be reproduced. By setting a fixed seed for NumPy and TensorFlow, we can ensure that random processes will always produce the same results.\n", 324 "\n", 325 "**Catastrophic Forgetting**\n", 326 "\n", 327 "One of the main hurdles we had to overcome was that our RL agent suffered from catastrophic forgetting during training, it would get a good result for a number of episodes, revert back to a poor policy, and keep doing that for hundreds of episodes, see graph below. Sometimes it would take it almost 100 episodes to regain the lost performance. See the sudden drop just after episode 50 in the graph below. We managed to mitigate this problem by decreasing the learning rate significantly, after noticing it was too high, which led to wild \"mood swings\" in the agent. We also tried implementing a dropout, since we hypothesised that it could help the neural network rely less on specific neurons thus improving performance, but we did not find any positive impact from this.\n", 328 "\n", 329 "**Discount factor**\n", 330 "\n", 331 "We chose a relatively high discount factor of 0.95, since we wanted our RL agent to not be short sighted.\n", 332 "\n", 333 "**learning rate schedule**\n", 334 "\n", 335 "We chose to implement a learning rate schedule as it is something which we noticed improved performance in our previous project, and we think having a \"wild\" exploratory phase would be beneficial for adjusting quickly in the beginning, when all the weights are random and untrained.\n", 336 "\n", 337 "**epsilon decay**\n", 338 "In the beginning we wanted the agent to explore as much as possible, so that it could stumle upon moves which would land it a better reward. But after finding such a scenario, we also wanted it to remember it, so that it does not forget its training, which we had quite a lot of issues with in the beginning. Therefore we decided on a relatively high epsilon value of 0.1, which allows the agent to explore. Then we gradually lower it over the next 225 episodes down to 0.010. Allowing it to instead exploit.\n", 339 "\n" 340 ], 341 "metadata": { 342 "id": "eX842iCZNuo9" 343 } 344 }, 345 { 346 "cell_type": "markdown", 347 "source": [ 348 "" 349 ], 350 "metadata": { 351 "id": "WCqtY2Fqzcec" 352 } 353 }, 354 { 355 "cell_type": "code", 356 "source": [ 357 "np.random.seed(42)\n", 358 "tf.random.set_seed(42)" 359 ], 360 "metadata": { 361 "id": "VmZDH5s95kmk" 362 }, 363 "execution_count": null, 364 "outputs": [] 365 }, 366 { 367 "cell_type": "markdown", 368 "source": [ 369 "# 4. Results" 370 ], 371 "metadata": { 372 "id": "gi6NrA4xvX5P" 373 } 374 }, 375 { 376 "cell_type": "code", 377 "source": [ 378 "episodes = 300\n", 379 "max_steps = 200\n", 380 "epsilon = 0.1\n", 381 "epsilon_decay = 0.990\n", 382 "epsilon_min = 0.01\n", 383 "rewards_history = []\n", 384 "best_score = 0\n", 385 "best_weights = None" 386 ], 387 "metadata": { 388 "id": "3RTBTfRY5nzC" 389 }, 390 "execution_count": null, 391 "outputs": [] 392 }, 393 { 394 "cell_type": "code", 395 "source": [ 396 "# Training Loop\n", 397 "for episode in range(episodes):\n", 398 " # Reset environment at the start of each episode\n", 399 " state = env.reset()\n", 400 " # Initialize total reward for the episode\n", 401 " total_reward = 0\n", 402 "\n", 403 " for step in range(max_steps):\n", 404 " # Choose action using epsilon-greedy policy\n", 405 " action = epsilon_greedy_policy(state, epsilon)\n", 406 " next_state, reward, done, _ = env.step(action)\n", 407 "\n", 408 " # Store the experience in the replay buffer\n", 409 " replay_buffer.append((state, action, reward, next_state, done))\n", 410 " state = next_state\n", 411 " total_reward += reward\n", 412 "\n", 413 " # Exit loop if the episode is finished\n", 414 " if done:\n", 415 " break\n", 416 "\n", 417 " # Perform one training step\n", 418 " training_step(batch_size=32)\n", 419 "\n", 420 " # Check if this episode's reward is better than the previous best\n", 421 " if total_reward > best_score:\n", 422 " best_weights = model.get_weights()\n", 423 " best_score = total_reward\n", 424 "\n", 425 " # Adjust learning rate based on progress\n", 426 " if episode == 100: # lower learning rate after 100 episodes\n", 427 " optimizer = tf.keras.optimizers.Adam(learning_rate=0.005)\n", 428 " elif episode == 200: # lower it again after 200 episodes\n", 429 " optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)\n", 430 "\n", 431 " print(f\"Episode {episode + 1}/{episodes}, Steps: {step + 1}, Reward: {total_reward}, Epsilon: {epsilon:.3f}\")\n", 432 "\n", 433 " # Decay epsilon to reduce exploration over time\n", 434 " epsilon = max(epsilon * epsilon_decay, epsilon_min)\n", 435 "\n", 436 " # Store total reward for the episode\n", 437 " rewards_history.append(total_reward)\n", 438 "\n", 439 "# After all episodes, set the model to the best weights\n", 440 "if best_weights is not None:\n", 441 " model.set_weights(best_weights)" 442 ], 443 "metadata": { 444 "colab": { 445 "base_uri": "https://localhost:8080/" 446 }, 447 "outputId": "c943f300-c270-4518-bd66-ecfa2a728334", 448 "id": "Sr4hL-Q4vX5P" 449 }, 450 "execution_count": null, 451 "outputs": [ 452 { 453 "output_type": "stream", 454 "name": "stderr", 455 "text": [ 456 "/usr/local/lib/python3.10/dist-packages/gym/utils/passive_env_checker.py:241: DeprecationWarning: `np.bool8` is a deprecated alias for `np.bool_`. (Deprecated NumPy 1.24)\n", 457 " if not isinstance(terminated, (bool, np.bool8)):\n" 458 ] 459 }, 460 { 461 "output_type": "stream", 462 "name": "stdout", 463 "text": [ 464 "Episode 1/300, Steps: 200, Reward: -200.0, Epsilon: 0.100\n", 465 "Episode 2/300, Steps: 200, Reward: -200.0, Epsilon: 0.099\n", 466 "Episode 3/300, Steps: 200, Reward: -200.0, Epsilon: 0.098\n", 467 "Episode 4/300, Steps: 200, Reward: -200.0, Epsilon: 0.097\n", 468 "Episode 5/300, Steps: 200, Reward: -200.0, Epsilon: 0.096\n", 469 "Episode 6/300, Steps: 200, Reward: -200.0, Epsilon: 0.095\n", 470 "Episode 7/300, Steps: 200, Reward: -200.0, Epsilon: 0.094\n", 471 "Episode 8/300, Steps: 200, Reward: -200.0, Epsilon: 0.093\n", 472 "Episode 9/300, Steps: 200, Reward: -200.0, Epsilon: 0.092\n", 473 "Episode 10/300, Steps: 200, Reward: -200.0, Epsilon: 0.091\n", 474 "Episode 11/300, Steps: 200, Reward: -200.0, Epsilon: 0.090\n", 475 "Episode 12/300, Steps: 200, Reward: -200.0, Epsilon: 0.090\n", 476 "Episode 13/300, Steps: 200, Reward: -200.0, Epsilon: 0.089\n", 477 "Episode 14/300, Steps: 200, Reward: -200.0, Epsilon: 0.088\n", 478 "Episode 15/300, Steps: 200, Reward: -200.0, Epsilon: 0.087\n", 479 "Episode 16/300, Steps: 200, Reward: -200.0, Epsilon: 0.086\n", 480 "Episode 17/300, Steps: 200, Reward: -200.0, Epsilon: 0.085\n", 481 "Episode 18/300, Steps: 200, Reward: -200.0, Epsilon: 0.084\n", 482 "Episode 19/300, Steps: 200, Reward: -200.0, Epsilon: 0.083\n", 483 "Episode 20/300, Steps: 200, Reward: -200.0, Epsilon: 0.083\n", 484 "Episode 21/300, Steps: 200, Reward: -200.0, Epsilon: 0.082\n", 485 "Episode 22/300, Steps: 200, Reward: -200.0, Epsilon: 0.081\n", 486 "Episode 23/300, Steps: 200, Reward: -200.0, Epsilon: 0.080\n", 487 "Episode 24/300, Steps: 200, Reward: -200.0, Epsilon: 0.079\n", 488 "Episode 25/300, Steps: 200, Reward: -200.0, Epsilon: 0.079\n", 489 "Episode 26/300, Steps: 200, Reward: -200.0, Epsilon: 0.078\n", 490 "Episode 27/300, Steps: 200, Reward: -200.0, Epsilon: 0.077\n", 491 "Episode 28/300, Steps: 200, Reward: -200.0, Epsilon: 0.076\n", 492 "Episode 29/300, Steps: 200, Reward: -200.0, Epsilon: 0.075\n", 493 "Episode 30/300, Steps: 200, Reward: -200.0, Epsilon: 0.075\n", 494 "Episode 31/300, Steps: 200, Reward: -200.0, Epsilon: 0.074\n", 495 "Episode 32/300, Steps: 200, Reward: -200.0, Epsilon: 0.073\n", 496 "Episode 33/300, Steps: 200, Reward: -200.0, Epsilon: 0.072\n", 497 "Episode 34/300, Steps: 200, Reward: -200.0, Epsilon: 0.072\n", 498 "Episode 35/300, Steps: 200, Reward: -200.0, Epsilon: 0.071\n", 499 "Episode 36/300, Steps: 200, Reward: -200.0, Epsilon: 0.070\n", 500 "Episode 37/300, Steps: 200, Reward: -200.0, Epsilon: 0.070\n", 501 "Episode 38/300, Steps: 200, Reward: -200.0, Epsilon: 0.069\n", 502 "Episode 39/300, Steps: 200, Reward: -200.0, Epsilon: 0.068\n", 503 "Episode 40/300, Steps: 200, Reward: -200.0, Epsilon: 0.068\n", 504 "Episode 41/300, Steps: 200, Reward: -200.0, Epsilon: 0.067\n", 505 "Episode 42/300, Steps: 200, Reward: -200.0, Epsilon: 0.066\n", 506 "Episode 43/300, Steps: 200, Reward: -200.0, Epsilon: 0.066\n", 507 "Episode 44/300, Steps: 200, Reward: -200.0, Epsilon: 0.065\n", 508 "Episode 45/300, Steps: 200, Reward: -200.0, Epsilon: 0.064\n", 509 "Episode 46/300, Steps: 200, Reward: -200.0, Epsilon: 0.064\n", 510 "Episode 47/300, Steps: 200, Reward: -200.0, Epsilon: 0.063\n", 511 "Episode 48/300, Steps: 200, Reward: -200.0, Epsilon: 0.062\n", 512 "Episode 49/300, Steps: 200, Reward: -200.0, Epsilon: 0.062\n", 513 "Episode 50/300, Steps: 200, Reward: -200.0, Epsilon: 0.061\n", 514 "Episode 51/300, Steps: 200, Reward: -200.0, Epsilon: 0.061\n", 515 "Episode 52/300, Steps: 200, Reward: -200.0, Epsilon: 0.060\n", 516 "Episode 53/300, Steps: 200, Reward: -200.0, Epsilon: 0.059\n", 517 "Episode 54/300, Steps: 200, Reward: -200.0, Epsilon: 0.059\n", 518 "Episode 55/300, Steps: 200, Reward: -200.0, Epsilon: 0.058\n", 519 "Episode 56/300, Steps: 200, Reward: -200.0, Epsilon: 0.058\n", 520 "Episode 57/300, Steps: 200, Reward: -200.0, Epsilon: 0.057\n", 521 "Episode 58/300, Steps: 200, Reward: -200.0, Epsilon: 0.056\n", 522 "Episode 59/300, Steps: 200, Reward: -200.0, Epsilon: 0.056\n", 523 "Episode 60/300, Steps: 200, Reward: -200.0, Epsilon: 0.055\n", 524 "Episode 61/300, Steps: 200, Reward: -200.0, Epsilon: 0.055\n", 525 "Episode 62/300, Steps: 200, Reward: -200.0, Epsilon: 0.054\n", 526 "Episode 63/300, Steps: 200, Reward: -200.0, Epsilon: 0.054\n", 527 "Episode 64/300, Steps: 200, Reward: -200.0, Epsilon: 0.053\n", 528 "Episode 65/300, Steps: 200, Reward: -200.0, Epsilon: 0.053\n", 529 "Episode 66/300, Steps: 200, Reward: -200.0, Epsilon: 0.052\n", 530 "Episode 67/300, Steps: 200, Reward: -200.0, Epsilon: 0.052\n", 531 "Episode 68/300, Steps: 200, Reward: -200.0, Epsilon: 0.051\n", 532 "Episode 69/300, Steps: 200, Reward: -200.0, Epsilon: 0.050\n", 533 "Episode 70/300, Steps: 200, Reward: -200.0, Epsilon: 0.050\n", 534 "Episode 71/300, Steps: 200, Reward: -200.0, Epsilon: 0.049\n", 535 "Episode 72/300, Steps: 200, Reward: -200.0, Epsilon: 0.049\n", 536 "Episode 73/300, Steps: 200, Reward: -200.0, Epsilon: 0.048\n", 537 "Episode 74/300, Steps: 200, Reward: -200.0, Epsilon: 0.048\n", 538 "Episode 75/300, Steps: 200, Reward: -200.0, Epsilon: 0.048\n", 539 "Episode 76/300, Steps: 200, Reward: -200.0, Epsilon: 0.047\n", 540 "Episode 77/300, Steps: 200, Reward: -200.0, Epsilon: 0.047\n", 541 "Episode 78/300, Steps: 200, Reward: -200.0, Epsilon: 0.046\n", 542 "Episode 79/300, Steps: 200, Reward: -200.0, Epsilon: 0.046\n", 543 "Episode 80/300, Steps: 200, Reward: -200.0, Epsilon: 0.045\n", 544 "Episode 81/300, Steps: 200, Reward: -200.0, Epsilon: 0.045\n", 545 "Episode 82/300, Steps: 200, Reward: -200.0, Epsilon: 0.044\n", 546 "Episode 83/300, Steps: 200, Reward: -200.0, Epsilon: 0.044\n", 547 "Episode 84/300, Steps: 200, Reward: -200.0, Epsilon: 0.043\n", 548 "Episode 85/300, Steps: 200, Reward: -200.0, Epsilon: 0.043\n", 549 "Episode 86/300, Steps: 200, Reward: -200.0, Epsilon: 0.043\n", 550 "Episode 87/300, Steps: 200, Reward: -200.0, Epsilon: 0.042\n", 551 "Episode 88/300, Steps: 200, Reward: -200.0, Epsilon: 0.042\n", 552 "Episode 89/300, Steps: 200, Reward: -200.0, Epsilon: 0.041\n", 553 "Episode 90/300, Steps: 200, Reward: -200.0, Epsilon: 0.041\n", 554 "Episode 91/300, Steps: 200, Reward: -200.0, Epsilon: 0.040\n", 555 "Episode 92/300, Steps: 200, Reward: -200.0, Epsilon: 0.040\n", 556 "Episode 93/300, Steps: 200, Reward: -200.0, Epsilon: 0.040\n", 557 "Episode 94/300, Steps: 200, Reward: -200.0, Epsilon: 0.039\n", 558 "Episode 95/300, Steps: 200, Reward: -200.0, Epsilon: 0.039\n", 559 "Episode 96/300, Steps: 200, Reward: -200.0, Epsilon: 0.038\n", 560 "Episode 97/300, Steps: 200, Reward: -200.0, Epsilon: 0.038\n", 561 "Episode 98/300, Steps: 200, Reward: -200.0, Epsilon: 0.038\n", 562 "Episode 99/300, Steps: 200, Reward: -200.0, Epsilon: 0.037\n", 563 "Episode 100/300, Steps: 200, Reward: -200.0, Epsilon: 0.037\n", 564 "Episode 101/300, Steps: 200, Reward: -200.0, Epsilon: 0.037\n", 565 "Episode 102/300, Steps: 200, Reward: -200.0, Epsilon: 0.036\n", 566 "Episode 103/300, Steps: 200, Reward: -200.0, Epsilon: 0.036\n", 567 "Episode 104/300, Steps: 200, Reward: -200.0, Epsilon: 0.036\n", 568 "Episode 105/300, Steps: 200, Reward: -200.0, Epsilon: 0.035\n", 569 "Episode 106/300, Steps: 200, Reward: -200.0, Epsilon: 0.035\n", 570 "Episode 107/300, Steps: 200, Reward: -200.0, Epsilon: 0.034\n", 571 "Episode 108/300, Steps: 200, Reward: -200.0, Epsilon: 0.034\n", 572 "Episode 109/300, Steps: 151, Reward: -151.0, Epsilon: 0.034\n", 573 "Episode 110/300, Steps: 200, Reward: -200.0, Epsilon: 0.033\n", 574 "Episode 111/300, Steps: 200, Reward: -200.0, Epsilon: 0.033\n", 575 "Episode 112/300, Steps: 200, Reward: -200.0, Epsilon: 0.033\n", 576 "Episode 113/300, Steps: 200, Reward: -200.0, Epsilon: 0.032\n", 577 "Episode 114/300, Steps: 200, Reward: -200.0, Epsilon: 0.032\n", 578 "Episode 115/300, Steps: 200, Reward: -200.0, Epsilon: 0.032\n", 579 "Episode 116/300, Steps: 200, Reward: -200.0, Epsilon: 0.031\n", 580 "Episode 117/300, Steps: 200, Reward: -200.0, Epsilon: 0.031\n", 581 "Episode 118/300, Steps: 200, Reward: -200.0, Epsilon: 0.031\n", 582 "Episode 119/300, Steps: 200, Reward: -200.0, Epsilon: 0.031\n", 583 "Episode 120/300, Steps: 200, Reward: -200.0, Epsilon: 0.030\n", 584 "Episode 121/300, Steps: 200, Reward: -200.0, Epsilon: 0.030\n", 585 "Episode 122/300, Steps: 200, Reward: -200.0, Epsilon: 0.030\n", 586 "Episode 123/300, Steps: 186, Reward: -186.0, Epsilon: 0.029\n", 587 "Episode 124/300, Steps: 200, Reward: -200.0, Epsilon: 0.029\n", 588 "Episode 125/300, Steps: 200, Reward: -200.0, Epsilon: 0.029\n", 589 "Episode 126/300, Steps: 147, Reward: -147.0, Epsilon: 0.028\n", 590 "Episode 127/300, Steps: 143, Reward: -143.0, Epsilon: 0.028\n", 591 "Episode 128/300, Steps: 200, Reward: -200.0, Epsilon: 0.028\n", 592 "Episode 129/300, Steps: 200, Reward: -200.0, Epsilon: 0.028\n", 593 "Episode 130/300, Steps: 200, Reward: -200.0, Epsilon: 0.027\n", 594 "Episode 131/300, Steps: 200, Reward: -200.0, Epsilon: 0.027\n", 595 "Episode 132/300, Steps: 200, Reward: -200.0, Epsilon: 0.027\n", 596 "Episode 133/300, Steps: 200, Reward: -200.0, Epsilon: 0.027\n", 597 "Episode 134/300, Steps: 200, Reward: -200.0, Epsilon: 0.026\n", 598 "Episode 135/300, Steps: 200, Reward: -200.0, Epsilon: 0.026\n", 599 "Episode 136/300, Steps: 200, Reward: -200.0, Epsilon: 0.026\n", 600 "Episode 137/300, Steps: 200, Reward: -200.0, Epsilon: 0.025\n", 601 "Episode 138/300, Steps: 200, Reward: -200.0, Epsilon: 0.025\n", 602 "Episode 139/300, Steps: 200, Reward: -200.0, Epsilon: 0.025\n", 603 "Episode 140/300, Steps: 128, Reward: -128.0, Epsilon: 0.025\n", 604 "Episode 141/300, Steps: 200, Reward: -200.0, Epsilon: 0.024\n", 605 "Episode 142/300, Steps: 200, Reward: -200.0, Epsilon: 0.024\n", 606 "Episode 143/300, Steps: 200, Reward: -200.0, Epsilon: 0.024\n", 607 "Episode 144/300, Steps: 200, Reward: -200.0, Epsilon: 0.024\n", 608 "Episode 145/300, Steps: 200, Reward: -200.0, Epsilon: 0.024\n", 609 "Episode 146/300, Steps: 200, Reward: -200.0, Epsilon: 0.023\n", 610 "Episode 147/300, Steps: 200, Reward: -200.0, Epsilon: 0.023\n", 611 "Episode 148/300, Steps: 200, Reward: -200.0, Epsilon: 0.023\n", 612 "Episode 149/300, Steps: 200, Reward: -200.0, Epsilon: 0.023\n", 613 "Episode 150/300, Steps: 200, Reward: -200.0, Epsilon: 0.022\n", 614 "Episode 151/300, Steps: 200, Reward: -200.0, Epsilon: 0.022\n", 615 "Episode 152/300, Steps: 200, Reward: -200.0, Epsilon: 0.022\n", 616 "Episode 153/300, Steps: 192, Reward: -192.0, Epsilon: 0.022\n", 617 "Episode 154/300, Steps: 200, Reward: -200.0, Epsilon: 0.021\n", 618 "Episode 155/300, Steps: 175, Reward: -175.0, Epsilon: 0.021\n", 619 "Episode 156/300, Steps: 187, Reward: -187.0, Epsilon: 0.021\n", 620 "Episode 157/300, Steps: 200, Reward: -200.0, Epsilon: 0.021\n", 621 "Episode 158/300, Steps: 200, Reward: -200.0, Epsilon: 0.021\n", 622 "Episode 159/300, Steps: 118, Reward: -118.0, Epsilon: 0.020\n", 623 "Episode 160/300, Steps: 200, Reward: -200.0, Epsilon: 0.020\n", 624 "Episode 161/300, Steps: 200, Reward: -200.0, Epsilon: 0.020\n", 625 "Episode 162/300, Steps: 106, Reward: -106.0, Epsilon: 0.020\n", 626 "Episode 163/300, Steps: 200, Reward: -200.0, Epsilon: 0.020\n", 627 "Episode 164/300, Steps: 200, Reward: -200.0, Epsilon: 0.019\n", 628 "Episode 165/300, Steps: 125, Reward: -125.0, Epsilon: 0.019\n", 629 "Episode 166/300, Steps: 200, Reward: -200.0, Epsilon: 0.019\n", 630 "Episode 167/300, Steps: 200, Reward: -200.0, Epsilon: 0.019\n", 631 "Episode 168/300, Steps: 200, Reward: -200.0, Epsilon: 0.019\n", 632 "Episode 169/300, Steps: 157, Reward: -157.0, Epsilon: 0.018\n", 633 "Episode 170/300, Steps: 200, Reward: -200.0, Epsilon: 0.018\n", 634 "Episode 171/300, Steps: 116, Reward: -116.0, Epsilon: 0.018\n", 635 "Episode 172/300, Steps: 175, Reward: -175.0, Epsilon: 0.018\n", 636 "Episode 173/300, Steps: 200, Reward: -200.0, Epsilon: 0.018\n", 637 "Episode 174/300, Steps: 178, Reward: -178.0, Epsilon: 0.018\n", 638 "Episode 175/300, Steps: 200, Reward: -200.0, Epsilon: 0.017\n", 639 "Episode 176/300, Steps: 154, Reward: -154.0, Epsilon: 0.017\n", 640 "Episode 177/300, Steps: 185, Reward: -185.0, Epsilon: 0.017\n", 641 "Episode 178/300, Steps: 129, Reward: -129.0, Epsilon: 0.017\n", 642 "Episode 179/300, Steps: 200, Reward: -200.0, Epsilon: 0.017\n", 643 "Episode 180/300, Steps: 200, Reward: -200.0, Epsilon: 0.017\n", 644 "Episode 181/300, Steps: 164, Reward: -164.0, Epsilon: 0.016\n", 645 "Episode 182/300, Steps: 200, Reward: -200.0, Epsilon: 0.016\n", 646 "Episode 183/300, Steps: 200, Reward: -200.0, Epsilon: 0.016\n", 647 "Episode 184/300, Steps: 149, Reward: -149.0, Epsilon: 0.016\n", 648 "Episode 185/300, Steps: 178, Reward: -178.0, Epsilon: 0.016\n", 649 "Episode 186/300, Steps: 190, Reward: -190.0, Epsilon: 0.016\n", 650 "Episode 187/300, Steps: 200, Reward: -200.0, Epsilon: 0.015\n", 651 "Episode 188/300, Steps: 149, Reward: -149.0, Epsilon: 0.015\n", 652 "Episode 189/300, Steps: 169, Reward: -169.0, Epsilon: 0.015\n", 653 "Episode 190/300, Steps: 142, Reward: -142.0, Epsilon: 0.015\n", 654 "Episode 191/300, Steps: 200, Reward: -200.0, Epsilon: 0.015\n", 655 "Episode 192/300, Steps: 200, Reward: -200.0, Epsilon: 0.015\n", 656 "Episode 193/300, Steps: 200, Reward: -200.0, Epsilon: 0.015\n", 657 "Episode 194/300, Steps: 104, Reward: -104.0, Epsilon: 0.014\n", 658 "Episode 195/300, Steps: 200, Reward: -200.0, Epsilon: 0.014\n", 659 "Episode 196/300, Steps: 95, Reward: -95.0, Epsilon: 0.014\n", 660 "Episode 197/300, Steps: 200, Reward: -200.0, Epsilon: 0.014\n", 661 "Episode 198/300, Steps: 148, Reward: -148.0, Epsilon: 0.014\n", 662 "Episode 199/300, Steps: 143, Reward: -143.0, Epsilon: 0.014\n", 663 "Episode 200/300, Steps: 200, Reward: -200.0, Epsilon: 0.014\n", 664 "Episode 201/300, Steps: 200, Reward: -200.0, Epsilon: 0.013\n", 665 "Episode 202/300, Steps: 107, Reward: -107.0, Epsilon: 0.013\n", 666 "Episode 203/300, Steps: 197, Reward: -197.0, Epsilon: 0.013\n", 667 "Episode 204/300, Steps: 200, Reward: -200.0, Epsilon: 0.013\n", 668 "Episode 205/300, Steps: 200, Reward: -200.0, Epsilon: 0.013\n", 669 "Episode 206/300, Steps: 200, Reward: -200.0, Epsilon: 0.013\n", 670 "Episode 207/300, Steps: 138, Reward: -138.0, Epsilon: 0.013\n", 671 "Episode 208/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 672 "Episode 209/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 673 "Episode 210/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 674 "Episode 211/300, Steps: 161, Reward: -161.0, Epsilon: 0.012\n", 675 "Episode 212/300, Steps: 137, Reward: -137.0, Epsilon: 0.012\n", 676 "Episode 213/300, Steps: 194, Reward: -194.0, Epsilon: 0.012\n", 677 "Episode 214/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 678 "Episode 215/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 679 "Episode 216/300, Steps: 200, Reward: -200.0, Epsilon: 0.012\n", 680 "Episode 217/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 681 "Episode 218/300, Steps: 182, Reward: -182.0, Epsilon: 0.011\n", 682 "Episode 219/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 683 "Episode 220/300, Steps: 168, Reward: -168.0, Epsilon: 0.011\n", 684 "Episode 221/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 685 "Episode 222/300, Steps: 142, Reward: -142.0, Epsilon: 0.011\n", 686 "Episode 223/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 687 "Episode 224/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 688 "Episode 225/300, Steps: 200, Reward: -200.0, Epsilon: 0.011\n", 689 "Episode 226/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 690 "Episode 227/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 691 "Episode 228/300, Steps: 173, Reward: -173.0, Epsilon: 0.010\n", 692 "Episode 229/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 693 "Episode 230/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 694 "Episode 231/300, Steps: 131, Reward: -131.0, Epsilon: 0.010\n", 695 "Episode 232/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 696 "Episode 233/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 697 "Episode 234/300, Steps: 181, Reward: -181.0, Epsilon: 0.010\n", 698 "Episode 235/300, Steps: 120, Reward: -120.0, Epsilon: 0.010\n", 699 "Episode 236/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 700 "Episode 237/300, Steps: 151, Reward: -151.0, Epsilon: 0.010\n", 701 "Episode 238/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 702 "Episode 239/300, Steps: 172, Reward: -172.0, Epsilon: 0.010\n", 703 "Episode 240/300, Steps: 156, Reward: -156.0, Epsilon: 0.010\n", 704 "Episode 241/300, Steps: 112, Reward: -112.0, Epsilon: 0.010\n", 705 "Episode 242/300, Steps: 180, Reward: -180.0, Epsilon: 0.010\n", 706 "Episode 243/300, Steps: 175, Reward: -175.0, Epsilon: 0.010\n", 707 "Episode 244/300, Steps: 195, Reward: -195.0, Epsilon: 0.010\n", 708 "Episode 245/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 709 "Episode 246/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 710 "Episode 247/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 711 "Episode 248/300, Steps: 117, Reward: -117.0, Epsilon: 0.010\n", 712 "Episode 249/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 713 "Episode 250/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 714 "Episode 251/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 715 "Episode 252/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 716 "Episode 253/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 717 "Episode 254/300, Steps: 163, Reward: -163.0, Epsilon: 0.010\n", 718 "Episode 255/300, Steps: 145, Reward: -145.0, Epsilon: 0.010\n", 719 "Episode 256/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 720 "Episode 257/300, Steps: 141, Reward: -141.0, Epsilon: 0.010\n", 721 "Episode 258/300, Steps: 160, Reward: -160.0, Epsilon: 0.010\n", 722 "Episode 259/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 723 "Episode 260/300, Steps: 107, Reward: -107.0, Epsilon: 0.010\n", 724 "Episode 261/300, Steps: 175, Reward: -175.0, Epsilon: 0.010\n", 725 "Episode 262/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 726 "Episode 263/300, Steps: 171, Reward: -171.0, Epsilon: 0.010\n", 727 "Episode 264/300, Steps: 180, Reward: -180.0, Epsilon: 0.010\n", 728 "Episode 265/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 729 "Episode 266/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 730 "Episode 267/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 731 "Episode 268/300, Steps: 121, Reward: -121.0, Epsilon: 0.010\n", 732 "Episode 269/300, Steps: 191, Reward: -191.0, Epsilon: 0.010\n", 733 "Episode 270/300, Steps: 153, Reward: -153.0, Epsilon: 0.010\n", 734 "Episode 271/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 735 "Episode 272/300, Steps: 190, Reward: -190.0, Epsilon: 0.010\n", 736 "Episode 273/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 737 "Episode 274/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 738 "Episode 275/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 739 "Episode 276/300, Steps: 174, Reward: -174.0, Epsilon: 0.010\n", 740 "Episode 277/300, Steps: 120, Reward: -120.0, Epsilon: 0.010\n", 741 "Episode 278/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 742 "Episode 279/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 743 "Episode 280/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 744 "Episode 281/300, Steps: 180, Reward: -180.0, Epsilon: 0.010\n", 745 "Episode 282/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 746 "Episode 283/300, Steps: 160, Reward: -160.0, Epsilon: 0.010\n", 747 "Episode 284/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 748 "Episode 285/300, Steps: 187, Reward: -187.0, Epsilon: 0.010\n", 749 "Episode 286/300, Steps: 153, Reward: -153.0, Epsilon: 0.010\n", 750 "Episode 287/300, Steps: 150, Reward: -150.0, Epsilon: 0.010\n", 751 "Episode 288/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 752 "Episode 289/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 753 "Episode 290/300, Steps: 166, Reward: -166.0, Epsilon: 0.010\n", 754 "Episode 291/300, Steps: 125, Reward: -125.0, Epsilon: 0.010\n", 755 "Episode 292/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 756 "Episode 293/300, Steps: 197, Reward: -197.0, Epsilon: 0.010\n", 757 "Episode 294/300, Steps: 140, Reward: -140.0, Epsilon: 0.010\n", 758 "Episode 295/300, Steps: 179, Reward: -179.0, Epsilon: 0.010\n", 759 "Episode 296/300, Steps: 116, Reward: -116.0, Epsilon: 0.010\n", 760 "Episode 297/300, Steps: 159, Reward: -159.0, Epsilon: 0.010\n", 761 "Episode 298/300, Steps: 200, Reward: -200.0, Epsilon: 0.010\n", 762 "Episode 299/300, Steps: 172, Reward: -172.0, Epsilon: 0.010\n", 763 "Episode 300/300, Steps: 193, Reward: -193.0, Epsilon: 0.010\n" 764 ] 765 } 766 ] 767 }, 768 { 769 "cell_type": "code", 770 "source": [ 771 "# Plot rewards\n", 772 "plt.plot(rewards_history)\n", 773 "plt.xlabel(\"Episodes\")\n", 774 "plt.ylabel(\"Total Reward\")\n", 775 "plt.title(\"Training Performance\")\n", 776 "plt.grid(True)\n", 777 "plt.show()" 778 ], 779 "metadata": { 780 "id": "Yvzo3iueyISN", 781 "colab": { 782 "base_uri": "https://localhost:8080/", 783 "height": 472 784 }, 785 "outputId": "c9564650-c4a6-4ccd-bd4c-10eb035421a6" 786 }, 787 "execution_count": null, 788 "outputs": [ 789 { 790 "output_type": "display_data", 791 "data": { 792 "text/plain": [ 793 "<Figure size 640x480 with 1 Axes>" 794 ], 795 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAHHCAYAAAC1G/yyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADWHUlEQVR4nOy9eZwU1bn//6nq7plh2MVhMaCCKy64J8FEQSNgxpvEe/P13mz3J5HEq1/9xjW5Gg0uiTFq1JhNzc2CMcao0ZhrRAWjqCiugAuLiggo+z4Ds/RWvz+qT9VZa+mu7ukZnvfrBd1dyzmnTtX0efpZLcdxHBAEQRAEQRAAALunB0AQBEEQBFFPkHBEEARBEATBQcIRQRAEQRAEBwlHBEEQBEEQHCQcEQRBEARBcJBwRBAEQRAEwUHCEUEQBEEQBAcJRwRBEARBEBwkHBEEQRAEQXCQcEQQhJbp06dj//33L+vca6+9FpZlJTugOmTXrl341re+hZEjR8KyLFx88cU9PSSCIBKAhCOC6GVYlhXp37x583p6qD3C9OnThXkYNGgQjjrqKNx6663o7u5OtK8f//jHmDVrFs4//3zce++9+M///M9E2ycIomewqLYaQfQu/vSnPwmf//jHP2Lu3Lm49957he1TpkzBiBEjyu4nl8uhWCyisbEx9rn5fB75fB5NTU1l918u06dPx1/+8hf89re/BQDs2LEDDz/8MObNm4f/+I//wF/+8pfE+vr0pz+NdDqN+fPnJ9YmQRA9DwlHBNHLufDCC/GrX/0KYX/KHR0daG5urtGoeo7p06fjr3/9K3bt2uVtKxaL+NSnPoXXX38da9euxT777FN2+8ViEdlsFk1NTRg3bhwOO+ww/OMf/0hi6Mjn8ygWi2hoaEikPYIgyoPMagTRB5k8eTKOOOIIvPHGGzj55JPR3NyM73//+wCAv//97zjjjDOwzz77oLGxEQcccAB++MMfolAoCG3IPkerVq2CZVn46U9/it/85jc44IAD0NjYiBNOOAGvvfaacK7O58iyLFx44YV49NFHccQRR6CxsRGHH344nnzySWX88+bNw/HHH4+mpiYccMABuPvuuyvyY7JtG5MnT/auAwC6u7txzTXX4MADD0RjYyPGjBmD733ve4rpjY37vvvuw+GHH47GxkY8+eSTsCwLH374IR5//HHPhMfa3rRpE2bMmIERI0agqakJRx11FO655x6hXX4+f/azn3nzuXTpUu9a33vvPXzjG9/A4MGD0dLSgh/84AdwHAcfffQRvvSlL2HQoEEYOXIkbr31VqHtbDaLmTNn4rjjjsPgwYPRv39/nHTSSXj22WeNYwi7pwCwfPly/Pu//ztaWlrQr18/HHLIIbjqqquEY9auXYtzzjkHI0aM8O7x73//+7i3jCB6lHRPD4AgiOqwdetWfP7zn8dXvvIVfOMb3/BMbLNmzcKAAQNw6aWXYsCAAXjmmWcwc+ZMtLW14ZZbbglt989//jPa29vxX//1X7AsCzfffDP+7d/+DStXrkQmkwk8d/78+XjkkUfwf//v/8XAgQPx85//HF/+8pexZs0aDBs2DACwaNEinH766Rg1ahSuu+46FAoFXH/99WhpaaloPj744AMAwLBhw1AsFvHFL34R8+fPx7nnnovx48fj7bffxu2334733nsPjz76qHDuM888gwcffBAXXngh9t57b4waNQr33nsvLrnkEowePRqXXXYZAKClpQWdnZ2YPHkyVqxYgQsvvBBjx47FQw89hOnTp2PHjh246KKLhLb/8Ic/oKurC+eeey4aGxux1157efv+4z/+A+PHj8dPfvITPP744/jRj36EvfbaC3fffTdOPfVU3HTTTbjvvvtw+eWX44QTTsDJJ58MAGhra8Nvf/tbfPWrX8W3v/1ttLe343e/+x2mTZuGV199FUcffbQwhij39K233sJJJ52ETCaDc889F/vvvz8++OADPPbYY7jhhhsAABs3bsSnP/1pT6BsaWnBE088gRkzZqCtrY0c1oneg0MQRK/mggsucOQ/5UmTJjkAnLvuuks5vqOjQ9n2X//1X05zc7PT1dXlbTv77LOd/fbbz/v84YcfOgCcYcOGOdu2bfO2//3vf3cAOI899pi37ZprrlHGBMBpaGhwVqxY4W178803HQDOL37xC2/bF77wBae5udlZu3att+3999930um00qaOs88+2+nfv7+zefNmZ/Pmzc6KFSucH//4x45lWc6ECRMcx3Gce++917Ft23nhhReEc++66y4HgPPiiy8K47Zt21myZInS13777eecccYZwraf/exnDgDnT3/6k7ctm806EydOdAYMGOC0tbU5juPP56BBg5xNmzYJbbD5O/fcc71t+XzeGT16tGNZlvOTn/zE2759+3anX79+ztlnny0c293dLbS5fft2Z8SIEc4555zjbYtzT08++WRn4MCBzurVq4V2i8Wi937GjBnOqFGjnC1btgjHfOUrX3EGDx6sffYIoh4hsxpB9FEaGxvxzW9+U9ner18/7317ezu2bNmCk046CR0dHVi+fHlou//xH/+BoUOHep9POukkAMDKlStDzz3ttNNwwAEHeJ8nTJiAQYMGeecWCgU8/fTTOPPMMwW/oAMPPBCf//znQ9tn7N69Gy0tLWhpacGBBx6I73//+5g4cSL+9re/AQAeeughjB8/Hoceeii2bNni/Tv11FMBQDE/TZo0CYcddlikvmfPno2RI0fiq1/9qrctk8ngO9/5Dnbt2oXnnntOOP7LX/6yUSv2rW99y3ufSqVw/PHHw3EczJgxw9s+ZMgQHHLIIcL8p1Ipz2+pWCxi27ZtyOfzOP7447Fw4UKln7B7unnzZjz//PM455xzsO+++wrnMlOn4zh4+OGH8YUvfAGO4wjzOm3aNOzcuVPbN0HUI2RWI4g+yic+8QmtY++SJUtw9dVX45lnnkFbW5uwb+fOnaHtyosjW1S3b98e+1x2Pjt306ZN6OzsxIEHHqgcp9tmoqmpCY899hgAV0gcO3YsRo8e7e1///33sWzZMqNQsmnTJuHz2LFjI/e9evVqHHTQQbBt8bfn+PHjvf1R25bna/DgwWhqasLee++tbN+6dauw7Z577sGtt96K5cuXI5fLBfYXdk+ZkHTEEUcYx7p582bs2LEDv/nNb/Cb3/xGe4w8rwRRr5BwRBB9FF5DxNixYwcmTZqEQYMG4frrr8cBBxyApqYmLFy4EP/93/+NYrEY2m4qldJudyIEvlZybhxSqRROO+004/5isYgjjzwSt912m3b/mDFjhM+6uUyKoLZ18xVlDv/0pz9h+vTpOPPMM/Hd734Xw4cPRyqVwo033uj5XsVtMwz27HzjG9/A2WefrT1mwoQJkdsjiJ6EhCOC2IOYN28etm7dikceecRz3gWADz/8sAdH5TN8+HA0NTVhxYoVyj7dtnI54IAD8Oabb+Jzn/tc4pm899tvP7z11lsoFouC9oiZLPfbb79E+9Px17/+FePGjcMjjzwiXN8111xTVnvjxo0DALzzzjvGY1paWjBw4EAUCoVAwZQgegPkc0QQexBMQ8BrBLLZLH7961/31JAEmMbn0Ucfxbp167ztK1aswBNPPJFYP//+7/+OtWvX4n/+53+UfZ2dndi9e3fZbbe2tmLDhg144IEHvG35fB6/+MUvMGDAAEyaNKnstqOiu8+vvPIKFixYUFZ7LS0tOPnkk/H73/8ea9asEfaxPlKpFL785S/j4Ycf1gpRmzdvLqtvgugJSHNEEHsQJ554IoYOHYqzzz4b3/nOd2BZFu69997EzVqVcO2112LOnDn4zGc+g/PPPx+FQgG//OUvccQRR2Dx4sWJ9PGf//mfePDBB3Heeefh2WefxWc+8xkUCgUsX74cDz74IJ566ikcf/zxZbV97rnn4u6778b06dPxxhtvYP/998df//pXvPjii/jZz36GgQMHJnINQfzLv/wLHnnkEfzrv/4rzjjjDHz44Ye46667cNhhhwnJMePw85//HJ/97Gdx7LHH4txzz8XYsWOxatUqPP744959+clPfoJnn30Wn/rUp/Dtb38bhx12GLZt24aFCxfi6aefxrZt2xK8SoKoHiQcEcQexLBhw/CPf/wDl112Ga6++moMHToU3/jGN/C5z30O06ZN6+nhAQCOO+44PPHEE7j88svxgx/8AGPGjMH111+PZcuWRYqmi4Jt23j00Udx++23449//CP+9re/obm5GePGjcNFF12Egw8+uOy2+/Xrh3nz5uGKK67APffcg7a2NhxyyCH4wx/+gOnTpycy/jCmT5+ODRs24O6778ZTTz2Fww47DH/605/w0EMPlV1z76ijjsLLL7+MH/zgB7jzzjvR1dWF/fbbD//+7//uHTNixAi8+uqruP766/HII4/g17/+NYYNG4bDDz8cN910U0JXRxDVh8qHEATRKzjzzDOxZMkSvP/++z09FIIg+jjkc0QQRN3R2dkpfH7//fcxe/ZsrwQIQRBENSHNEUEQdceoUaMwffp0jBs3DqtXr8add96J7u5uLFq0CAcddFBPD48giD4O+RwRBFF3nH766bj//vuxYcMGNDY2YuLEifjxj39MghFBEDWBNEcEQRAEQRAc5HNEEARBEATBQcIRQRAEQRAEB/kcxaRYLGLdunUYOHBg4mUHCIIgCIKoDo7joL29Hfvss49SGFqGhKOYrFu3TilKSRAEQRBE7+Cjjz7C6NGjA48h4SgmLPX/Rx99hEGDBiXadi6Xw5w5czB16lRkMplE2+5r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\n" 796 }, 797 "metadata": {} 798 } 799 ] 800 }, 801 { 802 "cell_type": "markdown", 803 "source": [ 804 "**Results**\n", 805 "\n", 806 "The training performance indicates that the agent starts with poor rewards around -200, showing no success in the early episodes as it explores the environment. Around episode 100, the agent begins to show improvement, with rewards fluctuating and occasionally exceeding -150. Around episode 200, some progress is made, and the agent achieves higher rewards (closer to -100) in some episodes, but overall it is still quite inconsistent. This means that the agent is learning and improving but has not fully converged on an optimal policy. Additional training, fine-tuning of hyperparameters, or adjustments to the exploration strategy could help stabilize and improve its performance further.\n", 807 "\n", 808 "\n" 809 ], 810 "metadata": { 811 "id": "R9XZ5zqr1sW1" 812 } 813 }, 814 { 815 "cell_type": "markdown", 816 "source": [ 817 "# 5. Evaluation" 818 ], 819 "metadata": { 820 "id": "Q2A8uo0ovX5Q" 821 } 822 }, 823 { 824 "cell_type": "markdown", 825 "source": [ 826 "The agent is learning, as indicated by our plot, and we managed to reduce the amount of catastrophic forgetting by a lot.\n", 827 "\n", 828 "**Reflections**\n", 829 "\n", 830 "But, we are quite disappointed with our results. We underestimated the time required for training, not leaving us enough time to fine tune our hyper parameters, or accurately display results. We did however see indications of learning, and managed to improve it from our starting point.\n", 831 "\n", 832 "**Possible Improvemens**\n", 833 "\n", 834 "We think its possible to improve the model by furher experimenting with the hyper parameters, or maybe implementing double Q-learning to maybe get a more stable learning process (Lecture Q). As we also did not see the model fully converge, we think letting it run for more episodes would also produce a better agent.\n", 835 "\n", 836 "To further test the agent, producing more plots, such as a clearly showing the epsilon value over episodes, how the learning rate changes would be benefitial. Perhaps also showing some screenshots from the game to give the reader a better understanding could be helpful, but here we ran into some trouble with not finding correct documentation in time for the older version of gym." 837 ], 838 "metadata": { 839 "id": "7fCDUpb5-8KN" 840 } 841 } 842 ], 843 "metadata": { 844 "accelerator": "GPU", 845 "colab": { 846 "gpuType": "T4", 847 "provenance": [], 848 "include_colab_link": true 849 }, 850 "kernelspec": { 851 "display_name": "Python 3", 852 "name": "python3" 853 }, 854 "language_info": { 855 "name": "python" 856 } 857 }, 858 "nbformat": 4, 859 "nbformat_minor": 0 860 }