You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

365 lines
895 KiB

3 weeks ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "## Example usage of Tempestpy"
  8. ]
  9. },
  10. {
  11. "cell_type": "code",
  12. "execution_count": 1,
  13. "metadata": {
  14. "vscode": {
  15. "languageId": "plaintext"
  16. }
  17. },
  18. "outputs": [
  19. {
  20. "name": "stdout",
  21. "output_type": "stream",
  22. "text": [
  23. "pygame 2.6.1 (SDL 2.28.4, Python 3.10.12)\n",
  24. "Hello from the pygame community. https://www.pygame.org/contribute.html\n"
  25. ]
  26. },
  27. {
  28. "name": "stderr",
  29. "output_type": "stream",
  30. "text": [
  31. "2024-11-29 12:24:16.266841: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
  32. "2024-11-29 12:24:16.283112: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
  33. "2024-11-29 12:24:16.287862: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
  34. "2024-11-29 12:24:16.298829: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
  35. "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
  36. "2024-11-29 12:24:18.626838: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n",
  37. "error: XDG_RUNTIME_DIR not set in the environment.\n"
  38. ]
  39. }
  40. ],
  41. "source": [
  42. "from sb3_contrib import MaskablePPO\n",
  43. "from sb3_contrib.common.wrappers import ActionMasker\n",
  44. "from stable_baselines3.common.logger import Logger, CSVOutputFormat, TensorBoardOutputFormat, HumanOutputFormat\n",
  45. "\n",
  46. "import gymnasium as gym\n",
  47. "\n",
  48. "from minigrid.core.actions import Actions\n",
  49. "from minigrid.core.constants import TILE_PIXELS\n",
  50. "from minigrid.wrappers import RGBImgObsWrapper, ImgObsWrapper\n",
  51. "\n",
  52. "import tempfile, datetime, shutil\n",
  53. "\n",
  54. "import time\n",
  55. "import os\n",
  56. "\n",
  57. "from utils import MiniGridShieldHandler, create_log_dir, ShieldingConfig, MiniWrapper, expname, shield_needed, shielded_evaluation, create_shield_overlay_image\n",
  58. "from sb3utils import MiniGridSbShieldingWrapper, parse_sb3_arguments, ImageRecorderCallback, InfoCallback\n",
  59. "\n",
  60. "import os, sys\n",
  61. "from copy import deepcopy\n",
  62. "\n",
  63. "from PIL import Image"
  64. ]
  65. },
  66. {
  67. "cell_type": "code",
  68. "execution_count": null,
  69. "metadata": {
  70. "vscode": {
  71. "languageId": "plaintext"
  72. }
  73. },
  74. "outputs": [
  75. {
  76. "name": "stdout",
  77. "output_type": "stream",
  78. "text": [
  79. "Starting the training\n"
  80. ]
  81. },
  82. {
  83. "data": {
  84. "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCALAA2ADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDDooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA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
  85. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2AAAALACAIAAAB6m4apAADxPUlEQVR4Ae2d/5nUyNW2e77Lf3sTAAKwE2BIYJ0AJGAIACYA2wEAAWAnwCawvAEsJGAHACSwmwDfrX5mzpwpSdWani51S/3o4hpKpaMj1V0/9OhIpb54+fLlxosJmIAJmIAJmIAJmIAJ3BD4fzcJ/28CJmACJmACJmACJmACHQELRLcDEzABEzABEzABEzCBOwQsEO/g8IoJmIAJmIAJmIAJmIAFotuACZiACZiACZiACZjAHQIWiHdweMUETMAETMAETMAETMAC0W3ABEzABEzABEzABEzgDgELxDs4vGICJmACJmACJmACJmCB6DZgAiZgAiZgAiZgAiZwh4AF4h0cXjEBEzABEzABEzABE7BAdBswARMwARMwARMwARO4Q8AC8Q4Or5iACZiACZiACZiACVggug2YgAmYgAmYgAmYgAncIWCBeAeHV0zABEzABEzABEzABCwQ3QZMwARMwARMwARMwATuELBAvIPDKyZgAiZgAiZgAiZgAhaIbgMmYAImYAImYAImYAJ3CFgg3sHhFRMwARMwARMwARMwAQtEtwETMAETMAETMAETMIE7BCwQ7+DwigmYgAmYgAmYgAmYgAWi24AJmIAJmIAJmIAJmMAdAhaId3B4xQRMwARMwARMwARMwALRbcAETMAETMAETMAETOAOAQvEOzi8YgImYAImYAImYAImYIHoNmACJmACJmACJmACJnCHgAXiHRxeMQETMAETMAETMAETsEB0GzABEzABEzABEzABE7hDwALxDg6vmIAJmIAJmIAJmIAJWCC6DZiACZiACZiACZiACdwhYIF4B4dXTMAETMAETMAETMAELBDdBkzABEzABEzABEzABO4QsEC8g8MrJmACJmACJmACJmACf2qN4MOHD60PYf8mYAImcG4Efvnll6dPnz5+/LhS8G/fvn358uX58+ejNv+6GN3kDTMQ+MePsYMcpn7HvDt/FQRevXrVtByOIDbFa+cmYAImcGAC7969Qxe+ePHiyZMnb968QQX2D0AmmzDADGN26ds45zQJuH5Ps17O8KwsEM+w0l1kEzCBRRKQdLi6uvr+/TvhQ8rw/v37QiaGNGQTBphhzC6Wiadf5a7f06+jszpDC8Szqm4X1gRMYJEECunw22+/ff78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
  86. "text/plain": [
  87. "<PIL.Image.Image image mode=RGB size=864x704>"
  88. ]
  89. },
  90. "metadata": {},
  91. "output_type": "display_data"
  92. },
  93. {
  94. "name": "stdout",
  95. "output_type": "stream",
  96. "text": [
  97. "\n",
  98. "\n",
  99. "Computing new shield\n",
  100. "LOG: Starting with explicit model creation...\n",
  101. "Elapsed time is 1.5311391353607178 seconds.\n",
  102. "LOG: Starting with model checking...\n",
  103. "Elapsed time is 0.0014214515686035156 seconds.\n",
  104. "Write to file shielding_files_20241129T122454_58hszne6/shield.\n",
  105. "LOG: Starting to translate shield...\n",
  106. "Elapsed time is 0.056265830993652344 seconds.\n",
  107. "\n",
  108. "\n",
  109. "Computing new shield\n",
  110. "LOG: Starting with explicit model creation...\n",
  111. "Elapsed time is 1.3646655082702637 seconds.\n",
  112. "LOG: Starting with model checking...\n",
  113. "Elapsed time is 0.0015163421630859375 seconds.\n",
  114. "LOG: Starting to translate shield...\n",
  115. "Write to file shielding_files_20241129T122456_wtrsvp2x/shield.\n",
  116. "Elapsed time is 0.05994606018066406 seconds.\n",
  117. "\n",
  118. "\n",
  119. "Computing new shield\n",
  120. "LOG: Starting with explicit model creation...\n",
  121. "Elapsed time is 1.5757696628570557 seconds.\n",
  122. "LOG: Starting with model checking...\n",
  123. "Elapsed time is 0.0013585090637207031 seconds.\n",
  124. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 683\n",
  125. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 1139\n",
  126. "Write to file shielding_files_20241129T122458_wavsk47p/shield.\n",
  127. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 683\n",
  128. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 1139\n",
  129. "LOG: Starting to translate shield...\n",
  130. "Elapsed time is 0.05765676498413086 seconds.\n",
  131. "\n",
  132. "\n",
  133. "Computing new shield\n",
  134. "LOG: Starting with explicit model creation...\n",
  135. "Elapsed time is 1.7896459102630615 seconds.\n",
  136. "LOG: Starting with model checking...\n",
  137. "Elapsed time is 0.0013873577117919922 seconds.\n",
  138. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 610\n",
  139. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 611\n",
  140. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 635\n",
  141. "LOG: Starting to translate shield...\n",
  142. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 659\n",
  143. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 683\n",
  144. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 1139\n",
  145. "Write to file shielding_files_20241129T122500_n10bceo8/shield.\n",
  146. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 610\n",
  147. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 611\n",
  148. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 635\n",
  149. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 659\n",
  150. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 683\n",
  151. " WARN (PreShield.cpp:50): No shielding action possible with absolute comparison for state with index 1139\n",
  152. "Elapsed time is 0.057317256927490234 seconds.\n"
  153. ]
  154. },
  155. {
  156. "data": {
  157. "image/png": "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
  158. "text/plain": [
  159. "<PIL.Image.Image image mode=RGBA size=864x704>"
  160. ]
  161. },
  162. "metadata": {},
  163. "output_type": "display_data"
  164. },
  165. {
  166. "name": "stdout",
  167. "output_type": "stream",
  168. "text": [
  169. "The shield for shield_value = 0.9\n"
  170. ]
  171. },
  172. {
  173. "data": {
  174. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2AAAALACAYAAAD1+RH+AAEAAElEQVR4Aez9z68d15XnCwYl4woGrsoGCRtkWhJzwho09YCiB6IkT1Qwql5PskZp+Q9oCnhAT5TixPU8VqkntGvSQAKsHvUoJU8S8OC9zDY8asn0gDSQ5Bskgc6kLNVlpZOE/EjAMCHr9v5EnO+56+y745w4cX7EuTe+CzgnIvavFfGNvdfe31g7dpy5du3aYWUxAkbACBgBI2AEjIARMAJGwAgYgY0j8NzGNViBETACRsAIGAEjYASMgBEwAkbACNQImIC5IhgBI2AEjIARMAJGwAgYASNgBLaEgAnYloC2GiNgBIyAETACRsAIGAEjYASMgAmY64ARMAJGwAgYASNgBIyAETACRmBLCJiAbQloqzECRsAIGAEjYASMgBEwAkbACJiAuQ4YASNgBIyAETACRsAIGAEjYAS2hIAJ2JaAthojYASMgBEwAkbACBgBI2AEjIAJmOuAETACRsAIGAEjYASMgBEwAkZgSwiYgG0JaKsxAkbACBgBI2AEjIARMAJGwAiYgLkOGAEjYASMgBEwAkbACBgBI2AEtoSACdiWgLYaI2AEjIARMAJGwAgYASNgBIyACZjrgBEwAkbACBgBI2AEjIARMAJGYEsImIBtCWirMQJGwAgYASNgBIyAETACRsAImIC5DhgBI2AEjIARMAJGwAgYASNgBLaEgAnYloC2GiNgBIyAETACRsAIGAEjYASMgAmY64ARMAJGwAgYASNgBIyAETACRmBLCJiAbQloqzECRsAIGAEjYASMgBEwAkbACJiAuQ4YASNgBIyAETACRsAIGAEjYAS2hIAJ2JaAthojYASMgBEwAkbACBgBI2AEjIAJmOuAETACRsAIGAEjYASMgBEwAkZgSwiYgG0JaKsxAkbACBgBI2AEjIARMAJGwAiYgLkOGAEjYASMgBEwAkbACBgBI2AEtoSACdiWgLYaI2AEjIARMAJGwAgYASNgBIyACZjrgBEwAkbACBgBI2AEjIARMAJGYEsImIBtCWirMQJGwAgYASNgBIyAETACRsAImIC5DhgBI2AEjIARMAJGwAgYASNgBLaEgAnYloC2GiNgBIyAETACRsAIGAEjYASMgAmY64ARMAJGwAgYASNgBIyAETACRmBLCJiAbQloqzECRsAIGAEj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
  175. "text/plain": [
  176. "<PIL.Image.Image image mode=RGBA size=864x704>"
  177. ]
  178. },
  179. "metadata": {},
  180. "output_type": "display_data"
  181. },
  182. {
  183. "name": "stdout",
  184. "output_type": "stream",
  185. "text": [
  186. "The shield for shield_value = 0.95\n"
  187. ]
  188. },
  189. {
  190. "data": {
  191. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2AAAALACAYAAAD1+RH+AAEAAElEQVR4Aez9T8wcx5XmjRYlg4QBsm2QsCDakugNe9H0AE0tREmzccMYz91Mr0b0bhZzSWCAuxhZ3LTHa0/3hlbP4gINcO7qriT1pgEO8H2aa4w3VxS9IA2M+C2aizb1Z8hpi4ZsETAsyOQXv8x66j0Vb2RVVtafzPfN5wBVmRkZESfzyYiT8eSJP0cuXbr0ZGIxAkbACBgBI2AEjIARMAJGwAgYga0j8NTWNViBETACRsAIGAEjYASMgBEwAkbACFQImIC5IBgBI2AEjIARMAJGwAgYASNgBHaEgAnYjoC2GiNgBIyAETACRsAIGAEjYASMgAmYy4ARMAJGwAgYASNgBIyAETACRmBHCJiA7QhoqzECRsAIGAEjYASMgBEwAkbACJiAuQwYASNgBIyAETACRsAIGAEjYAR2hIAJ2I6AthojYASMgBEwAkbACBgBI2AEjIAJmMuAETACRsAIGAEjYASMgBEwAkZgRwiYgO0IaKsxAkbACBgBI2AEjIARMAJGwAiYgLkMGAEjYASMgBEwAkbACBgBI2AEdoSACdiOgLYaI2AEjIARMAJGwAgYASNgBIyACZjLgBEwAkbACBgBI2AEjIARMAJGYEcImIDtCGirMQJGwAgYASNgBIyAETACRsAImIC5DBgBI2AEjIARMAJGwAgYASNgBHaEgAnYjoC2GiNgBIyAETACRsAIGAEjYASMgAmYy4ARMAJGwAgYASNgBIyAETACRmBHCJiA7QhoqzECRsAIGAEjYASMgBEwAkbACJiAuQwYASNgBIyAETACRsAIGAEjYAR2hIAJ2I6AthojYASMgBEwAkbACBgBI2AEjIAJmMuAETACRsAIGAEjYASMgBEwAkZgRwiYgO0IaKsxAkbACBgBI2AEjIARMAJGwAiYgLkMGAEjYASMgBEwAkbACBgBI2AEdoSACdiOgLYaI2AEjIARMAJGwAgYASNgBIyACZjLgBEwAkbACBgBI2AEjIARMAJGYEcImIDtCGirMQJGwAgYASNgBIyAETACRsAImIC5DBgBI2AEjIARMAJGwAgYASNgBHaEgAnYjoC2GiNgBIyAETACRsAIGAEjYASMgAmYy4ARMAJGwAgYASNgBIyAETACRmBHCJiA7QhoqzECRsAIGAEjYASMgBEwAkbACJiAuQwYASNgBIyAETACRsAIGAEjYAR2hIAJ2I6AthojYASMgBEwAkbACBgBI2AEjMBX+obg2rVrfV+C9RsBI2AEjIARGCQC77zzzuTll1+ePP/8862u76OPPpq8//77k9dee215/OePLI+z7RiXtq1gQf7/NZ3rW/+Cy9v6qW9dmKTCslDNVsvfQs0+aQS2i8Dly5e3q2BJ7vaALQHIp42AETACRsAI7BqBn/70pxXpunjx4uSFF16YvPHGGxPIVZNwjjjEJQ2EjTwaJZG6UQvkq0/pW7/uvaEcbL38Sb+3RmCkCJiAjfTB+7aNgBEwAkZgeAio4XvlypXJxx9/XHm/uMo333yzSMQi8SIOgseMtORRJGKx0d2nB6i62h7++iY/fevPIQ/lYSflL9fvYyMwQgRMwEb40H3LRsAIGAEjMCwESg3f9957b3Ljxo3Jhx9+OPnhD39YXXAkYvJ4iXgRh7ikIW2RiIXG9gyBMZGwvslP3/pnD31+5/6ZMxVZj8R/K+VvXq2PjMBoEThy6dKlJ33evceA9Ym+dRsBI2AEjEDfCNBlkLE2CKQJMvbKK6/suyy8XZAtES5FgHjxK40Tg4xB1BgXxmifkydPTs6ePVsn/eTm/BioPsjBLslf6f761q+H2MeWMWBJ7t69O/nNb35T7b++xfKHAsYmvv3225Uu/xmBPhHwGLA+0bduI2AEjIARMAI9I0CjlJ88DiJf6l4IiULUnVAeMXm85D0jjggXaRHyIuzzc+cq8nXq1KkqvPi3SzJSvIAtBpbI1xbV7cu6b/37LmgvgDIBMT+XysiNJ09m5H+T5Y+yrXK+p9l7RmC8CAzKA8ZLhK90m5RVvrRYv/F3+XP9s/3ZHAK2v92+9Jc8XYs8YzwxEa9ow2aesaYZEXMPmB79LsnCLkjfovvpW78w72M79YDlqr/44ovJX333u3Oe1rXKX4sZPN3+cvsr2q68THY5Xvb+6dsD9pUuN7WtNICvbhjb0rEoX+s3/i5/dTeoRfVkW+dc/1z/xlz/qFcl4oXXAHJF/Xj11Vf3dVHMiddzzz1XeTDAkq6KP0i/x88+Ozl9+vTk6NGj7aovpGQRaWmXyzBi9X0ffetf4SlAvO7fvz958ODB5Ae3b0+Y0mXd8kcZnH0IWEDEbP9t//u0/ytUk41FHZQHjBcJMzdtQuhTjzxJ7vS2Yv3G3+XP9a+tvVgUz/bH9pfy0fb9UyJeeaMVDwGNWdkoPBIIDVcE4kUaxnsh5Pn4pZeqxnQVkP6ezYnY1AP20W8nk49/l7or5kuNLSAPj/5Q53r8mHJfviXN0afTL376TWSvUf+CLG9MZ+Tfd80xTXb9g9SfrveLL9Pvj5PJqlhyq6ummcN/6gGLxEvwzcrKrVtVUJfyR3nlJ8nLtMLZuv3l9pdsWywXXfbbvn/tAeuC7oI0+vq3IMpWT1l//fV1qyAvyNz4G3+Nn1lQTLZ2yuXP5a9L+WPmOX39bWqkQqz4qSHcRLxUuJ+n22Ga2Q7Pl7waeDZobM8m4ZhGvvJ/Tibv/F9pApDnJpOf/utAxBI5yj1hkJh7ibA9+qJOfDw51c58bTERiGlOfnUyOZsNQ2vUr5sJW4jXG+l6359+K9p3zYobyNfQ9YPnb36fMFwRS2511TQl/O/duzebhGNGvOQthegnkr9y+ZuuQ0d5FhHTB4RlXcP0CFfd2v7a/naxv6uWs03FH5QHLM4E1fUGcZdTuY8cOVJl0fYLJJGtf28mLuPfDQGXP9c/2x/b31XfP3z9h4DRWI0zGRJOoxVvlzxbskwQMaQU/m9+8pOKeB0/flzRK+IFEWPChVn41AO2lNQkMhNJDJniSUHw3CAlIpCnKcWZJJK3VH/KP4/z3J9UaivPHXtzRGxKvg6E/nTtba4zj7MR/KcesEePHk0ePny4r5sq4ZQZysvpRNKiLCp/fBygLMfGsLy8vCNjuPJ0+8vtL32EUplYdbtq+8sesICwulSEoJV213141l93aVkJ9BDZ+K83fsrlz+UvVKeVd13/Dm79o0EaG6UQL4iVvFw8W4gYjVoRLm1VUOQZ+/vUjZ8JxZlWnIbzmeQFY8v4L/ZLQje+GxkRevX/U5OaN15JXrGU6G9/Xaek4f9s4nWnT9TH9z+fTB48qj1id1IcSNbpdP7+NIxYReJVJ6/+l+pPk0DK4wXx+mG6Jq4L+Wk69+b0PNf8wQHUTzfCc8/ME7EmLLeBP+WDnwTihVeMLUJZenDs2OR//PVfLy1/6kZGmeWdRrmkbGsGT+nIt37/+f2Xl4lVjtd9/62ia1Nxv7KpjDaRjyrpqnnJ7ayvjqumV3zrr42k8Gi7Nf6129/lr/Y6ty03eTzXP9e/6P3Jy0fT8WGxP9xfTrxolEK0aMRCxuiqmBMxES8avu+nPGhIq9shDeg7d+7MEbEmHAkvEaGLU177bxPx+UWq4iJeyodjfpGI3YUBJllGvOpYe/+L9OfES6kgYhVJTCTsL/5/NRE8qPpLREz3khMv3f8m8c+JV16W/mUqf89nHwJi+eOa8jJbmjhG1x63tv+2/33a/1gWd7U/KALGi6ULi21yaa8KovUbf5e/1b0Irn/lLjW2P6shMGb7WyJe8hyAInUsxhER45w8Dh8k4iVvF+Gs6xQb1F2JGN6ll5/f8zjlY8LQhUQiwPgwvGAQii4Sidg+/Q0ZvnEnnThdE8GDrj8SMTyJlVcxkdxFsg7+sZygA+LVVJbwsL48/RBAXJW/6O0iPC+zy4jYmOs/ePn++21/8gx2LYMiYKu6oOlTrC4amwDO+ldzgRt/lz/XP3wOmxHbn/HaHxpf1KW8ERtLFh4CSFgkYpwnzX///PO5LmRKR0OaxXV
  192. "text/plain": [
  193. "<PIL.Image.Image image mode=RGBA size=864x704>"
  194. ]
  195. },
  196. "metadata": {},
  197. "output_type": "display_data"
  198. },
  199. {
  200. "name": "stdout",
  201. "output_type": "stream",
  202. "text": [
  203. "The shield for shield_value = 0.99\n"
  204. ]
  205. },
  206. {
  207. "data": {
  208. "image/png": "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
  209. "text/plain": [
  210. "<PIL.Image.Image image mode=RGBA size=864x704>"
  211. ]
  212. },
  213. "metadata": {},
  214. "output_type": "display_data"
  215. },
  216. {
  217. "name": "stdout",
  218. "output_type": "stream",
  219. "text": [
  220. "The shield for shield_value = 1.0\n",
  221. "Training with shield:\n"
  222. ]
  223. },
  224. {
  225. "data": {
  226. "image/png": "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
  227. "text/plain": [
  228. "<PIL.Image.Image image mode=RGBA size=864x704>"
  229. ]
  230. },
  231. "metadata": {},
  232. "output_type": "display_data"
  233. },
  234. {
  235. "name": "stdout",
  236. "output_type": "stream",
  237. "text": [
  238. "Using cpu device\n",
  239. "Wrapping the env with a `Monitor` wrapper\n",
  240. "Wrapping the env in a DummyVecEnv.\n",
  241. "Wrapping the env in a VecTransposeImage.\n",
  242. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  243. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  244. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  245. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  246. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  247. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  248. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  249. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  250. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  251. "truncated: {'reached_goal': False, 'ran_into_lava': False, 'opened_door': False, 'picked_up': False}\n",
  252. "-----------------------------------\n",
  253. "| info/ | |\n",
  254. "| no_shield_action | 0 |\n",
  255. "| sum_opened_door | 0 |\n",
  256. "| sum_picked_up | 0 |\n",
  257. "| sum_ran_into_lava | 0 |\n",
  258. "| sum_reached_goal | 0 |\n",
  259. "| rollout/ | |\n",
  260. "| ep_len_mean | 200 |\n",
  261. "| ep_rew_mean | -2 |\n",
  262. "| time/ | |\n",
  263. "| fps | 63 |\n",
  264. "| iterations | 1 |\n",
  265. "| time_elapsed | 32 |\n",
  266. "| total_timesteps | 2048 |\n",
  267. "-----------------------------------\n"
  268. ]
  269. }
  270. ],
  271. "source": [
  272. "GRID_TO_PRISM_BINARY=os.getenv(\"M2P_BINARY\")\n",
  273. "\n",
  274. "def mask_fn(env: gym.Env):\n",
  275. " return env.create_action_mask()\n",
  276. "\n",
  277. "def nomask_fn(env: gym.Env):\n",
  278. " return [1.0] * 7\n",
  279. "\n",
  280. "def main():\n",
  281. " #env = \"MiniGrid-LavaSlipperyCliff-16x13-Slip10-Time-v0\"\n",
  282. " env = \"MiniGrid-WindyCity2-v0\"\n",
  283. "\n",
  284. " formula = \"Pmax=? [G ! AgentIsOnLava]\"\n",
  285. " value_for_training = 0.99\n",
  286. " shield_comparison = \"absolute\"\n",
  287. " shielding = ShieldingConfig.Training\n",
  288. " \n",
  289. " logger = Logger(\"/tmp\", output_formats=[HumanOutputFormat(sys.stdout)])\n",
  290. " \n",
  291. " env = gym.make(env, render_mode=\"rgb_array\")\n",
  292. " image_env = RGBImgObsWrapper(env, TILE_PIXELS)\n",
  293. " env = RGBImgObsWrapper(env, 8)\n",
  294. " env = ImgObsWrapper(env)\n",
  295. " env = MiniWrapper(env)\n",
  296. "\n",
  297. " \n",
  298. " env.reset()\n",
  299. " Image.fromarray(env.render()).show()\n",
  300. " \n",
  301. " shield_handlers = dict()\n",
  302. " if shield_needed(shielding):\n",
  303. " for value in [0.9, 0.95, 0.99, 1.0]:\n",
  304. " shield_handler = MiniGridShieldHandler(GRID_TO_PRISM_BINARY, \"grid.txt\", \"grid.prism\", formula, shield_value=value, shield_comparison=shield_comparison, nocleanup=True, prism_file=None)\n",
  305. " env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handler, create_shield_at_reset=False)\n",
  306. "\n",
  307. "\n",
  308. " shield_handlers[value] = shield_handler\n",
  309. " if shield_needed(shielding):\n",
  310. " for value in [0.9, 0.95, 0.99, 1.0]: \n",
  311. " create_shield_overlay_image(image_env, shield_handlers[value].create_shield())\n",
  312. " print(f\"The shield for shield_value = {value}\")\n",
  313. "\n",
  314. " if shielding == ShieldingConfig.Training:\n",
  315. " env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handlers[value_for_training], create_shield_at_reset=False)\n",
  316. " env = ActionMasker(env, mask_fn)\n",
  317. " print(\"Training with shield:\")\n",
  318. " create_shield_overlay_image(image_env, shield_handlers[value_for_training].create_shield())\n",
  319. " elif shielding == ShieldingConfig.Disabled:\n",
  320. " env = ActionMasker(env, nomask_fn)\n",
  321. " else:\n",
  322. " assert(False) \n",
  323. " model = MaskablePPO(\"CnnPolicy\", env, verbose=1, device=\"auto\")\n",
  324. " model.set_logger(logger)\n",
  325. " steps = 200\n",
  326. "\n",
  327. " model.learn(steps,callback=[InfoCallback()])\n",
  328. "\n",
  329. "\n",
  330. "\n",
  331. "if __name__ == '__main__':\n",
  332. " print(\"Starting the training\")\n",
  333. " main()"
  334. ]
  335. },
  336. {
  337. "cell_type": "code",
  338. "execution_count": null,
  339. "metadata": {},
  340. "outputs": [],
  341. "source": []
  342. }
  343. ],
  344. "metadata": {
  345. "kernelspec": {
  346. "display_name": "Python 3 (ipykernel)",
  347. "language": "python",
  348. "name": "python3"
  349. },
  350. "language_info": {
  351. "codemirror_mode": {
  352. "name": "ipython",
  353. "version": 3
  354. },
  355. "file_extension": ".py",
  356. "mimetype": "text/x-python",
  357. "name": "python",
  358. "nbconvert_exporter": "python",
  359. "pygments_lexer": "ipython3",
  360. "version": "3.10.12"
  361. }
  362. },
  363. "nbformat": 4,
  364. "nbformat_minor": 4
  365. }