mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-24 01:51:52 +01:00
2437 lines
408 KiB
Plaintext
2437 lines
408 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "44b75d44",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Lab 3 - Maze Game as a Markov Decision Process Part 2\n",
|
||
"\n",
|
||
"## **1. Objectives**\n",
|
||
"\n",
|
||
"Last week in Lab 2, we \n",
|
||
"\n",
|
||
"- Modeled a simple **maze game** as a **Markov Decision Process (MDP)** by defining:\n",
|
||
" - **States**\n",
|
||
" - **Actions**\n",
|
||
" - **Transition probabilities**\n",
|
||
" - **Rewards**\n",
|
||
"\n",
|
||
"- Implemented **policy evaluation** to compute the value function of a given policy.\n",
|
||
"\n",
|
||
"We consider a **discounted MDP** with discount factor $\\gamma \\in (0,1)$.\n",
|
||
"\n",
|
||
"\n",
|
||
"This week, we will use **dynamic programming** to find **an optimal policy**.\n",
|
||
"\n",
|
||
"**<span style=\"color:red;\">Important: Lab 3 starts with Question 12. Questions 1–11 are already included in Lab 2.</span>**\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "100d1e0d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"np.set_printoptions(precision=3, suppress=True)\n",
|
||
"# (not mandatory) This line is for limiting floats to 3 decimal places,\n",
|
||
"# avoiding scientific notation (like 1.23e-04) for small numbers.\n",
|
||
"\n",
|
||
"# For reproducibility\n",
|
||
"rng = np.random.default_rng(seed=42) # This line creates a random number generator.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1018deab",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 2. Maze definition and MDP formulation\n",
|
||
"\n",
|
||
"We consider a small 2D maze on a grid. The agent is a **robot** that moves on the grid.\n",
|
||
"\n",
|
||
"- `S` : start state\n",
|
||
"- `G` : goal state, with positive reward\n",
|
||
"- `#` : wall (not accessible)\n",
|
||
"- `.` : empty cell\n",
|
||
"- `X` : \"trap\" (negative reward)\n",
|
||
"\n",
|
||
"At each step, the robot can choose among 4 actions:\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\mathcal{A} = \\{\\text{Up} \\uparrow, \\quad \\text{Right} \\rightarrow, \\quad \\text{Down} \\downarrow, \\quad \\text{Left}\\leftarrow\\}.\n",
|
||
"$$\n",
|
||
"\n",
|
||
"The movement is deterministic, but here we set a small probability of “error” to make the example more realistic.\n",
|
||
"- With probability $1 - p_{\\text{error}}$, it moves in the chosen direction.\n",
|
||
"- With probability $p_{\\text{error}}$, it moves in a random *other* direction.\n",
|
||
"- If the movement would hit a wall or go outside the grid, the agent stays in place.\n",
|
||
"\n",
|
||
"We will represent the MDP with:\n",
|
||
"\n",
|
||
"- A list of **states $\\mathcal{S} = \\{0, \\dots, n_{S - 1}\\}$, each corresponding to a grid cell.**\n",
|
||
"- For each action $a$, a transition matrix $P[a]$ of size $(n_S, n_S)$, where\n",
|
||
" $$\n",
|
||
" P[a][s, s'] = \\mathbb{P}(S_{t+1} = s' \\mid S_t = s, A_t = a).\n",
|
||
" $$\n",
|
||
"- A reward vector $R$ of length $n_S$, where $R[s]$ is the immediate reward obtained when **leaving** state $s$.\n",
|
||
"\n",
|
||
"We will use a discount factor $\\gamma = 0.95$.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ca4fa301-c14f-44ec-b04f-b01ca42d979a",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2.1 Define the maze \n",
|
||
"\n",
|
||
"Let us now define the maze as follows."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "f91cda05",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"maze_str = [\n",
|
||
" \"#######\",\n",
|
||
" \"S...#.#\",\n",
|
||
" \"#.#...#\",\n",
|
||
" \"#.#..##\",\n",
|
||
" \"#..#..G\",\n",
|
||
" \"#..X..#\",\n",
|
||
" \"#######\",\n",
|
||
"]\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "99820cf4-292d-49ba-b662-f9f05f901f62",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 1.** Compute the dimensions of the maze (complete the “TO DO” parts):\n",
|
||
"- How many rows does the maze have?\n",
|
||
"- How many columns does the maze have?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "24d7b74c-66c7-4615-b5e6-c2973a975fc9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"7\n",
|
||
"7\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Solution 1.\n",
|
||
"\n",
|
||
"n_rows = len(maze_str)\n",
|
||
"print(n_rows)\n",
|
||
"n_cols = len(maze_str[0])\n",
|
||
"print(n_cols)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "26c821d3-2362-4b60-8c77-3d09296d130d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Maze:\n",
|
||
"#######\n",
|
||
"S...#.#\n",
|
||
"#.#...#\n",
|
||
"#.#..##\n",
|
||
"#..#..G\n",
|
||
"#..X..#\n",
|
||
"#######\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(\"Maze:\")\n",
|
||
"for row in maze_str:\n",
|
||
" print(row)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "adc49d58-2730-41d8-96fb-ca7c9cb4fcdf",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2.2 Map each walkable cell (not a wall '#') to a state index\n",
|
||
"\n",
|
||
"Now we convert the maze grid into state indices for the MDP.\n",
|
||
"\n",
|
||
"\n",
|
||
"The cells where the robot is allowed to stand are \n",
|
||
"\n",
|
||
"- . : empty space\n",
|
||
"\n",
|
||
"- S : start\n",
|
||
"\n",
|
||
"- G : goal\n",
|
||
"\n",
|
||
"- X : trap\n",
|
||
"\n",
|
||
"Everything else (i.e., #) is a wall and cannot be a state in the MDP.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "7116044b-c134-43de-9f30-01ab62325300",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"FREE = {\n",
|
||
" \".\",\n",
|
||
" \"S\",\n",
|
||
" \"G\",\n",
|
||
" \"X\",\n",
|
||
"} # The vector Free represents cells that the agent is allowed to move into."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1c9ad05e-9c6c-4e00-918c-44b858f45298",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Dictionaries to convert between grid and state index**\n",
|
||
"\n",
|
||
"We now want to identify all **valid states** of the maze (all non-wall cells). \n",
|
||
"To do this, we need two mappings:\n",
|
||
"\n",
|
||
"1. `state_to_pos[s] = (i, j)`: Given a state index $s$, return its grid coordinates (row, column).\n",
|
||
"2. `pos_to_state[(i, j)] = s`: Given coordinates (i, j), return the corresponding state index $s$.\n",
|
||
"\n",
|
||
"These two dictionaries allow easy conversion between **MDP state indices** and the **physical maze positions**. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "a1258de4",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Number of states (non-wall cells): 22\n",
|
||
"Start state: 0 at (1, 0)\n",
|
||
"Goal states: [16] at (4, 6)\n",
|
||
"Trap states: [19] at (5, 3)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"state_to_pos = {} # s -> (i,j)\n",
|
||
"pos_to_state = {} # (i,j) -> s\n",
|
||
"\n",
|
||
"start_state = None # will store the state index of start state\n",
|
||
"goal_states = [] # will store the state index of goal state\n",
|
||
"trap_states = [] # will store the state index of trap state\n",
|
||
"\n",
|
||
"s = 0\n",
|
||
"for i in range(n_rows): # i = row index\n",
|
||
" for j in range(n_cols): # j = column index\n",
|
||
" cell = maze_str[i][j] # cell = the character at that position (S, ., #, etc.)\n",
|
||
"\n",
|
||
" if cell in FREE:\n",
|
||
" # FREE contains: free cells \".\", start cell \"S\", goal cell \"G\" and trap cell \"X\"\n",
|
||
" # Walls # are ignored, they are not MDP states.\n",
|
||
" state_to_pos[s] = (i, j)\n",
|
||
" pos_to_state[(i, j)] = s\n",
|
||
"\n",
|
||
" if cell == \"S\":\n",
|
||
" start_state = s\n",
|
||
" elif cell == \"G\":\n",
|
||
" goal_states.append(s)\n",
|
||
" elif cell == \"X\":\n",
|
||
" trap_states.append(s)\n",
|
||
"\n",
|
||
" s += 1\n",
|
||
"\n",
|
||
"n_states = s\n",
|
||
"\n",
|
||
"print(\"Number of states (non-wall cells):\", n_states)\n",
|
||
"print(\"Start state:\", start_state, \"at\", state_to_pos[start_state])\n",
|
||
"print(\"Goal states:\", goal_states, \"at\", state_to_pos[goal_states[0]])\n",
|
||
"print(\"Trap states:\", trap_states, \"at\", state_to_pos[trap_states[0]])\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "721b968c-a355-46eb-aae4-5950441ba604",
|
||
"metadata": {},
|
||
"source": [
|
||
"*Hint.* If you don’t know what a dictionary is in Python, try the following code to help you understand."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "68744dd6-7278-4c20-8b82-34212685352f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"value2\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"my_dict = {\"key1\": \"value1\", \"key2\": \"value2\"}\n",
|
||
"print(my_dict[\"key2\"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0c76f4e1-b0ba-49c5-b9d5-cfb523024ba9",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 2.** Read the program above and answer the following questions:\n",
|
||
"1. What is the purpose of state_to_pos and pos_to_state?\n",
|
||
"2. Why do we only assign states to cells in FREE?\n",
|
||
"3. What would happen if the maze had multiple goal cells?\n",
|
||
"4. What is the total number of states (n_states) in this maze? Does this match the number of non-wall cells you can count visually?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d45828e3-43be-4318-a14c-1242d3a0dcbc",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Solution 2.**\n",
|
||
"1. `state_to_pos` maps: \n",
|
||
"$$\n",
|
||
"\\text{state index} \\quad s\\quad \\rightarrow \\quad \\text{grid position} \\quad (i, j)\n",
|
||
"$$\n",
|
||
"\n",
|
||
"`pos_to_state` maps: \n",
|
||
"$$\n",
|
||
" \\text{grid position} \\quad (i, j) \\quad\\rightarrow \\quad \\text{state index} \\quad s\n",
|
||
"$$\n",
|
||
"\n",
|
||
"We need both because:\n",
|
||
"\n",
|
||
"- `state_to_pos` lets us visualize, display, or plot the value function on the grid. \n",
|
||
"- `pos_to_state` lets us convert a grid position into the correct MDP state index, useful when building transition probabilities.\n",
|
||
"\n",
|
||
"2. We only assign states to cells in `FREE = {'.', 'S', 'G', 'X'}` because only these cells are **walkable**. Wall cells (`'#'`) **cannot be entered** by the agent, so they are **not included as MDP states**.\n",
|
||
"\n",
|
||
"3. If the maze had multiple `'G'` cells (several goal locations), we store them in a **list**, for example, goal_states = [5, 12, 23].\n",
|
||
"\n",
|
||
"4. 22 states. (Row 1: 5 free cells; Row 2: 4 free cells; Row 3: 3 free cells; Row 4: 5 free cells; Row 5: 5 free cells)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6d0fa298-7b7c-44fc-bbed-15ea002037c2",
|
||
"metadata": {},
|
||
"source": [
|
||
"-----\n",
|
||
"\n",
|
||
"The following function `plot_maze_with_states` creates a figure showing:\n",
|
||
"- the maze walls and free cells\n",
|
||
"- the state index for each non-wall cell\n",
|
||
"- special labels and colors for S (start state), G (goal state), and X (trap state). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "fc61ceef-217c-47f4-8eba-0353369210db",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGbCAYAAAAr/4yjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK99JREFUeJzt3Qd4VFX6x/E3CS1CEiSAofcS+spKEZCmgiBZKQqKiIuCrIDArmBBKSu661IUQYoNpFhoYhCpSlEEFekIiHThTwslEaRm/s97xjlMMAlRk9wp38/zXObOzZA5d+7k/O4pdybE5XK5BAAAEQl1ugAAAN9BKAAALEIBAGARCgAAi1AAAFiEAgDAIhQAABahAACwCAUAgEUowHEhISEydOjQDD+2d+/eEoyaNGlilqz8nfv27TOv8ZQpUzL1eeA/CAUfoX+E+seoy5dffvmbn+unkZQoUcL8/O6775ZA9tVXX5mQOH36tF8+9/jx46lU4bdyOF0ApJQnTx557733pGHDhim2r1y5Un766SfJnTu3BJpffvlFcuTIkaJiHjZsmDz88MOSP3/+bC1LZjy3hkLBggXN78hMS5YskaxWqlQpczxy5syZ5c8F30RLwce0atVKZs2aJZcvX06xXYOidu3aEhMTI4EYhN6hgNTlypXLLFlJW6J6PMLCwrL0eeC7CAUfc//990tCQoIsXbrUbrt48aLMnj1bHnjggVT/z8iRI+XWW2+V6OhoCQ8PN+Ghj/emZ62e7qlrF+/+/AsXLsiQIUOkfPnyplWiXVYDBw4029Pz2muvmYrEu9tl1KhR5vf/85//tNuuXLkiERER8tRTT9lt3mXQ2wEDBpj1MmXK2DJqX7e3efPmSbVq1UwZq1atKosWLZKMGDt2rHn8DTfcIDfeeKP89a9/NYGbkeeePHmyNGvWTAoXLmyet0qVKjJhwoQUv7906dKybds207Lz/H/vPnt9ffr162deV/0d+jq//PLLkpyc/Lv7/1esWGF+/8yZM+XFF1+U4sWLmwq9efPm8uOPP/7m/7/xxhtSrlw58x6pU6eOfPHFF795TFpjCjt27JD77rtPChUqZP5/pUqVZNCgQSkec+jQIenWrZvcdNNN9ri88847v+sYwHmcnvkYrVTq168v77//vtx1111m28KFC+XMmTPSqVMnU/lea8yYMRIXFyedO3c2AfLBBx/IvffeK5988om0bt3aPOaxxx6T22+/PcX/04p0xowZppJTWjHp79ExjR49ekhsbKxs2bJFXnnlFfnhhx9MRZyWRo0amf+v/9cz5qGVTmhoaIrKZ8OGDfLzzz/LbbfdlurvadeunXku3X99Xu2GUVoZeehzzJ07Vx5//HETMPqatG/fXg4cOGCCMS1vvvmmPPHEE9KhQwfp27evnD9/XjZv3ixff/21CdzrPbcGgFZm+hppy2b+/PmmDLrfvXr1Mo959dVXpU+fPpIvXz5baWolqc6dOyeNGzc2lacej5IlS5ruqmeeeUb+7//+z/zfP+K///2veZ2ffPJJ8z753//+Z94Lul8eb7/9tnlOPXnQUNqzZ4/ZjwIFCpiASo++Rnp8tUtJ3xf6Ht29e7fZfw0jdfToUalXr56dCKCvmb5vH3nkEUlMTDTPmZFjAB+g36cA502ePFm/18L17bffusaNG+eKiIhwnTt3zvzs3nvvdTVt2tSslypVytW6desU/9fzOI+LFy+6qlWr5mrWrFmaz7dr1y5XVFSU64477nBdvnzZbJs2bZorNDTU9cUXX6R47MSJE03ZVq9enebvu3LliisyMtI1cOBAcz85OdkVHR1tyh4WFuZKSkoy20ePHm2e49SpU/b/6u8eMmSIvT9ixAizbe/evb95Ht2eK1cu148//mi3bdq0yWwfO3asKz1/+9vfXFWrVk33Mek997Wvs2rRooWrbNmyKbbpczRu3Pg3j33hhRdcefPmdf3www8ptj/99NPmNTpw4EC6ZdPf6f17ly9fbsoaGxvrunDhgt0+ZswYs33Lli32/VC4cGFXrVq1UjzujTfeMI/z/p2637pN348et912m3k/7t+/P0V59Bh7PPLII64iRYq4Tpw4keIxnTp1Mu8zz2uXkWMAZ9F95IO0ma6DfXqmn5SUZG7TO4vS5rzHqVOnzNmintmtX78+1cefPXtW2rZta5ruelbs6T/WsQxtHVSuXFlOnDhhF+0yUcuXL0+zDHqmqmehq1atMve3b99uusGefvppM3NqzZo1Zru2GrTb588MIGuLR7tBPGrUqCGRkZHm7Dc9+pw6WP/tt9/+oef1fp31NdbXRs/89Xn1/vXo66vHRV9379dX90e71Tyv3e/197//PcVYgz6H8rwe69atk2PHjknPnj1TPE67FKOiotL9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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"def plot_maze_with_states() -> None:\n",
|
||
" \"\"\"Plot the maze with state indices.\"\"\"\n",
|
||
" grid = np.ones(\n",
|
||
" (n_rows, n_cols),\n",
|
||
" ) # Start with a matrix of ones. Here 1 means “free cell”\n",
|
||
" for i in range(n_rows):\n",
|
||
" for j in range(n_cols):\n",
|
||
" if maze_str[i][j] == \"#\":\n",
|
||
" grid[i, j] = 0 # We replace walls (#) with 0\n",
|
||
"\n",
|
||
" _fig, ax = plt.subplots()\n",
|
||
" ax.imshow(grid, cmap=\"gray\", alpha=0.7)\n",
|
||
"\n",
|
||
" # Plot state indices\n",
|
||
" for (\n",
|
||
" s,\n",
|
||
" (i, j),\n",
|
||
" ) in state_to_pos.items():\n",
|
||
" cell = maze_str[i][j]\n",
|
||
"\n",
|
||
" if cell == \"S\":\n",
|
||
" label = f\"S\\n{s}\"\n",
|
||
" color = \"green\"\n",
|
||
" elif cell == \"G\":\n",
|
||
" label = f\"G\\n{s}\"\n",
|
||
" color = \"blue\"\n",
|
||
" elif cell == \"X\":\n",
|
||
" label = f\"X\\n{s}\"\n",
|
||
" color = \"red\"\n",
|
||
" else:\n",
|
||
" label = str(s)\n",
|
||
" color = \"black\"\n",
|
||
"\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" label, # Attention : matplotlib, text(x, y, ...) expects (column, row)\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" fontsize=10,\n",
|
||
" fontweight=\"bold\",\n",
|
||
" color=color,\n",
|
||
" )\n",
|
||
"\n",
|
||
" ax.set_xticks([]) # remove numeric axes, we don't need.\n",
|
||
" ax.set_yticks([])\n",
|
||
" ax.set_title(\"Maze with state indices\")\n",
|
||
"\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"\n",
|
||
"plot_maze_with_states()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "db078d86",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2.4 Actions and deterministic movement"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "96e7f1f2-9d73-410b-853d-e39f40dfb5da",
|
||
"metadata": {},
|
||
"source": [
|
||
"We first define integer codes for each action. \n",
|
||
"\n",
|
||
"**Exercise 3.** How many possible actions can the agent take in the maze?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "22259ab4-527e-4d7c-bb30-98fb240da6d5",
|
||
"metadata": {},
|
||
"source": [
|
||
"We have four possible actions in the maze. \n",
|
||
"\n",
|
||
"In this following cell, each action is mapped to an integer (0,1,2,3). This makes it easy to store and use actions inside arrays and matrices\n",
|
||
"\n",
|
||
"Here we use Unicode arrow character:\n",
|
||
"\n",
|
||
"- \"\\u2191\" : ↑ (up arrow)\n",
|
||
"\n",
|
||
"- \"\\u2192\" : → (right arrow)\n",
|
||
"\n",
|
||
"- \"\\u2193\" : ↓ (down arrow)\n",
|
||
"\n",
|
||
"- \"\\u2190\" : ← (left arrow)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "f7f0b8e4-1f48-4d03-9e5f-a47e59c3e827",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"A_UP, A_RIGHT, A_DOWN, A_LEFT = 0, 1, 2, 3\n",
|
||
"ACTIONS = [A_UP, A_RIGHT, A_DOWN, A_LEFT]\n",
|
||
"action_names = {A_UP: \"\\u2191\", A_RIGHT: \"\\u2192\", A_DOWN: \"\\u2193\", A_LEFT: \"\\u2190\"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "3773781c-a0cd-48db-967b-d4b432d17046",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"↑\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(action_names[0])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4b957f5a-ee39-4437-abc1-4809105ad83c",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 4.** Now we define a **deterministic movement function** `move_deterministic(i, j, a)`. \n",
|
||
"\n",
|
||
"This function simulates the robot trying to move from (i, j) in direction a.\n",
|
||
"\n",
|
||
"But if the movement hits a wall or boundary, the agent stays in place.\n",
|
||
"\n",
|
||
"**Complete the `# !!TO DO HERE !!` part in the program below.**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "4b06da5e-bc63-48e5-a336-37bce952443d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def move_deterministic(i: int, j: int, a: int) -> tuple[int, int]:\n",
|
||
" \"\"\"Deterministic movement on the grid. If the movement hits a wall or boundary, the agent stays in place.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" i (int): current row index\n",
|
||
" j (int): current column index\n",
|
||
" a (int): action to take (A_UP, A_DOWN, A_LEFT, A_RIGHT)\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" (tuple[int, int]): new (row, column) position after taking action a\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" candidate_i, candidate_j = (\n",
|
||
" i,\n",
|
||
" j,\n",
|
||
" ) # It means “Unless the action succeeds, the robot stays in place.”\n",
|
||
"\n",
|
||
" # Now each action changes the coordinates of the robot:\n",
|
||
" if a == A_UP:\n",
|
||
" candidate_i, candidate_j = (\n",
|
||
" i - 1,\n",
|
||
" j,\n",
|
||
" ) # if the action is UP, then row becomes row -1\n",
|
||
" elif a == A_DOWN:\n",
|
||
" candidate_i, candidate_j = (\n",
|
||
" i + 1,\n",
|
||
" j,\n",
|
||
" ) # if the action is DOWN, then row becomes row +1\n",
|
||
" elif a == A_LEFT:\n",
|
||
" candidate_i, candidate_j = (\n",
|
||
" i,\n",
|
||
" j - 1,\n",
|
||
" ) # if the action is LEFT, then column becomes column -1\n",
|
||
" elif a == A_RIGHT:\n",
|
||
" candidate_i, candidate_j = (\n",
|
||
" i,\n",
|
||
" j + 1,\n",
|
||
" ) # if the action is RIGHT, then column becomes column +1\n",
|
||
"\n",
|
||
" # Check boundaries\n",
|
||
" if not (0 <= candidate_i < n_rows and 0 <= candidate_j < n_cols):\n",
|
||
" # If the robot tries to move outside the maze\n",
|
||
" # It will not move and it stays at (i, j).\n",
|
||
" return i, j\n",
|
||
"\n",
|
||
" # Check wall\n",
|
||
" if maze_str[candidate_i][candidate_j] == \"#\":\n",
|
||
" # If the next cell is a wall, the robot stays in place.\n",
|
||
" return i, j\n",
|
||
"\n",
|
||
" return candidate_i, candidate_j # Otherwise, return the new position\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c9e620e6",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2.5 Transition probabilities and reward function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "80bd2bca-7717-4b5f-bffa-76fe86a51d35",
|
||
"metadata": {},
|
||
"source": [
|
||
"Recall that we set the discount factor $\\gamma \\in(0,1)$, that is, the future rewards are multiplied by $\\gamma$, so immediate rewards matter a little bit more than future ones. \n",
|
||
"\n",
|
||
"\n",
|
||
"Moreover, we consider a probability error $p_{\\text{error}}$, which means, with probability $p_{\\text{error}}$, the robot **does not** execute the intended action but one of the 3 other directions (chosen uniformly). With probability $1-p_{\\text{error}}$, the robot executes the action that we asked."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "610253e7-f3f7-4a30-be3e-2ec5a1e2ed04",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"gamma = 0.95\n",
|
||
"p_error = 0.1 # probability of the error to a random other direction\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0d1ceff8-86e0-4c45-83d3-af9fae974608",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we initialize the state–transition probability : the probability of reaching next state $s'$ after taking action $a$ in state $s$. \n",
|
||
"$$\n",
|
||
" p(s' \\mid s, a)\n",
|
||
" = \\mathbb{P} \\big[S_t=s'\\,|\\, S_{t-1}=s, \\,A_{t-1}=a\\big]\n",
|
||
"$$\n",
|
||
"\n",
|
||
"We store these transition probabilities in the 3D array `P` (`P[a][s, s_next]`), which has shape `(n_actions, n_states, n_states)`:\n",
|
||
"\n",
|
||
"`P[a, s, s_next] = P(S_{t+1} = s_next | S_t = s, A_t = a)`.\n",
|
||
"\n",
|
||
"We also initialize the reward vector `R`, which has length `n_states`, where `R[s]` is the reward received when the agent is in state `s`.\n",
|
||
"\n",
|
||
"In this maze game, we assume that the reward depends only on the current state, which is natural: in navigation tasks, being in a particular location is what matters, not the direction you used to reach it."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "7a51f242-fe4e-4e74-8a1f-a8df32b194b8",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Initialize transition matrices and reward vector\n",
|
||
"P = np.zeros((len(ACTIONS), n_states, n_states))\n",
|
||
"R = np.zeros(n_states)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c08f4af5-a2a7-4baa-b5da-c7ce636d8a4a",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we assign the reward to each state. \n",
|
||
"\n",
|
||
"For each state index s:\n",
|
||
"\n",
|
||
"1. If s is a goal, then the reward = +1.0\n",
|
||
"2. If s is a trap, then the reward = −1.0\n",
|
||
"3. Otherwise for the normal cell, the reward = −0.01 every time you leave this cell.\n",
|
||
"\n",
|
||
"Recall that rewards are received at the moment the agent executes an action. Here when the agent moves out of the cell, we set reward −0.01. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "49d54d1f-dc29-45b6-ad31-ad0e848f920d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Set rewards for each state\n",
|
||
"step_penalty = -0.01\n",
|
||
"goal_reward = 1.0\n",
|
||
"trap_reward = -1.0"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "dd571ec8-c36a-4e20-bec6-9e6458dc622b",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 5.** Why do we set the step penalty to -0.01 in this MDP?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "00c51189-3ff0-4a5e-ad52-92747b971e16",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Solution 5** We assign a small negative reward for every step, which encourages the agent to reach the goal quickly.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "07bfb065-b1af-4df1-885e-780fe250f2fb",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 6.** We now define the reward vector. Recall that we have already initialized\n",
|
||
"`R = np.zeros(n_states)`.\n",
|
||
"If a state belongs to `goal_states`, we assign the `goal_reward`.\n",
|
||
"If it belongs to `trap_states`, we assign the `trap_reward`.\n",
|
||
"Otherwise, we assign the `step_penalty`. \n",
|
||
"\n",
|
||
"**Complete the `# TO DO` part in the program below.** "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "c70885b4-a301-42f2-ab70-2901d941cde7",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"for s in range(n_states):\n",
|
||
" if s in goal_states:\n",
|
||
" R[s] = goal_reward\n",
|
||
" elif s in trap_states:\n",
|
||
" R[s] = trap_reward\n",
|
||
" else:\n",
|
||
" R[s] = step_penalty"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b90fb80c-9452-48a2-889f-286703c2ae93",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we define terminal states and a helper function. Here terminal_states is a set containing all absorbing states, which means, reaching them ends the episode conceptually. \n",
|
||
"\n",
|
||
"Moreover, `is_terminal(s)` is a small helper to check if a state is terminal."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "eca4c571-39c7-468b-af86-0bab9489415e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"terminal_states = set(goal_states + trap_states)\n",
|
||
"\n",
|
||
"\n",
|
||
"def is_terminal(s: int) -> bool:\n",
|
||
" \"\"\"Check if a state is terminal.\"\"\"\n",
|
||
" return s in terminal_states\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3a9a1d54-8339-402b-84e9-105961ed78d7",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we need to fill the transition matrices `P[a][s, s_next]`. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d9cfd15c-12cc-48bb-bd88-07f3ae3db31c",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 7.** **Complete the `# TO DO` part in the program below** to fill the transition matrices `P[a][s, s_next]`. (There are only 2 # TO DO here)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "2d03276b-e206-4d1f-9024-f6948ca61523",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"for s in range(n_states): # We loop over all states s.\n",
|
||
" i, j = state_to_pos[\n",
|
||
" s\n",
|
||
" ] # We recover the states to their coordinates (i, j) in the maze.\n",
|
||
"\n",
|
||
" # First, in a goal or trap state,\n",
|
||
" # No matter which action you “choose”, you stay in the same state with probability 1.\n",
|
||
" # This makes the terminal states as the absorbing states.\n",
|
||
" if is_terminal(s):\n",
|
||
" # Terminal states: stay forever\n",
|
||
" for a in ACTIONS:\n",
|
||
" P[a, s, s] = goal_reward\n",
|
||
" continue\n",
|
||
"\n",
|
||
" # If the state is non-terminal, we define the stochastic movement.\n",
|
||
" # For a given state s and intended action a,\n",
|
||
" # With probability 1 - p_error, the robot will move in direction a;\n",
|
||
" # With probability p_error, the robot will move in one of the other 3 directions, each with probability p_error / 3.\n",
|
||
" for a in ACTIONS:\n",
|
||
" # main action (intended action)\n",
|
||
" main_i, main_j = move_deterministic(i, j, a)\n",
|
||
" s_main = pos_to_state[\n",
|
||
" (main_i, main_j)\n",
|
||
" ] # s_main is the state index of that next cell.\n",
|
||
" P[a, s, s_main] += (\n",
|
||
" 1 - p_error\n",
|
||
" ) # We add probability 1 - p_error to P[a, s, s_main].\n",
|
||
"\n",
|
||
" # error actions\n",
|
||
" other_actions = [\n",
|
||
" a2 for a2 in ACTIONS if a2 != a\n",
|
||
" ] # other_actions = the 3 actions different from a.\n",
|
||
" for a2 in other_actions: # for each of the error action,\n",
|
||
" error_i, error_j = move_deterministic(i, j, a2)\n",
|
||
" s_error = pos_to_state[(error_i, error_j)] # get its state index s_error\n",
|
||
" P[a, s, s_error] += p_error / len(\n",
|
||
" other_actions,\n",
|
||
" ) # add p_error / 3 to P[a, s, s_error]\n",
|
||
"# So for each (s,a), probabilities over all s_next sum to 1.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7841b264-af00-4322-b728-adcffac0ef89",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we check if the transition matrices `P[a][s, s_next]` are computed correctly.\n",
|
||
"For each action `a`, we sum the transition probabilities over all possible next states `s_next` and verify that these sums are equal to 1.\n",
|
||
"\n",
|
||
"This is because the matrix `P[a, s, s_next]` stores the transition probability\n",
|
||
"\n",
|
||
"$\\mathbb{P} \\big[S_t=s_{\\text{next}}\\,|\\, S_{t-1}=s, \\,A_{t-1}=a\\big]$. \n",
|
||
"\n",
|
||
"Therefore, for each action $a$, and for each state $s$, the sum over $s_{\\text{next}}$ of $\\mathbb{P} \\big[S_t=s_{\\text{next}}\\,|\\, S_{t-1}=s, \\,A_{t-1}=a\\big]$ should be 1. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "341fe630-8f87-4773-84ad-92d3516e53e2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Action ↑: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n",
|
||
"Action →: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n",
|
||
"Action ↓: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n",
|
||
"Action ←: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for a in ACTIONS:\n",
|
||
" # For each action a:\n",
|
||
" # P[a] is a matrix of shape (n_states, n_states).\n",
|
||
" # P[a].sum(axis=1) sums over next states s_next, giving for each state s:\n",
|
||
" # We print these row sums.\n",
|
||
" # If everything is correct, they should be very close to 1.\n",
|
||
"\n",
|
||
" probs = P[a].sum(axis=1)\n",
|
||
" print(f\"Action {action_names[a]}:\", probs)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "46d23991",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 3. Policy evaluation\n",
|
||
"\n",
|
||
"### 3.1 Bellman expectation equation"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "305b047c-e83b-4f42-b64e-e2050d5deeff",
|
||
"metadata": {},
|
||
"source": [
|
||
"Recall that the value function under a policy $\\pi$ is defined as:\n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=\\mathbb{E}\\Big[\\:G_t \\:\\Big|\\: S_t=s\\:\\Big]\n",
|
||
"$$\n",
|
||
"where the return $G_t$ is\n",
|
||
"$$\n",
|
||
"G_t=R_t +\\gamma R_{t+1}+\\gamma^2 R_{t+2}+... . \n",
|
||
"$$\n",
|
||
"This means *The value of a state is the expected discounted sum of all future rewards\n",
|
||
"when following policy $\\pi$.*\n",
|
||
"\n",
|
||
"We know that $G_t=R_t+\\gamma G_{t+1}$, and plugging this equation into the definition of $V^{\\pi}(s)$, we get \n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=\\mathbb{E}\\Big[\\:R_t \\:\\Big|\\: S_t=s\\:\\Big]+\\gamma\\mathbb{E}\\Big[\\:G_{t+1} \\:\\Big|\\: S_t=s\\:\\Big]. \n",
|
||
"$$\n",
|
||
"This step shows simply ``The total future reward = immediate reward + discounted reward from next state.''"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "88ea8d56-3b62-4690-9ff7-469e43726fbc",
|
||
"metadata": {},
|
||
"source": [
|
||
"For the expected immediate reward part $\\mathbb{E}[R_t| S_t=s]$, as we are in a maze problem, the reward depends only on the current state, not the time step, i.e., $\\mathbb{E}[R_t| S_t=s]=R(s)$. Hence we get \n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=R(s)+\\gamma\\mathbb{E}\\Big[\\:G_{t+1} \\:\\Big|\\: S_t=s\\:\\Big]. \n",
|
||
"$$\n",
|
||
"\n",
|
||
"Moreover, in this maze problem, we consider a deterministic policy $A_t=\\pi(s)$ (the action depends only on the state). Therefore, \n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=\\mathbb{E}\\Big[\\:R_t \\:\\Big|\\: S_t=s\\:\\Big]+\\gamma\\mathbb{E}\\Big[\\:G_{t+1} \\:\\Big|\\: S_t=s, A_t=\\pi(s)\\:\\Big]. \n",
|
||
"$$\n",
|
||
"\n",
|
||
"Now **given the state $S_t=s$ and $A_t=a$**, the next state is random (because of the error probability) and we know the transition probability \n",
|
||
"$$\n",
|
||
"\\mathbb{P}\\big(\\:S_{t+1}=s' \\:|\\:S_t=s, \\, A_t=a\\big)=P\\big(s'\\:\\big|\\:s, a\\big). \n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c25e255d-8f58-4eaf-9485-cee6ab3bea6c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Therefore,\n",
|
||
"$$\n",
|
||
"\\mathbb{E}\\big[\\,G_{t+1}\\,|\\,S_t=s,A_t=a\\,\\big] =\\sum_{s'}\\mathbb{E}\\big[\\,G_{t+1}\\,|\\,S_{t+1}=s'\\,\\big]\\times \\mathbb{P}\\big[S_{t+1}=s'\\,\\big|\\,S_t=s, A_t=a\\, \\big]\n",
|
||
"$$\n",
|
||
"$$\n",
|
||
"\\hspace{-1.2cm}=\\sum_{s'}V^{\\pi}(s')P\\big(s'\\:\\big|\\:s, a\\big),\n",
|
||
"$$\n",
|
||
"where here we use the Markov property. (**Question: Can you show the detailed computations here?**)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9a2b6cff-e848-44a2-b504-973067b367b3",
|
||
"metadata": {},
|
||
"source": [
|
||
"In conclusion, we have (the Bellman expectation equation)\n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=R(s)+\\gamma \\sum_{s'}P\\big(\\,s'\\,\\big|\\,s, \\pi(s)\\,\\big)V^{\\pi}(s').\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "15049fdb-f3af-4f78-b556-817284260ed0",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 3.2 Define a function which computes the value function $V^{\\pi}(s)$ for a given deterministic policy. \n",
|
||
"\n",
|
||
"\n",
|
||
"**Exercise $8^*$.** Now we define `policy_evaluation(...)`, which computes the value function $V^{\\pi}(s)$ for a given deterministic policy. \n",
|
||
"\n",
|
||
"The input of this function `policy_evaluation(...)` are:\n",
|
||
"1. policy: array of size `n_states`, each entry is an action 0,1,2,3, which correspond to UP, RIGHT, DOWN, LEFT.\n",
|
||
"2. `P`: the transition probabilities `P[a, s, s']`.\n",
|
||
"3. `R`: the reward vector `R[s]`.\n",
|
||
"4. gamma: the discount factor $\\gamma\\in(0,1)$.\n",
|
||
"5. theta: convergence threshold.\n",
|
||
"6. max_iter: which is used to avoid infinite loops.\n",
|
||
"\n",
|
||
"How can we apply the Bellman expectation equation\n",
|
||
"$$\n",
|
||
"V^{\\pi}(s)=R(s)+\\gamma \\sum_{s'}P\\big(\\,s'\\,\\big|\\,s, \\pi(s)\\,\\big)V^{\\pi}(s').\n",
|
||
"$$\n",
|
||
"here ?\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "20ef113f-0872-46e1-95ab-3cf5016f5a14",
|
||
"metadata": {},
|
||
"source": [
|
||
"We start with an initial guess of $V^{\\pi}$(e.g., all values = 0) and repeatedly apply the Bellman equation to update each state:\n",
|
||
"$$\n",
|
||
"V_{k+1}^\\pi(s) \\leftarrow R(s)+\\gamma \\sum_{s'}P\\big(\\,s'\\,\\big|\\,s, \\pi(s)\\,\\big)V^{\\pi}_k(s').\n",
|
||
"$$\n",
|
||
"until values converge.\n",
|
||
"\n",
|
||
"**Complete the `# TO DO HERE` part in the program below** "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "3a05f8bc-2b8f-4a4c-9931-6d28c3b0db35",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def policy_evaluation( # noqa: PLR0913\n",
|
||
" policy: np.ndarray,\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 10_000,\n",
|
||
") -> np.ndarray:\n",
|
||
" \"\"\"Evaluate a deterministic policy for the given MDP.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" policy: array of shape (n_states,), with values in {0,1,2,3}\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
" theta: convergence threshold\n",
|
||
" max_iter: maximum number of iterations\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_states = len(R) # get the number of states\n",
|
||
" V = np.zeros(n_states) # initialize the value function\n",
|
||
"\n",
|
||
" for _it in range(max_iter): # Main iterative loop\n",
|
||
" V_new = np.zeros_like(\n",
|
||
" V,\n",
|
||
" ) # Create a new value vector and we will compute an updated value for each state.\n",
|
||
"\n",
|
||
" # Now we update each state using the Bellman expectation equation\n",
|
||
" for s in range(n_states):\n",
|
||
" a = policy[s] # Extract the action chosen by the policy in state\n",
|
||
" V_new[s] = R[s] + gamma * np.sum(P[a, s, :] * V)\n",
|
||
"\n",
|
||
" delta = np.max(\n",
|
||
" np.abs(V_new - V),\n",
|
||
" ) # This measures how much the value function changed in this iteration:\n",
|
||
" # If delta is small, the values start to converge; otherwise, we need to keep iterating.\n",
|
||
" V = V_new # Update V, i.e. Set the new values for the next iteration.\n",
|
||
"\n",
|
||
" if delta < theta: # Check convergence: When changes are tiny, we stop.\n",
|
||
" break\n",
|
||
"\n",
|
||
" return V # Return the final value function, this is our estimate for V^{pi}(s), s in the state set.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "09ef3439",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 3.3 Evaluating a random policy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "eecbca15-f89f-47bf-a13d-7d7c051699b8",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we use the policy evaluation function `policy_evaluation` to evaluate a random policy. \n",
|
||
"\n",
|
||
"We first generate a `random_policy`, which is an array like [2, 0, 1, 3, 0, 2, ...] and has the size `n_states`. (Recall that the policy is a mapping from states to actions)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"id": "b4a44e38",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[0 3 2 1 1 3 0 2 0 0 2 3 2 3 2 3 2 0 3 1 2 1]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Random policy: for each state, pick a random action\n",
|
||
"random_policy = rng.integers(low=0, high=len(ACTIONS), size=n_states)\n",
|
||
"\n",
|
||
"print(random_policy)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3fe07992-ce82-4124-aebc-a6384d417f64",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we call the function `policy_evaluation(...)` to compute $V^{\\pi_{\\text{random}}}(s)$."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "c5f559b2-452a-477c-a1fa-258b40805670",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Value function under random policy:\n",
|
||
"[ -0.2 -0.2 -0.201 -0.204 -0.205 -0.202 -0.214 -0.429 -0.212\n",
|
||
" -0.207 -0.276 -0.459 -0.352 -0.366 -5.827 -4.605 20. -0.366\n",
|
||
" -0.999 -20. -6.4 -3.163]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"V_random = policy_evaluation(random_policy, P, R, gamma)\n",
|
||
"print(\"Value function under random policy:\")\n",
|
||
"print(V_random)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f46c70ba-2932-49af-b568-b5477260bc94",
|
||
"metadata": {},
|
||
"source": [
|
||
"Here in this value vector of the policy, \n",
|
||
"- If it is a negative values, then the agent tends to move around aimlessly, fall in traps, or take too long.\n",
|
||
"- It it is a higher values, then the agent is closer to the goal or more likely to reach it"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1efcb076-467c-42d8-94e8-87453f688bbd",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we define a function `plot_values`, which displays the value function $V(s)$ and displays it on the maze grid. It helps students visually understand:\n",
|
||
"- which states are good (high value, near the goal),\n",
|
||
"- which states are bad (low value, near traps),\n",
|
||
"- how a policy affects the long-term expected reward."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"id": "4c428327",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdcAAAGbCAYAAACWHtrWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAARjhJREFUeJzt3Qd4FGX+B/DvptcNoSQhEHqHUAUUUWnSBEQ9FRtgvb/lUBEBGyJFBBThlAPvTkVQBPQUEAREBFHpJfROIAFSSCC9kez8n/dddskmm7rvbrLL9+MzLjsz+868O5v5zdtmdJqmaSAiIiJl3NQlRURERAKDKxERkWIMrkRERIoxuBIRESnG4EpERKQYgysREZFiDK5ERESKMbgSEREpxuBKRESkGIOrg507dw46nQ6LFi2qku2vX78eHTt2hI+Pj9yPlJQUVEdi3yZPnlzVu1GtiN+M+F7Eb8hViWMu8lhYo0aNMHr06CrbJ6LKYHAtxbBhw+Dn54f09PQS13nsscfg5eWF5ORkVHdiHx966CH4+vpi/vz5WLJkCfz9/atsf37++WcGUCJySR5VvQPVmQicP/30E3788UeMHDmy2PKsrCysWrUKAwcORK1atVDd7d69W14oTJ06Ff369avq3ZHBVQR5awE2OzsbHh78eRJw4sQJuLmxHEDOhb/YMkqugYGBWLp0qdXlIrBmZmbKIOwMEhMT5WuNGjVQ3Ylq6+ocXMXzLsQFANmft7c3PD09q3o3iCqEwbUUovr0/vvvx6ZNm8yBqTARdEXwFUH4ypUrGDduHCIjIxEQEAC9Xo9BgwbhwIEDZW6nV69ecipKtDOJ9qbCDAYD5s6di7Zt28oAFBoair///e+4evVqmdsYNWqU/HfXrl1lu5apHaukNq2i+7Vlyxb5uRUrVmD69OmoX7++3Ie+ffvi9OnTxT6/c+dODB48GMHBwbL6uX379pg3b545b6LUKog0TVNpba779++X36n4bsV3LLa7Y8cOq+2Sf/31F8aOHYs6derIbd933324fPmyxbqpqak4fvy4fC2L+I6GDBmCDRs24JZbbpG/jc8++0wu+/LLL9GnTx+EhITIQNCmTRssWLCgxDT+/PNPdOvWTX53TZo0weLFi4ute+TIEZmm2I74nqdNmyaPvTX/+te/5O9BbDs8PBwvvvhisbZ0cRzbtWuHgwcP4q677pLNHc2aNcP3338vl//+++/o3r273F7Lli3x66+/lvmdmH4Py5cvx5tvvomwsDD5XYu/h9jY2GLrf/fdd+jSpYvcRu3atfH444/j4sWLZW7H2u9T5O/VV1+Vy0S+xXckapeSkpKQkZEh9+Pll18ultaFCxfg7u6OGTNmlLldIpuIR85RyX755RfxSD7tk08+sZifnJyseXp6aiNHjpTvd+/erTVt2lSbOHGi9tlnn2lTpkzR6tWrpwUFBWkXL140fy46Olqm9+WXX5rn3XXXXXIqatSoUVrDhg0t5j3zzDOah4eH9uyzz2oLFy7UJkyYoPn7+2tdu3bV8vLySs3Hc889J7ct9m3JkiXatm3b5DKxDbGtooru1+bNm+XnO3XqpHXp0kX7+OOPtcmTJ2t+fn5at27dim3Py8tLpv3uu+9qCxYs0MaMGaP169dPLhfbvvvuu2V6Yl9Mk4mYLz5ncvjwYZnPunXralOnTtU++OADrXHjxpq3t7e2Y8cO83riezXtY58+feRxe+211zR3d3ftoYcesthH07qFj0VJRD6aNWumBQcHy2MsvnvxfQjiux89erT8PsT2+vfvL9P99NNPi6XRsmVLLTQ0VHvzzTfl8s6dO2s6nU7mzyQuLk6rU6eO3Jb4fmfPnq01b95ca9++vUxX/IZMxHck5onvVWz7pZdeknkt+nsQxzE8PFyLiIjQXn/9dblumzZt5LrLli3TwsLC5Lbmzp1r/t2mpaWV+p2Yfg+RkZFy3+bMmSO/Gx8fH61FixZaVlZWse9a7Jf4nsR6vr6+WqNGjbSrV68Wy0/R763w7zM9PV1r166d3HfxdyB+W+I3IdLev3+/XOexxx6T33N+fr5FWrNmzZLf9/nz58s85kS2YHAtg/jjFCf02267zWK+OLmKk8CGDRvk+5ycHK2goMBiHXESFCd/EcxUBNc//vhDfvabb76xWG/9+vVW5xdlOsGJC4HCKhpcW7dureXm5prnz5s3T84/dOiQ+TsTgU+kW/jEKRgMBvO/X3zxxWIn0pKC6/Dhw2WwPnPmjHnepUuXtMDAQO3OO+8slkcRbApv69VXX5Un45SUlEoHV7Gu+K6LKhxETAYMGKA1adLEahpbt241z0tMTJS/EXEBYPLKK6/I9Xbu3Gmxngh4hYOrmCe+ExHMC//2RNAW633xxRfmeeI4inlLly41zzt+/Lic5+bmZnGBIn7T5fleTL8HEYwLB+IVK1bI+eJ3IYggHxISIgNidna2eb01a9bI9SZNmlSh4CrWF+v88MMPxfbJdMxNeVi3bp3FcnERYO1vjUg1VguXQVQhjRgxAtu3b7cYAiGqhEWVrKiaFETVlKnTRUFBgeyZK6ouRRXbvn37lOyLqFYLCgrC3XffLau/TJOoahPb2rx5MxzhySeflD2kTe644w75evbsWXP1bXR0NF555ZVi7btFh1mUh/g+f/nlFwwfPlxWo5rUrVsXjz76qKxmTUtLs/jMc889Z7EtsY8infPnz5vniapGEcfLO8yjcePGGDBgQLH5oprTRFQxi2Miql7F91G0yllUGZu+L0FUW4vfiOm7M3X0uvXWW2XVceH1irbti6rbvLw8+T0X7vDz7LPPyqrztWvXWqwvfiPit2witiuOT+vWrWWVsInp34X3qTSiOlY0j5j87W9/k8dG5EPYs2ePbFZ54YUXZFW4yT333INWrVoV28+y/O9//0OHDh1kVX9RpmMuOuyJKvJvvvnGvOzw4cOyWlxURxPZG4NrOZhOaqaOTaLd5o8//pAnKhF8BdEe9vHHH6N58+Yy0Io2JXFCFH/M5WnTK49Tp07JtETbnki78CTamay1C9tDgwYNLN6LNlXB1O575swZ+Sra+FQQbaWiZ7YIBkWJwCC++6JtfGXtY2WI4GqNaN8VJ3PRzieClTgeog1SKHrsi+6Xad8K75e4ABC/o6KK5t90oVB0vrjwERchhS8kBNEuWfTiRlysRUREFJtXke+q6L6KbYj2XNPFaEn7KYjgWnQ/yyJ+X2X9tsTFhvi7XblypfztCCLQiuD+4IMPVmh7RJVRfbtjViOiZChOAt9++608aYpXUeIpXJJ4//338c477+Cpp56SQ11q1qwp/8BFqaKkjiiFT0bGmlBLoqRVmEhHBNbCV+OFiZN6ZZRUmhTbN108FGZtnmAtD1XFHvtYuIRa+EQvai/E72POnDkyUIngJkpt4mKr6LGvyu+upG07w/GsDFGinj17tgywjzzyiLw4Fh3KTBcPRPbE4FpOIpCK4ClKouKPVFyti163JqLXZe/evfH5558X69UoSrGlESUXa1VwRa/omzZtKqsCb7/9dqsn+soS27d2pyax/cLVsOUl9tNUDVfaeNryVhGLiwbRu1WMdyxK9PYVFzFFS1+OIsZB5+bmYvXq1RalUluq6Bs2bChrKYoqmn+xnml+4eMkqopFtbyjxjIX3VcRlEXvcdE7vOh+ih7QhYl5puUV+X2J31ZZROm2U6dO8mJUlNpjYmLwySefVGhbRJXFauFyMpVSJ02ahKioqGLtX+Lqv+iVvmgjLc9QA3GyEEGi8FARMYRHVDcWJu6uJEqTomRcVH5+fqVvZSi2L4a0iJOyyZo1a6wOpyiPzp07yypUMWSo6D4V/o5Md4cqa7/Fd9u/f385rrhwu3dCQoK80OnZs6dsY6yoigzFKW3fiuZLpCeG51SWGL4kjseuXbvM88Rvo2iNhQieopT8z3/+02L74gJP7INo03QEMZSo8F3MxIVmXFycHDYliKFLosZl4cKF8kLEZN26dTh27FiF9/OBBx6Qfx/i5i5FFf0bfOKJJ2R7vfgtihu9mPaJyN5Yci0nESx69OghT/BC0eAqqpumTJkiO/uI9Q4dOiRPhuUp+YmqZFGlKDrLPP3007LtVJyIxNjFwh11RCcZMaZVjNETAV4EHDG4XpQcRCAXY0hFZ5KKeuaZZ+QJUdxpSgRwUdX59ddfm0ugFSVKkmKc59ChQ+V9jMV3Ijq4iEAmxm+KsaKm6nZhzJgxMu+mzmPWiHGeGzdulIFUdIwRN5gQ40zFyXrWrFmV2k9xchb7JgJhZe9dK46BCHAir+LYiLbv//znPzKYiABTGePHj5e3phTHQ4zVFBch//73v2UJT9ScFC7Rv/HGG3jvvffkumJ8qSgJinGvolbFUR13RBOIOC7iuxQXPCKQiTZX0bFKEL/RmTNnyuXiNyyqaMV64vcqxqmK8aoV8frrr8vfq2g7FX874nckxpmL2gPxdyM6O5mIDm/i+xTH+vnnn+fNKMhxlPc/dmHz58+X3fuLjuk0DcURwynEsB0xfu/222/Xtm/fXmw4i7WhOMLXX38th26IoRUdO3aUQwmsjXMV/v3vf8txpmI7YiiKGGc4fvx4OTSlMkNxhI8++kgOqRDDQsS+79mzp8ShON99953FZ0vK059//inHsop9FGNUxTCIwuOFxZCdf/zjH3JMpxh7WPjnWHQojrBv3z45xCUgIECOre3du7d5rG5ZeTTtu2lsamWG4txzzz1Wl61evVrmTYzvFOM2Z86cKYfBFB2TWlIa1oZiHTx4UM4TaYrjIsZxfv7558XSNA29adWqlRx3LcZ2Pv/888WGQIm02rZtW+58ie2IoVKlMX2n3377rfbGG2/I4TbiNynSszaOdPny5XL8sfiN1axZU45FvXDhgsU65RmKYxpnLsb0iu9G/M3Ur19frpOUlFRsu4MHD5ZpFv2tENmTTvzPgbGciFyEuEOT6Gcgak0qU2PiKGLIjqhJsnYXMSJ7YZsrEbksUTUvxtGKtlciR2KbKxG5HNFbWnQI/O9//yvbWUV7OJEjseRKRC5HPIhAlFZFkP3qq6/kQwWIHIltrkRERIqx5EpERFQVba7iFm6XLl2SN+euzI3XiYioaolKSnGzD/FAg8IPelApJyfH4mY0thDjxws/6MElg6sIrFV1ezkiIlJH3HlN3A7SHoG1ceN6iI+/oiQ90U4u2sydNcCWK7iaHiclDkplbjNHRERVS9ztTRSSCj8eUCVRYhWB9dz5FdDr/WxKKy0tC40aPiTTdOngaqoKFoGVwZWIyHnZu2lPH+ADfYCNDxYp40lizoDjXImISB0RGA02BkcXCK7sLUxERKQYS65ERKQOS64SgysREakj7kuk2XhvIhe4txGrhYmIiBRjyZWIiNQxaAqqhZ2/5MrgSkRE6rDNVWK1MBERkWIsuRIRkTosuUoMrkREpA6Dq8TgSkRE6mgKgqtIw8mxzZWIiEgxllyJiEgZnWaQk61pODsGVyIiUodtrhKrhYmIiBRjyZWIiBTfoUmzPQ0nx+BKRETqsFpYYrUwERGRYiy5EhGROiy5SgyuRESk+HmuBtvTcHKsFiYiIlKMJVciIlKH1cISgysREanDoTgSgysREanDkqvENlciIiLFWHIlIiJ1+Mg5icGViIiU0RkMcrI1DWfHamEiIiLFWHIlIiLFN5HQbE/DyTG4EhGROuwtLLFamIiISDGWXImISB2WXCUGVyIiUod3aJIYXImISB2WXCW2uRIRESnGkisRESmuFjbYnoaTY3AlIiJ1OM5VYrUwERGRYiy5EhGROuzQJDG4EhGROqJK18BqYVYLExGRU9u6dSuGDh2K8PBw6HQ6rFy50mL56NGj5fzC08CBA+26Tyy5EhGRU1cLZ2ZmokOHDnjqqadw//33W11HBNMvv/zS/N7b2xv2xOBKREROHVwHDRokp9KIYBoWFgZHYbUwERFVS2lpaRZTbm5updPasmULQkJC0LJlSzz//PNITk6GPTG4EhGR+nsLG2ycAERERCAoKMg8zZgxo1K7JKqEFy9ejE2bNmHmzJn4/fffZUm3oKAA9sJqYSIiUkczGCdb0wAQGxsLvV5vczvpiBEjzP+OjIxE+/bt0bRpU1ma7du3L+yBJVciIqqWJVe9Xm8xqeqE1KRJE9SuXRunT5+GvTC4EhHRTeXChQuyzbVu3bp22warhYmIyKl7C2dkZFiUQqOjoxEVFYWaNWvK6b333sMDDzwgewufOXMG48ePR7NmzTBgwADYC4MrERE59cPS9+zZg969e5vfjx07Vr6OGjUKCxYswMGDB/HVV18hJSVF3miif//+mDp1ql3HulYouK7vPQV+7vYdeEvk6obsmg5Xs6bbW3A1rnicXFWvXr2glXLLxA0bNsDRWHIlIiJ1+DxXicGViIiculq4OmJvYSIiIsVYciUiIoUU3ERCpOHkGFyJiEgdVgtLrBYmIiJSjCVXIiJShyVXicGViIic+g5N1RGDKxERqcOSq8Q2VyIiIsVYciUiInVYcpUYXImISB22uUqsFiYiIlKMJVciIlJHPJ1Gs7Fa19bPVwMMrkREpA7bXCVWCxMRESnGkisREanDkqvE4EpEROqIJ+IYbOzta/NTdaoeq4WJiIgUY8mViIjUYbWwxOBKRETqiBpdg63BFU7PYcE1uH0DRE4YBv+IWsiIScahmauQcijW6roht7dE05F3ILBpGLT8AlzZfw5HPl6LnMQ08zqhd7VGm38MhE+IHqnHL+HA9B+ReT4JjuRqeXK1/LhqnlwRj5MLYcnVcW2unnpfdJ0zEudW7MCGvtNw/rsd6DZnJDwCfKyu7xHgjTOL/8CmobPw2/APcS0zF53fH2Fe7t+gNjpNeQhH5v6MDf2mI2nPWXT98HHo3B3XhOxqeXK1/LhqnlwRjxO5Iof82sJ6tUHO5TTErNoDw7UC+ZqbnC7nW3Npw0Ek/nUCBdl5KMi5huhlfyG4bYT5j6PeoI5I3nsWiX+egCEvH6c+3wyv4ADU7NjQEdlxyTy5Wn5cNU+uiMfJtWgGTcnk7BwSXPXNwpB2Ms5innivbx5Wrs/X6twY6ecuQyswWE1PzM+ITpTzHcXV8uRq+bG2D66QJ1fE4+Sitz/UbJycnEOCq7ufF/LTcyzmXUvPgYefd5mf1beoi5Z/74ejH681z/Pw85KfL5qeu3/Z6anianlytfy4ap5cEY8TuSK7dGiqN6ADIt+4V/47Oz4FSbvOyHYViw0H+CAvJbPUdAKbhqLbvFE4PPsnmYZJflZesfYYzwBvFGTmwl5cLU+ulh9XzZMr4nFycezQZL/genHDATmZRAzrgsYjehS74oxe+lepfzi3fvoUjs3fgIvrb6QlpJ2OR1CLuub3oq0loHEI0s4kwF5cLU+ulh9XzZMr4nFycQyujqsWjt9yFD4hQfKPSOfhLl99agcifssRq+sHNAmRfzgnFm7EhTX7ii2/uC4KtW5pgpAeLeDm6Y7mT/VCXmqW7JLvKK6WJ1fLj6vmyRXxOJEr0mla2S3HaWlpCAoKwvLOr8HPvXLtFsEdGiJyvHEcW2ZsEg59sBpXD8XIZT6hQei1/GVseXgechJS0eGd+1H/nk6yJ2BhpuWC6EnY+qUB8o8y9cQlHJj2g+PHULpYnlwtP9U1T0N2TYerWdPtLZs+z+Nkf6bzeGpqKvR6vd3Svzr7Seh9vWxLKzsPwa9/abd9dangSkSuedJWEVyrI1c7Tg4LrjNHqwmuExY5dXDlqGoiIiLFeG9hIiJSRlSGajZ2SCpHhWq1x+BKRETqsLewxOBKRETqMLhKbHMlIiKntnXrVgwdOhTh4eHQ6XRYuXJlsWrmSZMmoW7duvD19UW/fv1w6tQpu+4TgysREakvuRpsnCogMzMTHTp0wPz5860unzVrFv75z39i4cKF2LlzJ/z9/TFgwADk5FjeJlMlVgsTEZE6Km68r1Xs84MGDZKT9aQ0zJ07F2+//Tbuvdd4283FixcjNDRUlnBHjLjxuEKVWHIlIqJqKS0tzWLKza34/aGjo6MRHx8vq4JNxHjc7t27Y/v27bAXBlciIlJGM6iZhIiICBkITdOMGTMqvD8isAqipFqYeG9aZg+sFiYiomrZWzg2NtbiDk3e3s5zh0CWXImIqFrS6/UWU2WCa1hYmHxNSLB8KpJ4b1pmDwyuRETk1L2FS9O4cWMZRDdt2mSeJ9pvRa/h2267DfbCamEiIlKmcJtpZVX08xkZGTh9+rRFJ6aoqCjUrFkTDRo0wCuvvIJp06ahefPmMti+8847ckzs8OHDYS8MrkRE5NT27NmD3r17m9+PHTtWvo4aNQqLFi3C+PHj5VjY5557DikpKejZsyfWr18PHx8fu+0TgysREamjKajWreA41169epV6s39x16YpU6bIyVEYXImISB1RpWtQkIaTY3AlIiJlxOPmNFsfOccb9xMREVFRLLkSEZE6rBaWGFyJiEgdUaOrKUjDybFamIiIqCpLrgM3T7K4z6OzW9PtLbiaIbumw5W44jFa7YJ54lU6mbBDkxGrhYmISB22uUq84CQiIlKMJVciInLqewtXRwyuRESkDquFJVYLExERKcaSKxERKcNqYSMGVyIiUkeMojEoSMPJMbgSEZEy4slvmmOfOFctsc2ViIhIMZZciYhIGba5GjG4EhGROhyKI7FamIiISDGWXImISBlWCxsxuBIRkTLsLWzEamEiIiLFWHIlIiJ1DDrjZGsaTo7BlYiIlGGbqxGrhYmIiBRjyZWIiJTRNJ2cbE3D2TG4EhGRMqwWNmJwJSIitUNxDLan4ewYXG0Q3L4BIicMg39ELWTEJOPQzFVIORRrdd2Q21ui6cg7ENg0DFp+Aa7sP4cjH69FTmKaeZ3Qu1qjzT8GwidEj9Tjl3Bg+o/IPJ/kwBy5HpXHKLBJCFq/Mhg1WoXDq4Y/1veZivyMHAfnCKhZKE+ZMck4OHMVrpaQp8IaDu+KDm8Ox+E5a3F22TY5L+S2FmjzjwHwCQmSZzTxuzs892ekn0mAI7nicaKbGzs0VZKn3hdd54zEuRU7sKHvNJz/bge6zRkJjwAfq+t7BHjjzOI/sGnoLPw2/ENcy8xF5/dHmJf7N6iNTlMewpG5P2NDv+lI2nMWXT98HDp3HqLqcowM+QbE/XoIUVP+h6rMk8hD9IodWN93GqK/24HupeTJxLt2IJo+3hNpp+It5qeejMP2fyzC+n7TsGHgDCT8dQLdZj0GR3LF43QzM7W5ajZOzo5n7koK69UGOZfTELNqDwzXCuRrbnK6nG/NpQ0HkfjXCRRk56Eg5xqil/2F4LYR5uBZb1BHJO89i8Q/T8CQl49Tn2+GV3AAanZs6OCcuQ7VxygzJgmxq/c6vFRXWF0recpJTpfzS9N+/DCc/GIz8tKyLOaL70NMJprBAN+6NRx6UeeKx+mmZtBBs3HiONebmL5ZGNJOxlnME+/1zcPK9flanRsj/dxlaAUGq+mJ+RnRiXJ+8t5oxXt/c1B9jJw1T3X7tIWHvzcu/ByFBkO7FFvuGxqEXkv/AQ8/b0AHnPzyd4fm2RWPExGDayW5+3khP92yHedaeo7xBFUGfYu6aPn3ftj7xrfmeR5+XvLzRdNz9y87PXLMMaouebpWgTx5BvqgzZiB2PGPRSWmmZ2QinV9p8m0I+7pjJyEVDiSKx6nmxnvLWzE4FpO9QZ0QOQb98p/Z8enIGnXGdlWVJhoI8pLySw1ncCmoeg2bxQOz/5JpmGSn5VXrI3JM8AbBZm5SvPhyux9jKoqTx2u5ymrhDx5Bvggt4Q8tRkzCDGr9yIzNrnMbRVk5eHc9zsx8Jc3sXXUv5B16SrswRWPE93Aca5GDK7ldHHDATmZRAzrgsYjehS7io5e+lepJ4NbP30Kx+ZvwMX1N9IS0k7HI6hFXfN70X4U0DgEaWw3qjbHqDrkqcGwLmhiJU9nSshTna5NZZWw6TMiENdoXU+25e+ZaKW0pwPcvD1ku6u9gqsrHieiotihqZLitxyVwxfEiUHn4S5ffWoHIn7LEavrBzQJkSeDEws34sKafcWWX1wXhVq3NEFIjxZw83RH86d6IS81Sw4zoOpxjAQ3Lw+4eRqvSd283OV7R4q7nqcG1/PUoIw8/fH0Qmx57BP8/vincko5dhGnv/4TB2esksvD746Ef/2agE4nS4uRY4egIPuaHJLjKK54nG5mtnZm0kydmipg8uTJ0Ol0FlOrVq1QlfiLq6RradnY/doSRI4fhnbjhiIzNgm7xy4xt4f5iE4iy1/GlofnyTaspo/1hFewH9q8OlhOJqbloodj1Lvfoe3Ye+SJJvXEJZk+O2lUn2MkSnN9V71unt9//ZvyddO9s5Edl+KwPO16bYns/Rs5bigyYpOws1CeROek3stfxuaH58m21NzkDIvPi57oYsynuHAT/OoGo/WL/eEdHCB73149egHbX/oS+Q5sjnDF43Qzq6o217Zt2+LXX381v/fwqNrwptO0srORlpaGoKAgpKamQq/Xw1Ws6fYWXM2QXdPhSlzxGLni5ZIrVoG52t+Svc/jpvRPDXscgZ5eNqWVfi0PzVd/Xe59FSXXlStXIioqCtWFK/5NEBGRC9xEIi0tzWLKzS25RuXUqVMIDw9HkyZN8NhjjyEmJgZVicGViIiUMRh0SiYhIiJCloZN04wZM6xus3v37li0aBHWr1+PBQsWIDo6GnfccQfS02/cIMXR2OZKRETVss01NjbWolrY29v62OdBgwaZ/92+fXsZbBs2bIgVK1bg6aefRlVgcCUiompJr9dXqn24Ro0aaNGiBU6fPo2qwmphIiJyqRv3Z2Rk4MyZM6hb98a9AxyNwZWIiJw6uI4bNw6///47zp07h23btuG+++6Du7s7HnnkEVQVVgsTEZFTu3DhggykycnJqFOnDnr27IkdO3bIf1cVBlciIlLGoOnkZGsaFbFs2TJUNwyuRESkTGVuX1iUrZ+vDtjmSkREpBhLrkREpAyf52rE4EpERMoYoKDNVTz70MmxWpiIiEgxllyJiEgZFTeB0Gz8fHXA4EpERMqIwGhgcGVwJSIidVhyNWKbKxERkWIsuRIRkTKG65MtbP18dcDgSkREyrBa2IjVwkRERIqx5EpENhuya3pV7wJVEwat4jfet5aGs2NwJSIiZVgtbMRqYSIiIsVYciUiIsXVwrA5DWfH4EpERMqwWtiI1cJERESKseRKRERqHzkHPnKOwZWIiJThw9KNGFyJiEgZMcbVYPM4V+cvubLNlYiISDGWXImISBlNQZurxjZXIiKiG9jmasRqYSIiIsVYciUiImXYocmIwZWIiJQR7aUa21xZLUxERKQaS65ERKQMb9xvxOBKRETKsM3ViNXCREREirHkSkREyrBDkxGDKxERKcM2VyMGVyIiUoYlVyO2uRIRESnGkqsNgts3QOSEYfCPqIWMmGQcmrkKKYdira4bcntLNB15BwKbhkHLL8CV/edw5OO1yElMk8sDm4Sg9SuDUaNVOLxq+GN9n6nIz8hxcI5cj8pjJDR7shcaDL8FnoG+yLp4Bcc+3YCknacdmCOgZqE8ZcYk4+DMVbhaQp4Kazi8Kzq8ORyH56zF2WXbzPN9QvRo9+pg1OnWTL6/euQCdoxZZNc8kOtitbARS66V5Kn3Rdc5I3FuxQ5s6DsN57/bgW5zRsIjwMfq+h4B3jiz+A9sGjoLvw3/ENcyc9H5/RHm5YZ8A+J+PYSoKf9zYC5cm+pjFHpXazR5rCd2j12CDX2m4uzSv3DLrMfkdhyZJ5GH6BU7sL7vNER/twPdS8mTiXftQDR9vCfSTsVbzHf38USPfz2N1FPx+GXoLKzv/z6OL9ho51zQzTAUx2DjVFHz589Ho0aN4OPjg+7du2PXrl2oSgyulRTWqw1yLqchZtUeGK4VyNfc5HQ535pLGw4i8a8TKMjOQ0HONUQv+wvBbSOgczcegsyYJMSu3ov0MwkOzonrUn2M/OrVROrRC+ZjdHFdFNw83OR8R6lrJU85yelyfmnajx+Gk19sRl5alsX8iCGdkZeahVNfbEFBVh60AgNSjl20cy6I1Fq+fDnGjh2Ld999F/v27UOHDh0wYMAAJCYmoqowuFaSvlkY0k7GWcwT7/XNw8r1+VqdGyP93GV5MiPnOEZxGw/Bu1Yg9C3qAm461B/SGdmJaQ69IKpMnur2aQsPf29c+DnKah5zElPRfe4oDNz4Fu786gWE9Ghhl32nm4OmaBLS0tIsptzcXFgzZ84cPPvss3jyySfRpk0bLFy4EH5+fvjiiy9QVRhcK8ndzwv56ZZtotfSc+Dh513mZ8XJueXf++Hox2vtuIek+hjlXsmQJds7vnoBg/98D23H3oOD7/8IQ14+HJknkYfy5skz0AdtxgzEwQ9WWV3upfdF3V5tcf7HXdgwcIYs3d7ywSPwr++40ji54MPSNdsmU2/hiIgIBAUFmacZM2YU215eXh727t2Lfv36mee5ubnJ99u3b0dVYYemcqo3oAMi37hX/js7PgVJu84Ua2sT7V55KZmlphPYNBTd5o3C4dk/yTTIeY5R82f6IOT2Ftj8t4+RdekqanVqhC4fPIIdL36JtFNxdstTh+t5yiohT54BPsgtIU9txgxCzOq9yIxNtro8PzsPVw7FIP73Y/K9eE09fgl1ujdH5oWdyvNDVBGxsbHQ6/Xm997exS8ik5KSUFBQgNDQUIv54v3x48dRVRhcy+nihgNyMokY1gWNR/QoVtqJXvpXqSftWz99Csfmb8DF9TfSIuc4RkEt6+LSpsOyl7CQvC9adhCq3a2p3YJr0Tw1GNYFTazk6UwJearTtamsEjZ9RgTiGq3roWbHhtgz8VuknYxH7a5N7LLvdHMSjSgGBWkIIrAWDq7OhNXClRS/5Sh8QoLkCVzn4S5ffWoHIn7LEavrBzQJkSftEws34sKafVbXcfPygJun8XrHzctdvqfqc4zEcJe6fdrBN6yGeZhPjTb1i7WB2lPc9Tw1uJ6nBmXk6Y+nF2LLY5/g98c/lZPorHT66z9xcIaxmjj25/0IahmO0J4tAZ1Ovor3iTtOOSxP5Fo0Ua2r2T6VV+3ateHu7o6EBMu+D+J9WFj5+lfYA8/elXQtLRu7X1uCyPHD0G7cUGTGJskhGqb2MJ/QIPRa/jK2PDwPOQmpaPpYT3gF+6HNq4PlZGJa7lu3Bvquet08v//6N+XrpntnIzsupQpy6PxUH6Mzi7fKKtke/3kWngG+spfu8QW/IGn3GYfmaddrS2Tv38hxQ5ERm4SdhfLkGxqE3stfxuaH5yE7IRW5yRkWnxftw2L8tOghLIhSuCjBtn15ELpMexiZF65g94Sl5tI5UXXn5eWFLl26YNOmTRg+fLicZzAY5PuXXnqpyvZLp2lamcN1RS8t0ZicmprqtEV0a9Z0ewuuZsiu6XAlrniMXLF/+DAX+925Inufx03pL+08Dn7uZXcaLE1WQS4e3fdhufdVDMUZNWoUPvvsM3Tr1g1z587FihUrZJtr0bZYR2HJlYiInPoOTQ8//DAuX76MSZMmIT4+Hh07dsT69eurLLAKDK5EROT0N+5/6aWXqrQauCh2aCIiIlKMJVciIlKGN+43YnAlIiJl+DxXI1YLExERKcaSKxERKcNqYSMGVyIiUobB1YjVwkRERIqx5EpERMqwQ5MRgysRESkjbqhrsLFat+yb8lZ/rBYmIiJSjCVXIiKqls9zdWYMrkREpExFn8dqja2frw4YXImISBmWXI3Y5kpERKQYS65ERKQMbyJhxOBKRETKiLioKUjD2bFamIiISDGWXImISHG1sM7mNJzdTR1cXaFHWlGru70FVzJs13S4mjebToGrOdzS9fI0/uidcCX5BZkO2Q6rhY1YLUxERKTYTV1yJSIitdhb2IjBlYiIlOFNJIxYLUxERKQYS65ERKSMeFycxkfOMbgSEZE64kHnBj4sncGViIjUYcnViG2uREREirHkSkREyrC3sBGDKxERKcNxrkasFiYiIlKMJVciIlKG9xY2YnAlIiJlWC1sxGphIiIixVhyJSIiZTjO1YjBlYiIlOFQHCNWCxMR0U2jUaNG0Ol0FtMHH3ygfDssuRIR0U3VoWnKlCl49tlnze8DAwOVb4PBlYiIquVQnLS0NIv53t7ecrKVCKZhYWGwJ1YLExGR8pKrwcZJiIiIQFBQkHmaMWOGkn0U1cC1atVCp06dMHv2bOTn50M1llyJiKhaio2NhV6vN79XUWodM2YMOnfujJo1a2Lbtm144403EBcXhzlz5kAlBlcb1GzfAJEThsE/ohYyY5JxcOYqXD0Ua3XdoJbh6PDmcPiFB0PnpkN6dCKOzv8FV/afk8trdW6M2xc+g/ysXPNnYtfsx6EPf3LK/LSfeC/qD+xw4wNuOnj4eOH3J+Yj9cQlR2XJ5dSoF4TxW19Gbmaeed7ZHeew5LllJX7mloc64c7neiCwTgDSEtLx2ydbceCnw3JZeNsw3Pf+EATXNx7HxNOXsWHWJpzbHYOq0PGhzhg8dQg2vr8Bu7/aWeJ6gaGB6PfmADTu0US+v3TgIpY98415eaeHO6PH/90B3xq+iNl1Hmvf/gmZlzPssMc6uOmaQ6cLBuAJIA8GLQaaFn99uTvcdC2g09WSfWAN2kVo2vlS0itr/Yqm53jiWayaoue5isBaOLiWZOLEiZg5c2ap6xw7dgytWrXC2LFjzfPat28PLy8v/P3vf5elYhXB24TBtZI89b7oNmckjn6yHhd+3o/6gzuh+5yR+PW+j5CfkVNs/az4q9g9YSmy41Pk+7q92uDWOSOxfuD7MOQaqySupWdjXd9pcIX8HPxglZxMmj56Oxre15WBVZGZt3+MnPQbF2IlqdsmDMPeG4xFT34jg3DTHo0x8r+PIO5YPBJPJ+HqxVR88/x3SLmUKtdv278VRv33EUzv9hHyr/8uHSUgJAC3Pn0bEk8klLqep68nHls8EodWHsTaN1fjWs41hLWpa17e8NZG6D2uH5Y9/Q0un0pE/3cG4t4P78PSUUvssNciCOShwHAAgPg70cPdLRIGLRcarsrAC50nCgw7ZPB1d+sAA3KgadbzWNb6FU2vKmgKOiRpFVz/tddew+jRo0tdp0kT44VYUd27d5fVwufOnUPLli2hCttcK0kEk5zLaYhZtQeGawXyNSc5Xc635lpqtjkQQaeDZtDg4e8Nn1rqe6lVx/w0GHYLYn7aa88skBU169dAysUUGViFM9uikRqXipBmdeT77JRsc2DV6QCDwQDvAG9ZynW0AZMG489//SH3qTTt7+uArKvZ+GvBH8jLzINWoCHu0I2Ltvb3d8Th1Qdx6eBFXMu+hi0f/YYGXRuiRv0adthrUXoU363pAjQNGlKg0wXJ06tOFwKDIRqAuFDJliVNN92NCwFLZa1f0fRuHnXq1JGl0tImUUK1JioqCm5ubggJCVG6Tyy5VpK+WRjSTsZZzBPv9c1L74E2aNPbcPf1gpuHO2LX7kPWpavmZWJ+/7UTZKBK3h+No59skAHPWfNjEhwZAf8GtRC7Zp/y/b5Zvbzuebh5uOHCgYtYP/NXXD6bbHW9k3+cQa8Xe6LZ7U1wZttZNOvZFL6BPji3x7La95394+Hl5wV3Dzfs++EArl64fuHkIK0GtJZB/fCqg+jwQMdS123QrSHSE9Lw8H8eRXj7eki5cBVb523Bma2n5fKQliHYs2S3ef3M5ExkJmWgTssQpNg9X27QQQ+DlgjADzqdKL8Uqo7WMgBdgxI+W9b6FU2valTnoTjbt2/Hzp070bt3b9ljWLx/9dVX8fjjjyM4WFTtq8PgWknufl64lm5ZXSree/iVXmcvqn3dvD0Q3rst3LxFG41RxvnL+P3xT5F+7jK8g/3R9pXB6PbRE9g66l8OuReY6vwU1uDeW5Dw5wnkXslUus83o6yrWfjXff/FpaPx8PL1RO+X7sSTix/HvIELkJtxox3WRJTcolYewhP/flheAGkFBvxv4mpkJFkei6mdZsHD2wPtBraWr47ko/dBn/H98O1T35Rv/SBfNOzeCD/84zt89/wyNLurOe7/54P477CFuBpzVV4k5Bb5Leek5cDLX117WkncdC2hIQsaLoueCdC0AotKTk2WOEv6ft3LWL+s5dVDdX4qjre3N5YtW4bJkycjNzcXjRs3lsG1cDusKtXrqFRj9QZ0QIc37pX/zopPQdKuM7KdsjDPAB/kppQdQESb5IX1B9Br2RhknLuMKwfOIzc5Q06CeD3w/koM/u0dBDSohYzzSU6XHxNRqq3XNxJ731muPA83gw7D2mH4tCHy36J6d96ghbhw0FgFKtpc183YiI73RqJB5wic2nqm2Oe7PNgRPZ+5DQse+AIJJxIQ2jIUI/87AjlpuTix5ZTFuqKNNWrVIby87v9w+UwSzu+13pnNVm2HtsOg94x5Sr2UgotRF3Dg+yhcPX+lXJ/Py8rDxf0XcHLTCflevMYfiUPjnk1xdekeudw70DKQegf6IC+z7DZqWxg7Nvleb38VRCB0u94uawwXOnnKLaktu6z1K5oeFSV6Ce/YIdqr7Y/BtZwubjggJ5MGw7qgyYgeFuvoW9TFmaV/lTtNUZIQPXMLByMzO5dWHZWfev3b41pmLhK2nVS05zeXA6sPy6k0Wim/lfA2YTj5+2nEHzd2eBGvp/84ixZ3NS0WXE3cPd1Rq1FNuwXXIz8dlpPJC5vGyCrhrqO6y/fi33XbhSOiSwP8MOa7Yp9PPJ6ARrc2LjH9xBOJCG11oznDr6YfAuoE4PIJUVVrz8Cqvx5YRRAUsq4HQf8bVbk60ZZd0gVrWetXNL2qUZ2rhR2JHZoqKW7LUfiEBMmgpPNwl68+tQMRv+WI1fVDe7aEvlkodO5ucPf2RPPRd8EnRI9k01CcLo3lsBbBM8hXDmVJP5uIjNhkp8yPiUhHtMW6xF9LNVC/Qz3UaVpbDpvx8vPEgPF95fk2Zt8Fq+vH7L+A5nc2RUhzYwcm8dr8jqayWllo2bs5wlqGwM1dB08fD9z1fE/ow/QOHYrz1cOfyyrdz+/9TE5xh+Ow4/NtWPfuGqvri17CoW3C0KyX6DkL+Sren/3DWHI/+EMU2g6LRN3IcHj4eKDX2D6I2X3ebu2txsAadD2wFi5FGqBpiXBzExcC7gB84aarB4Nm2beh/OtXNL2qoSn6z9mx5FpJ19Kyseu1JWg/fhgixw1FRmwSdo5dYm639A0NQu/lL2Pzw/OQnZAKryA/tH15EHzq6FGQl4/00wnY+epiZF28Yh432nny3+Cp90N+Zi6S9p7FzrGLHRaUVOdHCGhcB8Ft62PfOysckoebQc0GNXD3q71lb17Rnhp74CK+HP01cjOMVZ5BdfV4ZcMLmDvgX0iNS5Ol3hrhQRj57xHwr+WPrJQs7P0+Cnu/i5Lr+9f0w+A374Y+VC+rhRNOJmLxM9/iSkzxjmn2klmk/Vf8nkR+sq8aew2LEqzovPRhZ+PN1VNir+KHl79Hvwl3Y/icB3A15oos4Yr5wvkd57Blzm944NOHZHuuCKyrxv1op733hptbPWiaAe5ut5nniqExBu0kDNopuKHF9WWmcak3hs24uUVC01KhacaLmbLWL2s5VR86rbQ6pUL3dxS3nkpNTS3XgF5nsbrbW1W9C1SGYbumw9W82XQKXE2AC16mjz96J1xJWlomatUcYrfzuClOvNzwDXi7+diUVq4hB/POz3DqmOOCfxJERFRVqnNvYUdicCUiImXYocmIHZqIiIgUY8mViIiUEb14NFvvLewCJVcGVyIiUsZwfbKFrZ+vDlgtTEREpBhLrkREpAw7NBkxuBIRkToK2lzhAsGV1cJERESKseRKRETKsEOTEYMrEREpw6E4RqwWJiIiUowlVyIiUobVwkYMrkREpIx40JpmY72urZ+vDhhciYhIGY5zNWKbKxERkWIsuRIRkTJ8nqsRgysRESnDamEjVgsTEREpxpIrEREpw5KrEYMrEREpbnPVbE7D2TG4upg8g2vV9Ot0rvcTHddoElxNkKcrnA4tebj3givxcE+r6l24qbjemYuIiKoMq4WNGFyJiEgZ3rjfiMGViIiUEe2tBpvbXJ0/urpWAx0REVE1wJIrEREpw2phIwZXIiJSho+cM2K1MBERkWIsuRIRkTJ8nqsRgysRESnDca5GrBYmIqKbxvTp09GjRw/4+fmhRo0aVteJiYnBPffcI9cJCQnB66+/jvz8/ApthyVXIiJSxqBgnKvBjuNc8/Ly8OCDD+K2227D559/Xmx5QUGBDKxhYWHYtm0b4uLiMHLkSHh6euL9998v93YYXImISO2N+zXb07CX9957T74uWrTI6vJffvkFR48exa+//orQ0FB07NgRU6dOxYQJEzB58mR4eXmVazusFiYiomopLS3NYsrNzbX7Nrdv347IyEgZWE0GDBggt3/kyJFyp8PgSkREyquFDTZOQkREBIKCgszTjBkz7L7/8fHxFoFVML0Xy8qL1cJERKT2Dk2wPQ0hNjYWer3ePN/b29vq+hMnTsTMmTNLTfPYsWNo1aoVHIXBlYiIqmWHJr1ebxFcS/Laa69h9OjRpa7TpEmTcm1bdGTatWuXxbyEhATzsvJicCUiIqdWp04dOakgehGL4TqJiYlyGI6wceNGGeTbtGlT7nQYXImISBmDpqDkasc7NIkxrFeuXJGvYthNVFSUnN+sWTMEBASgf//+Mog+8cQTmDVrlmxnffvtt/Hiiy+WWC1tDYMrEREpI57FqlXj57lOmjQJX331lfl9p06d5OvmzZvRq1cvuLu7Y82aNXj++edlKdbf3x+jRo3ClClTKrQdBlciIrppLFq0qMQxriYNGzbEzz//bNN2GFyJiEgZTcEj4zQ4PwZXG9Rs3wCRE4bBP6IWMmOScXDmKlw9FGt13aCW4ejw5nD4hQdD56ZDenQijs7/BVf2n5PL20+8F/UHdrjxATcdPHy88PsT85F64pLd8+JTKwCd37oXwa3D4VtHj42PzkfqydLHdIXf1RqRLw+Ab0ggUo7HYe/UlUg/n1Tu5aoNHjwYEya8jsjIdrh27Rq2bv0Dr7wyFhcvXjSvc++9wzB79kzUq1cP+/btxzPPPIcTJ06UmGZZ61c0PRV8Ar0x5K270e7uVnD3dMfl6GQseHgRruWUfu/TgeP6oO+LPbHoueU4svHGPt76SGf0efEO+Af74syO8/hu4k9Iv5wBR6ndOgy9Jw+Fvn4wdDodrpy9jO0f/4q4vTFW16/ZrA5uf70/6rQJh2+wH/5z2wfIS7e8uUBwk9roOWEAwjpGwJBvwNlNx7F50moH5ejmVt1vf+govIlEJXnqfdFtzkhEr9iB9X2nIfq7Heg+ZyQ8Anysrp8VfxW7JyzF+runY13faTjz9Z+4dc5IuHkbr28OfrAKP/eaYp5OLPwVGecvOySwmh7xFL/tFLaNW1qu9QMa1ka3aX/DwTk/Y3WfGUjcfRY95jwGnbtbuZbbQ1CQHjNnzkZERCM0btxM3lFlxYpl5uUtWrTAN98swauvjkPNmnXw22+bsWrVD7KNxZqy1q9oeirodMBTnz8CwzUDZvb5FJM6zMT3b6xBQX7pZYW6rUPRpm9zpCakW8xvelsjDJ7YD0te+h6Tb/kI6UkZeHTufXCk9EupWP/KCnx++yz8t8dMRC3ahiH/ehTu1/82ihLB8vSGo9j09kqry/3qBGD4F6PkOl/c+SG+7PURDn1rObSCyN4YXCupbq82yLmchphVe2C4ViBfc5LT5XxrrqVmIzs+xfhGp4Nm0ODh7w2fWoFW128w7BbE/LQXjpJ7JRNnv9+Fq0dulPJK03BQB1zeE424P0/CkJePY//dAu9gf9Tu2LBcy+3h22+XyXaSzMxMZGVlYe7cf6J7927mYPf4449h8+YtWLt2rbyN2tSp02RX+zvuuMNqemWtX9H0VGjZqzlqhAdh5eR1yE7NkYPtLx2NlwGnJKKm5MEZQ7By8noUXCuwWNb1wY7Yt/IgYqMu4lr2Nayb/RuadG+ImhHWnxZiD7mp2UiPS72+s4BWoMHL3xt+tQOsrp9yLhnHftiPK6cSrS7vOPI2XNgZLdcpyM2Xf59Jx8p/Zx1S8zxXzcbJ2bFauJL0zcKQdjLOYp54r29e+iDjQZvehruvF9w83BG7dh+yLl0ttk5wZAT8G9RC7Jp9qK6CmocipVD+tQID0qIT5fzLe6PLXO4Id911p7wri+huL7RvH4moqAPm5eIRUkePHpPzt2zZUuzzZa1f0fRUaNq9IZLPX8GIOfehxR1NZPXtls+2Ye8PB0v8zJ1P34q444k4u/N8sWV1W4Xgr692m99nJGXKNMX8K7HXLwYd5JltE+DpJ/423HB8VRTSL1Zu++G3NETS8Xjcv+RJBDeujStnLmPbhxuRcKh8F45kG1YLGzG4VpK7nxeupedYzBPvPfxKHwclqoRFVXB477Zw8/a0uk6De29Bwp8nZGmyuvLwLSH//t7lWm5vxidZvIcHHxxhnifGsKWkWJ6wxfvAQOu1B2WtX9H0VPCt4YNmPRrjx3fXYfm4lYhoXw9PL3oUVy6kIHpX8TZKUQLtMbIr5g75t9X0vP28kJ1meZzEe28HHafCRJWwqApuenfrEquEy8MnyBfNB7fDT//3DRIPXUTbB7vgnvmP4JshnyK3SF6J7IXBtZzqDeiADm/cK/+dFZ+CpF1nZLtrYZ4BPshNKTsgGnLzcWH9AfRaNgYZ5y7jyoEbJQpRqq3XNxJ731kOe4oY2B5d3hwm/50Zl4qND39Soc/nZ+fJ/BYm3udn5pZruQqPPvoIPvtsgfz3+fPn0a6dsUNYu3btsG7dGrz00hj52CiTjIwMefPvwsT79HTLdsjyrl/R9Cqj073t8MD0IfLfVy+m4NSfZ5FyKRXbFhtLm+f2xsrOSW36tLAaXP/2/hBs+GizrEK2JjcrT3aQKswn0Ae5Co9TUS3uiUSvd415Sr+Ugm+HG4+hIKpxT645hEdWPo+Us0mI22+9g2BprmXlIf5ALOKvf/bQt7vR6enbEdahPs7/cVphTsgallyNGFzL6eKGA3IyaTCsC5qM6GGxjr5FXZxZ+le50xRVw6KnceHgWq9/e1zLzEXCtpOwp9j1B+VUWamnEhDU4kYVuOiopG9cB6mnE8q1XIWlS7+VU2EisP766wZMnPgmvvnGsnPWwYOH0LHjjR7ZHh4eaNOmNQ4dOmw1/bLWr2h6lbF/1WE5mdzytw6IHNi63J9v3rMJwtuEYdg7A+R73yAfjPhoOHat2I+fpv0iq4vFchP/Wn7QhwTI+fZycu0hOZX1txHUsFalgmvSiXjZzkxVw/RcG1vY+vnqgB2aKiluy1H4hATJIKvzcJevPrUDEb/F+vP+Qnu2hL5ZqAwy7t6eaD76LviE6JF8fSiOiUhHtMXC4PgrNzcvDznJf3u6G/8tuqdacX7dAYR0bYKw25vLdVs/fRdyU7KQtP98uZbbg7hlmQisb789CYsW3bgDi8nXX3+DPn16Y9CgQfKBx2+99SaSkpKwdetWq+mVtX5F01Ph8Ibj8PD2wK2PdpEBJKJjPbTt1xJHfrU+/GfabR/j43s+M09pCelYPW0Dfv2ncR93fxeFzsMjEdEhHJ4+Hhj0eh/ZNuvI9taGdzVHrRYh0LmL4Wce6PJsT/iH6nFpb8m/FXcvd7hf/62KV/He5Oj3+9C4dyuERtaT31Hbh7rA3dMDcVEVD9RUtY+cc2YsuVbStbRs7HptCdqPH4bIcUOREZuEnWOXmNsZfUOD0Hv5y9j88DxkJ6TCK8gPbV8eBJ86ehTk5SP9dAJ2vroYWRevmNMMaFwHwW3rY987K6okT/dve9f8775f/Z98/f3vn+Py3nOyl2/Pfz6BlXdOk/Mzzidh1zvfo8Nr98AvRI+rJy5h29hvZMel8iy3h3Hjxsqbd3/88UdyMmnTJlI+uurkyZN4/PGRmDdvDurXry/HpQ4bdp+5w1PPnj1ldXJgoLGnbFnrl7XcHnLSc/HF09/ivvcGYehbdyMlPg0/vvszzu0xBo7GXRvg6S8fxdvtPpDvU+Mtq6gNBg1ZV7PN7axntp/Dulm/YeSCh+AX5IMzO89j6Ss/wpF8a/jh9nH9ERCqR35uPpJPJWDtC0uRFmvs7Fe3cwMMXfgY/t3N+CzPwPAgjPzlFfPnn/p9nHxd3H+uHNYjSrtb31+H/rMfgE+wH5JPJWLti0uLjYUlsiedVo4+z2K8oGhLSk1NLdfjf5zF6m5vwdXkGVyrMuLBvfZ/OLKjjWs0Ca6mkb/zlzSKevHwjYtNV2Dv87gp/e765+Ghs61DXL6Wi51pC5w65rDkSkREyhiu/2cLWz9fHbhWMYeIiKgaYMmViIiU0XQaNJ2tvYWdv5mBwZWIiJTRFPT21VwguLJamIiISDGWXImISBnRGUnHDk0MrkREpA7v0GTEamEiIiLFWHIlIiJlDDoDdDb2Fma1MBERUSFsczVicCUiImUYXI3Y5kpERKQYS65ERKQMewsbMbgSEZEyBhRAhwKb03B2rBYmIiJSjCVXIiJSRtwXWLO5Wtj57y3M4EpERMpwnKsRq4WJiIgUY8mViIgUd2hyszkNZ8fgSkRECtk+FEek4exYLUxERKTYTV1yHbZrelXvApVBw9Sq3gUiqgCDJqp03RSk4dxu6uBKRERq8Q5NRgyuRESkjIYCaDaWXEUazo5trkREdNOYPn06evToAT8/P9SoUcPqOjqdrti0bNmyCm2HJVciIlLGeAMIg4I07CMvLw8PPvggbrvtNnz++eclrvfll19i4MCB5vclBeKSMLgSEdFNc/vD9957T74uWrSo1PVEMA0LC6v0dlgtTERE1VJaWprFlJub67Btv/jii6hduza6deuGL774AppWsYDPkisRESmjaaJDk87mNISIiAiL+e+++y4mT54Me5syZQr69Okj22V/+eUXvPDCC8jIyMCYMWPKnQaDKxERVcs219jYWOj1evN8b29vq+tPnDgRM2fOLDXNY8eOoVWrVuXa/jvvvGP+d6dOnZCZmYnZs2czuBIRkfPT6/UWwbUkr732GkaPHl3qOk2aNKn0fnTv3h1Tp06V1dIlBfiiGFyJiEjxOFedzWlURJ06deRkL1FRUQgODi53YBUYXImISBlNU3CHJs1+Q3FiYmJw5coV+VpQUCADp9CsWTMEBATgp59+QkJCAm699Vb4+Phg48aNeP/99zFu3LgKbYfBlYiIbhqTJk3CV199ZdGmKmzevBm9evWCp6cn5s+fj1dffVX2EBZBd86cOXj22WcrtB2dVo7+xaILdFBQEFJTU8tV/01ERNWLvc/jpvRr67vDTWdbuc2g5SMpbadTxxyWXImIqFoOxXFmDK5ERHTT3KHJUXiHJiIiIsVYciUiIsW9hXU2p+HsGFyJiEgh0eZqexrOjtXCREREirHkSkREyhirdHUK0nBuDK5ERKQMg6sRq4WJiIgUY8mViIiUEY+L09l8437nL7kyuBIRkTKsFjZitTAREZFiLLkSEZEyKu4LrPHewkREREXvC2xQkIZzY3AlIiJlVLSXamxzJSIioqJYciUiImVYcjVicCUiImVUjFHVXGCcK6uFiYiIFGPJlYiIlGG1sBGDKxERKcPgasRqYSIiIsVYciUiIoVUlDqdv+TK4EpERMqwWtiI1cJERESKseRKRETKcJyrEYMrEREpo2kKbtwv03BuDK5ERKSQeFyczuayq7NjmysREZFiLLkSEZEyxp6+OhvTcP6SK4MrEREpZHtwZbUwERERFcOSKxERqaOgWhisFiYiIrpBU1Clq7FamIiIiIpiyZWIiBRihyaBwZWIiBTSFHT2ZbUwERERVabkahrQm5aWVp7ViYiomjGdv+1/gwbRHcn5S54OCa7p6enyNSIiwt77Q0REdiTO50FBQcrT9fLyQlhYGOLj45WkJ9ISaTornVaOyxiDwYBLly4hMDAQOp2td94gIiJHE6d6EVjDw8Ph5mafFsGcnBzk5eUpSUsEVh8fH7h0cCUiIqLyY4cmIiIixRhciYiIFGNwJSIiUozBlYiISDEGVyIiIsUYXImIiBRjcCUiIoJa/w/0ndzpKjipNgAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"def plot_values(V: np.ndarray, title: str = \"Value function\") -> None:\n",
|
||
" \"\"\"Plot the value function V on the maze as a heatmap.\"\"\"\n",
|
||
" grid_values = np.full(\n",
|
||
" (n_rows, n_cols),\n",
|
||
" np.nan,\n",
|
||
" ) # Initializes a grid the same size as the maze. Every cell starts as NaN.\n",
|
||
" for (\n",
|
||
" s,\n",
|
||
" (i, j),\n",
|
||
" ) in (\n",
|
||
" state_to_pos.items()\n",
|
||
" ): # recall that state_to_pos maps each state index to its maze coordinates (i,j).\n",
|
||
" grid_values[i, j] = V[\n",
|
||
" s\n",
|
||
" ] # For each reachable cell, we write the value V[s] in the grid.\n",
|
||
" # Walls # never get values, and they stay as NaN.\n",
|
||
"\n",
|
||
" _fig, ax = plt.subplots()\n",
|
||
" im = ax.imshow(grid_values, cmap=\"magma\")\n",
|
||
" plt.colorbar(im, ax=ax)\n",
|
||
"\n",
|
||
" # For each state:\n",
|
||
" # Place the text label at (column j, row i).\n",
|
||
" # Display value to two decimals.\n",
|
||
" # Use white text so it's visible on the heatmap.\n",
|
||
" # Center the text inside each cell.\n",
|
||
"\n",
|
||
" for s, (i, j) in state_to_pos.items():\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" f\"{V[s]:.2f}\",\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" color=\"white\",\n",
|
||
" fontsize=9,\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Remove axis ticks and set title\n",
|
||
" ax.set_xticks([])\n",
|
||
" ax.set_yticks([])\n",
|
||
" ax.set_title(title)\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"\n",
|
||
"plot_values(V_random, title=\"Value function: random policy\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8275a1eb-b58e-4e05-ae5d-5635ff9a1556",
|
||
"metadata": {},
|
||
"source": [
|
||
"The next function `plot_policy` visualizes a policy on the maze.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "c1ab67f0-bd5e-4ffe-b655-aec030401b78",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_policy(policy: np.ndarray, title: str = \"Policy\") -> None:\n",
|
||
" \"\"\"Plot the given policy on the maze.\"\"\"\n",
|
||
" _fig, ax = plt.subplots()\n",
|
||
" # draw walls as dark cells\n",
|
||
" wall_grid = np.zeros((n_rows, n_cols))\n",
|
||
" for i in range(n_rows):\n",
|
||
" for j in range(n_cols):\n",
|
||
" if maze_str[i][j] == \"#\":\n",
|
||
" wall_grid[i, j] = 1\n",
|
||
" ax.imshow(wall_grid, cmap=\"Greys\", alpha=0.5)\n",
|
||
"\n",
|
||
" for s, (i, j) in state_to_pos.items():\n",
|
||
" cell = maze_str[i][j]\n",
|
||
" if cell == \"#\":\n",
|
||
" continue\n",
|
||
"\n",
|
||
" if s in goal_states:\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" \"G\",\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" fontsize=14,\n",
|
||
" fontweight=\"bold\",\n",
|
||
" color=\"blue\",\n",
|
||
" )\n",
|
||
" elif s in trap_states:\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" \"X\",\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" fontsize=14,\n",
|
||
" fontweight=\"bold\",\n",
|
||
" color=\"red\",\n",
|
||
" )\n",
|
||
" elif s == start_state:\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" \"S\",\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" fontsize=14,\n",
|
||
" fontweight=\"bold\",\n",
|
||
" color=\"green\",\n",
|
||
" )\n",
|
||
" else:\n",
|
||
" a = policy[s]\n",
|
||
" ax.text(\n",
|
||
" j,\n",
|
||
" i,\n",
|
||
" action_names[a],\n",
|
||
" ha=\"center\",\n",
|
||
" va=\"center\",\n",
|
||
" fontsize=14,\n",
|
||
" color=\"black\",\n",
|
||
" )\n",
|
||
"\n",
|
||
" ax.set_xticks(np.arange(-0.5, n_cols, 1))\n",
|
||
" ax.set_yticks(np.arange(-0.5, n_rows, 1))\n",
|
||
" ax.set_xticklabels([])\n",
|
||
" ax.set_yticklabels([])\n",
|
||
" ax.grid(visible=True)\n",
|
||
" ax.set_title(title)\n",
|
||
" plt.show()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "48037254-dccc-4f9c-a4d7-349adba5c74f",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now let’s visualize the `random_policy`. Does it seem like a good policy?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"id": "d452681c-c89c-41cc-95dc-df75993b0391",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plot_policy(random_policy, title=\"Policy\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "cbad5bf1-0150-4c3f-8cce-c82e0f1d1695",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 9.** Define your own policy and evaluate it using the functions `policy_evaluation(...)` and `plot_values(...)`. **Can you identify an optimal policy visually?** Plot your own policy using `plot_policy`. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"id": "929707e6-3022-4d86-96cc-12f251f890a9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"my_policy = np.array(\n",
|
||
" [\n",
|
||
" A_RIGHT,\n",
|
||
" A_RIGHT,\n",
|
||
" A_RIGHT,\n",
|
||
" A_DOWN,\n",
|
||
" A_DOWN, # First row\n",
|
||
" A_UP,\n",
|
||
" A_DOWN,\n",
|
||
" A_DOWN,\n",
|
||
" A_LEFT, # Second row\n",
|
||
" A_UP,\n",
|
||
" A_RIGHT,\n",
|
||
" A_DOWN, # Third row\n",
|
||
" A_UP,\n",
|
||
" A_LEFT,\n",
|
||
" A_RIGHT,\n",
|
||
" A_RIGHT,\n",
|
||
" A_RIGHT, # Fourth row\n",
|
||
" A_UP,\n",
|
||
" A_LEFT,\n",
|
||
" A_DOWN,\n",
|
||
" A_RIGHT,\n",
|
||
" A_UP, # Fifth row\n",
|
||
" ],\n",
|
||
")\n",
|
||
"\n",
|
||
"V_my_policy = policy_evaluation(policy=my_policy, P=P, R=R, gamma=gamma)\n",
|
||
"\n",
|
||
"plot_values(V=V_my_policy, title=\"Value function: my policy\")\n",
|
||
"plot_policy(policy=my_policy, title=\"My policy\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9cd7b3d0-e5ea-48c1-a68a-be3b3e782e9f",
|
||
"metadata": {},
|
||
"source": [
|
||
"-----------------------------------\n",
|
||
"\n",
|
||
"## 4. Dynamic programming : Policy improvement and Policy iteration"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bb35acc8-6469-499b-b565-3f2d590b13bc",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 12.** \n",
|
||
"\n",
|
||
"Write a `policy_improvement` function whose inputs are the state-value function `V`, the transition probability matrix `P`, the reward vector `R`, and the discount factor $\\gamma$. \n",
|
||
"The function should return a **greedy policy** that, for each state, selects the action that maximizes the expected return according to the input `V`.\n",
|
||
"\n",
|
||
"\n",
|
||
"*Question: Why don’t we input the old policy in this policy improvement step?*\n",
|
||
"\n",
|
||
"\n",
|
||
"*Remark.* In this maze game, we consider a deterministic policy $\\pi:s\\in\\mathcal{S}\\mapsto a\\in\\mathcal{A}$ that assigns one single action to each state.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "94f00eeb-63d4-43a1-813f-37dda7276693",
|
||
"metadata": {},
|
||
"source": [
|
||
"------------------\n",
|
||
"\n",
|
||
"*Hint.* 1. This exercise can be completed in two steps. \n",
|
||
"\n",
|
||
"In the first step, compute the action-value function $q^{\\pi}(s,a)$ from the state-value function $s' \\mapsto v^{\\pi}(s') $, for a fixed state $ s $. \n",
|
||
"Which formula should be used to express $ q^{\\pi}(s,a) $ in terms of $ v^{\\pi} $?\n",
|
||
"\n",
|
||
"In the second step, perform the greedy policy improvement step by computing a new policy $ \\pi' $ such that\n",
|
||
"$$\n",
|
||
"\\pi'(s) = \\arg\\max_{a} q^{\\pi}(s,a).\n",
|
||
"$$\n",
|
||
"\n",
|
||
"Attention, for terminal states, action choice is irrelevant, we can set 0 to terminal states. \n",
|
||
"\n",
|
||
"2. Bellman action-value equation for the maze: \n",
|
||
"\n",
|
||
"In this maze environment, the **immediate reward depends only on the current state (for non-terminal state)**:\n",
|
||
"\n",
|
||
"$$\n",
|
||
"r(s,a,s') = R(s).\n",
|
||
"$$\n",
|
||
"\n",
|
||
"This means:\n",
|
||
"\n",
|
||
"- The reward does **not** depend on the action taken.\n",
|
||
"- The reward does **not** depend on the next state.\n",
|
||
"- All actions taken from the same state yield the same immediate reward.\n",
|
||
"\n",
|
||
"The general Bellman equation for the action-value function is:\n",
|
||
"\n",
|
||
"$$\n",
|
||
"Q(s,a)\n",
|
||
"=\n",
|
||
"\\sum_{s', r} P(s',r\\mid s,a)\n",
|
||
"\\left(\n",
|
||
"r(s,a,s') + \\gamma V(s')\n",
|
||
"\\right).\n",
|
||
"$$\n",
|
||
"\n",
|
||
"Since the reward satisfies \n",
|
||
"$$\n",
|
||
"r(s,a,s') = R(s),\n",
|
||
"$$\n",
|
||
"we can simplify the expression:\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{aligned}\n",
|
||
"Q(s,a)\n",
|
||
"&= \\sum_{s'} P(s' \\mid s,a)\n",
|
||
"\\left(\n",
|
||
"R(s) + \\gamma V(s')\n",
|
||
"\\right) \\\\\n",
|
||
"&= R(s) + \\gamma \\sum_{s'} P(s' \\mid s,a) V(s').\n",
|
||
"\\end{aligned}\n",
|
||
"$$\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "998e3005-9a8b-4759-a008-aeccedd25924",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def policy_improvement(\n",
|
||
" V: np.ndarray,\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
") -> np.ndarray:\n",
|
||
" \"\"\"Given a value function V, output a greedy policy.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" V: array of shape (n_states,)\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" policy: array of shape (n_states,), with values in {0,1,2,3}\n",
|
||
" n_states = len(R)\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_actions = P.shape[0]\n",
|
||
" policy = np.zeros(\n",
|
||
" n_states,\n",
|
||
" dtype=int,\n",
|
||
" )\n",
|
||
"\n",
|
||
" for s in range(n_states):\n",
|
||
" if is_terminal(s):\n",
|
||
" policy[s] = 0\n",
|
||
" continue\n",
|
||
"\n",
|
||
" Q_values = np.zeros(n_actions)\n",
|
||
" for a in range(n_actions):\n",
|
||
" Q_values[a] = R[s] + gamma * np.dot(\n",
|
||
" P[a, s, :],\n",
|
||
" V,\n",
|
||
" )\n",
|
||
" policy[s] = int(\n",
|
||
" np.argmax(Q_values),\n",
|
||
" )\n",
|
||
" return policy\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "28800a10-f76b-4f27-a697-1238678f6bb3",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 13.** \n",
|
||
"\n",
|
||
"Write a `policy_iteration` function whose inputs are the initial policy `initial_policy`, the transition probability matrix `P`, the reward vector `R`, the discount factor $\\gamma$ `gamma`, the tolerance parameter `theta` used in policy evaluation (the evaluation stops when the value function changes by less than `theta`), and `max_iter`, which serves as a safety limit to prevent the loop from running indefinitely. \n",
|
||
"\n",
|
||
"The function should return two outputs: \n",
|
||
"- `policy`, the final (optimal) policy, represented as an array of action indices; \n",
|
||
"- `V`, the value function corresponding to this policy.\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "22663608-c3a4-47d0-b1c9-b7d1bb67fa64",
|
||
"metadata": {},
|
||
"source": [
|
||
"--------------------------\n",
|
||
"\n",
|
||
"*Hint.* The `policy_iteration` algorithm consists of two main steps. \n",
|
||
"First, the **policy evaluation** step, where you will use the function implemented in **Exercise 8**. \n",
|
||
"Second, the **policy improvement** step, where you will use the function implemented in **Exercise 12**.\n",
|
||
"\n",
|
||
"--------------------------"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"id": "8b6c2216",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def policy_iteration( # noqa: PLR0913\n",
|
||
" initial_policy: np.ndarray,\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 1000,\n",
|
||
") -> tuple[np.ndarray, np.ndarray]:\n",
|
||
" \"\"\"Policy Iteration.\n",
|
||
"\n",
|
||
" Goal:\n",
|
||
" Learn an optimal policy by alternating:\n",
|
||
" 1) Policy Evaluation\n",
|
||
" 2) Policy Improvement\n",
|
||
"\n",
|
||
" Inputs:\n",
|
||
" initial_policy : array of shape (num_states,)\n",
|
||
" Initial deterministic policy.\n",
|
||
" P : transition probabilities\n",
|
||
" R : reward function\n",
|
||
" gamma : discount factor\n",
|
||
" theta : stopping threshold for policy evaluation\n",
|
||
" max_iter : maximum number of policy iteration steps\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" policy : optimal policy\n",
|
||
" V : value function of the optimal policy\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" policy = initial_policy\n",
|
||
"\n",
|
||
" for _it in range(max_iter):\n",
|
||
" V = policy_evaluation(policy, P, R, gamma, theta)\n",
|
||
" new_policy = policy_improvement(V, P, R, gamma)\n",
|
||
" if np.array_equal(new_policy, policy):\n",
|
||
" break\n",
|
||
" policy = new_policy\n",
|
||
" return policy, V\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7ed35eca-81fd-45ac-bc8c-550117124e21",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 14.** \n",
|
||
"\n",
|
||
"Starting from a random policy (see Section 3.3), compute an optimal policy for the Maze game. \n",
|
||
"Then, plot the value function of this optimal policy and visualize the policy itself by displaying arrows on the maze.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"id": "e12d62ee-3324-4e1b-b5e2-6be96404ac2c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[0 3 3 2 1 3 2 1 1 0 0 2 3 0 3 3 1 2 0 3 2 1]\n",
|
||
"[1 1 1 2 2 0 2 2 3 0 1 2 0 3 1 1 0 0 0 0 1 0]\n",
|
||
"Optimal value function:\n",
|
||
"[ 11.62 12.311 13.095 13.901 13.875 11.596 14.756 15.6 14.699\n",
|
||
" 10.921 15.631 16.589 10.263 9.633 17.643 18.804 20. 9.633\n",
|
||
" 8.156 -20. 15.522 17.679]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKf5JREFUeJzt3Qt4FNXdx/F/AkkgQEAICpaIN4TWKIKUUmmBoBGKVQSh1FDRWlsEoVxSa/MikFhEioqlSkXFgrWNb7Va+iItEq5eaCk0tRLCRaiiINKIkADBXMi+z//ECZtNcrLBsLsz+X6eZ0h2MuyeMzM7v5lzzuxG+Xw+nwAAUIfouv4AAIAiKAAAVgQFAMCKoAAAWBEUAAArggIAYEVQAACsCAoAgBVBAQCwIigizLJlyyQqKkref//9JvXaF154odxxxx1Vjzds2GDKoj9Dbf78+dKjRw+pqKgI6boeNGiQmcK53t1A11tmZuZZfY1+/frJT3/607P6Gm5CUNRj+/bt8r3vfU++9KUvSVxcnJx//vkyduxYM/+LmDt3rixfvrzRyonGUVRUJL/4xS/kvvvuk+jopvf2yM/PNwfhcJws+PvLX/5y1sPARrf/okWL5OOPPw5bGSKKftYTavfyyy/7YmNjfZ06dfLNmDHDt2TJEt/999/v69y5s5n/yiuvnPFzt2rVynf77bfXmF9eXu47efKkr6KiwhdqS5cu1c/98r333nshf+2uXbtWWx+nTp0y60F/htJjjz3mS0hIMK8d6nVdUlJiplD67LPPfKWlpVWPX3rpJVOu9evX+8LpnnvuMeWojW6bsrKys/r6ut/p+37mzJln9XXconm4gypS7d27V2677Ta5+OKL5fXXX5eOHTtW/W3KlCnyzW9+0/z9nXfeMcs0lmbNmpmpqdOz+RYtWoT8dZcuXSo33XRTWF47NjY25K+pV8mhcOLECWnVqlWjPFcoto3uf6NGjZLf/va3kpWVZZq7mrKmd20dpIcffliKi4vl6aefrhYSKjExUZ566imz82t7tkMvlXWH2rlzp3znO9+RhIQE6dChgwmWzz77rGo5XUb/73PPPWd+18lpJ66t7Vrbkb/97W+b9vo+ffpIy5Yt5Yorrqhqv3/llVfMY30DXX311fKvf/2rWnk1zPT5NdB0mU6dOsmdd94phw8fPqN1o8/VunVr+c9//iNDhgwxBwBtknvggQf0FLDaslrP9PR0SUpKMgel7t27yyOPPFJjuUB19VFs3rxZhg0bJuecc4553SuvvFIWLlxYdZDX/xNYf6epTwP4wIEDdb7me++9Z9bVddddV22+bgt9Xi33Y489Jl27djXbYODAgZKXl1fjedatW2dOJLR87dq1k+HDh8uOHTukPrX1Ueh+o/vVZZddZrZd586dZeTIkeZERteh7hv6/IH0/7Vt21bGjx8fdB+F7nujR482v6ekpFTtm/7b4K9//WtV3dq0aSM33HBDjWZYZ//QMuq20uW0uVa98cYb5jUuuOACsz/ofjFt2jQ5efJktf+vzT7KKYP/gbq2Pgrd5t/61rfMe05f+9prr5W///3v1ZZx3ltvvfWWTJ8+3byvtR4jRoyQgoKCGusmNTVV9u3bJ2+//bY0dVxR1GHFihXmTaRvitoMGDDA/H3lypU1/qYhoX976KGHzM76q1/9So4cOWLOTtTzzz8vd911l/Tt21d+9KMfmXmXXHKJtTx79uyRtLQ088bXPhM9aN14442yePFi+Z//+R+ZOHGiWU5fU19/165dVW3sOTk55qD+/e9/34SEvrE1APWnlu9MzpZOnTolQ4cONZ1+GparVq2S2bNnS3l5uQkMpQcyPTtfv369/OAHP5CrrrpKXnvtNbn33nvNAVsPug2h9dDA1IOlhq/WRQ/Ar776qnmsZ4D33HOP/P73v5devXpV+786Tw/C2tdUl02bNpmfvXv3rvXvuv2OHTtmXkMPxBpQgwcPlm3btsl5551nllmzZo05YGko68FMD4CPP/649O/fX3Jzc81+0ZB1rPVdu3atfPe73zV11NfX9aABpfuM7gu6/j/99FNp3759tf1X+1v078HSffrHP/6x2V91n/ryl79s5js/db+9/fbbzcmB9uPoidSTTz4p3/jGN8yB2r9uuh/ocvo33Vfj4+PN/Jdeesn8vwkTJpiTqH/84x9m/ezfv9/8Tek+/tFHH5l66mvWR/djfZ9qSGgHdExMjDmR0+29ceNG+drXvlZt+cmTJ5sTDd1f9STgl7/8pUyaNEn+8Ic/VFtOT7rUW2+9VWN/anLC3fYViY4ePWraR4cPH25d7qabbjLLFRUVmcezZ882j3W+v4kTJ5r5//73v+vto6it7Vrb73Xepk2bqua99tprZl7Lli19+/bt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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"random_policy = rng.integers(low=0, high=len(ACTIONS), size=n_states)\n",
|
||
"print(random_policy)\n",
|
||
"\n",
|
||
"opt_policy, V_opt = policy_iteration(\n",
|
||
" random_policy,\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" theta=1e-6,\n",
|
||
" max_iter=1000,\n",
|
||
")\n",
|
||
"print(opt_policy)\n",
|
||
"print(\"Optimal value function:\")\n",
|
||
"print(V_opt)\n",
|
||
"\n",
|
||
"plot_values(V_opt, title=\"Optimal value function (policy iteration)\")\n",
|
||
"plot_policy(opt_policy, title=\"Optimal policy (policy iteration)\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7d52252c-7aee-4be9-9896-939348add5de",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 5. Dynamic programming : Value iteration"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "00c8cbd1-e0ea-4919-b61f-ff0bc3c95880",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 15.** Write a `value_iteration` function whose inputs are the transition probability matrix `P`, the reward vector `R`, the discount factor $\\gamma$ `gamma`, the parameter `theta`, which is a stopping tolerance (stop when the value function changes by less than theta), and `max_iter`, which serves as a safety limit to prevent the loop from running indefinitely. \n",
|
||
"\n",
|
||
"The outputs of value_iteration are `V`, which is an approximation of the optimal value function, and `policy`, which is a greedy policy derived from the final `V`.\n",
|
||
"\n",
|
||
"*Question:* Do `value_iteration` and `policy_iteration` find the same optimal policy?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fd52fa5c-dbaa-4281-a1a6-dd7180123756",
|
||
"metadata": {},
|
||
"source": [
|
||
"*Hint.* Value iteration repeatedly applies the Bellman optimality operator. In the maze case, it is \n",
|
||
"$$\n",
|
||
"(\\mathcal{T}^* V)(s)=\\max_a \\Big\\{ R(s) + \\gamma \\sum_{s'}P(s'|s,a)V(s')\\Big\\}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"id": "293ba7fc-f9dc-41b0-ad78-677af1ac7e0f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def value_iteration(\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 10_000,\n",
|
||
") -> tuple[np.ndarray, np.ndarray]:\n",
|
||
" \"\"\"Value Iteration (student version).\n",
|
||
"\n",
|
||
" Goal:\n",
|
||
" Approximate the optimal value function V*\n",
|
||
" and derive an optimal policy.\n",
|
||
"\n",
|
||
" Inputs:\n",
|
||
" P : array of shape (n_actions, n_states, n_states)\n",
|
||
" Transition probabilities.\n",
|
||
" R : array of shape (n_states,)\n",
|
||
" Reward for each state.\n",
|
||
" gamma : float\n",
|
||
" Discount factor.\n",
|
||
" theta : float\n",
|
||
" Stopping tolerance for convergence.\n",
|
||
" max_iter : int\n",
|
||
" Maximum number of iterations.\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" V : array of shape (n_states,)\n",
|
||
" Approximation of the optimal value function V*.\n",
|
||
" policy : array of shape (n_states,)\n",
|
||
" Greedy policy derived from V.\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_states = len(R)\n",
|
||
" n_actions = P.shape[0]\n",
|
||
" V = np.zeros(n_states)\n",
|
||
"\n",
|
||
" for _it in range(max_iter):\n",
|
||
" V_new = np.zeros_like(V)\n",
|
||
"\n",
|
||
" for s in range(n_states):\n",
|
||
" if is_terminal(s):\n",
|
||
" V_new[s] = R[s] / (1 - gamma)\n",
|
||
" continue\n",
|
||
"\n",
|
||
" Q_values = np.zeros(\n",
|
||
" n_actions,\n",
|
||
" )\n",
|
||
" for a in range(n_actions):\n",
|
||
" Q_values[a] = R[s] + gamma * np.dot(P[a, s, :], V)\n",
|
||
" V_new[s] = np.max(Q_values)\n",
|
||
"\n",
|
||
" delta = np.max(np.abs(V_new - V))\n",
|
||
" V = V_new\n",
|
||
" if delta < theta:\n",
|
||
" break\n",
|
||
"\n",
|
||
" policy = policy_improvement(\n",
|
||
" V,\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" )\n",
|
||
" return V, policy\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"id": "9b6ff9d3-ccc9-4f35-a6c3-545aeed552f7",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdcAAAGkCAYAAABjMm+uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUu5JREFUeJzt3Ql8FOX9P/DP7OYOOQgEEiDcAoLcKqCggMohHqi1XvWq1f4869FWbL1ppYq1WmutbVW03v3bar1PBA8OAblBDjnCkXAmIXey8/xf32eyyW6ySTbZZ5Ns+Lx9jdndmZ2d2V3mu9/v8zwzllJKgYiIiIxxmVsVERERCQZXIiIiwxhciYiIDGNwJSIiMozBlYiIyDAGVyIiIsMYXImIiAxjcCUiIjKMwZWIiMiwoza4zps3D5ZlYfv27UfNa99///36dVtDZWUlfv3rXyMrKwsulwszZ85EW9Sa3wtRWFiILl264OWXX26X34PevXvjqquuQiSR90res3AaO3as/vdB7UebCa7r1q3DT37yE3Tv3h2xsbHo1q0bLrvsMv14KB566CG89dZbxraTmue5557D3Llz8aMf/QgvvPACbrvttlbdnrb6vXjiiSeQlJSEiy++GEeD9evX68DVWj9mvN5///2wB9CG3HnnnXjqqaeQk5PTattAhqk24M0331QxMTEqIyND/fa3v1X//Oc/1d13360yMzP14//5z3+ave7ExER15ZVX1nm8srJSlZSUKNu2VUt7/vnn5XzOatu2bS36uvfdd59+3dZw0UUXqe7du6u2oi1+L8rLy1V6erp66KGH2u33oLS0VO+n17///W+9LfPnz1et6cYbb6z3PZHvQ0VFRVhf3+Px6OPfPffcE9bXoZYThVa2detWXH755ejbty8WLlyI9PT06nm/+MUvMGHCBD1/9erVehlT3G63nqhl7Nu3D6mpqWjrWvN78e6772L//v348Y9/jPZKqlItoaioCImJiUbWFRcXh3CTphKp6rz44ot44IEHWq1sTwapVvbzn/9c/2JcuHBhwPkLFizQ82W52r+8N2zYoC688EKVlJSk0tLS1C233KJ/ZXrJMrUnb7YSKHvs1auXmjFjhv4VPXr0aBUXF6eOO+646l/VkmHL/djYWDVq1Ci1YsUKv21dtWqVXn+fPn30Ml27dlVXX321OnDgQJMz17lz5+pltm/fXmferFmzVHR0tDp06JC+L+/dj370I5WVlaUz/R49eqhbb71VFRcXN5ixyOvLfdme2uRxWd7Xrl279P506dJFv87gwYPVs88+W+8++L5G7UneU5kCZS2BtkveV8k2ZRvOPfdcfbtz587qjjvu0Nlm7Szg8ccfr/6sZLmpU6eqb7/9tlnfC/HUU0/p/ZX9lorKDTfcoA4fPuy3zKmnnqqGDBmi1q1bpyZOnKji4+NVt27d1MMPP6yCccUVV6jevXu3y++B77+x2u91oO+G1/vvv6/Gjx+vEhISVIcOHdSZZ56p1q5d67dO73djy5Ytavr06Xo5+Y4E+57I8wNtR0PvgfzbnzZtmj72yGtPnjxZLVq0yG8Z7/599dVX6rbbbtPfQ9mPmTNnqn379tV5b95++229fO3jCkWmVm9zfeedd3QnB8lQAznllFP0/Pfee6/OPPmFX1paijlz5uDMM8/En//8Z1x33XXV8//1r3/pX8qybrkt089//vMGt2fLli249NJLcfbZZ+v1Hj58WN+WDibSTijtwvLLUjJueX3btquf+8knn+CHH37A1VdfjSeffFK3m7322mt625p6ZT9Zt/x6feONN+rMk8emTJmCjh076vv//ve/UVxcjOuvv16/7tSpU/XfK664Aqbk5ubqTheffvopbrrpJt022L9/f1xzzTV4/PHH632eVCLkfR80aBB69OhR/Tkce+yxTd4Gj8ej961Tp0549NFHceqpp+KPf/wj/v73v/stJ9t066236s5TDz/8MGbNmqWzj8WLFzfreyFtcTfeeKPuByCvd8EFF+CZZ57Rn0FFRYXfsvJ9mTZtGoYPH66Xlf2W9rQPPvig0f375ptvMGrUqHb5Pajv3/Ytt9yib//mN7+p892Q2zNmzECHDh3053jPPffoNtrx48fXaaOVDnOyv9IZTL4b8hkF+57IZ3/GGWdUv6Z3qo/0A5HvzqpVq3QnJNmubdu2YeLEiViyZEmd5W+++Wa97H333ae3Q4558t7VNnr0aP3366+/btL7SG1Ua0b2vLw8/UvN+yuzPuecc45erqCgwO+XtzzuS7IJeVwyyMba1urLXOWxb775pvqxjz76SD8mWciOHTuqH3/mmWfq/MqunSGIV199tU5mHmyb67hx43QG7Wvp0qX6uS+++GKDrztnzhxlWZbfNoeSsVxz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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"V_vi, policy_vi = value_iteration(P, R, gamma)\n",
|
||
"\n",
|
||
"plot_values(V_vi, title=\"Optimal value function (value iteration)\")\n",
|
||
"plot_policy(policy_vi, title=\"Optimal policy (value iteration)\")\n",
|
||
"\n",
|
||
"print(np.abs(opt_policy - policy_vi))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f4db246d-07c2-4587-b185-7298fe292674",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 6. Advanced exercises \n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b0c04200-39f7-41fe-a479-62c87efab8a3",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 16 (Policy Iteration vs Value Iteration)**\n",
|
||
"\n",
|
||
"In this exercise, we compare the number of iterations required by **policy iteration** and **value iteration** to reach an optimal policy in the Maze game.\n",
|
||
"\n",
|
||
"1. Modify the definition of `policy_iteration` and `value_iteration` so that they can record:\n",
|
||
" - the **number of iterations** until convergence,\n",
|
||
" - and optionally the runtime.\n",
|
||
"2. Run both algorithms starting from:\n",
|
||
" - the same random initialization (a random policy for policy iteration, and $V_0 \\equiv 0$ for value iteration),\n",
|
||
" - and repeat the experiment over several random seeds in order to compute the **average number of iterations** and **average runtime**.\n",
|
||
"3. Report and interpret the results.\n",
|
||
"\n",
|
||
"*Question:* What do you observe?\n",
|
||
"\n",
|
||
"-------------\n",
|
||
"\n",
|
||
"*Hint.* the word “iteration” means something different for **policy iteration** and **value iteration**:\n",
|
||
"\n",
|
||
"- Policy iteration: one “iteration” = one outer loop step = policy evaluation + policy improvement.\n",
|
||
"- Value iteration: one “iteration” = one Bellman optimality sweep over all states.\n",
|
||
"\n",
|
||
"-------------\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"id": "cce78e3c-ca82-4002-9a8f-08af9457147c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Same policy? True\n",
|
||
"Policy Iteration - outer iterations: [3, 3, 2, 3, 4, 3, 3, 3, 3, 4]\n",
|
||
"Value Iteration - iterations: [34, 34, 34, 34, 34, 34, 34, 34, 34, 34]\n",
|
||
"Mean PI iterations: 3.1\n",
|
||
"Mean VI iterations: 34.0\n",
|
||
"Mean PI runtime: 0.033542495701112784\n",
|
||
"Mean VI runtime: 0.007521004001318943\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import time\n",
|
||
"\n",
|
||
"\n",
|
||
"def policy_iteration_count( # noqa: PLR0913\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 1_000,\n",
|
||
" seed: int = 0,\n",
|
||
") -> tuple[np.ndarray, np.ndarray, int, float]:\n",
|
||
" \"\"\"Policy Iteration that counts the number of outer iterations and runtime.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
" theta: convergence threshold for policy evaluation\n",
|
||
" max_iter: maximum number of outer iterations\n",
|
||
" seed: random seed for initial policy\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" policy: optimal policy found\n",
|
||
" V: value function of the optimal policy\n",
|
||
" n_iterations: number of outer iterations until convergence\n",
|
||
" runtime: total runtime in seconds\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" rng = np.random.default_rng(\n",
|
||
" seed,\n",
|
||
" )\n",
|
||
" n_states = len(R)\n",
|
||
" n_actions = P.shape[0]\n",
|
||
"\n",
|
||
" policy = rng.integers(\n",
|
||
" low=0,\n",
|
||
" high=n_actions,\n",
|
||
" size=n_states,\n",
|
||
" )\n",
|
||
"\n",
|
||
" t0 = time.perf_counter()\n",
|
||
"\n",
|
||
" for it in range(max_iter):\n",
|
||
" V = policy_evaluation(\n",
|
||
" policy,\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" theta=theta,\n",
|
||
" )\n",
|
||
"\n",
|
||
" new_policy = policy_improvement(\n",
|
||
" V,\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" )\n",
|
||
"\n",
|
||
" if np.array_equal(\n",
|
||
" new_policy,\n",
|
||
" policy,\n",
|
||
" ):\n",
|
||
" runtime = time.perf_counter() - t0\n",
|
||
" return (\n",
|
||
" policy,\n",
|
||
" V,\n",
|
||
" it + 1,\n",
|
||
" runtime,\n",
|
||
" )\n",
|
||
"\n",
|
||
" policy = new_policy\n",
|
||
"\n",
|
||
" runtime = time.perf_counter() - t0\n",
|
||
" return (\n",
|
||
" policy,\n",
|
||
" V,\n",
|
||
" max_iter,\n",
|
||
" runtime,\n",
|
||
" )\n",
|
||
"\n",
|
||
"\n",
|
||
"def value_iteration_count(\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 100_000,\n",
|
||
") -> tuple[np.ndarray, np.ndarray, int, float]:\n",
|
||
" \"\"\"Value Iteration that counts the number of iterations and runtime.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
" theta: convergence threshold\n",
|
||
" max_iter: maximum number of iterations\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" V: array of shape (n_states,)\n",
|
||
" Approximation of the optimal value function V*.\n",
|
||
" policy: array of shape (n_states,)\n",
|
||
" Greedy policy derived from V.\n",
|
||
" n_iterations: number of iterations until convergence\n",
|
||
" runtime: total runtime in seconds\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_states = len(R)\n",
|
||
" n_actions = P.shape[0]\n",
|
||
"\n",
|
||
" V = np.zeros(n_states)\n",
|
||
" t0 = time.perf_counter()\n",
|
||
"\n",
|
||
" for it in range(max_iter):\n",
|
||
" V_new = np.zeros_like(V)\n",
|
||
"\n",
|
||
" for s in range(n_states):\n",
|
||
" if is_terminal(s):\n",
|
||
" V_new[s] = R[s] / (1 - gamma)\n",
|
||
" continue\n",
|
||
"\n",
|
||
" Q = np.zeros(n_actions)\n",
|
||
" for a in range(n_actions):\n",
|
||
" Q[a] = R[s] + gamma * np.dot(P[a, s, :], V)\n",
|
||
" V_new[s] = np.max(Q)\n",
|
||
"\n",
|
||
" delta = np.max(np.abs(V_new - V))\n",
|
||
" V = V_new\n",
|
||
"\n",
|
||
" if delta < theta:\n",
|
||
" runtime = time.perf_counter() - t0\n",
|
||
" policy = policy_improvement(V, P, R, gamma)\n",
|
||
" return (\n",
|
||
" V,\n",
|
||
" policy,\n",
|
||
" it + 1,\n",
|
||
" runtime,\n",
|
||
" )\n",
|
||
"\n",
|
||
" runtime = time.perf_counter() - t0\n",
|
||
" policy = policy_improvement(\n",
|
||
" V,\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" )\n",
|
||
" return (\n",
|
||
" V,\n",
|
||
" policy,\n",
|
||
" max_iter,\n",
|
||
" runtime,\n",
|
||
" )\n",
|
||
"\n",
|
||
"\n",
|
||
"# Next, run the comparison over several seeds\n",
|
||
"gamma = 0.9\n",
|
||
"theta = 1e-6\n",
|
||
"seeds = list(range(10))\n",
|
||
"\n",
|
||
"pi_iters = []\n",
|
||
"vi_iters = []\n",
|
||
"pi_times = []\n",
|
||
"vi_times = []\n",
|
||
"\n",
|
||
"for seed in seeds:\n",
|
||
" pi_policy, pi_V, n_pi, t_pi = policy_iteration_count( # noqa: N816\n",
|
||
" P,\n",
|
||
" R,\n",
|
||
" gamma,\n",
|
||
" theta=theta,\n",
|
||
" seed=seed,\n",
|
||
" )\n",
|
||
" vi_V, vi_policy, n_vi, t_vi = value_iteration_count(P, R, gamma, theta=theta) # noqa: N816\n",
|
||
"\n",
|
||
" pi_iters.append(n_pi)\n",
|
||
" vi_iters.append(n_vi)\n",
|
||
" pi_times.append(t_pi)\n",
|
||
" vi_times.append(t_vi)\n",
|
||
"\n",
|
||
" print(\"Same policy?\", np.array_equal(pi_policy, vi_policy))\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"Policy Iteration - outer iterations:\", pi_iters)\n",
|
||
"print(\"Value Iteration - iterations:\", vi_iters)\n",
|
||
"\n",
|
||
"print(\"Mean PI iterations:\", np.mean(pi_iters))\n",
|
||
"print(\"Mean VI iterations:\", np.mean(vi_iters))\n",
|
||
"print(\"Mean PI runtime:\", np.mean(pi_times))\n",
|
||
"print(\"Mean VI runtime:\", np.mean(vi_times))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c4e197e2-b0e4-4d8c-b5ab-8028385c4cd3",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 17.** (Asynchronous Value Iteration)\n",
|
||
"\n",
|
||
"Implement asynchronous value iteration, where the value function is updated in place :\n",
|
||
"$$\n",
|
||
"V(s) \\leftarrow \\max_a\\left\\{R(s)+\\gamma \\sum_{s'}P(s'|s,a)V(s')\\right\\}.\n",
|
||
"$$\n",
|
||
"\n",
|
||
"Compare the number of iterations needed for convergence with the synchronous version.\n",
|
||
"\n",
|
||
"-------------------\n",
|
||
"\n",
|
||
"Hint. Synchronous value iteration uses a copy `V_new` and updates all states from the old `V`. Asynchronous value iteration updates `V[s]` immediately, so later states in the same sweep can use the newest values.\n",
|
||
"\n",
|
||
"-------------------\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"id": "0b3469a6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Same policy? True\n",
|
||
"Async iterations: 22\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def asynchronous_value_iteration(\n",
|
||
" P: np.ndarray,\n",
|
||
" R: np.ndarray,\n",
|
||
" gamma: float,\n",
|
||
" theta: float = 1e-6,\n",
|
||
" max_iter: int = 200_000,\n",
|
||
") -> tuple[np.ndarray, np.ndarray, int]:\n",
|
||
" \"\"\"Asynchronous Value Iteration.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
" theta: convergence threshold\n",
|
||
" max_iter: maximum number of iterations\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" V: array of shape (n_states,)\n",
|
||
" Approximation of the optimal value function V*.\n",
|
||
" policy: array of shape (n_states,)\n",
|
||
" Greedy policy derived from V.\n",
|
||
" n_iterations: number of iterations until convergence\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_states = len(R)\n",
|
||
" n_actions = P.shape[0]\n",
|
||
" V = np.zeros(n_states)\n",
|
||
"\n",
|
||
" for _it in range(max_iter):\n",
|
||
" delta = 0.0\n",
|
||
"\n",
|
||
" for s in range(n_states):\n",
|
||
" v_old = V[s]\n",
|
||
"\n",
|
||
" if is_terminal(s):\n",
|
||
" V[s] = R[s] / (1 - gamma)\n",
|
||
" else:\n",
|
||
" Q = np.zeros(n_actions)\n",
|
||
" for a in range(n_actions):\n",
|
||
" Q[a] = R[s] + gamma * np.dot(P[a, s, :], V)\n",
|
||
" V[s] = np.max(Q)\n",
|
||
"\n",
|
||
" delta = max(\n",
|
||
" delta,\n",
|
||
" abs(V[s] - v_old),\n",
|
||
" )\n",
|
||
"\n",
|
||
" if delta < theta:\n",
|
||
" break\n",
|
||
"\n",
|
||
" pi = policy_improvement(V, P, R, gamma)\n",
|
||
" return V, pi, _it + 1\n",
|
||
"\n",
|
||
"\n",
|
||
"gamma = 0.9\n",
|
||
"V_sync, pi_sync = value_iteration(P, R, gamma, theta=1e-6)\n",
|
||
"V_async, pi_async, it_async = asynchronous_value_iteration(P, R, gamma, theta=1e-6)\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"Same policy?\", np.array_equal(pi_sync, pi_async))\n",
|
||
"print(\"Async iterations:\", it_async)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "48ae870c-1f18-4f83-8b6d-1ae393d08de3",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 18.** (Bellman Optimality Operator)\n",
|
||
"\n",
|
||
"Show numerically that the Bellman optimality operator $\\mathcal{T}^*$ satisfies the contraction property, which means, for arbitrary value functions $V$ and $W$, we have \n",
|
||
"$$\n",
|
||
"\\big\\Vert \\mathcal{T}^* V - \\mathcal{T}^* W \\big\\Vert_{\\infty}\\leq \\gamma \\Vert V-W\\Vert_{\\infty}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"---------------\n",
|
||
"\n",
|
||
"*Hint.* Generate random value functions $V$ and $W$, apply one Bellman optimality update to each, and compare both sides of the inequality.\n",
|
||
"\n",
|
||
"---------------"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"id": "b64a1e78",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"fails: 0 out of 50\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def T_opt(V: np.ndarray, P: np.ndarray, R: np.ndarray, gamma: float) -> np.ndarray:\n",
|
||
" \"\"\"Compute the optimal Bellman operator T^* applied to V.\n",
|
||
"\n",
|
||
" Args:\n",
|
||
" V: array of shape (n_states,)\n",
|
||
" P: array of shape (n_actions, n_states, n_states)\n",
|
||
" R: array of shape (n_states,)\n",
|
||
" gamma: discount factor\n",
|
||
"\n",
|
||
" Returns:\n",
|
||
" out: array of shape (n_states,)\n",
|
||
"\n",
|
||
" \"\"\"\n",
|
||
" n_states = len(R)\n",
|
||
" n_actions = P.shape[0]\n",
|
||
" out = np.zeros(n_states)\n",
|
||
"\n",
|
||
" for s in range(n_states):\n",
|
||
" if is_terminal(s):\n",
|
||
" out[s] = R[s] / (1 - gamma)\n",
|
||
" else:\n",
|
||
" Q = np.zeros(n_actions)\n",
|
||
" for a in range(n_actions):\n",
|
||
" Q[a] = R[s] + gamma * np.dot(P[a, s, :], V)\n",
|
||
" out[s] = np.max(Q)\n",
|
||
"\n",
|
||
" return out\n",
|
||
"\n",
|
||
"\n",
|
||
"def sup_norm(x: np.ndarray) -> float:\n",
|
||
" \"\"\"Compute the sup norm (infinity norm) of vector x.\"\"\"\n",
|
||
" return np.max(np.abs(x))\n",
|
||
"\n",
|
||
"\n",
|
||
"gamma = 0.9\n",
|
||
"n_states = len(R)\n",
|
||
"rng = np.random.default_rng()\n",
|
||
"\n",
|
||
"num_tests = 50\n",
|
||
"fails_numbers = 0\n",
|
||
"\n",
|
||
"for _ in range(num_tests):\n",
|
||
" V = rng.standard_normal(n_states)\n",
|
||
" W = rng.standard_normal(n_states)\n",
|
||
"\n",
|
||
" lhs = sup_norm(T_opt(V, P, R, gamma) - T_opt(W, P, R, gamma))\n",
|
||
" rhs = gamma * sup_norm(V - W)\n",
|
||
"\n",
|
||
" if lhs > rhs + 1e-10:\n",
|
||
" fails_numbers += 1\n",
|
||
"\n",
|
||
"print(\"fails:\", fails_numbers, \"out of\", num_tests)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d58d20fd-509a-41e4-bde1-eca6c9da6ddc",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 19** (Effect of the Discount Factor)\n",
|
||
"\n",
|
||
"Recall that the discount factor controls how future rewards are weighted relative to immediate rewards. Run value iteration for different values of the discount factor $\\gamma\\in\\{0.2, 0.5, 0.9, 0.99\\}$. \n",
|
||
"\n",
|
||
"For each value of $\\gamma$: \n",
|
||
"\n",
|
||
"1. Compute the optimal value function $V^*$.\n",
|
||
"2. Compute the corresponding optimal policy.\n",
|
||
"3. Plot the value function and visualize the policy on the maze.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"id": "47219cdc-b99b-4b73-a3d1-c133afb0e215",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"gamma=0.2: computed V* and pi*\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKKRJREFUeJzt3Qt4FNX5x/E3gSQQICAXBUvEGwVLFEGkeONmI0irFAQpwVutFUUsl9TaFIHEIkW0KFUqKhYsLfpgVSrSIuFalZbiP14I4V6lgoiokBCCuZD5P+9JN2w24WQXwu7O5Pt5niHsZDZ7zszs/GbOObMb4ziOIwAAnEDsiX4BAIAiKAAAVgQFAMCKoAAAWBEUAAArggIAYEVQAACsCAoAgBVBAQCwIihcasGCBRITEyOffPJJvXntc889V+64447Kx2vXrjXl0J/hNnPmTOncubOUl5eH/bURul/+8pfy3e9+N9LFcC2Coo5s3rxZbrnlFvnWt74lCQkJcvbZZ8uoUaPM/FMxffp0WbJkibhRZmamOZD7psTERPnOd74jDz30kBQUFIhbadkfffRRefDBByU2lrfQqVq/fr1cffXVZv9o27at/OxnP5PCwsJan/fpp59KVlaW9OzZU8444wxp3bq19O3bV1auXFlt2fHjx8uHH34ob7zxxmmqhcfpZz3h1Lz66qtOfHy807ZtW2fSpEnOvHnznIceeshp166dmf/aa6+d9N9u0qSJc/vtt1ebX1ZW5hw9etQpLy93wm3+/Pn6+WDOxx9/bF1u6tSpZrlnnnnGWbhwofk5ZMgQM++KK64IuewdOnSosi6OHTtm1oH+DKcnnnjCSUpKMq+NU/P+++87jRo1crp162b2D33/JCQkOAMHDqz1uU899ZTTuHFjZ+TIkc7TTz/tPPnkk0737t3N/vWHP/yh2vI333yzc80115ymmngbQXGKdu7c6SQmJjqdO3d2vvjiiyq/O3DggJmvB/tdu3bVaVBEUqhBoevB39ChQ8389evXn1JQRMoll1zi3HLLLZEuhidcf/315oQqPz+/ct7zzz9v9o+33nrL+tzc3Nxq+9Y333xj3nPt27evtvxf/vIXJyYm5qTfi/UZ182n6LHHHpOioiJ57rnnpE2bNlV+p5fCzz77rBw5csS0aQc2yWzdulVuvvlmSUpKklatWsm4cePkm2++qVxOl9Hnvvjii5XNN742+pr6CbQN/wc/+IFps+/Ro4c0btxYLr744so2/Ndee808btSokVx22WXy/vvvVynvRx99ZP7++eefb5bRZoA777xTvvrqqzpdZ/379zc/P/74Y/NT65ieni7Jycmm2a5Tp07y+OOP60mM9e+cqI9iw4YNMmjQINMc0aRJE7nkkktk9uzZ5nfz5883zwmsu6+Zr0GDBrJ3794TvqaWWdfT9773vWq/0/V06623mu3ZokULuf32201zh76ebq9Q17NvP9m+fbtp1mzevLnZxyZPnmzWjTa9DB482Lye/o3f/va3Na6fxYsXmyYabRZt1qyZDBs2TPLz86W4uNg0yZx55pnStGlT+fGPf2zm+dP1pdtLl9Fto02HzzzzjNRVE152drapm9bB57bbbjPl0XLbdOnSxbzH/GkZddvv2bNHDh8+XOV3vm3217/+tU7KX580jHQB3G7p0qXmAH3NNdfU+PvevXub3y9btqza7zQk9He/+c1v5F//+pf87ne/k4MHD8of//hH8/uFCxfKXXfdZdpg7777bjPvggsusJZn586dkpaWJqNHjzZvQD3g3nDDDTJ37lz51a9+JWPGjDHL6Wvq62/btq2ynV3ftP/5z3/MAUMPPNq/ogGoP7V8etCpC7t27TI/NRz1gHfjjTfKmjVr5Cc/+Ylceuml8tZbb8kDDzxgDthPPPFESH9b66Bh2a5dOxO8Wo8tW7bIm2++aR7rQfK+++6TP//5z9KtW7cqz9V52satB1Rbe7rq3r17lfnaqa3r+d///rfce++9pqNbD0gaFjWVMZT1PGLECLnoootkxowZZj+aNm2atGzZ0pyE6EFc+0u07D//+c/l8ssvN/ucP93WetKgHbq6fzz11FMSFxdntrvubxpI+roaZuedd55MmTKl8rkaCnpA1m3UsGFDs7/rPqT11fXoo30K/ic5J6Kvq4GnNm3aJGVlZeakxl98fLzZD2oK82B8/vnnpr9DJ3/6uvr+effdd2XChAkn9bfrrUhf0rjZoUOHzCXy4MGDrcvdeOONZrmCgoIqTTI639+YMWPM/A8//LDWpqeamn+0aSawSUcv33WetuXu3r27cv6zzz5r5q9Zs6ZyXlFRUbXXeemll8xy//jHP6yvXRNfPbdt22aaCHR5fV1tgz7rrLOcI0eOOEuWLDHLTJs2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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"gamma=0.5: computed V* and pi*\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"gamma=0.9: computed V* and pi*\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAGkCAYAAADg9laVAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVu9JREFUeJzt3Qd8U+X6B/DfSdJBFxQolLL3RgRlqQzxioobcYsowwGoV/S6BUFFLlfFLff+FVyIoDhAAQEFVDaCDNmrrEIZ3TPJ+X+eN6RN2nQlp2na/r5+jjTnvDk9J0nznPd5x9F0XddBREREFcpUsb+eiIiIBAMyERFRAGBAJiIiCgAMyERERAGAAZmIiCgAMCATEREFAAZkIiKiAMCATEREFAAYkImIiAIAA7IHs2bNgqZpOHToULX53StWrFC/V/6lwP6MiLS0NNSrVw9ffPFFhfx+Kpu///4bFosF27dvr+hDoQBWKQLyjh07cPfdd6Nhw4YICQlBXFwc7rrrLrXeF6+++iq+++47VDZdunRBkyZNUNysp5dccgnq168Pq9WKQDd8+HAV3DwtixcvrtBjC9TPyFtvvYXIyEjcfvvtFX0olV52djaeeuop9b1So0YN9OzZE0uXLi318+fMmYNu3bohNDQUMTExGDFiBE6fPu1WpkOHDhg8eDBefPHFcjgDqjL0APfNN9/owcHBemxsrP7cc8/p//d//6c///zzeoMGDdT6+fPne73v8PBw/d577y203mq16pmZmbrdbtf9bebMmRJl9YMHDxZZ5rXXXlNlVq5c6XG7PFfTNH3cuHGl/r2//vqr2qf862/yHoSEhOifffZZoeX48eN6RQrEz0hOTo4eExOjv/rqq37/3VXR7bffrlssFv2JJ57QZ8yYoffu3Vs9/u2330p87vvvv6/+bgYOHKi/9957+jPPPKOHhYXpXbp0UZ8PVz/99JMqu2/fvnI8G6rMAjogywdXPtzt2rXTT5065bYtMTFRrZcvzP379xv6ZVuRShOQ4+PjVcB94IEHPG6XL2rZx9q1aytNQJb3IhAF4mdELkL5xW6MdevWqddy2rRpeeskkLZs2VIF5uJkZ2frtWrV0vv27et2YbZgwQK1z7fffrvQhVR0dLT+wgsvlMOZUFUQ0AFZAo58sFetWuVxu9QQZbtrYJowYYJat3PnTn3o0KF6ZGSkXrt2bf2RRx5xu2KVMgUX5xevp6DYtGlTffDgwSpgde/eXQ8NDdU7deqUF8CkJi+PpabXrVs3/c8//3Q71r/++kvtv3nz5qpM/fr19fvuu08/ffp0mQOy6Nevn16nTh31R16QHId8oYhDhw7pDz30kN6mTRt1zPJa3HLLLYX27ykgyzl7Ckbyu2VxlZWVpb/44ovq90rmolGjRvqTTz6p1vsakIu6WJBzkPXymhXc19GjR/UbbrhB/Vy3bl19/Pjxqlbrymaz6dOnT89736TcoEGD9A0bNnj1GRFSS+rQoYN6DSSL8/DDD+vnzp0r9Pp17NhR37Fjh96/f3+9Ro0aelxcnD516lS9NIYNG6Y3a9bM47a5c+fq7du3V+cjv0OCtxyzvJeuJABJwJHPg3wu5DM7b968QvuTcxwzZkzefqVsr1699K1bt6rtH374oXrP5ffJeRV8PZznKp9/CVxyrlLe+btWrFih9+jRQ+1XPqNLly51e35pP7/eks+o2WzWk5OTPV7UysVvUTZt2qTKyHteUEREhN6nT59C62+66SZVeybyJKDbkBcsWIBmzZrhsssu87i9b9++avuPP/5YaNutt96KrKwsTJkyBddccw3efvttjB49Om/7Z599ptqjZd/ysywPPPBAscezb98+3HnnnbjuuuvUfs+dO6d+lo41//znP1U790svvYT9+/er32+32/OeK21SBw4cwH333Yd33nlHtf1J25Mcmzd3wJQ29DNnzmDJkiVu67dt26Y6jsh2sWHDBqxevVr9PnkNHnzwQSxfvhz9+/dHRkYGjCDnef311+M///mPej3k/G688Ua8+eabuO2220q9H2l3c12Sk5O9Oh6bzYZBgwahTp066pj69euH119/Hf/973/dyklb32OPPYbGjRtj6tSpePrpp1U74Nq1a736jEycOBFjxoxRbZHy+4YMGYIZM2bgyiuvRG5urltZ+excddVVuOCCC1TZdu3aqXbMRYsWlXh+8n5Km2VB8ncgr3dQUJD6fN58883qHDdt2uSxDfrCCy/EpEmTVDu5dDgaOnSox7+l3377DePHj8e9996rznHnzp249tpr8d5776nP1MMPP4wnn3wSa9aswf3331/o+XKuUl7aZv/973+r11Q+j1999ZX6V/4GXnvtNaSnp+OWW25Bampq3nNL+/mVz2DBz09Ri+t7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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKOlJREFUeJzt3Qt4FNX5x/E3gSQQICAXBUvEG0JLFEFE1JabjSCtUhCKBlFrrShCuaTWpggkFhGDRalSUbFgqdEH/yoVaZFwrUpLsfFCCBehSgUxokJCCOZC9v+8J27YbMLJLoTdncn38zxD2Mls9pyZ2fnNnHNmN8rj8XgEAIATiD7RLwAAUAQFAMCKoAAAWBEUAAArggIAYEVQAACsCAoAgBVBAQCwIigAAFYEhYMtXrxYoqKi5JNPPmkwr33uuefK7bffXvV4/fr1phz6M9QyMzOla9euUlFREfLXRvBuuukm+elPfxruYjgSQVGPtm7dKrfccot85zvfkbi4ODn77LNl9OjRZv6pmDVrlixbtkycKD093RzIvVN8fLx873vfkwceeEAKCwvFqbTsjzzyiNx///0SHc3b6FRt3LhRvv/975v9o3379vLLX/5SioqKAnpufn6+/OxnP5MzzzxTmjZtKj179pSXX365xnK6rV555RX54IMPTkMNXE4/6wmn7pVXXvHExsZ62rdv75k6dapn4cKFngceeMDToUMHM//VV1896b/drFkzz2233VZjfnl5uefo0aOeiooKT6gtWrRIPyPM8/HHH1uXmzFjhlnuqaee8ixZssT8HDZsmJl35ZVXBl32Tp06VVsXx44dM+tAf4bSY4895klISDCvjVPz3nvveZo0aeLp0aOH2T/0/RMXF+cZPHhwnc8tKCjwXHjhhZ4WLVqY99uTTz7p6du3r9m/XnjhhRrL9+7d2zNmzJjTVBP3Iijqwa5duzzx8fGerl27er744otqvztw4ICZrwf73bt312tQhFOwQaHrwdfw4cPN/I0bN55SUITLJZdc4rnlllvCXQxXuO6668wJlR70vZ599lmzf7z55pvW52ZmZprl1qxZUzVPTxouv/xyc9JWUlJSbflHH33UvJ8OHz58GmriXlwz14M5c+ZIcXGxPPPMM9KuXbtqv2vbtq08/fTTcuTIEdOm7d8ks337dtNumpCQIG3atJGJEyfKN998U7WcLqPPff7556uab7xt9LX1E2gb/o9//GPTZt+rVy9zKX7xxRdXteG/+uqr5nGTJk3ksssuk/fee69aeT/88EPz988//3yzjDYD3HHHHfLVV1/V6zobOHCg+fnxxx+bn1rH1NRUSUxMNM12Xbp0kUcffVRPZKx/50R9FJs2bZIhQ4bIGWecIc2aNZNLLrlE5s2bZ363aNEi8xz/unub+Ro1aiT79u074WtqmXU9/fCHP6zxO11PY8aMMduzVatWctttt5mmDn093V7BrmfvfrJz507TrNmyZUuzj02bNs2sm08//VSGDh1qXk//xu9///ta18/SpUslIyPDNIu2aNFCRowYIQUFBVJSUiKTJk0yzTbNmzc3TTg6z5euL91euoxuG206fOqpp6S+mvCys7NN3bQOXrfeeqspj5bb5q233jLrw7s/KW0K1PfU559/Lhs2bKi2fHJystnX9DURuMZBLIsTWL58uTlA/+AHP6j193379jW/X7FiRY3f6Q6tv3v44YflX//6l/zhD3+QgwcPyp///Gfz+yVLlsidd94pvXv3lrvuusvMu+CCC6zl2bVrl6SkpMjYsWPNG1APuNdff70sWLBAfvvb38q4cePMcvqa+vo7duyoamfXN9B///tfc8DQA4/2r2gA6k8tnx506sPu3bvNTw1HPeDdcMMNsm7dOvn5z38ul156qbz55pty3333mQP2Y489FtTf1jpoWHbo0MEEr9Zj27Zt8sYbb5jHepC899575YUXXpAePXpUe67O69+/vzmg2trTlbaF+9JObV3P//73v+Wee+4xHd1//etfTVjUVsZg1vOoUaPku9/9rsyePdvsRzNnzpTWrVubkxA9SGp/iZb9V7/6lVx++eVmn/Ol21pPGn7zm9+Y/eOJJ56QmJgYs911f9NA0tfVMDvvvPNk+vTpVc/VUOjWrZvZRo0bNzb7u+5DWl9dj17ap+B7knMi+roaeGrLli1SXl5uTmp8xcbGmv2gtjD3paGm9fKnfR3qP//5jwkHLw05Xf6dd96RYcOG1VlWfCvclzROd+jQIXPpO3ToUOtyN9xwg1musLCwWpOMzvc1btw4M/+DDz6os+mptuYfbZrxb9LRy3ed17RpU8+ePXuq5j/99NNm/rp166rmFRcX13idF1980Sz3j3/8w/ratfHWc8eOHab5SZfX19U26LPO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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"gamma=0.99: computed V* and pi*\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAGkCAYAAADpHfbvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWl5JREFUeJzt3QeYG9W5N/D/GWml7Wt7XXbdCzYu2GAbY0w1JTiEQCBACiHBhEBIgNwAKZCCuXC/C4Qkl9wUSC4tN4FQbkggkNAxJsGmG9yNe+/29l2VOd/znpG0kla7O7uatbb8fzyDVzOjI400mnfeU2aU1lqDiIiIDivr8L4cERERCQZgIiKiHGAAJiIiygEGYCIiohxgACYiIsoBBmAiIqIcYAAmIiLKAQZgIiKiHGAAJiIiyoE+H4AffvhhKKWwadOmPvPaCxcuNK8r/1L33kdEbW0tBg8ejEceeSQnr09d5wtf+AI+97nP5fptUI50uwC8YsUKXHrppRg2bBiCwSCGDh2KL33pS2Z+Nv7zP/8Tf/3rX9HTTJs2DSNHjkRbVww98cQTMWTIEEQiEXR38+fPN8Es0/T888/n9L11133kF7/4BUpKSszBmrLT1NSE73//++a4UlBQgNmzZ+Oll15y/fzHHnsMM2bMQH5+PgYNGoQrrrgC+/bta7He7t27cfnll5sTJ3kdec6TTz7ZYj15L3/+85/x4YcfZr1t1APpbuTPf/6zDgQCuqKiQv/whz/U999/v/7Rj36kKysrzfynnnqq02UXFRXpyy67rMX8SCSiGxoatG3b+nB76KGHJKrqjRs3trrOnXfeadZ5/fXXMy6X5yql9HXXXef6dV977TVTpvx7uMl3EAwG9R/+8IcW044dO3Qudcd9JBQK6UGDBun//M//POyv3Rt94Qtf0H6/X3/nO9/Rv/3tb/WcOXPM4zfeeKPd5/7mN78xv5szzjhD//rXv9Y333yzLiws1NOmTTP7R1xVVZU+4ogjdElJiTl+/epXv9KnnHKKee4jjzzSotzjjjtOf/nLX/Z8W6n76zYBeN26dWZnnjhxot6zZ0/Ksr1795r5coBcv369pwfXXHITgLds2WIC7Ne//vWMy+XALGUsWbKkxwRg+S66o+64j8hJp3xX8vug7Lz11lvms7z77rsT8yRwjhs3zgTitjQ1Nel+/fqZQJp8Iva3v/3NlPnf//3fiXk/+clPzLxXXnklMS8ajepZs2aZ5ELKSvbTn/7U7Hs1NTUebSn1FN0mAEuAkZ120aJFGZdLBijLkwPRggULzLxVq1bpiy++2JxxDhgwQH/rW99KOSOVddKn+IE2UxAcNWqUPuecc0yAmjlzps7Pz9dHHXVUImBJpi6PJZObMWOGfv/991Pe64cffmjKHzNmjFlnyJAh+vLLL9f79u3rcAAWp556qi4vLzfZUDp5H3IAEZs2bdLf+MY39IQJE8x7ls/ioosualF+pgAs25wp+Mhry5SssbFR33LLLeZ1pWZi+PDh+rvf/a6Zn20Abu3kQLZB5stnll7Wtm3b9Gc+8xnz98CBA/WNN95ostZkcgC85557Et+brDdv3jz9zjvvdGofEZIFTZ482XwGUkvzzW9+Ux88eLDF5zdlyhS9YsUKPXfuXF1QUKCHDh2q77rrLu3GV77yFT169OiMy5544gk9adIksz3yGhKs5T3Ld5lMAo4EGNkfZL+QffbJJ59sUZ5s4zXXXJMoV9Y9/vjj9UcffWSW33fffeY7l9eT7Ur/POLbKvu/BCrZVlk//loLFy402Z6UK/voSy+9lPJ8t/tvZ8k+6vP5TIaa6SRWTnZb895775l15DtPV1xcrE844YTE43PPPdfUWqST70HKePHFF1Pmy+cl87Op4aOeqdu0Af/tb3/D6NGjcfLJJ2dcfsopp5jlzz33XItl0omhsbERd9xxBz71qU/hv//7v3HVVVcllv/hD38w7clStvwt09e//vU238+6detwySWX4NxzzzXlHjx40PwtHWGuv/5600797//+71i/fr15fdu2E8+VNqUNGzaYNqBf/vKXpu1O2o7kvXXm7o/SBr5//3688MILKfOXLVuG5cuXm+XinXfewZtvvmleTz6Dq6++Gq+88grmzp2L+vp6eEG287zzzsNPf/pT83nI9p1//vn4r//6L3z+8593XY60myVPVVVVnXo/0WgU8+bNQ3l5uXlPp556Kn72s5/hd7/7Xcp60lb37W9/GyNGjMBdd92Fm266ybTjLVmypFP7yK233oprrrnGtCXK61144YX47W9/i7POOgvhcDhlXdl3PvnJT+Loo482606cONG0/f3jH/9od/vk+5T2w3TyO5DPOy8vz+yfn/3sZ802vvfeexnbkKdPn47bbrvNtHP7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l1/GlClTEo/Ly8s9fz8MwERE1CcEAgFUVFQkHofDYTz99NO47rrrTJabTAJu8rpdgVXQRETk+bWgs5u0Kau6ujplampq8vS9PvPMM9i/fz8uv/zyFsvOO+88DB48GCeddJJZryswABMRkWe0jnoyiREjRqCsrCwx3XHHHfDSAw88gHnz5mH48OGJecXFxfjZz36GJ598Es8995wJwOeff36XBGFWQRMRUbe0detWlJaWJh4Hg8GM6910002466672ixr1apVmDhxYuLxtm3b8MILL+CJJ55IWW/gwIG44YYbEo9nzZqFHTt24O677zZZsZcYgImIqFt2wiotLU0JwK258cYbMX9+2xdWGjt2bMrjhx56yLTzugmqs2fPxksvvQSvMQATEZFnnGFEKusyOmLQoEFmcktrbQLwV77yFeTl5bW7/tKlS1FZWQmvMQATEVGf8uqrr2Ljxo342te+1mLZ73//e9Nbevr06ebxU089hQcffBD333+/5++DAZiIiDyjtQdXwtJdeyUs6XwlY4KT24ST3X777di8eTP8fr9Z5/HHH8dFF13k+ftQWnLxdkj3b+mBVlVV5ao+noiIupeuPo7Hyx9YOhuWyi63s3UE+6rf6vUxh8OQiIiIcoBV0ERE5BkzjjfbTli6b9yOkAGYiIg8vxJWtmX0BQzARETkcSesbDNgG30B24CJiIhygBkwERF5SNqAsy+jL2AAJiIizzjVx6yCdoNV0ERERDnADJiIiDzDDNg9BmAiIvKM3MlIZX0zBht9AaugiYiIcoAZMBEReYZV0O4xABMRkWe8uIyk7iOXomQVNBERUQ4wAyYiIs8413HmtaDdYAAmIiLPeNF+q9kGTERE1DEMwO6xDZiIiCgHmAETEZFnvLiIhu4jF+JgACYiIs+wCto9VkETERHlADNgIiLyDDNg9xiAiYjIQ14ETxt9AaugiYiIcoAZMBEReYZV0O4xABMRkWc4DMk9VkETERHlADNgIiLyjNYe3IxB82YMREREHST38lVZlqHRFzAAExGRZ5wOVNkFYN1HMmC2ARMREeUAM2AiIvJQ9hkwWAVNRETUQR5UQYNV0ERERNRVmAETEZFntAfVx7qPVEEzAyYiIg/ZHk1d4//9v/+HE044AYWFhejXr1/GdbZs2YJzzjnHrDN48GB897vfRSQSSVln4cKFmDFjBoLBII444gg8/PDDHX4vDMBERNRnhEIhXHzxxfjGN76RcXk0GjXBV9Z788038fvf/94E11tuuSWxzsaNG806p512GpYuXYpvf/vb+NrXvoYXXnihQ+9FaRcDrqqrq1FWVoaqqiqUlpZ26AWIiCj3uvo4Hi9fWjZVtuOAIWEp0qUxR4KqBM5Dhw6lzP/HP/6BT3/609ixYweGDBli5t133334/ve/j7179yIQCJi/n3vuOSxfvjzxvC984QumrOeff97bNuB4jJYPmIiIep748bvrL3Khe3Qb7uLFizF16tRE8BXz5s0zGfOKFSswffp0s86ZZ56Z8jxZRwJ6R7gKwDU1NebfESNGdKhwIiLqXuR47mSq3pLMsKKiArt27fKkvIqKCjQ2NqbMk/ZWmbqSvP/k4Cvij+Pb1to6cpLT0NCAgoIC7wLw0KFDsXXrVpSUlECpbAdYExHR4SaZrwRfOZ53hfz8fNM2Km2nXvjJT37SIsgtWLAAt956a4t1b7rpJtx1111tlrdq1SpMnDgR3YmrAGxZFoYPH97174aIiLpMV2S+6UFYJi/8+Mc/xve+972Uea1lvzfeeCPmz5/fZnljx451nXm//fbbKfN2796dWBb/Nz4veR1pr3ab/QqOAyYiom4n2IHq5kGDBpnJC3PmzDFDlfbs2WOGIImXXnrJBNfJkycn1vn73/+e8jxZR+Z3BIchERFRn7FlyxYzdEj+lSFH8rdMtbW1ZvlZZ51lAu2Xv/xlfPjhh2Zo0Y9+9CNcc801iROCq6++Ghs2bDAZ+urVq/Gb3/wGTzzxBK6//nrvhyERERH1BvPnzzdje9O99tprmDt3rvl78+bNptezXGyjqKgIl112Ge688074/c2VxrJMAu7KlStNE61UmbdXDZ6OAZiIiCgHWAVNRESUAwzAREREOcAATERElAMMwERERDnAAExERJQDDMBEREQ5wABMRESUAwzAREREOcAATERElAMMwERERDnAAExERJQDDMBEREQ4/P4/5FJ6F8dDb10AAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAGgCAYAAAC0SSBAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKd9JREFUeJzt3Qt4FNX5x/E3gRAIEJCLgiXiDaEliiDSqC3XRhCrCELR4K1qRRHKJbU2RSBRpBgtioqiYsFaow/+VSqiSLhWpaXYeCGEexUFMYJCAgRzIft/3pNu2GzCyS6G3Z3J9/M8w7KTSfacmdn5zZxzZjfK4/F4BACA44g+3g8AAFAEBQDAiqAAAFgRFAAAK4ICAGBFUAAArAgKAIAVQQEAsCIoAABWBIUDLFiwQKKiouTzzz+vN6995plnyi233FL5fPXq1aYc+hhqmZmZ0qVLFykvLw/5a+PkycvLk4YNG0pubm64ixLxCIoTsHHjRrnhhhvkRz/6kcTGxsrpp58uo0aNMvN/iBkzZsiiRYvEidLT082B3DvFxcXJT37yE7nvvvuksLBQnErL/tBDD8m9994r0dG8XX6otWvXys9+9jOzf7Rr105++9vfyqFDhwL63fz8fPn1r38tp556qjRp0kR69Oghr776ao3LvvLKK+bnjRs3lrZt28ptt90m+/btq7KM7p9XXnmlTJ06tU7q5mr6WU8I3GuvveZp1KiRp127dp7Jkyd75s2b57nvvvs87du3N/Nff/31E/7bTZs29dx8883V5peVlXmOHDniKS8v94Ta/Pnz9bPAPJ999pl1uWnTppnlnn76ac+LL75oHocOHWrmXXLJJUGXvWPHjlXWxdGjR8060MdQevTRRz3x8fHmtfHDfPTRR57GjRt7unfvbvYPff/ExsZ6Bg0aVOvvFhQUeM4991xP8+bNzfvtySef9PTu3dvsXy+99FKVZZ966ikzf8CAAZ45c+Z40tLSPHFxcZ4LLrig2nZ8++23zbLbt2+v8/q6CUERBN2ZdIfr0qWL55tvvqnys71795r5erDfsWNHnQZFOAUbFLoefA0bNszMX7t27Q8KinDRg8sNN9wQ7mK4whVXXGFOqPSg7/Xcc8+Z/ePdd9+1/m5mZqZZbsWKFZXz9KTh4osvNidtxcXFZp4+tmzZ0oSI78nJ4sWLze8//vjjVf5uSUmJ55RTTvFMmTKlDmvqPlxLB+Hhhx+WoqIiefbZZ83lrK82bdrIM888I4cPHzZt2v5NMps3b5Zf/epXEh8fL61bt5bx48fL999/X7mcLqO/+8ILL1Q233jb6GvqJ9A2/F/+8pemzb5nz57mUvz888+vbMN//fXXzXO99L7ooovko48+qlLeTz/91Pz9s88+2yyjzQC33nqrfPvtt3W6zvr3728eP/vsM/OodUxNTZWEhATTbNe5c2d55JFH9ITF+neO10exbt06GTx4sJxyyinStGlTueCCC2T27NnmZ/Pnzze/4193bzNfgwYNZPfu3cd9TS2zrqdf/OIX1X6m6+nGG28027Nly5Zy8803yyeffGJeT7dXsOvZu59s3brVNGu2aNHC7GNTpkwx6+bLL7+UIUOGmNfTv/HnP/+5xvWzcOFCycjIMM2izZs3l+HDh0tBQYEUFxfLhAkTTLNNs2bNTBOOzvOl60u3ly6j20abZp5++mmpqya87OxsUzetg9dNN91kyqPltnnvvffM+vDuT0qbAvU99fXXX8uaNWvMPO1vOHDggIwcOdKsDy99r+jraJOUr5iYGOnbt6/8/e9/r5N6ulXDcBfASRYvXmwO0D//+c9r/Hnv3r3Nz5csWVLtZ7pD68/+9Kc/yb/+9S95/PHHZf/+/fLXv/7V/PzFF1+U22+/XXr16iV33HGHmXfOOedYy7N9+3ZJSUmR0aNHmzegHnCvuuoqmTt3rvzxj3+UMWPGmOX0NfX1t2zZUtnOrm/a//73v+aAoQce7V/RANRHLZ/vm+yH2LFjh3nUcNQD3tVXXy2rVq0ybcYXXnihvPvuu3LPPfeYA/ajjz4a1N/WOugBoH379iZ4tR6bNm2St956yzzXg+Tdd98tL730knTv3r3K7+o8PUDoAdXWnq60rduXdmrrev73v/8td911l+no1gONhkVNZQxmPesB7sc//rHMnDnT7EfTp0+XVq1amZMQPUhqf4mW/Xe/+51cfPHFZp/zpdtaTxr+8Ic/mP3jiSeeMAdD3e66v2kg6etqmJ111llV2uc1FLp27Wq2kXby6v6u+5DWV9ejl/Yp+J7kHI++rgae2rBhg5SVlZmTGl+NGjUy+0FNYe5LQ03r5U/7OtR//vMfSU5Orgy/mpbVefo6Wh/f/iY9kdLtp2HmG2LwEe5LGqc4cOCAuXQdMmSIdbmrr77aLFdYWFilSUbn+xozZoyZ/8knn9Ta9FRT8482zfg36ejlu85r0qSJZ+fOnZXzn3nmGTN/1apVlfOKioqqvc7LL79slvvHP/5hfe2aeOu5ZcsW0/yky+vrahv0aaed5jl8+LBn0aJFZpnp06dX+d3hw4d7oqKiqrQT+zc9adl966D9NmeddZZZbv/+/VX+nm+Tw/XXX+85/fTTq/Rt5OTkmL+ldbPRtnBd7uDBg9X6qXT+Y489VjlP/37//v2r/d1A17N3/d1xxx2V87SOHTp0MOtm5syZlfO1vrqNa1o/iYmJpjnFt/76+9rs40v7jXTd+aqprAMHDvScffbZVebp6+pr1Tb16dOn8ndeffXVanX2GjFihGk+shk3bpwnOjra8/nnn1eZf91115m/O3bsWPNc9z2t72233VZluc2bN1eWa9++fVV+lpWVZeavW7fOWob6jKanAB08eNA86uW8jffn/iN9fM/I1Lhx48zj22+/fcJl0qaBSy65pPL5T3/6U/OoZ55nnHFGtfl6Zuvle8alZ4c6IiQpKck8z8nJOeEyaVOSNhHo2ape6Zx77rnmzFjP/LSu2tyjI118aVOUXm288847Ab+Onhlq05A2p2jTjy/fs3Rt2vjqq6/MVYyXnpFr/a+99lrra2jzkJ5Za5OFr6VLl5qz5d/85jeV8/QM1X8bn8h61qtKL11Xegau60avwLy0vrqefbenb321bL7bXn9fm7t86XxtztKz/JrKqs1VWtY+ffqY19HnXr///e/NlVJtk2/z2JEjR8yjNmn50yY578+PR9eLrg+9MtYrPb1S1aunN954o8rf1yZgXUabcPX1tezabKVXat714v9a2myp/EdF4RiangLkDQBvYAQbKJ06daryXJuV9ODyQ+5P8A0D5b3M1/b/muZr04PXd999Z9qytc32m2++qbK870EhWK+99pq5fNc3ZYcOHao0n+3cudMMJfZfN9rU4v15sE1aiYmJ1uW0OUKbpjQcBgwYYJodXn75ZdPeX1voH4+WU/+mt9nDS0PRX7DruaZtqgdSPQD6z6+pPymYfULXhZZBmwXVBx98INOmTZN//vOfpi/Ov6zev6UnKDoFwxtC/v0i3gCtqanIl/Y9ZWVlyZ133imXXXaZmadNeY899php/vMNc22m0zDQ5jmdlDbN6r6ofXf+we/tH6ur5lY3IigCpG8SPTho56SN/lzbvWtr66yLnVLPsIKZ79th7D0z0/4BbSPWN48eOAYNGvSDbizTNnP/g1o46brQfpznnntOnnrqKXMw1CsMPXDURg+gesat4X+ioRLseq5p2wWyPWtbtra/ocGrQar9LbNmzTLBov0HehWofUe+ZdXQqO0KQOnva/+K0veO2rNnT7XldJ6eQNRG+5y0/0QHDRw9etT0HXkHN5x33nlV3qva5/DFF1+YE7GOHTua6dJLLzVXu/5XoN4TqEjabyMNQREE7TjVA877779vbhryp5e4umNqk4u/bdu2meYYL+1o1DefdnB7heqMRt8YK1asMGe6vp2ZWsaTSd+sy5cvr3bg1RFh3p8HynuloqNcahqV5N8co80Q2jmrzVt6sBg4cGCtr6EHTaVNXHpG61sPbcrSs27fqwrdppGwnk+Erhs923/zzTerXJX4Ntl56UABbdqpjTZbeQ/keuWnzXgffvihCU+vkpIS+fjjj6vMqy18tBPfS/cnVdM+oPXw1kVHQmmHd03Njbp99ereN2xQFX0UQdCzQr1E1iDwv+zXJga9LNYDhy7nb86cOVWe62gUdcUVV1TO0+GdukOfbN6zS/8zUr2MP5l0GKueCT755JNV5usZq4ak77qojZ5NavBqmf3XmX+99CCv07x580zT2HXXXWcOWrXx9v/owc2Xhkxpaak5afDS0PffxuFazyeiprLqlYMOmfV3In0UepavB/O//e1vVZpvdbSfjqIaMWJE5TwNYD15qK3PQANXR/jpCVxtB/m0tDRzdThx4sRqP9MA0dFe3qY1VMcVRRC0n0HPpPTjOvQeBe1g1IOVXkU8//zzZsfW9u+ahrXqWYteNmuTg7YB6xtGm0S6detWZZieniHppb9eiuvf9nZE1yVtFtMmIr3fQw942lS2bNmyynsdThYdUtqvXz+ZPHmyWWdad31dbSbQTunahgP70jNAHc6pf1ObdHT4qTZv6AFGh57qsFv/qwrf9upA6L0Peias28S3M/iaa64xw5i1E16vIvTKQ8/E9WTB98owXOv5RFx++eXmbF3Xp54I6cFbg1DvqfBvLjqRPgr14IMPmuYfvdLQIeC7du0yYaKvre8LLx12rPuJ9pfocF7f19VA0asEXYe6/bVpS8PClw4t1itNfe/oCYF+LI6udx1q7Hs1onS76D0Y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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"gammas = [0.2, 0.5, 0.9, 0.99]\n",
|
||
"theta = 1e-6\n",
|
||
"\n",
|
||
"results = {}\n",
|
||
"\n",
|
||
"for gamma in gammas:\n",
|
||
" print(f\"gamma={gamma}: computed V* and pi*\")\n",
|
||
"\n",
|
||
" V_star, pi_star = value_iteration(P, R, gamma, theta=theta)\n",
|
||
"\n",
|
||
" results[gamma] = {\"V\": V_star, \"pi\": pi_star}\n",
|
||
"\n",
|
||
" plot_values(V_star, title=f\"Optimal Value Function (gamma={gamma})\")\n",
|
||
" plot_policy(pi_star, title=f\"Optimal Policy (gamma={gamma})\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "31083905-cc29-431e-9f87-6595e187e5d0",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 20** (What we will learn in the next weeks)\n",
|
||
"\n",
|
||
"Assume now that the transition matrix $P$ is unknown.\n",
|
||
"\n",
|
||
"1. Which parts of policy iteration and value iteration can no longer be applied?\n",
|
||
"2. Which quantities would need to be learned from data?\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e8a7738a-584d-43ae-ba2f-2598608b38fa",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 21.** Try different configurations of the maze and compute an optimal policy."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "453188a8-bc26-463b-9784-be9c68328495",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "studies",
|
||
"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.9"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|