|
|
{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Example usage of Tempestpy" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "vscode": { "languageId": "plaintext" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pygame 2.6.0 (SDL 2.28.4, Python 3.10.12)\n", "Hello from the pygame community. https://www.pygame.org/contribute.html\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2024-09-23 08:58:51.801230: 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", "2024-09-23 08:58:51.816264: 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", "2024-09-23 08:58:51.820526: 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", "2024-09-23 08:58:51.831659: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2024-09-23 08:58:52.758922: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", "error: XDG_RUNTIME_DIR not set in the environment.\n" ] } ], "source": [ "from sb3_contrib import MaskablePPO\n", "from sb3_contrib.common.wrappers import ActionMasker\n", "from stable_baselines3.common.logger import Logger, CSVOutputFormat, TensorBoardOutputFormat, HumanOutputFormat\n", "\n", "import gymnasium as gym\n", "\n", "from minigrid.core.actions import Actions\n", "from minigrid.core.constants import TILE_PIXELS\n", "from minigrid.wrappers import RGBImgObsWrapper, ImgObsWrapper\n", "\n", "import tempfile, datetime, shutil\n", "\n", "import time\n", "import os\n", "\n", "from utils import MiniGridShieldHandler, create_log_dir, ShieldingConfig, MiniWrapper, expname, shield_needed, shielded_evaluation, create_shield_overlay_image\n", "from sb3utils import MiniGridSbShieldingWrapper, parse_sb3_arguments, ImageRecorderCallback, InfoCallback\n", "\n", "import os, sys\n", "from copy import deepcopy\n", "\n", "from PIL import Image" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "vscode": { "languageId": "plaintext" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting the training\n" ] }, { "data": { "image/jpeg": "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 "image/png": "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 "text/plain": [ "<PIL.Image.Image image mode=RGB size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "Computing new shield\n", "LOG: Starting with explicit model creation...\n", "Elapsed time is 0.0021867752075195312 seconds.\n", "LOG: Starting with model checking...\n", "Elapsed time is 0.00021076202392578125 seconds.\n", "LOG: Starting to translate shield...\n", "Elapsed time is 0.013784170150756836 seconds.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAeBElEQVR4Ae3cz3EjSZLFYXCNMvC0exgtOErgtitBKrB9pACUAlJAitJi7q0EB07rmGYlmUDkv/D3Mn40a8sCkBme+YXTXxWru5+GYfg48YUAAggg0J3Af3X3xDwwAggggMCnAAFAIyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAgg8ZxO8Xa/Zt0B9BBDoVODPf/yZ+uQv/3o5vZ/PafeQHgDx5H/+mbcJl2E4DZdL2gZQH3/6L+/77/SPtG99icJd/wjo9a8tKMfWO1LqliP12woU93JsW/10KnXLkfptBbLc2z7l/WrdBsB488ev77Ot/3Rcb/x6fYX7K4zrjV/fv3r9p+N649frK9xfYVxv/Pr+1es/Hdcbv15f4f4K43rj1/evXv/puN749foK91doXe/+3eR92mUATG3+1Ptbb89Unan3qb+twJTz1PvbVv/7d/7jdak/FtnndSvnfe5+21W7C4BHm//o87X8j9Z/9Dn11wk88n30+brq08O/rEv9IrHPcW/ffe56v1W7CoDaza89b+621K5bex715wnUutaeN6/64+Ff1qN+kdj2uJfrtnfZdrVuAmDu5s89/9G2zV1v7vnUvy8w13Pu+fer1w//sg71i8Q2x609t7mr/FW6CIClm7/0uvG2Ll1n6XXU/11gqePS636vPn/4l+upXyTWHbdyXHcXmlcfPgDWbj7Xr2tc/PBbI5DdP2vu3eHaQwfA2uYpG7h0naXXlbrluHSdpdeVuuW4dJ2l15W65bh0naXXlbrluHSdpdeVuuW4dJ2l15W65bh0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 "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The shield for shield_value = 0.9\n", "\n", "\n", "Computing new shield\n", "LOG: Starting with explicit model creation...\n", "Elapsed time is 0.0031201839447021484 seconds.\n", "LOG: Starting with model checking...\n", "Elapsed time is 0.0002391338348388672 seconds.\n", "LOG: Starting to translate shield...\n", "Elapsed time is 0.013186454772949219 seconds.\n" ] }, { "data": { "image/png": "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 "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The shield for shield_value = 0.99\n", "\n", "\n", "Computing new shield\n", "LOG: Starting with explicit model creation...\n", "Elapsed time is 0.0027511119842529297 seconds.\n", "LOG: Starting with model checking...\n", "Elapsed time is 0.0002467632293701172 seconds.\n", "LOG: Starting to translate shield...\n", "Elapsed time is 0.014038324356079102 seconds.\n" ] }, { "data": { "image/png": "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 "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The shield for shield_value = 0.999\n", "\n", "\n", "Computing new shield\n", "LOG: Starting with explicit model creation...\n", "Elapsed time is 0.0026831626892089844 seconds.\n", "LOG: Starting with model checking...\n", "Elapsed time is 0.00027632713317871094 seconds.\n", "LOG: Starting to translate shield...\n", "Elapsed time is 0.013882875442504883 seconds.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAeG0lEQVR4Ae3bP3IsW1bF4RKhMZQFRPQsBIMoD3oCOQHA0wBkNgygRgBeTYKLhdUWRkcTREA8AwsLR51b0ee2bupmVf49e608v4pQ1FVV1tknv7O117t67z11Xfd+4oEAAggg0JzAnzV3x9wwAggggMCHAAFAIyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAgg8ZxO83m7ZW6A+Agg0KvDLr35JvfPz786nt8slbQ/pARB3/ssveYdw7bpTd72mHQD18af/8n7+Tr9K+9GXKNz0r4Be/ngE5bn2iZS65Zn6dQWKe3muW/10KnXLM/XrCmS5173L+9WaDYDh4Q+/v8+2/t1hveH36yvcX2FYb/j9/U+vf3dYb/j9+gr3VxjWG35//9Pr3x3WG36/vsL9FYb1ht/f//T6d4f1ht+vr3B/hdr17u8m790mA2Ds8Mde3/p4xuqMvU79bQXGnMde37b6n/7Jf7gu9Yci+3xfy3mf3W+7anMB8OjwH72/lv/R+o/ep/46gUe+j95fV318+Jd1qV8k9nne23efXe+3alMBMPXwp14391imrjv1OurPE5jqOvW6edUfD/+yHvWLxLbPe7luu8u6qzUTAHMPf+71j45t7npzr6f+fYG5nnOvv199+vAv61C/SGzzvLXnNrvKX6WJAFh6+Es/NzzWpess/Rz1fxRY6rj0cz9Wnz/8y+epXyTWPW/luG4Xmp8+fACsPXw+v65x8cNvjUB2/6zZu8NnDx0Aa5unHODSdZZ+rtQtz0vXWfq5Urc8L11n6edK3fK8dJ2lnyt1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 "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The shield for shield_value = 0.9999\n", "\n", "\n", "Computing new shield\n", "LOG: Starting with explicit model creation...\n", "Elapsed time is 0.002956867218017578 seconds.\n", "LOG: Starting with model checking...\n", "Elapsed time is 0.00025081634521484375 seconds.\n", "LOG: Starting to translate shield...\n", "Elapsed time is 0.014654159545898438 seconds.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAd+klEQVR4Ae3cz3EryXLFYVBBG7B/XlwrYEVbQQO4lByABdIOToheaCGtxokrJGPqPd4mG+i/ledU/W7ECwyA7srqr5J5ZjgjvQzD8PvEHwQQQACB7gT+rbsn5oERQAABBD4FCAAaAQEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQOA1m+DtdsveAvURQKBTgb/+8Vfqk5//53x6v1zS9pAeAPHkf/2VdwjXYTgN12vaAVAff/ov7+fv9I+0H32Jwl3/CujX30dQXmufSKlbXqlfV6C4l9e61U+nUre8Ur+uQJZ73ad8XK3bABgf/vj9Y7bt347rjd9vr/B4hXG98fvHd2//dlxv/H57hccrjOuN3z++e/u343rj99srPF5hXG/8/vHd278d1xu/317h8Qq16z3eTd63XQbA1OFPfb738UzVmfqc+vsKTDlPfb5v9X/9nf94XeqPRY55X8v5mN3vu2p3AfDs8J99v5X/2frPvqf+NoFnvs++31Z9eviXdalfJI55Pdr3mF0ft2pXATD38Odet/RY5q479zrqLxOY6zr3umXVnw//sh71i8S+r0e57rvLuqt1EwBLD3/p9c+Obel6S6+n/mOBpZ5Lr39cff7wL+tQv0js87q35z67yl+liwBYe/hr7xsf69p11t5H/T8F1jquve/P6suHf7mf+kVi2+tejtt2oXl38wGw9fC5f1vj4offFoHs/tmyd4d7mw6Arc1TDnDtOmvvK3XL69p11t5X6pbXteusva/ULa9r11l7X6lbXteus/a+Ure8rl1n7X2lbnldu87a+0rd8rp2nbX3lbo9vDYbAHsf/tL1ll7/rNmWrrf0euo/FljqufT6x9WX/xqJ+s9E+T4EmgyAvZu/tMrcdedeV9ad+zp33bnXza1brpu77tzryrpzX+euO/e6uXXLdXPXnXtdWXfu69x15143t265bu66c68r6859nbvu3Ovm1m35uuYC4OjDf7b+s++3NtOz9Z99T/1tAs98n32/rfrzfxKg/lbhvu5vKgCObv7SGlN1pj4v9+31OlVn6vO96pZ1pupMfV7u2+t1qs7U53vVLetM1Zn6vNy31+tUnanP96pb1pmqM/V5uW+v16k6U5/vVbfFdZoJgNqHP643fn90s4zrjd9T/1iBsff4/bHVv/+TAPWPFm9z/SYCoHbzl1Yodctr+bzWa6lbXmvVLXVK3fJaPq/1WuqW11p1S51St7yWz2u9lrrltVbdUqfULa/l81qvpW55rVW3pTr2AZB9+NTP/XHAH/9cAe/q1gGQ/cPvffTsHgEEehewDQCGf++ty/MjgMBWAcsAYPhvPXbuRwABBAz/D8EY/rQtAgggsI+A1T8BMPz3OXRWQQABBELAJgAY/jQsAgggsK+ARQAw/Pc9dFZDAAEEQkA+ABj+NCoCCCBwjIB0ADD8jzl0VkUAAQRCQDYAGP40KAIIIHCsgGQAMPyPPXRWRwABBEJALgAY/jQmAgggUEdAKgAY/nUOnSoIIIBACMgEAMOfhkQAAQTqCrwMw/C7bsk/q73dbqf3y+XPD3mHAAIIVBCI+ZP9J3P+vWY/fNQfrtdT1j8B3APwdL3Xz/pDffzpv7yfv1Piz//Hfeicz+es0fNZV+ZXQIHBHwQQQKAHAZV5JxMAcegqKD00IM+IAAI5AkpzTioA4jiUcHLag6oIINCqgNp8kwuAOHg1pFabkedCAIF6AopzTTIA4kgUseq1CpUQQKAlAdV5JhsAcfiqaC01Js+CAALHCijPMekAiGNRxju2bVgdAQTcBdTnl3wARAOoI7o3KftHAIH9BRzmlkUAxNE4YO7fQqyIAAKOAi7zyiYAoglcUB0blj0jgMA+Ak5zyioA4niccPdpJ1ZBAAEXAbf5ZBcA0QhuyC7Nyz4RQGC9gONcsgyAOCJH7PWtxZ0IIKAs4DqPbAMgmsEVXbmR2RsCCCwTcJ5D1gEQx+SMv6zNuBoBBNQE3OePfQD8UusI9oMAAt0IuM8f6wBwx+/mp4QHRaBhAec5ZBsAzugN/yzwaAh0KeA6jywDwBW7y58MHhqBTgQc55JdADgid9L/PCYC3Qu4zSerAHDD7f6nAQAEOhRwmlM2AeCE2mHP88gIIPBFwGVeWQSAC+aX8+cvEUCgcwGHuSUfAA6Infc5j48AAhMC6vNLOgDU8SbOnI8RQACBfwoozzHZAFBG++fJ8hcIIIDADAHVeSYZAKpYM86ZSxBAAIEfBRTnmlwAKCL9eJp8iAACCCwUUJtvUgGghrPwbLkcAQQQeCqgNOdkAkAJ5ekJcgECCCCwQUBl3r0Mw/B7w3NsvvXtdju9Xy6b12EBBBBAwE0ge/69KoAN1+spKxHvAXi63utn/aE+/vRfnz9/HzF0zues0fNZV+ZXQJ8YqRQURwABBOoIqMw7mQAIdhWUOi1AFQQQ6FFAac5JBUA0gxJOj83JMyOAwHECavNNLgCCXg3puHZgZQQQ6EVAca5JBkA0hCJWL43KcyKAwL4CqvNMNgCCXxVt39ZgNQQQaFlAeY5JB0A0hTJey03LsyGAwHYB9fklHwBxBOqI29uEFRBAoDUBh7llEQDRGA6YrTUwz4MAAusEXOaVTQDEMbigrmsZ7kIAgRYEnOaUVQBEczjhttDMPAMCCMwXcJtPdgEQR+GGPL99uBIBBFwFHOeSZQBEgzhiuzY2+0YAgccCrvPINgDiOFzRH7cS3yKAgJOA8xyyDoBoEmd8pyZnrwgg8F3Aff7YB8Cv72fCJwgggEAVAff5Yx0A7vhVOpQiCCBwqIDzHLINAGf0Q7uRxRFAoLqA6zyyDABX7OpdSUEEEKgm4DiX7ALAEblaB1IIAQRSBdzmk1UAuOGmdiLFEUAgRcBpTtkEgBNqStdRFAEEZARc5pVFALhgynQfG0EAgXQBh7klHwAOiOmdxgYQQEBSQH1+SQeAOp5kx7EpBBCQElCeY7IBoIwm1V1sBgEE5AVU55lkAKhiyXcZG0QAAVkBxbkmFwCKSLIdxcYQQMBKQG2+SQWAGo5VZ7FZBBCwEFCaczIBoIRi0UVsEgEEbAVU5t3LMAy/MxXfbrfT++WSuQVqI4AAAikC2fPvNeWpR0WH6/WUlYj3ADxd7/Wz/lAff/qvz5+/jxg653PW6PmsK/MroE+MVAqKI4AAAnUEVOadTAAEuwpKnRagCgII9CigNOekAiCaQQmnx+bkmRFA4DgBtfkmFwBBr4Z0XDuwMgII9CKgONckAyAaQhGrl0blORFAYF8B1XkmGwDBr4q2b2uwGgIItCygPMekAyCaQhmv5abl2RBAYLuA+vySD4A4AnXE7W3CCggg0JqAw9yyCIBoDAfM1hqY50EAgXUCLvPKJgDiGFxQ17UMdyGAQAsCTnPKKgCiOZxwW2hmngEBBOYLuM0nuwCIo3BDnt8+XIkAAq4CjnPJMgCiQRyxXRubfSOAwGMB13lkGwBxHK7oj1uJbxFAwEnAeQ5ZB0A0iTO+U5OzVwQQ+C7gPn/sA+DX9zPhEwQQQKCKgPv8sQ4Ad/wqHUoRBBA4VMB5DtkGgDP6od3I4gggUF3AdR5ZBoArdvWupCACCFQTcJxLdgHgiFytAymEAAKpAm7zySoA3HBTO5HiCCCQIuA0p2wCwAk1pesoigACMgIu88oiAFwwZbqPjSCAQLq "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "The shield for shield_value = 1.0\n" ] }, { "data": { "image/png": "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 "text/plain": [ "<PIL.Image.Image image mode=RGBA size=384x384>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Using cpu device\n", "Wrapping the env with a `Monitor` wrapper\n", "Wrapping the env in a DummyVecEnv.\n", "Wrapping the env in a VecTransposeImage.\n", "-----------------------------------\n", "| info/ | |\n", "| no_shield_action | 0 |\n", "| sum_opened_door | 0 |\n", "| sum_picked_up | 0 |\n", "| sum_ran_into_lava | 0 |\n", "| sum_reached_goal | 5 |\n", "| rollout/ | |\n", "| ep_len_mean | 146 |\n", "| ep_rew_mean | 0.357 |\n", "| time/ | |\n", "| fps | 246 |\n", "| iterations | 1 |\n", "| time_elapsed | 8 |\n", "| total_timesteps | 2048 |\n", "-----------------------------------\n" ] } ], "source": [ "GRID_TO_PRISM_BINARY=os.getenv(\"M2P_BINARY\")\n", "\n", "def mask_fn(env: gym.Env):\n", " return env.create_action_mask()\n", "\n", "def nomask_fn(env: gym.Env):\n", " return [1.0] * 7\n", "\n", "def main():\n", " # Edit 'environments/Minigrid/minigrid/envs/GSW_Playground.py' to alter the environment\n", " env = \"MiniGrid-GSW-v0\"\n", "\n", " # TODO Change the safety specification\n", " formula = \"Pmax=? [G true]\"\n", " value_for_training = 1.0\n", " shield_comparison = \"absolute\"\n", " shielding = ShieldingConfig.Training\n", " \n", " logger = Logger(\"/tmp\", output_formats=[HumanOutputFormat(sys.stdout)])\n", " \n", "\n", " env = gym.make(env, render_mode=\"rgb_array\")\n", " image_env = RGBImgObsWrapper(env, TILE_PIXELS)\n", " env = RGBImgObsWrapper(env, 8)\n", " env = ImgObsWrapper(env)\n", " env = MiniWrapper(env)\n", "\n", " \n", " env.reset()\n", " Image.fromarray(env.render()).show()\n", " \n", " shield_handlers = dict()\n", " if shield_needed(shielding):\n", " for value in [0.9, 0.99, 0.999, 0.9999, 1.0]:\n", " shield_handler = MiniGridShieldHandler(GRID_TO_PRISM_BINARY, \"grid.txt\", \"grid.prism\", formula, shield_value=value, shield_comparison=shield_comparison, nocleanup=False, prism_file=None)\n", " env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handler, create_shield_at_reset=False)\n", " create_shield_overlay_image(image_env, shield_handler.create_shield())\n", " print(f\"The shield for shield_value = {value}\")\n", "\n", " shield_handlers[value] = shield_handler\n", "\n", "\n", " if shielding == ShieldingConfig.Training:\n", " env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handler, create_shield_at_reset=False)\n", " env = ActionMasker(env, mask_fn\n", " print(\"Training with shield:\")\n", " create_shield_overlay_image(image_env, shield_handlers[value_for_training].create_shield())\n", " elif shielding == ShieldingConfig.Disabled:\n", " env = ActionMasker(env, nomask_fn)\n", " else:\n", " assert(False) \n", " model = MaskablePPO(\"CnnPolicy\", env, verbose=1, device=\"auto\")\n", " model.set_logger(logger)\n", " steps = 20_000\n", "\n", " \n", " model.learn(steps,callback=[InfoCallback()])\n", "\n", "\n", "\n", "if __name__ == '__main__':\n", " print(\"Starting the training\")\n", " main()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }
|