NTU-AI-HW5/pacman-intro.ipynb
2024-05-21 18:21:25 +08:00

386 lines
97 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: opencv-python in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (4.9.0.80)\n",
"Requirement already satisfied: numpy>=1.21.2 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from opencv-python) (1.26.4)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: gymnasium[atari] in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (0.29.1)\n",
"Requirement already satisfied: numpy>=1.21.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[atari]) (1.26.4)\n",
"Requirement already satisfied: cloudpickle>=1.2.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[atari]) (3.0.0)\n",
"Requirement already satisfied: typing-extensions>=4.3.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[atari]) (4.9.0)\n",
"Requirement already satisfied: farama-notifications>=0.0.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[atari]) (0.0.4)\n",
"Requirement already satisfied: shimmy<1.0,>=0.1.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from shimmy[atari]<1.0,>=0.1.0; extra == \"atari\"->gymnasium[atari]) (0.2.1)\n",
"Requirement already satisfied: ale-py~=0.8.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from shimmy[atari]<1.0,>=0.1.0; extra == \"atari\"->gymnasium[atari]) (0.8.1)\n",
"Requirement already satisfied: importlib-resources in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from ale-py~=0.8.1->shimmy[atari]<1.0,>=0.1.0; extra == \"atari\"->gymnasium[atari]) (6.4.0)\n",
"Requirement already satisfied: gymnasium[accept-rom-license] in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (0.29.1)\n",
"Requirement already satisfied: numpy>=1.21.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[accept-rom-license]) (1.26.4)\n",
"Requirement already satisfied: cloudpickle>=1.2.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[accept-rom-license]) (3.0.0)\n",
"Requirement already satisfied: typing-extensions>=4.3.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[accept-rom-license]) (4.9.0)\n",
"Requirement already satisfied: farama-notifications>=0.0.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from gymnasium[accept-rom-license]) (0.0.4)\n",
"Requirement already satisfied: autorom~=0.4.2 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (0.4.2)\n",
"Requirement already satisfied: click in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (8.1.7)\n",
"Requirement already satisfied: requests in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (2.31.0)\n",
"Requirement already satisfied: tqdm in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (4.66.4)\n",
"Requirement already satisfied: AutoROM.accept-rom-license in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (0.6.1)\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from requests->autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (2.0.4)\n",
"Requirement already satisfied: idna<4,>=2.5 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from requests->autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (3.7)\n",
"Requirement already satisfied: urllib3<3,>=1.21.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from requests->autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (2.1.0)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from requests->autorom~=0.4.2->autorom[accept-rom-license]~=0.4.2; extra == \"accept-rom-license\"->gymnasium[accept-rom-license]) (2024.2.2)\n",
"Requirement already satisfied: numpy in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (1.26.4)\n",
"Requirement already satisfied: matplotlib in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (3.8.4)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (1.2.0)\n",
"Requirement already satisfied: cycler>=0.10 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (4.51.0)\n",
"Requirement already satisfied: kiwisolver>=1.3.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (1.4.4)\n",
"Requirement already satisfied: numpy>=1.21 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (1.26.4)\n",
"Requirement already satisfied: packaging>=20.0 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (23.2)\n",
"Requirement already satisfied: pillow>=8 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (10.3.0)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (3.0.9)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from matplotlib) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n",
"Requirement already satisfied: opencv-python in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (4.9.0.80)\n",
"Requirement already satisfied: numpy>=1.21.2 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from opencv-python) (1.26.4)\n",
"Collecting imageio-ffmpeg\n",
" Downloading imageio_ffmpeg-0.4.9-py3-none-manylinux2010_x86_64.whl.metadata (1.7 kB)\n",
"Requirement already satisfied: setuptools in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from imageio-ffmpeg) (68.2.2)\n",
"Downloading imageio_ffmpeg-0.4.9-py3-none-manylinux2010_x86_64.whl (26.9 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m26.9/26.9 MB\u001b[0m \u001b[31m11.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hInstalling collected packages: imageio-ffmpeg\n",
"Successfully installed imageio-ffmpeg-0.4.9\n",
"Collecting imageio\n",
" Downloading imageio-2.34.1-py3-none-any.whl.metadata (4.9 kB)\n",
"Requirement already satisfied: numpy in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from imageio) (1.26.4)\n",
"Requirement already satisfied: pillow>=8.3.2 in /home/shangfu/miniconda/envs/py311/lib/python3.11/site-packages (from imageio) (10.3.0)\n",
"Downloading imageio-2.34.1-py3-none-any.whl (313 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m313.5/313.5 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hInstalling collected packages: imageio\n",
"Successfully installed imageio-2.34.1\n"
]
}
],
"source": [
"%%bash\n",
"pip install opencv-python\n",
"pip install gymnasium[atari]\n",
"pip install gymnasium[accept-rom-license]\n",
"pip install numpy\n",
"pip install matplotlib\n",
"pip install opencv-python\n",
"pip install imageio-ffmpeg\n",
"pip install imageio"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import gymnasium as gym\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from IPython import display"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ALE/MsPacman-v5 environment\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Observation space: Box(0, 255, (210, 160, 3), uint8)\n",
"Action space: Discrete(9)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"A.L.E: Arcade Learning Environment (version 0.8.1+53f58b7)\n",
"[Powered by Stella]\n"
]
}
],
"source": [
"env = gym.make('ALE/MsPacman-v5')\n",
"print(\"Observation space: \", env.observation_space)\n",
"print(\"Action space: \", env.action_space)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"MsPacman has the action space of Discrete(9) with the table below listing the meaning of each actions meanings.\n",
"\n",
"| Value | Meaning | Value | Meaning | Value | Meaning |\n",
"| ----- | ----- | ----- | ----- | ----- | ----- |\n",
"| 0 | NOOP | 1 | UP | 2 | RIGHT |\n",
"| 3 | LEFT | 4 | DOWN | 5 | UPRIGHT |\n",
"| 6 | UPLEFT | 7 | DOWNRIGHT | 8 | DOWNLEFT|\n",
"\n",
"\n",
"For Detail informaiton:\n",
"- https://gymnasium.farama.org/environments/atari/ms_pacman/#mspacman\n",
"- https://atariage.com/manual_thumbs.php?SystemID=2600&SoftwareLabelID=924&ItemTypeID=\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(210, 160, 3)\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 500x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# visualize the observation_space\n",
"state, info = env.reset()\n",
"print(state.shape)\n",
"\n",
"plt.figure(figsize=(5, 5))\n",
"plt.imshow(state)\n",
"plt.axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# visualize the MsPacman game\n",
"img = plt.imshow(state)\n",
"for _ in range(100): \n",
" action = env.action_space.sample()\n",
" state, reward, terminated, truncated, info = env.step(action)\n",
" img.set_data(state) # just update the data\n",
" display.display(plt.gcf())\n",
" display.clear_output(wait=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## OpenAI Gym Wrapper for Image Environment"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import cv2\n",
"\n",
"def preprocess(img, image_hw=84):\n",
" img = img[1:172, :] # MsPacman-specific cropping\n",
" img = cv2.resize(img, dsize=(image_hw, image_hw)) # rescale to 84x84\n",
" \n",
" img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) / 255.0\n",
" return img"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class ImageEnv(gym.Wrapper):\n",
" def __init__(\n",
" self,\n",
" env,\n",
" skip_frames=4,\n",
" stack_frames=4,\n",
" image_hw=84,\n",
" initial_no_op=50,\n",
" **kwargs\n",
" ):\n",
" super(ImageEnv, self).__init__(env, **kwargs)\n",
" self.initial_no_op = initial_no_op\n",
" self.skip_frames = skip_frames\n",
" self.stack_frames = stack_frames\n",
" self.image_hw = image_hw\n",
" \n",
" def reset(self):\n",
" # Reset the original environment.\n",
" state, info = self.env.reset()\n",
"\n",
" # Do nothing for the next `self.initial_no_op` steps\n",
" for _ in range(self.initial_no_op):\n",
" state, reward, terminated, truncated, info = self.env.step(0)\n",
" \n",
" # Convert the frame `state` to Grayscale and resize it\n",
" state = preprocess(state, self.image_hw)\n",
"\n",
" # The initial observation is simply a copy of the frame `s`\n",
" self.stacked_state = np.tile(state, (self.stack_frames, 1, 1)) # [4, 84, 84]\n",
" return self.stacked_state, info\n",
" \n",
" def step(self, action):\n",
" # We take an action for self.skip_frames steps\n",
" rewards = 0\n",
" for _ in range(self.skip_frames):\n",
" state, reward, terminated, truncated, info = self.env.step(action)\n",
" rewards += reward\n",
" if terminated or truncated:\n",
" break\n",
"\n",
" # Convert the frame `state` to Grayscale and resize it\n",
" state = preprocess(state, self.image_hw)\n",
"\n",
" # Push the current frame `state` at the end of self.stacked_state\n",
" self.stacked_state = np.concatenate((self.stacked_state[1:], state[np.newaxis]), axis=0)\n",
"\n",
" return self.stacked_state, reward, terminated, truncated, info"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shape of an observation: (4, 84, 84)\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAFkCAYAAACthCNEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAlbUlEQVR4nO3dW4gkZ/k/8J3smBhXozExxhmJItEdPK6o8QTBmdkNQRKQQIQEPARRWZhF0XjhRRTdixAUFXZg0ZuoqAEFFSImZHdmouApGggatTeKxuCMa0gMGmMOZtO/C//i/+3dre7efp96q6s+n7uHmup6+5mq+l48VPVMv9/vbwMAAAAAAAhwWukFAAAAAAAA7WUQAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQZnbUPzxy5Ejl9i984QuTrqVTPvzhD1du10+iOQfzGtbPnTt31rOQKSBP8nItU5pzMC95Mh6ZkpfrmdKcg3nJlNHJk7xcy5TmHMwrV554IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMLM9Pv9/ih/OOx9eQsLC1kW1BW9Xq9yu34SzTmY17B+ev/q/8iTvFzLlOYczEuejEem5OV6pjTnYF4yZXTyJC/XMqU5B/PKlSeeiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACDNb14F6vV7l9qWlpaTe2tpK6gMHDiT1nj17knp1dbWyXlxcTOqDBw8m9ebmZlIvLy9XrnfY91lYWKjcPin9HN+kx1hbW0vq+fn5pN67d29Sb2xsJPXKykplfejQoaTet29fUs/NzSX1+vp65XpLn4P6SRT3v7z0c3zuf3npJyW5B+aln+NzD8xLPynF/S8v/Ryf+19e+hnDExEAAAAAAEAYgwgAAAAAACCMQQQAAAAAABBmpt/v90f5wyNHjlRu927C8ZR+3x44B/Ma1s+dO3fWtJLmkyd5uZYpzTmYlzwZj0zJy/VMac7BvGTK6ORJXq5lSnMO5pUrTzwRAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQZrb0Aka1srKS1K973euyfv6DDz6Y1Ndee23Wz2+a6H4yvjvvvDOpV1dXC62kHp/97GeT+pxzzsn6+V3rJ6OTJ3nJk+bp2v1PnlCSTMlLpjRP1+6BMoVS5Ele8qR5unb/kycn5okIAAAAAAAgjEEEAAAAAAAQxiACAAAAAAAIU9tvRPR6vcrtS0tLSb21tZXUO3fuTOo3v/nNeRb2/2xubmb9vKaL7ifj++c//1l6CbV67Wtfm9Tz8/NZP79r/ewSedIs8qR5unb/kydMQqY0i0xpnq7dA2UKp0qeNIs8aZ6u3f/kyYl5IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIMxs6QVMq16vV7l9YWGh6PGXlpaSemtrK3I51GBubi6p19fXK/++9DkYfXxoi9LXkjzpHnkC7VX6epIp3SNToJ1KX0vypHvkSTd4IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMLU9hsRg+9vG/SXv/ylppXkUfpdYKWPT/0G33lY+hwofXy6S5606/jUT57A/8iUdh2f+skU+A950q7jUz950g2eiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDC1/UbE4Lu+AOBUyBMAcpEpAOQgTwCG80QEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEmen3+/1R/vDIkSOV2xcWFrIs6GTOOOOMpJ6dzfvzFk899VRSP/roo1k/f9COHTsqtz/yyCOhx4/uJ+N78sknk/rxxx8PPV7pc/DMM89M6tNOyzsXrbufvV6vcvvOnTtDjz9N5Elepa9ledI88kSedIlMyav09SxTmkemyJSukCd5lb6W5UnzyBN5sm2bJyIAAAAAAIBABhEAAAAAAEAYgwgAAAAAACDM1LwkbfBdV9HvvooW/S6yYdrWT8ZX+hyMficlnEzb7n+lr+W29ZPxlT4H5Qklte0eWPp6bls/GV/pc1CmUErb7n+lr+W29ZPxlT4H5cmJeSICAAAAAAAIYxABAAAAAACEMYgAAAAAAADC1PYbEdu3b6/cfuzYscrtMzMzSX3aaekM5amnnkrqfr8fup5p379t/RxF6TW2reel929aP6lP286dad+/bf0cRek1tq3npfdvWj+pV9vOn2nfv239HEXpNbat56X3b1o/qU/bzp1p379t/RxF6TW2reel929aP3PxRAQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAISp7Tcifvazn1Vuv+yyy5L66NGjSf2Zz3wmqd/2trcl9Ze+9KXK+uKLL07qz33uc0n9l7/8Jakvv/zyyvUO+z6vf/3ri+7ftX6OYtJjfPe7303qF7zgBUn9kY98JKl/+MMfJvX73//+pP7ABz6Q1LfffntSX3vttUl9/vnnJ/X3vve9yvWWPge71k/q4/5X7/5d6+co3P9Spc/htvWTerkH1rt/1/o5CvfAVOlzuG39pD7uf/Xu37V+jsL9L1X6HG5bP3PxRAQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAISZ6ff7/VH+8MiRI5XbFxYWsiwIYBr1er3K7Tt37qxpJc0nTwBOTp6MR6YAnJxMGZ08ATi5XHniiQgAAAAAACCMQQQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDCzuT6o1+tNtP/S0lJSb21tTfR5gxYXF5P64MGDSb25uZnUy8vLWY8/aNJ+DVO6n120d+/epN7Y2Mj6+XNzc0m9vr6e9fMHLSwshH7+2tpaUs/Pzyd12/rJ6OTJeORJ+7Tt/idPKEmmjEemtE/b7oEyhVLkyXjkSfu07f4nT8rwRAQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDAGEQAAAAAAQJjZ0gsY1Ute8pKkPuuss5L66NGjlXVuu3btqtx+1113hR5/Uk3rZxecf/75lfU//vGPpP7DH/4QvqZJlL4G2tZP6tO0+1/pa2lSTetnF7Tt/lf6GmhbP6lX0+6Bpa+nSTWtn13Qtntg6Wugbf2kPk27/5W+libVtH52Qdvuf6Wvgbb18788EQEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGGm5jci3v72tyf16173uqT+9re/ndQ333xz6Ho+9KEPVW6/5pprQo8/qab1swve8IY3JPUVV1yR1HfeeWdSr66uhq9pEqWvgbb1k/o07f5X+lqaVNP62QVtu/+Vvgba1k/q1bR7YOnraVJN62cXtO0eWPoaaFs/qU/T7n+lr6VJNa2fXdC2+1/pa6Bt/fwvT0QAAAAAAABhDCIAAAAAAIAwBhEAAAAAAECYqfmNiKa966rp78Mbpmn97ILBdw5O+zsIS18Dbesn9Wna/a/0tTSppvWzC9p2/yt9DbStn9SraffA0tfTpJrWzy5o2z2w9DXQtn5Sn6bd/0pfS5NqWj+7oG33v9LXQNv6+V+eiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACDM76h8uLCxErqNzpr2fGxsbSV3393nTm95Uuf2nP/1pTSupz9bWVlJP+zlUWt397Pf7oZ8/TZy7eU17P+VJ/eRJXvKkLOdvXtPeT5lSP5mSl0wpx7mb17T3U57UT57k1dQ88UQEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEGfk3IqCkj33sY0l93333JfVLXvKSpH7e85533GfcfPPN+RcGwFSRJwDkIlMAyEGe0BWeiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDC1/UbEe9/73srt3/rWt5L6kUceSerFxcWkftGLXpTUd911V2Wd27Dv8+Uvf7no/tH9fOELX5jUu3fvrjze4HoGDfs+F1xwQVLfcsstSf3EE08k9fz8/NjHGNbzK6+8Mql37NiR1IcPH07qP//5z0m9a9euyvpPf/pTUm9sbFQeb3A9g0qfg8P2n1TT+kl9St//cit9LZbupzyRJ/KEkkrfA3MrfT2W7qdMkSkyhVJK3/9yK30tlu6nPJEn8iSGJyIAAAAAAIAwBhEAAAAAAEAYgwgAAAAAACBMbb8R8exnP7ty+2mnVc9EnvGMZ1R+3umnn165//bt2yu3j2vY9ym9f3Q/B7cP7j8zM1O5/6Bx+/HBD35wrL/ftm3btt///vdj7/P/e+Yzn5nUZ511VlJP2rPB/8mgwf9p08/BSQ27ZpvWT+pT+v4nT1LyZHzyJO/+w8gTqpS+B8qUlEwZn0zJu/8wMoWTKX3/kycpeTI+eZJ3/2G6mieeiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDAz/X6/P9Ifjvn+s6bZvXt3Uq+urib15uZmUi8vL4evidEdOHBg4s/Yt29fhpWQy9raWlLPz88n9crKSlIfPnw4fE2RRrzVdoI8oSR50j7ypNtkCiXJlPaRKd0lTyhJnrSPPDkxT0QAAAAAAABhDCIAAAAAAIAwBhEAAAAAAECY2dILqMuxY8dKL4EJ7N+/P6mf/vSnJ/Xpp5+e1GeccUb4mojlmqWpnJvTTZ50j2uWJnN+TjeZ0j2uWZrKuTnd5En3dPWa9UQEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEGfk3Inq9XuQ6ti0tLSX11tZW6PEGzc/PJ3X0940W3c/FxcWkPnjwYNbPn0Z79+5N6o2NjayfPzc3l9Tr6+tZP79r9LMceTJd5En95Ml00c+yZMp0kSn1kynTRT/LkSfTRZ7UT55Ml6b20xMRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEMYgAAAAAAADCGEQAAAAAAABhZksvYFTXXHNNUr/qVa9K6ltvvTWpb7vttvA1TbPofj700ENJ/alPfWqs/Zvok5/8ZFKfffbZY+1/ySWXJPWll16a1L/61a+S+sYbbxzr87tGPzlV8iQveTI+edIs+skkZEpeMmV8MqVZ9JNTJU/ykifjkyfN0tZ+eiICAAAAAAAIYxABAAAAAACEMYgAAAAAAADCTM1vRPz85z9P6j/+8Y9Jfe+999a4mukX3c9//etfST34/r1p9LGPfSypx31f3j333JPUTzzxRFI/8MADp7awjtJPTpU8yUuejE+eNIt+MgmZkpdMGZ9MaRb95FTJk7zkyfjkSbO0tZ+eiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDBT8xsRd999d+kltIp+1m/wHYTe8TgZ/eRUuf/lpZ/1c//LSz+ZhHtgXvpZP/fAvPSTU+X+l5d+1s/9L6+29tMTEQAAAAAAQBiDCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYWZH/cOFhYWJDtTr9Sbaf1IbGxtJPen3gbptbW0ltXO4XpP2u9/vZ1rJ9JMnUJY8KUue5CVToCyZUpZMyUeeQFnypKy68sQTEQAAAAAAQBiDCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYWZLL2BUn/70p5P6rW99a1J/5StfSeqvfvWrSf2Wt7wlqffv35/Uf/3rX5P66quvrlzP2tpa5fbl5eWi+1911VVJff/99yf1pP1kfO9+97uT+j3veU9S/+hHP0rqT3ziE0l93nnnJfVNN91UebzS5+Cw/b/xjW8k9fOf//ykvu6665L6xz/+cVJP2k+6S56Mt788aR55kpInlCRTxttfpjSPTEnJFEqRJ+PtL0+aR56k5MmJeSICAAAAAAAIYxABAAAAAACEMYgAAAAAAADCzPT7/f5IfzgzM9GBer1e5falpaWk3traSupnPetZSf20pz0tqR999NHKevDvBz9vsA0PPfRQ5Xqf+9znVm7/29/+VnT/wfUPfr9J+7l79+6kXl1dTerNzc2kHvbutHF985vfrNz+zne+M+vxtm07/v1w8/PzSb2yspLUhw8fTuozzzyzsv73v/+d1A8//HBSD16DZ599duV6S5+Dw/YfXP/g9xv8/oP9mbSfc3NzSb2+vl653oWFhcrtw4x4q+0EeZIqfS3KE3kiT+TJNJMpqdLXo0yRKTJFpkwreZIqfS3KE3kiT9qZJ56IAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMLOlFzCqwXddjWvw3VnD3uU1zLTvP2k/63bLLbck9RVXXJHU73vf+5L6kksuOe4zbrvttvwLG8OwdxAOM/i+tdLn0KT7D3sn5TCT9pPukid595cn9ZMnKXlCSTIl7/4ypX4yJSVTKEWe5N1fntRPnqTkyYl5IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMJMzW9E0CzHjh2r9Xizs+mp+thjjyX1E088kdRPPfVU+JoG1d0TgDaQJ8eTJwCnRqYcT6YAjE+eHE+ekIMnIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIMzIvxHR6/Ui1xFucXExqQ8ePFhoJfVYWlpK6q2trUIriXHbbbeNvc/hw4cDVlKfubm5pF5fXy+0knrs3bs3qTc2Ngqt5D+m/R7YJNPeS3kiT+TJdJEn7Tbt/ZQpMkWmTBeZ0l7T3kt5Ik/kyXTpap54IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGFG/rHqabd9+/bSS2iVuvv573//u3L7zMxMTSs5OedYXvpJUzk385Inx3OO5aWfNJnzMy+ZcjznWF76SVM5N/OSJ8dzjuXV1X56IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMJMzW9EHDhwIKn37NmT1Kurq5U1qWnr59vf/vaix89hZWWlsj506FBS79u3L3xN00w/OVXTdv9rumnrpzxhkH4yiWm7BzbdtPVTpjBIPzlV03b/a7pp66c8YVBb++mJCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACDM1vxEx6buujh07lmkl7RDdz/n5+aTu9XoTHW8aDOtJ095B2HT6SRR5kpc8yc/9Ly/9JJJMyUum5OcemJd+EkWe5CVP8nP/y6ur/fREBAAAAAAAEMYgAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAmNlR//Duu++OXMe2J554IvTzxz3+PffcU2gleUT38+GHH07q6PNjGgz2JLfB/+m09/xlL3tZUp9++um1Hr/ufu7cuTP086eJPJku8qR+8mQ88qTbZMp0kSn1kynjkSndJU+mizypnzwZjzw5MU9EAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAmJl+v98f6Q9nZqLXEmpxcTGpDx48mNSbm5tJvby8HL4mRnfhhRcm9e9+97ukvummm5L6wQcfPO4z9u3bl39hnLK1tbWknp+fT+q9e/cm9cbGRviaIo14q+0EeUJJ8qR95Em3yRRKkintI1O6S55QkjxpH3lyYp6IAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMLOlFwCjuPLKK5P6vvvuS+qHH344qZ/znOdELwmAKSRPAMhFpgCQgzyhKzwRAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYWr7jYher1e5fWlpKam3traS+sCBA0m9Z8+epF5dXa2scxv2fRYWForuH93PxcXFpD548GBSb25uJvXy8nLlesftx/XXX5/UH/3oR5N6165dEx9j0NraWlLPz88n9d69e5N6Y2MjqVdWVirrQ4cOJfW+ffuSem5uLqnX19cr11v6HBy2/6Sa1k/qU/r+l1vpa7F0P+WJPJEnlFT6Hphb6euxdD9likyRKZRS+v6XW+lrsXQ/5Yk8kScxPBEBAAAAAACEMYgAAAAAAADCGEQAAAAAAABhZvr9fn+kP5yZiV5LqNzvd6NeF110UVJfd911SX3ZZZcl9de+9rXjPuNd73pX/oVxyiZ9/+C0GfFW2wnyhJLkSfvIk26TKZQkU9pHpnSXPKEkedI+8uTEPBEBAAAAAACEMYgAAAAAAADCGEQAAAAAAABhZksvAEaxa9eupB58P97dd9+d1N6NB8CJyBMAcpEpAOQgT+gKT0QAAAAAAABhDCIAAAAAAIAwBhEAAAAAAECYkX8j4qqrropcx7bvfve7Sf3oo4+GHq+0Yf286aabQo9/8cUXJ/X8/HxS//KXv0zqX//616HrGdaPhx9+OKmvvvrqiT7vRKJ7/opXvCKpX/3qVyf15uZmUv/whz8MXU/pc7C0M888M6nf8Y53lFlIB8mTvEpfy/LkePIkJU+IJFPyKn09y5TjyZSUTCGKPMmr9LUsT44nT1LypAxPRAAAAAAAAGEMIgAAAAAAgDAGEQAAAAAAQJiRfyPik5/8ZOQ6tv3gBz9I6ra/L29YP6PfVXbllVcm9Z49e5J6dXU1qaPflxd9fo0iuueLi4tJvbKyktSHDh1K6uj35ZU+B0s7++yzk7oJ52BXyJO8Sl/L8uR48iQlT4gkU/IqfT3LlOPJlJRMIYo8yav0tSxPjidPUvKkDE9EAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAmJF/I2Labd++vfQSgDG4Zmkq5yZMF9csTeb8hOnimqWpnJswXbp6zXoiAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwkzNb0QcOHAgqffs2ZPUq6urlXVuvV6vcvvCwkLR4y8tLSX11tZW1uPv3r07qQf7vbm5mdTLy8tZj1/C2tpaUs/Pzyf1yspKUh8+fDjr8efm5pJ6fX298u9Ln4PRxx/s92B96NChpN63b1/oepge8mS848uT/ORJqvQ1IE+YhEwZ7/gyJT+Zkip9DcgUTpU8Ge/48iQ/eZIqfQ20NU88EQEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGGm5jciJn3X1bFjxzKt5D+i3wXW9OMPvguu9HrqUPqdf4PvPCzd8+jjD7tm635HJu0hT5p1fHlSP3mSkidMQqY06/gypX4yJSVTOFXypFnHlyf1kyeptuaJJyIAAAAAAIAwBhEAAAAAAEAYgwgAAAAAACCMQQQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMLM5vqgj3/84xPt/9BDD2VayYn99re/TerB9T7yyCOhx6fapOcP0+eGG25I6h07diT14DWb2+A9Z9Jz8Prrr59of/5HnjAJedI98oQqMoVJyJTukSmcjDxhEvKke+TJiXkiAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwmT7jYjvfOc7uT4qxNGjR5O66evtGv+P7rntttuKHv/RRx9N6knPQe9fzafp9wN50mz+H90jT6jS9HuCTGk2/4/ukSmcTNPvB/Kk2fw/ukeenJgnIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwszWdaBer1e5fWlpKam3traS+sCBA0m9Z8+epF5dXa2sFxcXk/rgwYNJvbm5mdTLy8uV6x32fRYWFiq3T2rSfk5qGvs56THW1taSen5+Pqn37t2b1BsbG2Osbri5ubmkXl9fr/z70udgdD9XVlYq60OHDiX1vn37krpp/WR08iQveTK+0ve/STXt/le6n/Kk22RKXjJlfKXvgZNq2j2wdD9lSnfJk7zkyfhK3/8m1bT7X+l+tjVPPBEBAAAAAACEMYgAAAAAAADCGEQAAAAAAABhavuNiEnfNTX4rqtxDb5ra9L1lH4XY+njT2M/Jz3GsHf+RRt852Hpc6B0P4e9I3OYpvWT0cmTvEoffxr7Wfr+N6mm3f9K91OedJtMyav08aexn6XvgZNq2j2wdD9lSnfJk7xKH38a+1n6/jeppt3/SvezrXniiQgAAAAAACCMQQQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGEMIgAAAAAAgDCzpRcwquuuuy6pL7rooqyf/8ADDyT1Nddck/Xzm2b//v1J/fnPfz6pH3rooTqXs+3mm2+u9Xgncvnll4d+/te//vWk/v73v5/U//znP0OP3zQ33nhjUp977rlZP/+OO+5I6sFznu6SJ3nJk+PJk3rJE0qSKXnJlOPJlHrJFEqRJ3nJk+PJk3rJkxPzRAQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAISZmt+IOO+885L6pS99adbPf8YznpH185ru/vvvr6zrlvv/2USD7yCs+52ETXPBBRck9fz8fNbPv/fee7N+Hu0hT/KSJ/WTJyl5QkkyJS+ZUj+ZkpIplCJP8pIn9ZMnKXlyYp6IAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQxiACAAAAAAAIM1vXgXq9XuX2paWlpN7a2opczsSGfZ+FhYWixx/WzwMHDiT1nj17knp1dbWy3r17d+X2zc3NpF5eXq5c7zRYW1tL6vn5+aReWVlJ6sOHD1duH6wPHTqU1Pv27Uvqubm5pF5fX69cb+lzMPr4k2paPxmdPKn3+PIkP3mSKn0NTKpp/WQ8MqXe48uU/GRKqvQ1MKmm9ZPRyZN6jy9P8pMnqdLXwKSa1s//8kQEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEqe03Ipr+7qxxlf4+kx5/8F1s4xp8F1zpftRh0nf+DXsH4TCD7zws3fPSx59U0/rJ6Nr2vyr9feRJ/eRJqvTxJ9W0fjKetv2/Sn8fmVI/mZIqffxJNa2fjK5t/6vS30ee1E+epEoff1JN6+d/eSICAAAAAAAIYxABAAAAAACEMYgAAAAAAADCGEQAAAAAAABhDCIAAAAAAIAwBhEAAAAAAEAYgwgAAAAAACDMbF0H2rFjR+X2Rx55pKaVTIder1f0+Kurq5U141tZWamsgdHIk/HIk/aRJ5CPTBmPTGkfmQJ5yJPxyJP2kSeMwhMRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQprbfiLjzzjsrty8tLSX11tZW5HIAmFLyBIBcZAoAOcgTgOE8EQEAAAAAAIQxiAAAAAAAAMIYRAAAAAAAAGFq+42Itpmbm6vc3vb3/Z1xxhlJfc455yT1k08+mdT3339/+JqinXfeeUk9O5tePg8++GBSP/744+FrKqnr1wDk0vVrSZ7Ik65fA5BT168nmSJTun4NQC5dv5bkiTzp+jUQxRMRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQxm9EnKIvfvGLldsvv/zymlZSxmte85qkvu6665L6gQceSOprrrkmfE3RbrjhhqQ+99xzk3r//v1Jfccdd4SvqaSuXwOQS9evJXkiT7p+DUBOXb+eZIpM6fo1ALl0/VqSJ/Kk69dAFE9EAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAmNp+I2JhYaGuQ9Wi6+8CG3wXXBf60YZ3/uXUhf85zSRP2kWe0IX/Oc0lU9pFptCF/znNJE/aRZ7Qhf95CZ6IAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQxiACAAAAAAAIM9Pv9/uj/OGRI0cqty8sLGRZEMA06vV6ldt37txZ00qaT54AnJw8GY9MATg5mTI6eQJwcrnyxBMRAAAAAABAGIMIAAAAAAAgjEEEAAAAAAAQxiACAAAAAAAIYxABAAAAAACEMYgAAAAAAADCGEQAAAAAAABhZus60KWXXlq5fWNjI6kff/zxpN61a1dSn3/++Un9+9//vrI+99xzk/r1r399Uj/22GNJffvtt1eud9j3ufXWW4vu37V+jmLSY7ztbW9L6qc//elJ/Ytf/CKpH3jggaS+8MILK+ujR48m9V133ZXUZ5xxRlIvLi5Wrrf0Odi1flIf97969+9aP0fh/pcqfQ63rZ/Uyz2w3v271s9RuAemSp/Dbesn9XH/q3f/rvVzFO5/qdLncNv6mYsnIgAAAAAAgDAGEQAAAAAAQBiDCAAAAAAAIExtvxFx8cUXV27/yU9+ktSD73d75StfmdQvf/nLk/rJJ59M6mHvdxtcz9///vekHvZ+t2HfZ9i7taL371o/RzHpMd74xjcm9bOf/eykvvfee5N68P1uL37xiyvX85vf/CapB9/vNvg+uaafg13rJ/Vx/6t3/671cxTuf6nS+7etn9TLPbDe/bvWz1G4B6ZK79+2flIf97969+9aP0fh/pcqvX/b+pmLJyIAAAAAAIAwBhEAAAAAAEAYgwgAAAAAACDMTL/f74/yh0eOHKncvrCwkGVBANOo1+tVbt+5c2dNK2k+eQJwcvJkPDIF4ORkyujkCcDJ5coTT0QAAAAAAABhDCIAAAAAAIAwBhEAAAAAAEAYgwgAAAAAACCMQQQAAAAAABDGIAIAAAAAAAhjEAEAAAAAAISZzfVBvV4v10cB0GHyBIBcZAoAOcgTgMl5IgIAAAAAAAhjEAEAAAAAAIQxiAAAAAAAAMLM9Pv9fulFAAAAAAAA7eSJCAAAAAAAIIxBBAAAAAAAEMYgAgAAAAAACGMQAQAAAAAAhDGIAAAAAAAAwhhEAAAAAAAAYQwiAAAAAACAMAYRAAAAAABAGIMIAAAAAAAgzP8BMLUiSdnxYHEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 2000x500 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"env = gym.make('ALE/MsPacman-v5')\n",
"env = ImageEnv(env)\n",
"\n",
"s, _ = env.reset()\n",
"print(\"The shape of an observation: \", s.shape)\n",
"\n",
"fig, axes = plt.subplots(1, 4, figsize=(20, 5))\n",
"for i in range(4):\n",
" axes[i].imshow(s[i], cmap='gray')\n",
" axes[i].axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets do LEFT action for the next 4 steps. You can see our car was moving forward!"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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4xp8F1zpftRh0nf+DXsH4TCD7zws3fPSx59U0/rJ6Nr2tyr9+8iT+smTqPTxJ9W0fjKetv29Sv8+MqV+MiUqffxJNa2fjK5tf6vSv488qZ88iUoff1JN6+cPeCICAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIZrauA1144YWV248fP17TSqZDr9crevy1tbXKmvGtrq5W1sBo5Ml45En7yBNIR6aMR6a0j0yBNOTJeORJ+8gTRuGJCAAAAAAAIBuDCAAAAAAAIBuDCAAAAAAAIJvaviPigQceqNy+vLwc6u3t7ZzLAWBKyRMAUpEpAKQgTwCG80QEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQTW3fEdE2c3Nzldvb/r6/888/P9SXXHJJqE+cOBHqRx99NPuacrvssstCPTsbL59vfvOboX766aezr6mkrl8DkErXryV5Ik+6fg1ASl2/nmSKTOn6NQCpdP1akifypOvXQC6eiAAAAAAAALIxiAAAAAAAALIxiAAAAAAAALLxHRFn6S//8i8rt+/Zs6emlZTxqle9KtS33XZbqB977LFQ7927N/uacnvPe94T6ksvvTTUBw4cCPXnP//57GsqqevXAKTS9WtJnsiTrl8DkFLXryeZIlO6fg1AKl2/luSJPOn6NZCLJyIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsavuOiMXFxboOVYuuvwts8F1wXehHG975l1IX/uY0kzxpF3lCF/7mNJdMaReZQhf+5jSTPGkXeUIX/uYleCICAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIxiACAAAAAADIZqbf7/dH+cGjR49Wbl9cXEyyIIBp1Ov1KrcvLCzUtJLmkycAZyZPxiNTAM5MpoxOngCcWao88UQEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQjUEEAAAAAACQzWxdB7rhhhsqt29ubob66aefDvVVV10V6ssvvzzUX/nKVyrrSy+9NNTXXHNNqL/73e+G+jOf+Uzleof9Pvfcc0/R/bvWz1FMeozrrrsu1M997nND/e///u+hfuyxx0L98pe/vLJ+5JFHQv3ggw+G+vzzzw/10tJS5XpLn4Nd6yf1cf+rd/+u9XMU7n9R6XO4bf2kXu6B9e7ftX6Owj0wKn0Ot62f1Mf9r979u9bPUbj/RaXP4bb1MxVPRAAAAAAAANkYRAAAAAAAANkYRAAAAAAAANnU9h0R1157beX2z33uc6EefL/bK17xilD/1E/9VKhPnDgR6mHvdxtcz7e+9a1QD3u/27DfZ9i7tXLv37V+jmLSY/zCL/xCqF/wgheE+uGHHw714PvdXvrSl1au57/+679CPfh+t8H3yTX9HOxaP6mP+1+9+3etn6Nw/4tK79+2flIv98B69+9aP0fhHhiV3r9t/aQ+7n/17t+1fo7C/S8qvX/b+pmKJyIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsZvr9fn+UHzx69Gjl9sXFxSQLAphGvV6vcvvCwkJNK2k+eQJwZvJkPDIF4MxkyujkCcCZpcoTT0QAAAAAAADZGEQAAAAAAADZGEQAAAAAAADZGEQAAAAAAADZGEQAAAAAAADZGEQAAAAAAADZGEQAAAAAAADZzKb6oF6vl+qjAOgweQJAKjIFgBTkCcDkPBEBAAAAAABkYxABAAAAAABkYxABAAAAAABkM9Pv9/ulFwEAAAAAALSTJyIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBsDCIAAAAAAIBs/g/zr60fF5ekjQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 2000x500 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in range(4):\n",
" s, r, terminated, truncated, info = env.step(3) # 3rd action is `LEFT`\n",
" s, r, terminated, truncated, info = env.step(3) # 3rd action is `LEFT`\n",
"\n",
"fig, axes = plt.subplots(1, 4, figsize=(20, 5))\n",
"for i in range(4):\n",
" axes[i].imshow(s[i], cmap='gray')\n",
" axes[i].axis('off')\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "py311",
"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.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}