{ "cells": [ { "cell_type": "markdown", "id": "e646de0c-250a-455d-98bc-a0bf357b1664", "metadata": {}, "source": [ "\n", "\n", "
\n", "\n", " \n", "
\n", " \"Department\n", "
\n", "\n", " \n", "
\n", "

Deep Reinforcement Learning (CS-866)

\n", "

Department of Computer Science

\n", "

University of the Punjab

\n", "

\n", "

GridWorld with Value Iteration

\n", "

Instructor: Nazar Khan

\n", "
\n", "\n", " \n", " \n", "\n", " \n", "
\n", "
\n" ] }, { "cell_type": "markdown", "id": "1cb38667-bf08-42a5-bf6f-c2523a2c8ce5", "metadata": {}, "source": [ "This notebook introduces students to:\n", "1. Creating and playing with a simple GridWorld environment.\n", "2. Understanding rewards by interacting manually.\n", "3. Comparing two agents:\n", " - **Random agent**: acts randomly.\n", " - **Value Iteration agent**: computes an optimal policy via dynamic programming.\n", "4. Visualizing learning outcomes with heatmaps and side-by-side GIFs.\n" ] }, { "cell_type": "markdown", "id": "11cb714a-5316-4834-87a9-090005fb7058", "metadata": {}, "source": [ "### 1. GridWorld Environment Setup\n", "\n", "- Size 5x5\n", "- Start state (0,0)\n", "- Goal state (4,4)\n", "- Holes at (1,1) and (2,3)" ] }, { "cell_type": "code", "execution_count": 17, "id": "78771d1e-6185-4241-b8c9-ef42fad00622", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import ipywidgets as widgets\n", "import time\n", "from IPython.display import display, clear_output\n", "import matplotlib.pyplot as plt\n", "from matplotlib import colors\n", "from IPython.display import Image\n", "\n", "class GridWorld:\n", " def __init__(self, size=5, reset_break=5, holes=None):\n", " self.size = size\n", " self.reset_break = reset_break\n", " self.start = (0, 0)\n", " self.goal = (size-1, size-1)\n", " self.holes = holes if holes else [(1,1), (2,3)]\n", " self.episode = 0\n", " self.actions = {0: (-1, 0), 1: (1, 0), 2: (0, -1), 3: (0, 1)} # up, down, left, right\n", " self.reset()\n", " \n", " def reset(self):\n", " self.agent_pos = [0, 0]\n", " self.done = False\n", " self.steps = 0\n", " self.total_reward = 0\n", " self.episode += 1\n", " return tuple(self.agent_pos)\n", " \n", " def step(self, action):\n", " if self.done:\n", " return tuple(self.agent_pos), 0, True, {}\n", " \n", " move = self.actions[action]\n", " new_pos = [self.agent_pos[0] + move[0], self.agent_pos[1] + move[1]]\n", "\n", " # stay in bounds\n", " if 0 <= new_pos[0] < self.size and 0 <= new_pos[1] < self.size:\n", " self.agent_pos = new_pos\n", "\n", " state = tuple(self.agent_pos)\n", "\n", " # check terminal conditions\n", " if state == self.goal:\n", " reward, done, info = 10, True, f\"You reached the goal! Resetting in {self.reset_break} seconds.\"\n", " elif state in self.holes:\n", " reward, done, info = -10, True, f\"You fell into a hole! Resetting in {self.reset_break} seconds.\"\n", " else:\n", " reward, done, info = -1, False, \"\"\n", "\n", " self.total_reward += reward\n", " self.done = done\n", " self.steps += 1\n", "\n", " msg = (f\"Episode {self.episode} | Step {self.steps} | \"\n", " f\"Reward {reward:+} | Total Reward {self.total_reward:+}\")\n", " if info:\n", " msg += \" → \" + info\n", "\n", " #return tuple(self.agent_pos), reward, done, {\"msg\": msg}\n", " return state, reward, done, {\"msg\": msg}\n", " \n", " def render_dot_grid(self):\n", " grid = np.full((self.size, self.size), \".\")\n", " # Goal\n", " grid[self.size-1, self.size-1] = \"G\"\n", " # Holes\n", " for (r, c) in self.holes:\n", " grid[r, c] = \"H\"\n", " # Agent (show step number instead of \"A\")\n", " grid[self.agent_pos[0], self.agent_pos[1]] = str(self.steps)\n", " for row in grid:\n", " print(\" \".join(row))\n", "\n", " def render(self, ax=None, title=\"\"):\n", " \"\"\"Draw grid with agent, holes, and goal.\"\"\"\n", " grid = np.zeros((self.size, self.size))\n", " for h in self.holes:\n", " grid[h] = -1\n", " grid[self.goal] = 2\n", " #grid[self.agent_pos[0], self.agent_pos[1]] = 1\n", "\n", " cmap = colors.ListedColormap([\"red\", \"blue\", \"black\", \"green\"])\n", " bounds = [-2, -0.5, 0.5, 1.5, 2.5]\n", " norm = colors.BoundaryNorm(bounds, cmap.N)\n", "\n", " if ax is None:\n", " fig, ax = plt.subplots()\n", " ax.imshow(grid, cmap=cmap, norm=norm)\n", " ax.text(self.agent_pos[1], self.agent_pos[0], str(self.steps),\n", " ha=\"center\", va=\"center\",\n", " color=\"white\", fontsize=12, fontweight=\"bold\")\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " ax.set_title(title)\n", " return ax" ] }, { "cell_type": "markdown", "id": "1f561a55-44e7-4574-8f68-8a90189201da", "metadata": {}, "source": [ "### 2. Manual exploration of the GridWorld" ] }, { "cell_type": "code", "execution_count": 18, "id": "a21c4dc7-c994-43e6-8d6c-84a34fbb5263", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "14bff6fd473a4c0d83bb7fa029559730", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(Button(description='←', style=ButtonStyle()), Button(description='↑', style=ButtonStyle()), But…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "269a77fa0bd94d9f999b510c2277c37c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ---- interactive play ----\n", "env = GridWorld(size=5)\n", "\n", "output = widgets.Output()\n", "\n", "def update_display(message=\"\"):\n", " with output:\n", " clear_output(wait=True)\n", " env.render_dot_grid()\n", " if message:\n", " print(message)\n", "\n", "def make_move(action):\n", " state, reward, done, info = env.step(action)\n", " update_display(info.get(\"msg\", \"\"))\n", " if done:\n", " time.sleep(env.reset_break)\n", " env.reset()\n", " update_display(f\"New Episode {env.episode} started!\")\n", "\n", "# Buttons\n", "btn_up = widgets.Button(description=\"↑\")\n", "btn_down = widgets.Button(description=\"↓\")\n", "btn_left = widgets.Button(description=\"←\")\n", "btn_right = widgets.Button(description=\"→\")\n", "\n", "btn_up.on_click(lambda _: make_move(0))\n", "btn_down.on_click(lambda _: make_move(1))\n", "btn_left.on_click(lambda _: make_move(2))\n", "btn_right.on_click(lambda _: make_move(3))\n", "\n", "controls = widgets.HBox([btn_left, btn_up, btn_down, btn_right])\n", "\n", "display(controls, output)\n", "update_display(\"Start exploring!\")" ] }, { "cell_type": "markdown", "id": "df850d10-481f-4f4b-8de7-6185e926ae9c", "metadata": {}, "source": [ "### 3. Random agent" ] }, { "cell_type": "code", "execution_count": 19, "id": "c16055c2-4934-4e4e-8c71-a6d62a04956a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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lv1eznA6einDc7Gz30YP/Ok+nr31xwwX1qYYns9TGL6LbgP+Gvjh0bobGC6WfX00v5jhgtC03wY+mmQ7wwfW2j3s/xMM37nvYngOvzCHse/JTobnA4aLTjtnWXdBTF/l1H4uyXuAk1tr/s65COOUipr4aa2k3TNOqSjjlIqa9fecyZFt+H2zpIVzx7bW2lG73rqHf4SwlOGKv6SFk93+yyZPa6WijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUypqatIDmC+NTHoIcxLapIeg4jxySkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKs3jzm+HGG2HbNtixA+65By6+eN/s2zilWaxbB2eeCQ8/DF/+Mpx4IlxzDSxfvvD7Nk5pBlNTcOyxw/T558PKlXDnncP80qULv3/jlGbw/PNw9dXD9HXXwec+B6eeChs3whe/uPD7N05pFuvWwf33D9893/3uIdh162D79oXft3FKMzjiCLjhBli2DE4/HQ4/fDhqrloFF1648Ps3TmkGy5bBoYfCc8/BbbfBU0/Bpk3DspNOWvj9v2L+bq003zZtgieegNe+Fm66Ce67D847b1h2yy0Lv3+PnNIMnnkGzjoL1q8fjpQrV8LmzXDJJbB27cLvP63N/JfHk7c0uH3hRzEP/IvvevnKHa21t+x6q0dOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKesX8mRL/8/LCejn9Z/ZXynvBI6dUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadUlHFKRRmnVJRxSkUZp1SUcUpFGadU1NSkB6CXh9AmPYT9jkdOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUipqa9ACkebcqkx7B3Kza/c0eOaWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWi0lqbeWGyFdiy74Yj7ZeOb60dteuNs8YpaXI8rZWKMk6pKOOUijJOqSjjlIr6f9IlXPVsC2prAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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ijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pqKlJD0CvDqFNegg7HbecUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFTU16QFI825VJj2CuVk189VuOaWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWi0lrb+szkcWDtjhuOtFM6pLW2/5ZXbjNOSZPjbq1UlHFKRRmnVJRxSkUZp1TU/wLtEEGMNAZi/AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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tccZnuxH+yfqnzOc2FnDcHLgX7fg7t7N8P3nCeD8fr9Tj/NfwHuAvwLWMoR7QmvtR1vhaWypCxk+SO5gOMy7pS8DoLX2CMNrcCTw96Plqxn2pucwfICtBj5E33ZJzkny9c087rkMh6PLGF6LdX0ZPfBn+nhm6pMMJ9bmMbyehzJ8F10L/A3w2tF1lzOcLPvWaH4BwwmhKWcCH0vyNMMH1lUv8/ifY/jOfTvDa/jVLRj7y1nH+kPYe1n/VQWG99ZKhsPo5cAnW2vf2IqP/RJTZzz1KpTkPcDBrTV/5lyQcUpFbXO/WyttK4xTKso4paI2+4vEyZ5t+NmzpNmzYm1rba/pS1/mt/wXMZz9lzR7stHfcvKwVirKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paLmTXoAW0sjkx7CFglt0kNQce45paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKmrepAewtYQ26SFs0xqZ9BBmbFt5L7jnlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOPU7DrrLLj9dnj+eWgNzj9//bp3vQtuuAEeewyefRbuvBNOPXVyYy3GODW73vQmeOIJWL36peuOPRYOOgiuuQZuvBEOOQQuuwyOP37ux1mQcWp2nXwyHH003HbbS9d9+tNw4IHw3vcOoV5//bB8yZK5HGFZ28zfENKPoRUrNpzfYYfh34cemvuxFOSeUzV88INw5JHw7W/DpZdOejQlGKcm77zz4OKLYeVKOOYYePrpSY+oBA9rNTnJ8L3zzDPhlltg6VJYs2bSoyrDODW7TjsNFi+Gww4b5k88ERYtgquvhsMPH8J84QW49VZYtmy4zn33wWc+M6EB12Gcml2LF8Mpp6yfP/TQ4bJqFey777Bs++2HiKdcf71xAmlt038dO3lzg5vncDiqyr/4PpuyorX25ulLPSEkFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikVZZxSUcYpFWWcUlHGKRVlnFJRxikV5Z8p0Yz8+P11gR9/7jmlooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqyjilooxTKso4paKMUyrKOKWijFMqat6kByBtdRdk0iPYMhdsfLF7Tqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqko45SKMk6pKOOUijJOqSjjlIoyTqmotNY2vTJ5HHhg7oYjvSod0Frba/rCzcYpaXI8rJWKMk6pKOOUijJOqSjjlIr6P59xgzfLL4VuAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Total reward: -21\n" ] } ], "source": [ "import random\n", "def random_policy(state):\n", " return random.choice(list(env.actions.keys()))\n", "\n", "# Run one random episode\n", "state = env.reset()\n", "done = False\n", "while not done:\n", " action = random_policy(state)\n", " state, reward, done, info = env.step(action)\n", " env.render(title=f\"Random move: {action}, Reward={reward}\")\n", " plt.show()\n", "print(\"Total reward:\", env.total_reward)" ] }, { "cell_type": "markdown", "id": "9f15ae0f-d0e7-44f8-bcc2-481edbfa404b", "metadata": {}, "source": [ "### 4. Train an agent using Value Iteration\n", "\n", "```\n", "def value_iteration():\n", " initialize(V) \n", " while not convergence(V):\n", " for s in range(S):\n", " for a in range(A):\n", " for s' in range(S):\n", " Q[s,a] = Q[s,a] + T_a(s,s')(R_a(s,s') + gamma * V[s'])\n", " V[s] = max_a(Q[s,a])\n", " return V\n", "```" ] }, { "cell_type": "code", "execution_count": 20, "id": "451345e5-430e-4395-ab66-19a08ebf45ca", "metadata": {}, "outputs": [], "source": [ "def value_iteration(env, gamma=0.99, theta=1e-5):\n", " \"\"\"\n", " Value Iteration algorithm (structured like textbook pseudocode).\n", "\n", " Args:\n", " env: GridWorld environment with:\n", " - env.size\n", " - env.goal (tuple)\n", " - env.holes (set of tuples)\n", " - env.actions (dict: action -> (dx, dy))\n", " gamma: Discount factor\n", " theta: Convergence threshold\n", "\n", " Returns:\n", " V: dict, state -> value\n", " Q: dict, (state, action) -> value\n", " policy: dict, state -> best action\n", " \"\"\"\n", "\n", " # ------------------------------\n", " # Initialization\n", " # ------------------------------\n", " states = [(i, j) for i in range(env.size) for j in range(env.size)]\n", " actions = list(env.actions.keys())\n", "\n", " # Initialize V(s) = 0 for all states\n", " V = {s: 0.0 for s in states}\n", "\n", " # Initialize Q(s,a) = 0 for all state-action pairs\n", " Q = {(s, a): 0.0 for s in states for a in actions}\n", "\n", " # Transition function T(s,a) -> s' (deterministic)\n", " def T(s, a):\n", " dx, dy = env.actions[a]\n", " new_pos = (s[0] + dx, s[1] + dy)\n", " # Stay in place if outside bounds\n", " if not (0 <= new_pos[0] < env.size and 0 <= new_pos[1] < env.size):\n", " new_pos = s\n", " return new_pos\n", "\n", " # Reward function R(s,a,s') (handcrafted)\n", " def R(s, a, s_next):\n", " if s_next == env.goal:\n", " return 10\n", " elif s_next in env.holes:\n", " return -10\n", " else:\n", " return -1\n", "\n", " # ------------------------------\n", " # Iteration until convergence\n", " # ------------------------------\n", " while True:\n", " delta = 0\n", " for s in states:\n", " if s == env.goal or s in env.holes:\n", " continue # terminal states not updated\n", "\n", " v = V[s] # old value\n", " q_values = []\n", "\n", " for a in actions:\n", " s_next = T(s, a)\n", " r = R(s, a, s_next)\n", " # deterministic transition → only one s'\n", " Q[(s, a)] = r + gamma * V[s_next]\n", " q_values.append(Q[(s, a)])\n", "\n", " # Bellman optimality update\n", " V[s] = max(q_values)\n", "\n", " delta = max(delta, abs(v - V[s]))\n", "\n", " # Check convergence\n", " if delta < theta:\n", " break\n", "\n", " # ------------------------------\n", " # Extract greedy policy\n", " # ------------------------------\n", " policy = {}\n", " for s in states:\n", " if s == env.goal or s in env.holes:\n", " continue\n", " # argmax_a Q[s,a]\n", " best_a = max(actions, key=lambda a: Q[(s, a)])\n", " policy[s] = best_a\n", "\n", " return V, Q, policy\n" ] }, { "cell_type": "code", "execution_count": 21, "id": "4cdf7a6e-cc72-4186-981c-1d0daefd677c", "metadata": {}, "outputs": [], "source": [ "def value_iteration_compact(env, gamma=0.99, theta=1e-5):\n", " \"\"\"\n", " Value Iteration algorithm (compact version).\n", " Does not save an explicit Q-table. Instead, it\n", " takes the max over actions and saves directly\n", " in V.\n", "\n", " WE ARE NOT USING THIS FUNCTION IN THIS NOTEBOOK.\n", "\n", " Args:\n", " env: GridWorld environment with:\n", " - env.size\n", " - env.goal (tuple)\n", " - env.holes (set of tuples)\n", " - env.actions (dict: action -> (dx, dy))\n", " gamma: Discount factor\n", " theta: Convergence threshold\n", "\n", " Returns:\n", " V: dict, state -> value\n", " policy: dict, state -> best action\n", " \"\"\"\n", " V = { (i,j): 0 for i in range(env.size) for j in range(env.size) }\n", " policy = {}\n", "\n", " while True:\n", " delta = 0\n", " for state in V:\n", " if state == env.goal or state in env.holes:\n", " continue\n", "\n", " v = V[state]\n", " action_values = []\n", " for a, move in env.actions.items():\n", " new_pos = (state[0]+move[0], state[1]+move[1])\n", " if not (0 <= new_pos[0] < env.size and 0 <= new_pos[1] < env.size):\n", " new_pos = state\n", " if new_pos == env.goal:\n", " r, done = 10, True\n", " elif new_pos in env.holes:\n", " r, done = -10, True\n", " else:\n", " r, done = -1, False\n", " action_values.append(r + gamma*V[new_pos])\n", "\n", " V[state] = max(action_values)\n", " delta = max(delta, abs(v - V[state]))\n", "\n", " if delta < theta:\n", " break\n", "\n", " # Extract greedy policy\n", " for state in V:\n", " if state == env.goal or state in env.holes:\n", " continue\n", " best_a, best_val = None, -np.inf\n", " for a, move in env.actions.items():\n", " new_pos = (state[0]+move[0], state[1]+move[1])\n", " if not (0 <= new_pos[0] < env.size and 0 <= new_pos[1] < env.size):\n", " new_pos = state\n", " if new_pos == env.goal:\n", " r, done = 10, True\n", " elif new_pos in env.holes:\n", " r, done = -10, True\n", " else:\n", " r, done = -1, False\n", " val = r + gamma*V[new_pos]\n", " if val > best_val:\n", " best_a, best_val = a, val\n", " policy[state] = best_a\n", "\n", " return V, policy" ] }, { "cell_type": "code", "execution_count": 22, "id": "05265445-5791-4471-a8f4-40a7375a2d39", "metadata": {}, "outputs": [], "source": [ "env = GridWorld(size=5)\n", "V, Q, vi_policy = value_iteration(env)\n", "#V, vi_policy = value_iteration_compact(env)" ] }, { "cell_type": "markdown", "id": "6d5337b9-c1f7-4c46-91b5-1c80a55fcb27", "metadata": {}, "source": [ "### 5. Visualize V: value of each state after training" ] }, { "cell_type": "code", "execution_count": 23, "id": "36ab238f-63ca-4f97-96da-6b341e2c53fb", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "grid = np.zeros((env.size, env.size))\n", "for i in range(env.size):\n", " for j in range(env.size):\n", " grid[i,j] = V[(i,j)]\n", "\n", "plt.imshow(grid, cmap=\"coolwarm\", origin=\"upper\")\n", "plt.colorbar(label=\"Value\")\n", "plt.title(\"Value Function (Value Iteration)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d2ec0dab-2cdc-4aee-9762-8f92861ea5cf", "metadata": {}, "source": [ "### 6. Visualize policy (best action in each state)" ] }, { "cell_type": "code", "execution_count": 24, "id": "b98da808-e34e-4548-98e7-43ee7e96151d", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib import colors\n", "\n", "def render_policy(env, policy, title=\"Value Iteration Policy\"):\n", " \"\"\"\n", " Visualize a deterministic policy on the GridWorld.\n", "\n", " Args:\n", " env: GridWorld environment (with size, holes, goal).\n", " policy: dict {state_index: action_index} from value iteration.\n", " title: Plot title.\n", " \"\"\"\n", " grid = np.zeros((env.size, env.size))\n", " for h in env.holes:\n", " grid[h] = -1\n", " grid[env.goal] = 2\n", "\n", " cmap = colors.ListedColormap([\"red\", \"blue\", \"black\", \"green\"])\n", " bounds = [-2, -0.5, 0.5, 1.5, 2.5]\n", " norm = colors.BoundaryNorm(bounds, cmap.N)\n", "\n", " fig, ax = plt.subplots(figsize=(5, 5))\n", " ax.imshow(grid, cmap=cmap, norm=norm)\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " ax.set_title(title)\n", "\n", " # Map actions to arrow symbols\n", " action_symbols = {\n", " 0: \"↑\", # up\n", " 1: \"↓\", # down\n", " 2: \"←\", # left\n", " 3: \"→\" # right\n", " }\n", "\n", " for state, action in policy.items():\n", " r, c = state\n", "\n", " # Skip goal and holes\n", " if (r, c) == env.goal or (r, c) in env.holes:\n", " continue\n", "\n", " ax.text(c, r, action_symbols[action],\n", " ha=\"center\", va=\"center\",\n", " fontsize=16, color=\"white\")\n", "\n", " plt.show()\n", "\n", "render_policy(env, vi_policy, \"Value Iteration Policy\")" ] }, { "cell_type": "markdown", "id": "b52e3aea-9189-4d08-a936-c95114aaf2e9", "metadata": {}, "source": [ "### 7. Visualize Q-table" ] }, { "cell_type": "code", "execution_count": 25, "id": "fb991681-cdf7-4011-a0b8-8fdc3e9d9965", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_q_table(Q):\n", " # Extract states and actions\n", " states = [s for (s, a) in Q.keys()]\n", " actions = [a for (s, a) in Q.keys()]\n", " \n", " # Get grid dimensions\n", " n_rows = max(r for r, c in states) + 1\n", " n_cols = max(c for r, c in states) + 1\n", " n_actions = len(set(actions))\n", " \n", " fig, ax = plt.subplots(figsize=(n_cols, n_rows))\n", " ax.set_xlim(0, n_cols)\n", " ax.set_ylim(0, n_rows)\n", " ax.set_xticks(np.arange(0, n_cols+1, 1))\n", " ax.set_yticks(np.arange(0, n_rows+1, 1))\n", " ax.grid(True)\n", " ax.invert_yaxis()\n", "\n", " for (r, c) in set(states):\n", " # Collect Q-values for this state\n", " q_vals = [Q.get(((r, c), a), 0.0) for a in range(n_actions)]\n", " best_action = np.argmax(q_vals)\n", "\n", " for a, q_val in enumerate(q_vals):\n", " is_best = (a == best_action)\n", " style = {'weight': 'bold'} if is_best else {}\n", "\n", " if a == 0: # Up\n", " ax.text(c+0.5, r+0.2, f\"{q_val:.2f}\", \n", " ha='center', va='center', fontsize=8, color='blue', **style)\n", " elif a == 1: # Down\n", " ax.text(c+0.5, r+0.8, f\"{q_val:.2f}\", \n", " ha='center', va='center', fontsize=8, color='red', **style)\n", " elif a == 2: # Left\n", " ax.text(c+0.2, r+0.5, f\"{q_val:.2f}\", \n", " ha='center', va='center', fontsize=8, color='orange', **style)\n", " elif a == 3: # Right\n", " ax.text(c+0.8, r+0.5, f\"{q_val:.2f}\", \n", " ha='center', va='center', fontsize=8, color='green', **style)\n", "\n", " plt.show()\n", "\n", "plot_q_table(Q)\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "f4d2da35-5f70-4d83-81f1-fb89d6ff122d", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "def plot_q_table_triangles(Q):\n", " # Extract states and actions\n", " states = [s for (s, a) in Q.keys()]\n", " actions = [a for (s, a) in Q.keys()]\n", " \n", " # Grid dimensions\n", " rows = max(r for r, c in states) + 1\n", " cols = max(c for r, c in states) + 1\n", " n_actions = len(set(actions))\n", "\n", " fig, ax = plt.subplots(figsize=(cols, rows))\n", " ax.set_xlim(0, cols)\n", " ax.set_ylim(0, rows)\n", " ax.set_xticks(np.arange(0, cols+1, 1))\n", " ax.set_yticks(np.arange(0, rows+1, 1))\n", " ax.grid(True)\n", " ax.invert_yaxis()\n", " \n", " # Normalize Q-values for colormap\n", " q_vals_all = list(Q.values())\n", " vmin, vmax = min(q_vals_all), max(q_vals_all)\n", " norm = plt.Normalize(vmin, vmax)\n", " cmap = plt.cm.viridis\n", "\n", " for (r, c) in set(states):\n", " q_vals = [Q.get(((r, c), a), 0.0) for a in range(n_actions)]\n", " max_q = np.max(q_vals)\n", " best_action = np.argmax(q_vals)\n", "\n", " # Coordinates of the square\n", " x, y = c, r\n", " square = [(x, y), (x+1, y), (x+1, y+1), (x, y+1)]\n", " cx, cy = x+0.5, y+0.5 # center\n", "\n", " # Triangles for each action\n", " triangles = {\n", " 0: [(x, y), (x+1, y), (cx, cy)], # Up\n", " 3: [(x+1, y), (x+1, y+1), (cx, cy)], # Right\n", " 1: [(x, y+1), (x+1, y+1), (cx, cy)], # Down\n", " 2: [(x, y), (x, y+1), (cx, cy)] # Left\n", " }\n", "\n", " for a, tri in triangles.items():\n", " color = cmap(norm(q_vals[a]))\n", " ax.fill(*zip(*tri), color=color, alpha=0.9)\n", " \n", " # Draw bold border for best action\n", " if a == best_action and max_q > 0:\n", " ax.plot(*zip(*tri, tri[0]), color=\"black\", linewidth=2)\n", "\n", " # Place Q-value text inside triangle\n", " tx, ty = np.mean([p[0] for p in tri]), np.mean([p[1] for p in tri])\n", " ax.text(tx, ty, f\"{q_vals[a]:.2f}\", ha='center', va='center', fontsize=8, color=\"white\")\n", "\n", " plt.show()\n", "\n", "plot_q_table_triangles(Q)" ] }, { "cell_type": "markdown", "id": "3a6e1656-5703-4055-9a7f-51b79325430d", "metadata": {}, "source": [ "### 7. Record episode as GIF sequence" ] }, { "cell_type": "code", "execution_count": 27, "id": "55b6ae7e-3575-4eed-9d37-19c03946b448", "metadata": {}, "outputs": [], "source": [ "#import imageio\n", "\n", "def record_episode(env, policy, filename=\"episode.gif\", max_steps=50, fps=1):\n", " frames = []\n", " fig, ax = plt.subplots()\n", "\n", " state = env.reset()\n", " done = False\n", " steps = 0\n", " while not done and steps < max_steps:\n", " ax.clear()\n", " env.render(ax=ax, title=f\"Step {steps}, Total Reward {env.total_reward}\")\n", " fig.canvas.draw()\n", " fig.canvas.flush_events()\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", " frame = frame.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n", " frames.append(frame)\n", "\n", " action = policy(state)\n", " state, reward, done, info = env.step(action)\n", " #print(action, state, reward, done)\n", " steps += 1\n", "\n", " if done:\n", " ax.clear()\n", " env.render(ax=ax, title=f\"Step {steps}, Total Reward {env.total_reward}\")\n", " fig.canvas.draw()\n", " fig.canvas.flush_events()\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", " frame = frame.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n", " frames.append(frame)\n", "\n", " plt.close(fig)\n", " \n", " import imageio\n", " imageio.mimsave(filename, frames, fps=fps)\n", " return filename" ] }, { "cell_type": "code", "execution_count": 28, "id": "043ad356-57fd-4b95-ad57-254d075f3d7a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_19506/1055403448.py:15: MatplotlibDeprecationWarning: The tostring_rgb function was deprecated in Matplotlib 3.8 and will be removed in 3.10. Use buffer_rgba instead.\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", "/tmp/ipykernel_19506/1055403448.py:29: MatplotlibDeprecationWarning: The tostring_rgb function was deprecated in Matplotlib 3.8 and will be removed in 3.10. Use buffer_rgba instead.\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n" ] }, { "data": { "image/gif": "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NaL88DMoxKEgchpdynNmUaYGh6LECbXqS6RWs2rdCtWiT65gVVoMS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4u1H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBSyxMGFGDaHYYbPbaihhx9yGOKFy5EIAojJbYgiciqaWOGLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWmZYFDD3gXAYFCACAks0pgEADTzZXwQAXOFDlchgQQAEIWkKp3AQBLMCAAQAcAMFyEnjFUALPhQmdnMsFBAAh+QQBZAAlACyDABQAoADWAIX////4+P/29v/u7v/t7f/n5//f3//c3P/T0//Q0P+/v/+8vP+2tv+ysv+urv+amv+Xl/+Pj/8AgAB2dv9YWP9VVf80NP8qKv8fH/8ZGf8AGQAXF/8TE/8MDP8JCf8FBf//AAAAAP8AADMAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/wBLCBxIsKDBgwgTIiRBYmBDhRAjSpxIsaJAhg8tatxYgiGAjxxDihyZkGGJjwBIqizYEOXKlzAnmnQZs6bNmzYfZsQpUifPnzB3AqXoMqXQoUgngnSYVCLKpSmbSoX4dKpTq1g3Rs1qECPXrwQxHgVLtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi8QfT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjh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", "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vi_policy_fn = lambda s: vi_policy[s] if s in vi_policy else random.choice(list(env.actions.keys()))\n", "record_episode(env, vi_policy_fn, \"value_iteration.gif\", fps=1)\n", "Image(filename=\"value_iteration.gif\")" ] }, { "cell_type": "markdown", "id": "660fdf2b-63d4-4f9c-9e37-086e4d57c086", "metadata": {}, "source": [ "### 8. Side-by-Side Comparison" ] }, { "cell_type": "code", "execution_count": 29, "id": "be9f83c1-262a-4c90-85a4-b380656399f5", "metadata": {}, "outputs": [], "source": [ "def make_side_by_side_gif(env, policy1, policy2, labels=(\"Policy1\",\"Policy2\"),\n", " filename=\"comparison.gif\", max_steps=50, num_episodes=5, fps=2):\n", " import imageio\n", " frames = []\n", " fig, axes = plt.subplots(1,2, figsize=(8,4))\n", "\n", " max_steps = env.size*env.size\n", "\n", " for episode in range(num_episodes):\n", " # Reset env for both runs\n", " env1, env2 = GridWorld(size=env.size, holes=env.holes), GridWorld(size=env.size, holes=env.holes)\n", " state1, state2 = env1.reset(), env2.reset()\n", " done1, done2 = False, False\n", " steps = 0\n", " episode_frames = []\n", "\n", " while (not done1 or not done2) and steps < max_steps:\n", " for ax in axes: ax.clear()\n", "\n", " if not done1:\n", " env1.render(ax=axes[0], title=labels[0]+f\" Episode {episode+1}\")\n", " action1 = policy1(state1)\n", " state1, reward1, done1, info1 = env1.step(action1)\n", " else:\n", " env1.render(ax=axes[0], title=labels[0]+f\" Episode {episode+1}\"+\" (done)\")\n", "\n", " if not done2:\n", " env2.render(ax=axes[1], title=labels[1]+f\" Episode {episode+1}\")\n", " action2 = policy2(state2)\n", " state2, reward2, done2, info2 = env2.step(action2)\n", " else:\n", " env2.render(ax=axes[1], title=labels[1]+f\" Episode {episode+1}\"+\" (done)\")\n", "\n", " fig.canvas.draw()\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", " frame = frame.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n", " episode_frames.append(frame)\n", "\n", " steps += 1\n", "\n", " if env1.steps != env2.steps:\n", " for ax in axes: ax.clear()\n", " #render last step\n", " #if env1.steps > env2.steps:\n", " # print(\"env1.steps\", env1.steps)\n", " env1.render(ax=axes[0], title=labels[0]+f\" Episode {episode+1}\"+\" (done)\")\n", " #else:\n", " # print(\"env2.steps\", env2.steps)\n", " env2.render(ax=axes[1], title=labels[1]+f\" Episode {episode+1}\"+\" (done)\")\n", " fig.canvas.draw()\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", " frame = frame.reshape(fig.canvas.get_width_height()[::-1] + (3,))\n", " episode_frames.append(frame)\n", " \n", " frames.extend(episode_frames)\n", " plt.close(fig)\n", " imageio.mimsave(filename, frames, fps=fps)\n", " return filename" ] }, { "cell_type": "code", "execution_count": 14, "id": "4fd89333-7b97-4f9d-a606-855b9597250f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_19506/1482855328.py:35: MatplotlibDeprecationWarning: The tostring_rgb function was deprecated in Matplotlib 3.8 and will be removed in 3.10. Use buffer_rgba instead.\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n", "/tmp/ipykernel_19506/1482855328.py:51: MatplotlibDeprecationWarning: The tostring_rgb function was deprecated in Matplotlib 3.8 and will be removed in 3.10. Use buffer_rgba instead.\n", " frame = np.frombuffer(fig.canvas.tostring_rgb(), dtype='uint8')\n" ] }, { "data": { "image/gif": "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3njoefZfbD2mJ6JoeYE3n4/1HUmdjRVmydRzW/XYGHRNdmhga0jltJpn4MlWl5A7fbUhggI++NKKZEI105PpHShage15ideaGd6H5VZlPkUknFH+9qN+T3qFpKNkUndbVneKWWCefEIZnKB3AmoljpFpWaGhqHF5aZ/+ZcRnfj2uKiSTkOb/CSRm6vEo3qKBnUniRnPWyuhFknZq6pqlruUlcabyKSSYPtoJ5npQvhqrrRq2euFrvD321YLUOmcbpNa2FZio5ILFXKueMuvfZmOeZeN9ZH0LbYyz7sirrazaVZuuuclF02zWzQeokTr+JB+EyLaHL4F6jtcmwHkaua+MBb5nk4HmcSdggm5FihSd4VapY7kkH/lpoDcB+x27HTN6ILra8cYimvSaWNiVJlO8op0Weccxg+GVl26EhRp7LFqHNgjnvQ7PmqSS3Vqn1cWPfXeSWiFxO+bHDxJJNM4ll1voe8ROFC+H2VlonrLUvagdzf5xhyqwL9/6351Qd3SetSNu/5ryzuh6m3DYooZ6EMuJGb4c4Yw37vhfKyF+lb7JKf64YhMebunlnHfu+eczarY56KQXnnnPpaeu+urkWk4r67DHLvvstNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv///RSwEGElCAB4wAgN8TIAENiEDGWQAADJBAAA5wggZy74ERnGAFLViuEgxAACVwAQUAwAEOZs+DIBQhCU1IrhAAQAEC8QAAIMDC67kQhi6QIQ1rmCUQQFAgHwBAA/94WD0fMgCIQiRihW4okA7MUInTY6ILnLhDKCaGBB8kgQsmAIAMWDF6WBSAFrnoxS8mpgIAWEAEAmAAE5gRemhUIxvd+MaroOACCCCAA0RQx+fdMY977KMgB0nIQhrykIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jL24Ayl4lMVi7zmc1U5QYEAs1orrKa1kQlNrNpym1yk5Te/OYon8lMcY6TnNM0pzrXyc52uvOd8IynPOdJz3ra8574zKc+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q17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/8fT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDa6kQqQRkoTQQYhJGakksrEAQAmoaRSmJDulAAAOJWJaagxCUWUUUhdeqoKMUEvJRVVVpma6UtfueVCBQCUBSaqmMbElq4UACDXr6/CGpNefA3gF6ivzmQYYoq5EBAAIfkEATIAHAAsWQA5AHUBqwCE////9vb/5ub/2dn/zc3/vLz/nJz/m5v/j4//AIAA/wAAfHz/bGz/X1//XFz/TEz/Pz//Ozv/LCz/Kyv/IyP/FBT/ExP/BQX/AAD/AAAzAAATAAAAAAAAAAAAAAAAAAAACP8AIQAYSLABh4MIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48TKSAYeWBgBJAoU6pcybKly5cwY07EQJMBAAIyc+rcybOnz58uadIcAMAB0KNIkypdypSj0AcABFzA0LSq1atYs7IUWgDAAppaw4odSzYsTQkAAlQAW7at27dwX2IwAOCA0Lh48+rdC9FCAAAT2PIdTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSLCXXXSgIRNJBBfVp6qUoikWSSn5/GZBNOnXpKFUxEGZWqqi9BIyUVqXeVulJXC/xpKQe2poSWWoCquipLdB0QKKwt+QUYQgEBACH5BAEyAFcALFkAGgCoAcoAhv////3+/f39//z9/Pz8//n8+fn5//X69fT59PX1//T0/+z17N/v3+zs/97u3tXq1dHo0dDn0M/nz8vly8nkyd/f/97e/9XV/9HR/9DQ/8/P/8vL/8nJ/8Phw7rcurjbuKvVq8PD/6DPoJLJko3GjX+/f7q6/7i4/6ur/263bqCg/5KS/42N/2m0aWCwYFarVkCgQD2ePTudOzabNjOZMy+XLyuVKxKJEhCIEA+HDwqFCgaDBgSCBAKBAgCAAP8AAH9//25u/2lp/2Bg/1ZW/0BA/z09/zs7/zY2/zMz/y8v/ysr/xIS/xAQ/w8P/woK/wYG/wQE/wIC/wAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/AK8IHEiwoMGDCBMqXMiwocOHECNKnEixIkQrVigCAGAxIUaNHBl+lJgxZMSNAzFmJDjSYsuOMGPKnEmzps2IL1UefIly4EaTO1c+RInyJcSeV1TqHPoTaUGjCJWuRAoVY1OgD6He3Mq1q9evMZcmFfqU7E+fWA1q3SmQKMe1PhFSJXs0rVq6UTPqnHvXrV2ReMEKHky4sM2lUpUK/Pjx75WmLBevbPlWp9mCIQEEZnmVIOSkaEErltzYZGODHDt7dvpYs9TFKUkjHj3WsO3buHMDljx2NGO6k9E6fuuZNGjQlc8+3pzSCuvWPS/Llj01smbUnYWezVyUdvPelhPz/9ZNvrx5sOHL8uZZkvfzuM5dB0cr1Cpx7r/jJ2U9fz/x5iWZBJR9JQU4lnJUtfbYcbDVFqBrtTlY32TMnWfhhRg69Jp4EsJmmnAJ/ffUeBMi2JZr3L31HGsb5bSXUSq1uNxTSEFmIHcN/taajhK+FmGGQAYpZFkjpdchcqulNpx/AJLYXHfIoXiiimk5FZ9WFAJ35XJTqWajgpX1tl6APPKo3pBopmmhbz7md9qPymGH5ILHFdmWfdddJ1mKTGKmHIUszbbUgDP6meCUCiqoGFZl6sUhXGpGKulXgs4Gnn1wsngmnYDWBlRmJSIa36GcNgiggR6a1t6If2rXE46LEv8aYZEbVjjprbjmCiSkCr0XFq8UAavrsMQWK5iwB/lq7LLMNussTraG6Niz1FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxvFMocUIDCVwgxBQXhwzwFBUAgAEKAlxRhMgs8xsFAQAsMcUGAAzR8s35sgBABihr4ATOQNdrhAUcGQCEFEEnDS8TCgBwRBMcACCE0lSzmwQABkAxhQoArFD11+g+0QAAIahgAABEgK12uUiYwPEFQawt99x012333XjnrffefPf/7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQpodIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrforSl48Yte7EoNPrCAAzygBUcEIxi7wgAAQAAEAQAADJT4xa7wYAAAsMEVJgAAF9AxjF0hAQAiAEcJ5CCJa+xKDBywkQKUoAeIBCRXboAAAMgABxQAABrTWMeu0AAABdjBFUQAgBEgsZNd0cECANABERQAAC/gpCS7MgMPlPEBKVhIQAAAIfkEATIAWwAsWQA5AAgACQCG/////f79/P38+fz5+vr/9fr19Pn08vL/7PXs8fH/6+v/6ur/3+/f3u7e1erV6en/6Oj/5eX/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GJp0M6YEY2WNCWWVcsgpViabsJGJ5qOQDlYYhrp152SJHf4X4JK8cVZniJgmN9Wmv0kHnKClIfgUcAc+VyOGET7/eGGktNZqK62zJRTcV7leNd6twAYrLG29HrTrsMgmq+yyOP06F5LMRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz3/+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKeu+uqstw60Eic0kMAFQriObwUAYICCAAAUYXu9URAAwBJXbADAEL/XywIAGeyugRPJ02uEBRsZAIQU0cvLhAIAHNEEBwDUnj28SQBgABRXqADACuPD+0QDAISgggEAENE+vEiYIPsFQdzv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISzmsKKEwhCk1YKxWqkIXASiEMY7jCGbZQhjakFQ5zCKkX8rCHNfwhmrZ8KMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMoha3yMUuevGLYAyjGMdIxjKa8YxoTOO0XLjDm9TgAws4wANacEU2BvEmDAAABEAQAADAQItttAkPBgAAG1xhAgBwASDveBMSACACfJRADrJIxKzEwAEbKUAJekBJRtrkBggAgAxwQAEA0LGOgbQJDQBQgB1cQQQAGAEWU2kTHSwAAB0QQQEA8AJUevImM/BAHB+QgoUEBAAh+QQBMgBbACxZAIoACAAxAIb////9/v38/fz5/Pn6+v/1+vX0+fTy8v/s9ezx8f/r6//q6v/f79/e7t7V6tXp6f/o6P/l5f/k5P/h4f/R6NHQ59DP58/L5cvJ5MnD4cPe3v/T0//Pz/+63Lq427jDw/+/v/+zs/+r1augz6CSyZKNxo2ysv+vr/+s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eh+0tqHVFJHMXkquoqNu2xip4xr5aIr6TUunb5+GSyF1aara6re3StWUt0hqbCd8WW6Z7smq5njjlSGhtx+ni6b58F2/zoovrl5RaOOKtsnpImVGuQobjfghfKPJiTHbcIvtsWZpx8MK+6RyGBNoZbBST7ydrXe+9+3SBqdM4snIzSd2opHF5HLRVuv8ZJ8/q3bzYmov2qunrOp1maZcbf897HqIsctzwmSna+p+px4eV+GMN+44aCvBaxhdZY/9uE6KR3355px37jnkln0u+ueZczv66ainjm7ppqvu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz377/4KcBAAgrwgBH8z3sBHGABD7g5CwCAARIIwAFOwMDtORCCEqRgBRlXggEIoAQuoAAAOLBB7HXwgyEcYQkLFwIAKEAgHgAABFZovRa+0AUxnCEN0wWCBwrkAwBowA7/qddDBvwwiENElw0F0gEZJlF6S3RBE3X4RAmRwIMkcMEEAJCBKkLvigLI4ha76EUJVQAAC4hAAAxggjI+74xpXGMb3YgcFFwAAQRwgAjo6Dw74lGPfAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJ/89++vOfAA2oQAdK0IIa9KAITahC76mChjpUIA6N6ELlF9GHVrShE42fCiBqUYxm1H4SvehHKfpQF1x0oyN1n0QNUtKUrm+lEB1IS12avpOaVKQ0VZ9NcZrTnvr0p0ANqlCHStSiGvWoSE2qUpfK1KY69alQjapUp0rVqlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1znSte62vWueM2rXvfK17769a+ADaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpaFqwayKxmL3sqzXqWsxL67GZBGyHPjpa0xzFtZlGbWtVqgLWGEe1qYWsV1wm+lra1NW1EAgIAIfkEATIAFAAsWQA5APsAMQCE/////Pz/4eH/39//0dH/z8//v7//r6//oqL/n5//AIAAf3//b2//Y2P/T0///wAAAAD/AAAzAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP8AGRAIAGABBAgUEipcyLChw4cQI0qcSLGixYsYM2rcyLHhwY8IERgYUPBjx5MoU6pcybKly4QgYx4oefClzZs4c+rECZKCTJoIdwodSrToUJM+Qc40WNOo06dQo1ZE+pNpUKlYs2o92rQq0q1gw4o92fNjgwQCABRI4ODq2Ldw4zqMeTABgLt3F8jdyxcu3b6AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry5VIEE9TpPLZKk9Ompl2JXrX076u7eTYMSD096PHnQZ9OudXA+tF28BQMCACH5BAEyACUALFkAOQD7AFoAhf////z8//Pz/+zs/+Tk/+Pj/+Dg/97e/9jY/9XV/8nJ/8fH/8XF/7W1/5qa/5mZ/4+P/4mJ/4aG/wCAAP8AAF9f/zk5/zU1/zEx/yoq/yUl/x8f/x4e/xgY/xMT/wsL/wcH/wAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/AB0kEDCgQYYSCBMqXMiwocOHECNKnEixosWLGDNq3EgRwAIHBwAUAMGxpMmTKFOqXMkSooUSITYAAIChpc2bOHPq3OkwhAYAATrwHEq0qNGjCT8wABABqdOnUKNa9KCgxAOpWLNqRcoBAQAJIbaKHUtWJQEABiCovVC2rdu3EAEsrAC3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH078cYjjx4t/Rp5c+fLmzjsjj+55OnXO1q9rzq7dMnPu3SV/cYcevrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYoYXECEWTQhFF5BJJIJGHo1EslyESTh1H9FBSJTynFFIpOUQXAVSwe1dVXMSJ1Vlpr1UjUTDwCUEFAACH5BAEyAC0ALFkAOQD7AIIAhf////z8//r6//n5//j4//Dw/+zs/+vr/+np/+Xl/+Tk/+Li/+Dg/9jY/9PT/7+//7e3/6mp/6en/6Wl/6Cg/5aW/5WV/4mJ/wCAAP8AAGtr/05O/0BA/z8//zEx/zAw/ysr/yUl/x8f/w4O/wgI/wcH/wYG/wQE/wIC/wAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/AFMIHNiioMGDCBMqVEhBAYEDED4snEixosWLGDNq3Mixo8ePLQaKBGnxwYQKDQAwIMmypcuXMGOCTFFwpMyEHgAEOHGzp8+fQIMitOlTg4WUF4QqXcq0aUWiPh8AALBgg9OrWLPehPqzxIYAAkRoHUu27EWuN0mgKGiiAAAOZuPKNSuSYM8OCSRUcAAAwYi5gAM3rSvQZ4gHBgYoiABCsOPHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOLyB9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHNZHWIdZEUYTiE6NiBaJS52IYlAqrvhTiy72BGOMW31II4s23qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZbpNfRQRFwWZBJKKoV5UE47mWkUUma2IBVVVrXpFVhibakWW27BtSVeevHlF5eHJbZYYwEBACH5BAEyAB8ALIEAOQDTAKsAhP////39//r6//j4//f3/+7u/+Li/93d/9TU/7+//7y8/7W1/7Oz/6en/5+f/4+P/4aG/wCAAH9//35+/3Z2/3Bw/1hY/y8v/ysr/xsb//8AAAAA/wAAMwAAEwAAAAAAAAj/AD9s2GABAIAHHxIqXMiwocOHECNKnEixosWLGDNqtLghQwEBHxBuHEmypMmTKFNiVICgQcgNKmPKnEmz5sgKAy44CGmzp8+fQE1iIEBhg4ODQZMqXbp0QoAFDAwAOACBqdWrWE9KMMj1Q4KsYMOKhThw4M4HMMeqXYu1rFGkbOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOLsR9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGV7k10IEepoWgWyCSWGJZCXpY4IcCoUhgiCwOCCOHNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbppJMFwWWgRwJIWSBLDVg5IE46aRngUBR8cJRIBDoFlVRUFbgVVwZ9heCYCsIZEAAh+QQBMgAkACyBADkA/ACrAIX////4+P/29v/u7v/t7f/n5//f3//c3P/T0//Q0P+/v/+8vP+2tv+ysv+urv+amv+Xl/+Pj/8AgAD/AAB2dv9YWP9VVf80NP8qKv8fH/8ZGf8XF/8TE/8MDP8JCf8FBf8AAP8AADMAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/wBJCARBEITAgwgTKlzIUAGAhwAQMJxIsaLFixgzatzIsaPHjwcLEgR50WGEkxRIqlzJsqXLlypFGoSJ0CHNmzhz6tzJUOZMnA4HDFhwgafRo0iTTixIgmnOBg0gJABAYIPSq1izvvQ5cucHAwAqaB1LtuxFrj9hetAg8CsAC2bjyp3btOvNDAEYSAVQgAPdv4CVOr3Z4cEBAQUcYAjMuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDi/IfT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstummayLp5BBEEn0ok5wAnBRBSnbGmZNNIvqEp1BEecjUYDdBtVdVHaLFk1ticejoTWu1BRZcICIKE156TdVXiJq+VNhhiS0WEAAh+QQBMgAuACyqADkA/ACrAIX////7+//39//29v/19f/09P/z8//w8P/m5v/h4f/b2//X1//W1v/Q0P/Kyv/Dw/+1tf+np/+dnf+bm/+Vlf+UlP+Rkf+Ghv+AgP8AgAD/AABqav9YWP9QUP9PT/9JSf8/P/85Of82Nv80NP8lJf8kJP8aGv8QEP8FBf8DA/8AAP8AADMAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/wBdqBhI0IXBgwgTKlzIsKHDhxAjSpxIsaLFixgzTiRYUKPHjyBDihxJsuTDgSZTqlzJsqVLiBxRvpxJs6bNmwZjysTJs6fPnxQ5Ah1KtKhNmUKNKl3KFKTOnU2jSp268CnVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NuvTFDg4GHHhwwnRgDgAERJjQwIRrwAkAgLgtmAQAAhAMKNjA228IAAAWSBgAwENxviWQj3BRAYCE53tRHAAwnQIAC9j3Yv8AwGB5ABHh9aa4gKCAgw/p48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNb5k04toaYaayfiuRJsstFmm4lQsZTbbir6mZJvwAlHXJ+KlnRccss1l2hHJkXHHXXWEapCTpiWpN2m3oFX4lOfqjReeQOc52lMLK0G1957LgQEACH5BAEyABwALKoAYQAkAYMAhP////b2/+bm/9nZ/83N/7y8/5yc/5ub/4+P/wCAAP8AAHx8/2xs/19f/1xc/0xM/z8//zs7/yws/ysr/yMj/xQU/xMT/wUF/wAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAj/ADlwwECwoMCDCBMqXMiwocOHECNKnEixosWLGDNq3OiwoEeOIEOKHEmypMmTKA2iXMmypcuXMFl6VBmzps2bOHOOnElTp8+fQIPW/NhTqNGjSJNOJEpQqdOnUJPyxBC1qtWrMHli3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLrggBgO3bDWZ3poCg9wHbEXSDZgCAgHDQAwA4OO75AQABF5h3LgBggXTOEgAEqHB9swEAB7prwbYQAMAE8ejTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSPGplUm232ZabjlOdxJtvwO1YFEvEGUelkywlt9yXYJ7kHHRaGrQlSdRZl2ZTa4qU3XY9VonSd+HVOdNK5Jl3UEAAIfkEATIAVwAsgQAaAIABygCG/////f79/f3//P38/Pz/+fz5+fn/9fr19Pn09fX/9PT/7PXs3+/f7Oz/3u7e1erV0ejR0OfQz+fPy+XLyeTJ39//3t7/1dX/0dH/0ND/z8//y8v/ycn/w+HDuty6uNu4q9Wrw8P/oM+gksmSjcaNf79/urr/uLj/q6v/brduoKD/kpL/jY3/abRpYLBgVqtWQKBAPZ49O507Nps2M5kzL5cvK5UrEokSEIgQD4cPCoUKBoMGBIIEAoECAIAA/wAAf3//bm7/aWn/YGD/Vlb/QED/PT3/Ozv/Njb/MzP/Ly//Kyv/EhL/EBD/Dw//Cgr/Bgb/BAT/AgL/AAD/AAAzAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP8ArwgcSLCgwYMIEypcyLChw4cQI0qcGNGKFYoAAFBcaBGjRoYdJV78GDHjQIsXCYbceGUly5cwY8qcSdOhS5QHXZocmJFkzpQPTZp0CXFnS5REF/bsiTDpT6RXjCa1uNToQ6c1s2rdyjUrToFYdRq1+tOmQKEasfJEKBVoSZ9N3SYk2tYgVbgi5Xbdy7evX7shkQoGe7EjXp5MTxJefPZoR7dwPwLQW9BKVYJLwSJu6Rgo1Lp4NWYeeRnzZMEZB3cODJXx39ewY9NkvTrlY7m2ER9uDJlwYc1pLe+czFG4wcyc1/q23drnSL2lU2aWPBSp89tQBdOWzb2794Y4idL/1jlyMVnMLVMHNu3ZePmopx0PJZsb7FCVhkleTx2V9NHElcEXVXKa/XeWekctttJ23zXo4HeDaadgbiQBBeBxBKrEWHuJUUfVgWmdRxaCJ+EUH37CPVfZWEz5R12Bt8EXY4LaMffgjTi+1lp4Nq7nE1PnrWWcbxuWWB1n6lEXYmjOkRigY5Wl2J90pY0mYHBQ0kjajDNGmeOXYGq1o2rYGebahaYh2Vhy603Zk4qEKZkekzvZWCJrXznX33HIWYjWgavBxWVhEiYY5qGIsvRVoWXeZSh8kXm5pp1mKkdcnCDOKZVy9d3pH3AVvqfhaFQOByhqoW7IXHaUJerqq7DK/6aWUrvB9FVNs8aq66682toqQ0H2KuywxBYbl0fGJqvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet99589//t99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755pyzrMQJDSRwgRBdTWH66aZ3fmMFAGCAggAAFMEV6qir7mAUBACwxBUbADBEX6fb/iALAGTwugZOAJ+68A0aYUFGBgAhBV+1M+8dEwoAcEQTHABA+l7BW+9dEgAYAMUVKgCwAvjhi8/dEw0AEIIKBgBABPtTuP8dEiaEfkEQ+Muf/gZIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCbh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpSjXbt00oNPrCAAzygBS3E4vK2wgAAQAAEAQAADGCYxazwYAAAsMEVJgAAF7BxjFshAQAigEYJ5OCF1eNKDByQkQKUoAeAxKNWboAAAMgABxQAABjD2Mas0AAABdjBFUQAgBG4sJJZ0cECANABERQAAC+gpCK3MgMPdPEBKVhIQAAAIfkEATIAWwAsWQCKADAACQCG/////f79/P38+fz5+vr/9fr19Pn08vL/7PXs8fH/6+v/6ur/3+/f3u7e1erV6en/6Oj/5eX/5OT/4eH/0ejR0OfQz+fPy+XLyeTJw+HD3t7/09P/z8//uty6uNu4w8P/v7//s7P/q9WroM+gksmSjcaNsrL/r6//rKz/f79/q6v/pKT/nJz/mZn/kZH/h4f/hIT/gYH/brduabRpYLBgVqtWQKBAPZ49O507Nps2M5kzL5cvK5UrEokSEIgQD4cPCoUKBoMGBIIEAoECAIAA/wAAZmb/Wlr/UlL/Skr/QkL/QED/KSn/ISH/Hh7/Gxv/FBT/Dw//Bwf/BQX/BAT/AwP/AQH/AAD/AAAzAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAtzAxoeDACSdbEipcyLChw4ZXIkrcEkUCABMoAGyw8rCjR4gSJSYBoCEhBwBIPqrsGHKLRCUAEjR58gBAjJU4QYa8UuUDgJ8/W+QcmnBnxC1UjsAwsgIADKI5jR6dkhDKAgBLoOJsORGEChYRAITQulXqFhcQCEx4IYVs2ZYBAQAh+QQBMgBbACxVAGEADwAyAIb////9/v39/f/8/fz8/P/5/Pn5+f/1+vX4+P/39//0+fTs9ezz8//y8v/f79/e7t7V6tXk5P/j4//h4f/g4P/R6NHQ59DP58/L5cvJ5MnD4cPf3//V1f/U1P/R0f/Pz/+63Lq427ir1augz6C/v/+SyZKNxo2wsP+vr/+iov+goP+fn/9/v39ut25ptGlgsGBWq1ZAoEA9nj07nTs2mzYzmTMvly8rlSsSiRIQiBAPhw8KhQoGgwYEggQCgQIAgAD/AAB/f/93d/91df90dP9ycv9vb/9oaP9mZv9jY/9WVv9UVP9PT/9ERP9CQv8+Pv86Ov84OP8yMv8nJ/8PD/8ODv8DA/8AAP8AADMAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIsACNeCAAIMiWg0s6INgw5GAKEhsKHowioIEKCQCQHNyCQiJHAEW2OAGwYWNHg1soAHiypQoAAFQOnjyYAICULVZeTpHpUSVLKi9jfkR5AgCRLU0AUNiSZMUEAB9WMIEigIGKCACObFnxsqtBJRwMTBCysazZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv3qvCB6cdrDhK2gJb1Fs9jDjso4FF3Zc+KDhyZcxPw4IACH5BAEyAEcALFwAYQAIAAkAhv////3+/fz9/Pz8//n8+fX69fT59PPz//Ly/+z17N/v397u3tXq1dHo0dDn0M/nz+Hh/9/f/8vly8nkycPhw9TU/9HR/8/P/8HB/7+//729/7y8/7rcurjbuKvVq6DPoJLJko3Gja+v/3+/f6Ki/5+f/4uL/263bmm0aWCwYFarVkCgQD2ePTudOzabNjOZMy+XLyuVKxKJEhCIEA+HDwqFCgaDBgSCBAKBAgCAAH9//29v/2Nj/09P/0xM/z8//y4u/ycn//8AAAAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg2AIFsQADgyJAjR3xUwAAgwpCDD3s0fGhwiESHDyNOzGhxY8aLFIOU0ADgQAkTR34AWLkywpGAACH5BAEyAFkALFUAGgCmAFAAhv/////8/P/19f/q6v/k5P/h4f/f3//c3P/a2v/T0//R0f/Pz//Nzf/Fxf/Cwv+/v/+5uf+vr/+jo/+iov+fn/+cnP+Vlf+Rkf+Pj/+EhP3+/fz9/Pn8+fX69fT59Oz17N/v397u3tXq1dHo0dDn0M/nz8vly8nkycPhw7rcurjbuKvVq6DPoJLJko3GjX+/f263bmm0aWCwYFarVkCgQD2ePTudOzabNjOZMy+XLyuVKxKJEhCIEA+HDwqFCgaDBgSCBAKBAgCAAP9/f/9+fv91df9xcf9vb/9ra/9jY/9hYf9YWP9PT/9MTP8zM/8dHf8XF/8NDf8FBf8BAf8AAAAA/wAAMwAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/ALMIHEiwoMGDCAdiwZKwIQAADREuZBjRIMSKCB8SXGiQI8aEHitOnPgxy8OTAEKWNHkxy0iSGFGeBEmx4UuGGgXCtDhzpcKaNhnurKjxpMqSOV0CRdoy4tGDQ5M+HdjUp86lEil6fHl15MOtWKSGbaoy50WzVU0qXetSqcecWBXKVCoTIlq3FFNyvdkV5tCsbvty5JvyZ1WcBYEWPbvYIt6wbUcKbFnzota5ihuz5Kq26+PBnNkGlZxYqNbMoNXiXIiWtV29Ck26BkuyJ2WcLc+u1W14seu2wHWDPu235tTSgT+LvvwVMsvCsIWP3YybevOrbE1vxJ1WZ2eZEzVr/zQulPrymyGPb8cuObV3utCpto0+Wa/vsa9nn04sejdZ/CzVZ1R112U3mHnpkbZdXMh91p5xsinGH33TBYhWfqdBxJlpb8U2mXz4jUfQTOM1B9Nt2rHnnnrrqfhgbHoxt9F1Gt7VGXaw0fWYfO/BxaNcKIlGYm54fehZgsr1Z9WSTGLEYkJJNUmTlFNSaeWV2FkVJZZcdumll09m1N2XZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxsQq66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGKy2uVVRbrUDWXtvlEQoEAMAQAi3hwAACJKBErdlWgW22Xk7wgAHfCkQBARJA8FATtlpLkL5fRhBvFk5IIdADAFyQr7brqtvvvwQ1AEARByucMJn+gkuQEQAgEEXE+yLcZcUEEQHAAU/cyu/EC1s8hQUAMABFxOnGzGUSFBQAwAIUMJEBAAFUgAEGSNAa89ASW0mBTEMcjdIDtAYEADs=", "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compare random vs. value iteration\n", "random_policy_fn = lambda s: random.choice(list(env.actions.keys()))\n", "comparison_file = make_side_by_side_gif(env, random_policy_fn, vi_policy_fn,\n", " labels=(\"Random\", \"Value Iteration\"),\n", " filename=\"random_vs_vi.gif\", max_steps=env.size**2, num_episodes=5, fps=2)\n", "\n", "Image(filename=comparison_file)" ] }, { "cell_type": "markdown", "id": "502a5c64-ae1b-45a8-b1b9-932a8fdc5ee9", "metadata": {}, "source": [ "## Exercises\n", "\n", "1. **Make a new notebook called GridWorld_3H.ipynb. Train an agent for a GridWorld with 3 holes. Visualize V, the policy, and the Q-table. Save GIF of the agent in action.**\n", "2. **Make a new notebook called GridWorld_RandomStart.ipynb. Train an agent that starts at a random location. Visualize V, the policy, and the Q-table. Save GIF of the agent in action.**" ] }, { "cell_type": "code", "execution_count": null, "id": "d764447d-b12f-4832-9193-725bbe575b1a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.0" } }, "nbformat": 4, "nbformat_minor": 5 }