diff --git a/notebooks/Lecture_2_Gym.ipynb b/notebooks/Lecture_2_Gym.ipynb new file mode 100644 index 0000000..3ded9ef --- /dev/null +++ b/notebooks/Lecture_2_Gym.ipynb @@ -0,0 +1,512 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "QTNU1mwGB1ZD" + }, + "source": [ + "**Dependencies and setup** (this can take a minute or so...)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "wNughGSMa9lY" + }, + "outputs": [], + "source": [ + "# !pip install swig\n", + "\n", + "# !pip install rldurham # latest release\n", + "# !pip install git+https://github.com/robert-lieck/rldurham.git@main # latest main version (typically same as release)\n", + "# !pip install git+https://github.com/robert-lieck/rldurham.git@dev # latest dev version" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import gymnasium as gym\n", + "import rldurham as rld # Reinforcement Learning Durham package with helper functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Basic environment**" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "env = gym.make('CartPole-v1', render_mode=\"human\")\n", + "observation, info = env.reset(seed=42)\n", + "\n", + "for episode in range(10):\n", + " observation, info = env.reset()\n", + " done = False\n", + " while not done:\n", + " action = env.action_space.sample() # random action\n", + " observation, reward, terminated, truncated, info = env.step(action)\n", + " done = terminated or truncated\n", + "\n", + "env.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Reinforcement Learning Durham:** _rldurham_ Python package" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'recorder': {'idx': 10, 'length': 25, 'r_sum': 25.0, 'r_mean': 1.0, 'r_std': 0.0, 'length_': 34.0, 'r_sum_': 204.0, 'r_mean_': 34.0, 'r_std_': 17.281975195754296}}\n", + "{'recorder': {'idx': [0, 2, 4, 6, 8], 'length': [29, 69, 39, 14, 28], 'r_sum': [29.0, 69.0, 39.0, 14.0, 28.0], 'r_mean': [1.0, 1.0, 1.0, 1.0, 1.0], 'r_std': [0.0, 0.0, 0.0, 0.0, 0.0], 'length_': [29.0, 49.0, 45.666666666666664, 37.75, 35.8], 'r_sum_': [29.0, 98.0, 137.0, 151.0, 179.0], 'r_mean_': [29.0, 49.0, 45.666666666666664, 37.75, 35.8], 'r_std_': [0.0, 20.0, 16.996731711975958, 20.116846174288852, 18.410866356584094]}}\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGwCAYAAAAJ/wd3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACHpElEQVR4nO3dd3xT9f7H8Vf2aNqU7hZaWqBAmcoeDlQUvIoioN6rXnEvQBlevVx/V70uHFdRcS+4XvGqIO69QEWUJcgsq1CgeyVd2ef3R22kUKAtbZKmn+fjkQdtcnrOJwWSd75TpSiKghBCCCFEgKiDXYAQQgghOhYJH0IIIYQIKAkfQgghhAgoCR9CCCGECCgJH0IIIYQIKAkfQgghhAgoCR9CCCGECChtsAs4nM/nIy8vj8jISFQqVbDLEUIIIUQTKIpCZWUlKSkpqNXHbtsIufCRl5dHampqsMsQQgghRAvs37+fLl26HPOYkAsfkZGRQF3xUVFRQa5GCCGEEE1ht9tJTU31v48fS8iFj/qulqioKAkfQgghRDvTlCETMuBUCCGEEAEl4UMIIYQQASXhQwghhBABFXJjPoQQQnQ8Xq8Xt9sd7DLEcej1+uNOo22KZoWP9PR09u3bd8T9t9xyC88++ywOh4M5c+bw1ltv4XQ6GTduHM899xyJiYknXKgQQojwoygKBQUFVFRUBLsU0QRqtZqMjAz0ev0JnadZ4WPNmjV4vV7/95s3b+bss8/m4osvBmDWrFl88sknLFmyBKvVyvTp05k0aRIrV648oSKFEEKEp/rgkZCQgNlslsUlQ1j9IqD5+fmkpaWd0N9Vs8JHfHx8g+8ffvhhunfvzumnn47NZuPVV1/lzTff5MwzzwRg4cKFZGVl8fPPPzNixIgWFymEECL8eL1ef/CIjY0NdjmiCeLj48nLy8Pj8aDT6Vp8nhZ33LhcLt544w2uueYaVCoV69atw+12M3bsWP8xvXv3Ji0tjVWrVh31PE6nE7vd3uAmhBAi/NWP8TCbzUGuRDRVfXfLob0gLdHi8PH+++9TUVHBVVddBdQ1nen1eqKjoxscl5iYSEFBwVHPM2/ePKxWq/8mS6sLIUTHIl0t7Udr/V21OHy8+uqrnHvuuaSkpJxQAXPnzsVms/lv+/fvP6HzieDy+hRW7S7lgw0HWbW7FK9PCXZJQgghQkyLptru27ePr7/+mmXLlvnvS0pKwuVyUVFR0aD1o7CwkKSkpKOey2AwYDAYWlKGCCXfzWNncQ1X7h5Dvs3hvzvZauT17svJjDfDGXODV58QQoiQ0aKWj4ULF5KQkMB5553nv2/w4MHodDq++eYb/33Z2dnk5uYycuTIE69UhLSdxTVkbn2aKVVvNrj/4qo3ydz6NDuLa4JUmRCiIwh0q+uYMWOYOXNmm16jKZYvX45KpWp3U5Wb3fLh8/lYuHAhU6dORav948etVivXXnsts2fPJiYmhqioKGbMmMHIkSNlpkuY8/oUrtw9hinuPObolgKwwDuJGZplzNYt5Qn3FJbsHsOPPgWNWvp2hRCt6/PN+fzro61HtLreM6EP4/slB7Gy1jVmzBhOOukknnzyyWCXcsKaHT6+/vprcnNzueaaa454bP78+ajVaiZPntxgkTER3lbnlJFvc7CASQDM0S1luvZ9DCoPj7unsMA7CWwOVueUMbK7TKcTQrSezzfnc/Mb6zm8naPA5uDmN9bz/BWDwiqAhItmd7ucc845KIpCz549j3jMaDTy7LPPUlZWRnV1NcuWLTvmeA8RHooq//i0scA7CaeixaDy4FS0dcGjkeOEEOJYalyeo94c7rppnl6fwr8+2npE8AD899370dYGXTBHO+eJcDqd3H777XTu3JmIiAiGDx/O8uXL/Y8vWrSI6OhovvjiC7KysrBYLIwfP578/Hz/MR6Ph1tvvZXo6GhiY2O58847mTp1KhMnTgTgqquuYsWKFTz11FOoVCpUKhV79+71//y6desYMmQIZrOZUaNGkZ2dfULPqa3J3i7ihCVEGv1fz9As8wcPg8rDDM0yfwCJMWmCVaIQop3pc/cXR33sjF7xLLx6mL/V9WgU6lpADm11PeWR7yirdh1x7N6HzzvivqaaPn06W7du5a233iIlJYX33nuP8ePHs2nTJjIzMwGoqanh3//+N//9739Rq9VcccUV3H777SxevBiARx55hMWLF/sX53zqqad4//33OeOMMwB46qmn2LFjB/369eO+++4D6hb8qg8gd911F48//jjx8fHcdNNNXHPNNSG9uriED3HChmXEkGw1cnHVm8zWLfV3tczQLPOPAfmf4WISVJUUFqqIjIzEZDLJ3H4hxAlpamtqW7a65ubmsnDhQnJzc/1LT9x+++18/vnnLFy4kIce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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "env = rld.make('CartPole-v1', render_mode=\"rgb_array\") # drop-in for gym.make\n", + "env = rld.Recorder( # record statistics (returned in info) and videos\n", + " env, \n", + " smoothing=10, # rolling averages\n", + " video=True, # record videos\n", + " video_folder=\"videos\", # folder for videos\n", + " video_prefix=\"xxxx00-agent-video\", # prefix for videos\n", + " logs=True, # keep logs\n", + ")\n", + "seed, observation, info = rld.seed_everything(42, env) # seed everything (python, numpy, pytorch, env)\n", + "tracker = rld.InfoTracker() # track statistics, e.g., for plotting\n", + "\n", + "for episode in range(11):\n", + " env.info = episode % 2 == 0 # track every other episode\n", + " env.video = episode % 4 == 0 # set before reset! (is checked on reset)\n", + " #######################################################################\n", + " observation, info = env.reset()\n", + " done = False\n", + " while not done:\n", + " action = env.action_space.sample() # Random action\n", + " observation, reward, terminated, truncated, info = env.step(action)\n", + " done = terminated or truncated\n", + " #######################################################################\n", + " if done:\n", + " # track and plot statistics\n", + " print(info)\n", + " print(tracker.info)\n", + " tracker.track(info)\n", + " tracker.plot(r_mean_=True, r_std_=True, \n", + " length=dict(linestyle='--', marker='o'),\n", + " r_sum=dict(linestyle='', marker='x'))\n", + "\n", + "env.close() # important (e.g. triggers last video save)\n", + "env.write_log(folder=\"logs\", file=\"xxxx00-agent-log.txt\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QEv4ZjXmyrHo" + }, + "source": [ + "**Different environments**" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "1Xrcek4hxDXl" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The environment has 4 observations and the agent can take 2 actions\n", + "The action space is: discrete\n", + "The maximum timesteps is: 500\n" + ] + } + ], + "source": [ + "## render mode\n", + "rm=\"human\" # for visualising\n", + "# rm='rgb_array' # for recording videos\n", + "# rm=None # no rendering\n", + "\n", + "## select environment\n", + "env = rld.make('CartPole-v1', render_mode=rm) # easy discrete\n", + "# env = rld.make('LunarLander-v2', render_mode=rm) # discrete\n", + "# env = rld.make('Breakout-v0', render_mode=rm) # discrete\n", + "# env = rld.make('Pong-ram-v0', render_mode=rm) # discrete\n", + "# env = rld.make('Gravitar-ram-v0', render_mode=rm) # hard discrete\n", + "#\n", + "# env = rld.make('Pendulum-v0', render_mode=rm) # easy continuous\n", + "# env = rld.make('LunarLanderContinuous-v2', render_mode=rm) # continuous\n", + "# env = rld.make('BipedalWalker-v3', render_mode=rm) # continuous\n", + "# env = rld.make('BipedalWalkerHardcore-v3', render_mode=rm) # hard continuous\n", + "\n", + "## wrap for stats and video recording\n", + "# env = rld.Recorder(env, video=True)\n", + "# env.video = False # deactivate\n", + "\n", + "## get some info\n", + "discrete = hasattr(env.action_space, 'n')\n", + "obs_dim = env.observation_space.shape[0]\n", + "act_dim = env.action_space.n if discrete else env.action_space.shape[0]\n", + "print('The environment has {} observations and the agent can take {} actions'.format(obs_dim, act_dim))\n", + "print('The action space is: ' + ('discrete' if discrete else 'continuous'))\n", + "print('The maximum timesteps is: {}'.format(env.spec.max_episode_steps))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "for episode in range(1):\n", + " observation, info = env.reset()\n", + " done = False\n", + " while not done:\n", + " action = env.action_space.sample() # random action\n", + " observation, reward, terminated, truncated, info = env.step(action)\n", + " done = terminated or truncated\n", + "env.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Training an agent**" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "rA38jtUgtZsG" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The device is: cuda\n", + "It's recommended to train on the cpu for this\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import torch\n", + "\n", + "device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')\n", + "print('The device is: {}'.format(device))\n", + "if device.type != 'cpu': print('It\\'s recommended to train on the cpu for this')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "4jXNHP8_U-rn" + }, + "outputs": [], + "source": [ + "class Agent(torch.nn.Module):\n", + " def __init__(self, env):\n", + " super().__init__()\n", + " self.discrete = hasattr(env.action_space, 'n')\n", + " self.obs_dim = env.observation_space.shape[0]\n", + " self.act_dim = env.action_space.n if discrete else env.action_space.shape[0]\n", + "\n", + " def prob_action(self, obs):\n", + " return np.ones(self.act_dim)/self.act_dim\n", + "\n", + " def sample_action(self, prob):\n", + " if self.discrete:\n", + " return np.random.choice(self.act_dim, p=prob)\n", + " else:\n", + " return np.random.uniform(-1.0, 1.0, size=self.act_dim)\n", + "\n", + " def train(self):\n", + " return\n", + "\n", + " def put_data(self, item):\n", + " return" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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r0Q8Hm/iURSn1PHJsoyPfexjOPnkk+H1ejE6Ooq3v/3tmJqayvmMQuf985//fJOPpDDlzt873/nOVWO/4IILcl7TzucPKH+Mhe5JjuPwxS9+0XhNO5/DStaFSubOiYkJXHjhhfB4PBgcHMQ//uM/QlGUho+3K8TH97//fVx33XX4xCc+gccffxxbt27Fzp07MTc31+qh1cQDDzyAq666Crt378a9994LWZbx+te/HolEIud1733vezE9PW38feELX2jRiKvnxBNPzBn7H//4R+O5a6+9FnfddRd++MMf4oEHHsDU1BQuvfTSFo62Oh599NGcY7v33nsBAG95y1uM13TauUskEti6dStuueWWgs9/4QtfwM0334yvfvWreOSRR+D1erFz506k02njNVdccQWeffZZ3HvvvfjFL36BBx98EO973/uadQglKXV8yWQSjz/+OP71X/8Vjz/+OH784x9j3759uPjii1e99oYbbsg5rx/84AebMfyylDt/AHDBBRfkjP273/1uzvPtfP6A8sdoPrbp6Wn813/9FziOw2WXXZbzunY9h5WsC+XmTlVVceGFF0KSJDz88MP41re+hTvuuAMf//jHGz9gvQs488wz9auuusr4t6qq+ujoqH7jjTe2cFSNY25uTgegP/DAA8Zjr33ta/UPf/jDrRtUHXziE5/Qt27dWvC5cDis2+12/Yc//KHx2HPPPacD0Hft2tWkETaWD3/4w/pRRx2la5qm63pnnztd13UA+k9+8hPj35qm6cPDw/oXv/hF47FwOKw7nU79u9/9rq7rur53714dgP7oo48ar/n1r3+tcxynHzlypGljr4T84yvEn/70Jx2AfujQIeOxDRs26DfddJO1g2sAhY7vHe94h37JJZcUfU8nnT9dr+wcXnLJJfr555+f81innENdX70uVDJ3/upXv9J5ntdnZmaM19x22216IBDQRVFs6PjWvOVDkiTs2bMHO3bsMB7jeR47duzArl27WjiyxhGJRAAAvb29OY/feeed6O/vx0knnYTrr78eyWSyFcOrif3792N0dBSbN2/GFVdcgYmJCQDAnj17IMtyzvncsmULxsfHO/J8SpKEb3/723j3u9+d00ixk89dPgcOHMDMzEzOOQsGg9i2bZtxznbt2oVQKIRXvvKVxmt27NgBnufxyCOPNH3M9RKJRMBxHEKhUM7jn//859HX14fTTjsNX/ziFy0xZ1vF/fffj8HBQRx33HH4wAc+gMXFReO5tXb+Zmdn8ctf/hJXXnnlquc65RzmrwuVzJ27du3CySefjKGhIeM1O///9u49KKr6/QP4G4FdlhFQWIRFuSwoNxVUzG1BbUw0GNPUmvDSqKVpmXkDc8yxvJVOTupMTY6TBjnaqKOWU0xmqOsYoIkDmoaLIMo4QU4EKgki8v790Y/z7bQIarTL2vOa2Znj+XzO6Tn77NnztOdz+DzzDG7evIkLFy50aHydbmK5jvbbb7/h3r17qjcTAAICAnDx4kUHRdVxmpubsXDhQiQlJaFfv37K+ilTpiA0NBRBQUE4d+4cli5dCqvVigMHDjgw2gdjMpmQlZWFqKgoVFZWYtWqVRg2bBjOnz+PqqoqaDQamy/1gIAAVFVVOSbgf+Crr75CbW0tZsyYoaxz5ty1piUvrZ2DLW1VVVXo0aOHqt3NzQ2+vr5Ol9eGhgYsXboUkydPVk3aNX/+fAwaNAi+vr7Iy8vDsmXLUFlZiY0bNzow2geTkpKCiRMnwmg0oqysDG+//TZSU1ORn58PV1fXxyp/APD555/Dy8vL5naus+SwtevCg3x3VlVVtXqetrR1pMe++HjcvfHGGzh//rxqTAQA1b3W/v37w2AwYOTIkSgrK0NERIS9w3woqampynJcXBxMJhNCQ0Oxd+9e6HQ6B0bW8bZv347U1FQEBQUp65w5d/91d+/exYsvvgiS2LJli6pt8eLFynJcXBw0Gg3mzJmDdevWdfo/5T1p0iRluX///oiLi0NERAQsFgtGjhzpwMj+HZ999hmmTp0KDw8P1XpnyeH9rgudyWN/20Wv18PV1dVmRO+vv/6KwMBAB0XVMebNm4dvvvkGx44dQ69evdrsazKZAAClpaX2CK1DdevWDZGRkSgtLUVgYCAaGxtRW1ur6uOM+bx69SpycnIwa9asNvs5c+4AKHlp6xwMDAy0GQDe1NSE33//3Wny2lJ4XL16Fd9//327U5WbTCY0NTXhypUr9gmwA4WHh0Ov1yufycchfy1OnDgBq9Xa7nkJdM4c3u+68CDfnYGBga2epy1tHemxLz40Gg0SEhJw5MgRZV1zczOOHDkCs9nswMgeHUnMmzcPX375JY4ePQqj0djuNkVFRQAAg8HwL0fX8erq6lBWVgaDwYCEhAS4u7ur8mm1WlFRUeF0+czMzESPHj0wZsyYNvs5c+4AwGg0IjAwUJWzmzdv4tSpU0rOzGYzamtrcebMGaXP0aNH0dzcrBRfnVlL4XHp0iXk5OTAz8+v3W2KiorQpUsXm9sVzuDatWuorq5WPpPOnr+/2r59OxISEhAfH99u386Uw/auCw/y3Wk2m/HTTz+pCsmWQjo2NrbDA37s7d69m1qtlllZWfz55585e/ZsduvWTTWi15m8/vrr9PHxocViYWVlpfK6ffs2SbK0tJSrV69mQUEBy8vLefDgQYaHh3P48OEOjvzBpKen02KxsLy8nLm5uUxOTqZer+f169dJkq+99hpDQkJ49OhRFhQU0Gw202w2Ozjqh3Pv3j2GhIRw6dKlqvXOmrtbt26xsLCQhYWFBMCNGzeysLBQedpj/fr17NatGw8ePMhz587xueeeo9FoZH19vbKPlJQUDhw4kKdOneIPP/zAPn36cPLkyY46JJW2jq+xsZHjxo1jr169WFRUpDonW54QyMvL46ZNm1hUVMSysjLu3LmT/v7+nDZtmoOP7E9tHd+tW7eYkZHB/Px8lpeXMycnh4MGDWKfPn3Y0NCg7KMz549s/zNKkjdu3KCnpye3bNlis31nz2F71wWy/e/OpqYm9uvXj6NHj2ZRUREPHTpEf39/Llu2rMPj/U8UHyT50UcfMSQkhBqNhkOGDOHJkycdHdIjA9DqKzMzkyRZUVHB4cOH09fXl1qtlr179+aSJUt448YNxwb+gNLS0mgwGKjRaNizZ0+mpaWxtLRUaa+vr+fcuXPZvXt3enp6csKECaysrHRgxA/vu+++IwBarVbVemfN3bFjx1r9TE6fPp3kn4/brlixggEBAdRqtRw5cqTNsVdXV3Py5Mns2rUrvb29+fLLL/PWrVsOOBpbbR1feXn5fc/JY8eOkSTPnDlDk8lEHx8fenh4MCYmhu+//77q4u1IbR3f7du3OXr0aPr7+9Pd3Z2hoaF89dVXbf7nrTPnj2z/M0qSW7dupU6nY21trc32nT2H7V0XyAf77rxy5QpTU1Op0+mo1+uZnp7Ou3fvdni8Lv8ftBBCCCGEXTz2Yz6EEEII0blI8SGEEEIIu5LiQwghhBB2JcWHEEIIIexKig8hhBBC2JUUH0IIIYSwKyk+hBBCCGFXUnwI8R+VlZVlM8NlRwsLC8PmzZsfefsrV67AxcVF+RPzj2rlypUYMGDAP9qHEKLjSPEhxH9UWloaSkpKHB1Gm4KDg1FZWalMCy6EeDy4OToAIYRj6HQ66HQ6R4fRJldXV6ebFVUI0T755UMIJ9Tc3Ix169bBaDRCp9MhPj4e+/btU9otFgtcXFyQnZ2NuLg4eHh44Mknn8T58+eVPn+/7XL27FmMGDECXl5e8Pb2RkJCAgoKCpT2/fv3o2/fvtBqtQgLC8OHH36oiun69esYO3YsdDodjEYjdu3aZRN3bW0tZs2aBX9/f3h7e+Ppp5/G2bNn73ucf7/t0nJcR44cweDBg+Hp6YnExERYrVbVduvXr0dAQAC8vLwwc+ZMNDQ02Ox727ZtiImJgYeHB6Kjo/HJJ58oba+88gri4uJw584dAEBjYyMGDhyIadOm3TdWIcRD6PDZYoQQ/7q1a9cyOjqahw4dYllZGTMzM6nVammxWEj+bxKtmJgYHj58mOfOneOzzz7LsLAwNjY2kiQzMzPp4+Oj7LNv37586aWXWFxczJKSEu7du5dFRUUkyYKCAnbp0oWrV6+m1WplZmYmdTqdatKq1NRUxsfHMz8/nwUFBUxMTKROp+OmTZuUPsnJyRw7dixPnz7NkpISpqen08/Pj9XV1a0eZ8ukbYWFharjMplMtFgsvHDhAocNG8bExERlmz179lCr1XLbtm28ePEily9fTi8vL8bHxyt9du7cSYPBwP379/Py5cvcv38/fX19mZWVRfLPGVDDw8O5cOFCkmRGRgbDwsI6/QR/QjgLKT6EcDINDQ309PRkXl6eav3MmTOVKcxbLtK7d+9W2qurq6nT6bhnzx6StsWHl5eXcvH9uylTpnDUqFGqdUuWLGFsbCxJ0mq1EgB//PFHpb24uJgAlOLjxIkT9Pb2tpkFNCIiglu3bm31v3u/4iMnJ0fpk52dTQCsr68nSZrNZs6dO1e1H5PJpCo+IiIi+MUXX6j6rFmzRjW9eF5eHt3d3blixQq6ubnxxIkTrcYohHh4cttFCCdTWlqK27dvY9SoUejatavy2rFjB8rKylR9zWazsuzr64uoqCgUFxe3ut/Fixdj1qxZSE5Oxvr161X7Ki4uRlJSkqp/UlISLl26hHv37qG4uBhubm5ISEhQ2qOjo21u69TV1cHPz08Vd3l5uU3c7YmLi1OWDQYDgD9v+7TEajKZ7vs+/PHHHygrK8PMmTNVcaxdu1YVh9lsRkZGBtasWYP09HQMHTr0oWIUQtyfDDgVwsnU1dUBALKzs9GzZ09Vm1arfeT9rly5ElOmTEF2dja+/fZbvPvuu9i9ezcmTJjwj+JtUVdXB4PBAIvFYtP2sI/8uru7K8suLi4A/hwH86BxAMCnn35qU6S4uroqy83NzcjNzYWrqytKS0sfKj4hRNvklw8hnExsbCy0Wi0qKirQu3dv1Ss4OFjV9+TJk8pyTU0NSkpKEBMTc999R0ZGYtGiRTh8+DAmTpyIzMxMAEBMTAxyc3NVfXNzcxEZGQlXV1dER0ejqakJZ86cUdqtVitqa2uVfw8aNAhVVVVwc3OziVuv1/+Tt0QlJiYGp06dUq376/sQEBCAoKAgXL582SYOo9Go9NuwYQMuXryI48eP49ChQ8p7IYT45+SXDyGcjJeXFzIyMrBo0SI0Nzdj6NChuHHjBnJzc+Ht7Y3p06crfVevXg0/Pz8EBARg+fLl0Ov1GD9+vM0+6+vrsWTJErzwwgswGo24du0aTp8+jeeffx4AkJ6ejieeeAJr1qxBWloa8vPz8fHHHytPiERFRSElJQVz5szBli1b4ObmhoULF6oe5U1OTobZbMb48ePxwQcfIDIyEr/88guys7MxYcIEDB48uEPenwULFmDGjBkYPHgwkpKSsGvXLly4cAHh4eFKn1WrVmH+/Pnw8fFBSkoK7ty5g4KCAtTU1GDx4sUoLCzEO++8g3379iEpKQkbN27EggUL8NRTT6n2I4R4RI4edCKEeHjNzc3cvHkzo6Ki6O7uTn9/fz7zzDM8fvw4yf8NzPz666/Zt29fajQaDhkyhGfPnlX28dcBp3fu3OGkSZMYHBxMjUbDoKAgzps3TxnESZL79u1jbGws3d3dGRISwg0bNqhiqqys5JgxY6jVahkSEsIdO3YwNDRU9bTLzZs3+eabbzIoKIju7u4MDg7m1KlTWVFR0epx3m/AaU1NjdKnsLCQAFheXq6se++996jX69m1a1dOnz6db731lmrAKUnu2rWLAwYMoEajYffu3Tl8+HAeOHCA9fX1jI2N5ezZs1X9x40bx8TERDY1NbWVGiHEA3AhSceWP0KIjmaxWDBixAjU1NT8639CXQghHpaM+RBCCCGEXUnxIYQQQgi7ktsuQgghhLAr+eVDCCGEEHYlxYcQQggh7EqKDyGEEELYlRQfQgghhLArKT6EEEIIYVdSfAghhBDCrqT4EEIIIYRdSfEhhBBCCLuS4kMIIYQQdvV/KXhtuSzGDzQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# init environment\n", + "env = rld.make('CartPole-v1')\n", + "env = rld.Recorder(env, smoothing=10)\n", + "\n", + "# seed\n", + "rld.seed_everything(seed=42, env=env)\n", + "\n", + "# init agent\n", + "agent = Agent(env)\n", + "\n", + "# training procedure\n", + "tracker = rld.InfoTracker()\n", + "for episode in range(201):\n", + " obs, info = env.reset()\n", + " done = False\n", + "\n", + " # get episode\n", + " while not done:\n", + " # select action\n", + " prob = agent.prob_action(obs)\n", + " action = agent.sample_action(prob)\n", + "\n", + " # take action in environment\n", + " next_obs, reward, terminated, truncated, info = env.step(action)\n", + " done = terminated or truncated\n", + " agent.put_data((reward, prob[action] if discrete else None))\n", + " obs = next_obs\n", + "\n", + " # track and plot\n", + " tracker.track(info)\n", + " if episode % 10 == 0:\n", + " tracker.plot(r_mean_=True, r_std_=True)\n", + "\n", + " # update agent's policy\n", + " agent.train()\n", + "env.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_5TzwBwi_T1H" + }, + "source": [ + "**REINFORCE agent example**\n", + "This code is based on: https://github.com/seungeunrho/minimalRL\n", + "\n", + "Note: these implementations are good to study, although most are for discrete action spaces" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "gJ5XdxBUX7N6" + }, + "outputs": [], + "source": [ + "# this is an implementation of REINFORCE (taught in lecture 8) - one of the simplest classical policy gradient methods\n", + "# this will only work for simple discrete control problems like cart pole or (slowly) lunar lander discrete\n", + "plot_interval = 50\n", + "video_every = 500\n", + "max_episodes = 5000\n", + "\n", + "if not discrete:\n", + " print(\"REINFORCE only works for discrete action spaces\")\n", + " raise AssertionError()\n", + "\n", + "class Agent(torch.nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.data = []\n", + " self.fc1 = nn.Linear(obs_dim, 128)\n", + " self.fc2 = nn.Linear(128, act_dim)\n", + " self.optimizer = optim.Adam(self.parameters(), lr=0.0002)\n", + "\n", + " def sample_action(self, prob):\n", + " m = Categorical(prob)\n", + " a = m.sample()\n", + " return a.item()\n", + "\n", + " def prob_action(self, s):\n", + " x = F.relu(self.fc1(torch.from_numpy(s).float()))\n", + " return F.softmax(self.fc2(x), dim=0)\n", + "\n", + " def put_data(self, item):\n", + " self.data.append(item)\n", + "\n", + " def train(self):\n", + " R = 0\n", + " self.optimizer.zero_grad()\n", + " for r, prob in self.data[::-1]:\n", + " R = r + 0.98 * R\n", + " loss = -torch.log(prob) * R\n", + " loss.backward()\n", + " self.optimizer.step()\n", + " self.data = []" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wrwrBOetkXEu" + }, + "source": [ + "**Custom environments (here: multi-armed bandits)**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "24ggTPUlUNEz" + }, + "outputs": [], + "source": [ + "# one armed bandits are slot machines where you can win or loose money\n", + "# some casinos tune them, so some machines are less successful (the probability distribution of winning)\n", + "# the machines also dish out varying rewards (the reward distribution)\n", + "# so basically each machine has some probability of dishing out £ reward (p_dist doesn't need to sum to 1) else it gives £0\n", + "\n", + "class BanditEnv(gym.Env):\n", + "\n", + " def __init__(self, p_dist=[0.4,0.2,0.1,0.1,0.1,0.7], r_dist=[1,0.1,2,0.5,6,70]):\n", + "\n", + " self.p_dist = p_dist\n", + " self.r_dist = r_dist\n", + "\n", + " self.n_bandits = len(p_dist)\n", + " self.action_space = gym.spaces.Discrete(self.n_bandits)\n", + " self.observation_space = gym.spaces.Discrete(1)\n", + "\n", + " def step(self, action):\n", + " assert self.action_space.contains(action)\n", + "\n", + " reward = -25\n", + " terminated = True\n", + " truncated = False\n", + "\n", + " if np.random.uniform() < self.p_dist[action]:\n", + " if not isinstance(self.r_dist[action], list):\n", + " reward += self.r_dist[action]\n", + " else:\n", + " reward += np.random.normal(self.r_dist[action][0], self.r_dist[action][1])\n", + "\n", + " return np.zeros(1), reward, terminated, truncated, {}\n", + "\n", + " def reset(self, seed=None, options=None):\n", + " if seed is not None:\n", + " self.np_random, seed = gym.utils.seeding.np_random(seed)\n", + " return np.zeros(1), {}\n", + "\n", + " def render(self):\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "24ggTPUlUNEz" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 -25\n", + "5 45\n", + "0 -24\n", + "0 -25\n", + "0 -25\n", + "5 45\n", + "3 -25\n", + "3 -25\n", + "0 -24\n", + "5 45\n" + ] + } + ], + "source": [ + "# initialise\n", + "discrete = True\n", + "env = BanditEnv()\n", + "obs_dim = 1\n", + "act_dim = len(env.p_dist)\n", + "env.spec = gym.envs.registration.EnvSpec('BanditEnv-v0', max_episode_steps=5)\n", + "max_episodes = 1000\n", + "\n", + "for episode in range(10):\n", + " observation, info = env.reset()\n", + " done = False\n", + " while not done:\n", + " action = env.action_space.sample() # random action\n", + " observation, reward, terminated, truncated, info = env.step(action)\n", + " print(action, reward)\n", + " done = terminated or truncated\n", + "\n", + "env.close()" + ] + } + ], + "metadata": { + "colab": { + "name": "OpenAI gym", + "provenance": [] + }, + "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.8.20" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}