diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/PKG-INFO b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/PKG-INFO new file mode 100644 index 0000000..ec40b95 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: gym-GyroscopeEnv +Version: 0.0.1 +Summary: UNKNOWN +Home-page: UNKNOWN +Author: UNKNOWN +Author-email: UNKNOWN +License: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/SOURCES.txt b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/SOURCES.txt new file mode 100644 index 0000000..5c18e89 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/SOURCES.txt @@ -0,0 +1,12 @@ +setup.py +gym_GyroscopeEnv/__init__.py +gym_GyroscopeEnv.egg-info/PKG-INFO +gym_GyroscopeEnv.egg-info/SOURCES.txt +gym_GyroscopeEnv.egg-info/dependency_links.txt +gym_GyroscopeEnv.egg-info/requires.txt +gym_GyroscopeEnv.egg-info/top_level.txt +gym_GyroscopeEnv/__pycache__/__init__.cpython-36.pyc +gym_GyroscopeEnv/envs/__init__.py +gym_GyroscopeEnv/envs/gyroscope_env.py +gym_GyroscopeEnv/envs/__pycache__/__init__.cpython-36.pyc +gym_GyroscopeEnv/envs/__pycache__/gyroscope_env.cpython-36.pyc \ No newline at end of file diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/dependency_links.txt b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/requires.txt b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/requires.txt new file mode 100644 index 0000000..7dcf672 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/requires.txt @@ -0,0 +1,3 @@ +gym +numpy +scipy diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/top_level.txt b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/top_level.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv.egg-info/top_level.txt @@ -0,0 +1 @@ + diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__init__.py b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__init__.py new file mode 100644 index 0000000..61aa81c --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__init__.py @@ -0,0 +1,7 @@ +from gym.envs.registration import register + +register( + id='gyroscopeenv-v0', + entry_point='gym_GyroscopeEnv.envs:GyroscopeEnv', + max_episode_steps=110, +) diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__pycache__/__init__.cpython-36.pyc b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000..3859676 Binary files /dev/null and b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/__pycache__/__init__.cpython-36.pyc differ diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__init__.py b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__init__.py new file mode 100644 index 0000000..3125897 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__init__.py @@ -0,0 +1 @@ +from gym_GyroscopeEnv.envs.gyroscope_env import GyroscopeEnv diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/__init__.cpython-36.pyc b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000..45cb08f Binary files /dev/null and b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/__init__.cpython-36.pyc differ diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/gyroscope_env.cpython-36.pyc b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/gyroscope_env.cpython-36.pyc new file mode 100644 index 0000000..94ace5a Binary files /dev/null and b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/__pycache__/gyroscope_env.cpython-36.pyc differ diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/gyroscope_env.py b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/gyroscope_env.py new file mode 100644 index 0000000..6b4d6ce --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/gym_GyroscopeEnv/envs/gyroscope_env.py @@ -0,0 +1,175 @@ +import gym +from gym import spaces +from gym.utils import seeding +import numpy as np +from os import path +from scipy.integrate import solve_ivp + +class GyroscopeEnv(gym.Env): + + + """ + GyroscopeEnv is a double gimbal control moment gyroscope (DGCMG) with 2 input voltage u1 and u2 + on the two gimbals, and disk speed assumed constant (parameter w). Simulation is based on the + Quanser 3-DOF gyroscope setup. + + + **STATE:** + The state consists of the angle and angular speed of the outer red gimbal (theta = x1, thetadot = x2), + the angle and angular speed of the inner blue gimbal (phi = x3, phidot = x4), the difference to the reference + for tracking on theta and phi (tracking error theta = diff_x1, tracking error phi = diff_x3), and the + disk speed (disk speed = w): + + state = [x1, x2, x3, x4, diff_x1, diff_x3, w] + + **ACTIONS:** + The actions are the input voltage to create the red and blue gimbal torque (red voltage = u1, blue voltage = u2), + and are continuous in a range of -10 and 10V: + + action = [u1,u2] + + """ + + + metadata = { + 'render.modes' : ['human', 'rgb_array'], + 'video.frames_per_second' : 30 + } + + def __init__(self): + + # Inertias in Kg*m2 + self.Jbx1 = 0.0019 + self.Jbx2 = 0.0008 + self.Jbx3 = 0.0012 + self.Jrx1 = 0.0179 + self.Jdx1 = 0.0028 + self.Jdx3 = 0.0056 + + # Combined inertias + self.J1 = self.Jbx1 - self.Jbx3 + self.Jdx1 - self.Jdx3 + self.J2 = self.Jbx1 + self.Jdx1 + self.Jrx1 + self.J3 = self.Jbx2 + self.Jdx1 + + # Motor constants + self.Kamp = 0.5 # A/V + self.Ktorque = 0.0704 # Nm/A + self.eff = 0.86 + self.nRed = 1.5 + self.nBlue = 1 + self.KtotRed = self.Kamp*self.Ktorque*self.eff*self.nRed + self.KtotBlue = self.Kamp*self.Ktorque*self.eff*self.nBlue + + # Time step in s + self.dt = 0.05 + + # Error + self.int_diff_x1 = 0 + self.int_diff_x3 = 0 + + # Action space + self.maxVoltage = 10 # V + self.highAct = np.array([self.maxVoltage,self.maxVoltage]) + self.action_space = spaces.Box(low = -self.highAct, high = self.highAct, dtype=np.float32) + + # Observation space (here it is equal to state space) + self.maxSpeed = 100 * 2 * np.pi / 60 + self.maxAngle = np.pi + self.maxdiskSpeed = 300 * 2 * np.pi / 60 + self.highObs = np.array([self.maxAngle,self.maxSpeed,self.maxAngle,self.maxSpeed,self.maxAngle,self.maxAngle,self.maxdiskSpeed]) + self.observation_space = spaces.Box(low = -self.highObs, high = self.highObs, dtype=np.float32) + + # Seed for random number generation + self.seed() + + self.viewer = None + + def seed(self, seed=None): + self.np_random, seed = seeding.np_random(seed) + return [seed] + + + + def step(self,u): + x1, x2, x3, x4, x1_ref, x3_ref, w= self.state + u1,u2 = u + + # Angle error + diff_x1 = angle_normalize(x1 - x1_ref) + diff_x3 = angle_normalize(x3 - x3_ref) + + # Integral of error + self.int_diff_x1 = self.int_diff_x1 + diff_x1 + self.int_diff_x3 = self.int_diff_x3 + diff_x3 + + # Reward 1: differentiable reward (LQR obj function) + reward = -((3*diff_x1)**2 + (3*diff_x3)**2 + (.2*x2)**2 + (.2*x4)**2 + (.1*u1)**2 + (.1*u2)**2)\ + #-(0.01*abs(self.int_diff_x1) + 0.01*abs(self.int_diff_x3)) + + """# Count time spent in goal: + if abs(diff_x1)<0.05 and abs(diff_x3)<0.05: + self.countGoal +=1 + else: + self.countGoal = 0 + + # Reward 2: sparse reward for staying in goal range for a long time + if self.countGoal >= (self.timeGoal)/self.dt: #max expected reward over length becomes 0 + (totaltime-goaltime) + reward += 1""" + + + results = solve_ivp(fun = dxdt, t_span = (0, self.dt), y0 = [x1,x2,x3,x4], method='RK45', args=(u1,u2,self)) + + x1 = angle_normalize(results.y[0][-1]) + x2 = np.clip(results.y[1][-1],-self.maxSpeed,self.maxSpeed) + x3 = angle_normalize(results.y[2][-1]) + x4 = np.clip(results.y[3][-1],-self.maxSpeed,self.maxSpeed) + + self.state = np.asarray([x1,x2,x3,x4,x1_ref, x3_ref,w]) + + return (self.state, reward, False, {}) + + def reset(self, state = None): + + + # Generate random state (for training) or use given state (for simulation) + if state is None: + self.state = self.np_random.uniform(low=-self.highObs, high=self.highObs) + else: + self.state = state + + + return self.state + + + def render(self, mode='human'): + return None + + def close(self): + if self.viewer: + self.viewer.close() + self.viewer = None + +def dxdt(t, x, u1, u2, gyro): + + # Rewrite constants shorter + J1 = gyro.J1 + J2 = gyro.J2 + J3 = gyro.J3 + Jdx3 = gyro.Jdx3 + KtotRed = gyro.KtotRed + KtotBlue = gyro.KtotBlue + w = x[-1] + + # Convert input voltage to input torque + u1,u2 = KtotRed*u1, KtotBlue*u2 + + # Equations of motion + dx_dt = [0, 0, 0, 0] + dx_dt[0] = x[1] + dx_dt[1] = (u1+J1*np.sin(2*x[2])*x[1]*x[3]-Jdx3*np.cos(x[2])*x[3]*w)/(J2 + J1*np.power(np.sin(x[2]),2)) + dx_dt[2] = x[3] + dx_dt[3] = (u2 - J1*np.cos(x[2])*np.sin(x[2])*np.power(x[1],2)+Jdx3*np.cos(x[2])*x[1]*w)/J3 + return dx_dt + +def angle_normalize(x): + return (((x+np.pi) % (2*np.pi)) - np.pi) # To keep the angles between -pi and pi diff --git a/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/setup.py b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/setup.py new file mode 100644 index 0000000..5540914 --- /dev/null +++ b/code/environment/GyroscopeEnv4Gym_PasteAndAdaptInGymLibFolder/setup.py @@ -0,0 +1,6 @@ +from setuptools import setup + +setup(name='gym_GyroscopeEnv', + version='0.0.1', + install_requires=['gym','numpy','scipy'] # And any other dependencies foo needs +) diff --git a/code/training_spinuplib/gyroscope_baseline_spinuplib.ipynb b/code/training_spinuplib/gyroscope_baseline_spinuplib.ipynb index 1b86377..0aae8df 100644 --- a/code/training_spinuplib/gyroscope_baseline_spinuplib.ipynb +++ b/code/training_spinuplib/gyroscope_baseline_spinuplib.ipynb @@ -1,10583 +1,10582 @@ { "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "x83dMPapQBN6" }, "source": [ "# Gyroscope DDPG/TD3/SAC training of baseline (spinup library)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": {}, "colab_type": "code", "id": "fuJhdd479TpP" }, "outputs": [], "source": [ "import gym\n", "from gym import spaces\n", "from gym.utils import seeding\n", - "import gym_GyroscopeEnv\n", "\n", "import spinup\n", "\n", "from os import path\n", "from scipy.integrate import solve_ivp\n", "import random\n", "import torch\n", "import numpy as np\n", "from collections import deque\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from vpython import *\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "O0O0t5ZR9Tp6" }, "source": [ "## Environment Class and Modules" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": {}, "colab_type": "code", "id": "Al_k1rtvQBOM" }, "outputs": [], "source": [ "class GyroscopeEnv(gym.Env):\n", " \n", " \n", " \"\"\"\n", " GyroscopeEnv is a double gimbal control moment gyroscope (DGCMG) with 2 input voltage u1 and u2 \n", " on the two gimbals, and disk speed assumed constant (parameter w). Simulation is based on the \n", " Quanser 3-DOF gyroscope setup.\n", " \n", " \n", " **STATE:**\n", " The state consists of the angle and angular speed of the outer red gimbal (theta = x1, thetadot = x2),\n", " the angle and angular speed of the inner blue gimbal (phi = x3, phidot = x4), the difference to the reference\n", " for tracking on theta and phi (tracking error theta = diff_x1, tracking error phi = diff_x3), and the \n", " disk speed (disk speed = w):\n", " \n", " state = [x1, x2, x3, x4, diff_x1, diff_x3, w]\n", " \n", " **ACTIONS:**\n", " The actions are the input voltage to create the red and blue gimbal torque (red voltage = u1, blue voltage = u2),\n", " and are continuous in a range of -10 and 10V:\n", " \n", " action = [u1,u2]\n", " \n", " \"\"\"\n", " \n", " \n", " metadata = {\n", " 'render.modes' : ['human', 'rgb_array'],\n", " 'video.frames_per_second' : 30\n", " }\n", "\n", " def __init__(self):\n", " \n", " # Inertias in Kg*m2\n", " self.Jbx1 = 0.0019\n", " self.Jbx2 = 0.0008\n", " self.Jbx3 = 0.0012\n", " self.Jrx1 = 0.0179\n", " self.Jdx1 = 0.0028\n", " self.Jdx3 = 0.0056\n", " \n", " # Combined inertias\n", " self.J1 = self.Jbx1 - self.Jbx3 + self.Jdx1 - self.Jdx3\n", " self.J2 = self.Jbx1 + self.Jdx1 + self.Jrx1\n", " self.J3 = self.Jbx2 + self.Jdx1\n", "\n", " # Motor constants\n", " self.Kamp = 0.5 # A/V\n", " self.Ktorque = 0.0704 # Nm/A\n", " self.eff = 0.86\n", " self.nRed = 1.5\n", " self.nBlue = 1\n", " self.KtotRed = self.Kamp*self.Ktorque*self.eff*self.nRed \n", " self.KtotBlue = self.Kamp*self.Ktorque*self.eff*self.nBlue \n", " \n", " # Time step in s\n", " self.dt = 0.05\n", " \n", " # Error\n", " self.int_diff_x1 = 0\n", " self.int_diff_x3 = 0\n", " \n", " # Action space\n", " self.maxVoltage = 10 # V\n", " self.highAct = np.array([self.maxVoltage,self.maxVoltage])\n", " self.action_space = spaces.Box(low = -self.highAct, high = self.highAct, dtype=np.float32) \n", " \n", " # Observation space (here it is equal to state space)\n", " self.maxSpeed = 100 * 2 * np.pi / 60\n", " self.maxAngle = np.pi\n", " self.maxdiskSpeed = 300 * 2 * np.pi / 60\n", " self.highObs = np.array([self.maxAngle,self.maxSpeed,self.maxAngle,self.maxSpeed,self.maxAngle,self.maxAngle,self.maxdiskSpeed])\n", " self.observation_space = spaces.Box(low = -self.highObs, high = self.highObs, dtype=np.float32)\n", "\n", " # Seed for random number generation\n", " self.seed()\n", " \n", " self.viewer = None\n", "\n", " def seed(self, seed=None):\n", " self.np_random, seed = seeding.np_random(seed)\n", " return [seed]\n", " \n", " \n", "\n", " def step(self,u):\n", " x1, x2, x3, x4, x1_ref, x3_ref, w= self.state \n", " u1,u2 = u\n", " \n", " # Angle error\n", " diff_x1 = angle_normalize(x1 - x1_ref)\n", " diff_x3 = angle_normalize(x3 - x3_ref)\n", " \n", " # Integral of error\n", " self.int_diff_x1 = self.int_diff_x1 + diff_x1\n", " self.int_diff_x3 = self.int_diff_x3 + diff_x3\n", " \n", " # Reward 1: differentiable reward (LQR obj function)\n", " reward = -((3*diff_x1)**2 + (3*diff_x3)**2 + (.2*x2)**2 + (.2*x4)**2 + (.1*u1)**2 + (.1*u2)**2)\\\n", " #-(0.01*abs(self.int_diff_x1) + 0.01*abs(self.int_diff_x3))\n", "\n", " \"\"\"# Count time spent in goal:\n", " if abs(diff_x1)<0.05 and abs(diff_x3)<0.05:\n", " self.countGoal +=1\n", " else:\n", " self.countGoal = 0\n", " \n", " # Reward 2: sparse reward for staying in goal range for a long time \n", " if self.countGoal >= (self.timeGoal)/self.dt: #max expected reward over length becomes 0 + (totaltime-goaltime)\n", " reward += 1\"\"\"\n", "\n", "\n", " results = solve_ivp(fun = dxdt, t_span = (0, self.dt), y0 = [x1,x2,x3,x4], method='RK45', args=(u1,u2,self))\n", " \n", " x1 = angle_normalize(results.y[0][-1])\n", " x2 = np.clip(results.y[1][-1],-self.maxSpeed,self.maxSpeed)\n", " x3 = angle_normalize(results.y[2][-1])\n", " x4 = np.clip(results.y[3][-1],-self.maxSpeed,self.maxSpeed)\n", " \n", " self.state = np.asarray([x1,x2,x3,x4,x1_ref, x3_ref,w])\n", "\n", " return (self.state, reward, False, {})\n", "\n", " def reset(self, state = None):\n", " \n", " \n", " # Generate random state (for training) or use given state (for simulation)\n", " if state is None:\n", " self.state = self.np_random.uniform(low=-self.highObs, high=self.highObs)\n", " else:\n", " self.state = state\n", "\n", " \n", " return self.state\n", "\n", "\n", " def render(self, mode='human'):\n", " return None\n", " \n", " def close(self):\n", " if self.viewer:\n", " self.viewer.close()\n", " self.viewer = None\n", " \n", "def dxdt(t, x, u1, u2, gyro):\n", " \n", " # Rewrite constants shorter\n", " J1 = gyro.J1\n", " J2 = gyro.J2\n", " J3 = gyro.J3\n", " Jdx3 = gyro.Jdx3\n", " KtotRed = gyro.KtotRed\n", " KtotBlue = gyro.KtotBlue\n", " w = x[-1]\n", "\n", " # Convert input voltage to input torque\n", " u1,u2 = KtotRed*u1, KtotBlue*u2\n", " \n", " # Equations of motion \n", " dx_dt = [0, 0, 0, 0]\n", " dx_dt[0] = x[1]\n", " dx_dt[1] = (u1+J1*np.sin(2*x[2])*x[1]*x[3]-Jdx3*np.cos(x[2])*x[3]*w)/(J2 + J1*np.power(np.sin(x[2]),2))\n", " dx_dt[2] = x[3]\n", " dx_dt[3] = (u2 - J1*np.cos(x[2])*np.sin(x[2])*np.power(x[1],2)+Jdx3*np.cos(x[2])*x[1]*w)/J3\n", " return dx_dt\n", " \n", "def angle_normalize(x):\n", " return (((x+np.pi) % (2*np.pi)) - np.pi) # To keep the angles between -pi and pi\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "be0wYIeBQBOc" }, "source": [ "## Training" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### DDPG" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 533 }, "colab_type": "code", "executionInfo": { "elapsed": 654004, "status": "error", "timestamp": 1584037207187, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "fLyFHs0yQBOd", "outputId": "260489ff-5e40-416a-e529-5a0cfcaefceb" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Log dir ddpg_b0 already exists! Storing info there anyway.\n", "\u001b[32;1mLogging data to ddpg_b0/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"ddpg_b0\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='ddpg_b0/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"ddpg_b0\"\n", " },\n", " \"max_ep_len\":\t110,\n", " \"num_test_episodes\":\t10,\n", " \"pi_lr\":\t0.001,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3002, \t q: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -7.37e+03 |\n", "| StdEpRet | 1.02e+03 |\n", "| MaxEpRet | -5.32e+03 |\n", "| MinEpRet | -8.94e+03 |\n", "| AverageTestEpRet | -6.94e+03 |\n", "| StdTestEpRet | 1.71e+03 |\n", "| MaxTestEpRet | -4.1e+03 |\n", "| MinTestEpRet | -1.02e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQVals | -116 |\n", "| StdQVals | 60 |\n", "| MaxQVals | 3.42 |\n", "| MinQVals | -318 |\n", "| LossPi | 107 |\n", "| LossQ | 1.62e+03 |\n", "| Time | 4.36 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -6.95e+03 |\n", "| StdEpRet | 1.29e+03 |\n", "| MaxEpRet | -4.93e+03 |\n", "| MinEpRet | -8.91e+03 |\n", "| AverageTestEpRet | -6.91e+03 |\n", "| StdTestEpRet | 2.09e+03 |\n", "| MaxTestEpRet | -4.2e+03 |\n", "| MinTestEpRet | -1.17e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQVals | -376 |\n", "| StdQVals | 144 |\n", "| MaxQVals | -58.1 |\n", "| MinQVals | -1e+03 |\n", "| LossPi | 359 |\n", "| LossQ | 1.7e+03 |\n", "| Time | 11.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -7.39e+03 |\n", "| StdEpRet | 1.82e+03 |\n", "| MaxEpRet | -4.88e+03 |\n", "| MinEpRet | -1.2e+04 |\n", "| AverageTestEpRet | -6.38e+03 |\n", "| StdTestEpRet | 1.25e+03 |\n", "| MaxTestEpRet | -4.47e+03 |\n", "| MinTestEpRet | -8.82e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQVals | -697 |\n", "| StdQVals | 205 |\n", "| MaxQVals | -163 |\n", "| MinQVals | -1.45e+03 |\n", "| LossPi | 674 |\n", "| LossQ | 2.39e+03 |\n", "| Time | 19.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -7.01e+03 |\n", "| StdEpRet | 1.2e+03 |\n", "| MaxEpRet | -5.06e+03 |\n", "| MinEpRet | -8.69e+03 |\n", "| AverageTestEpRet | -5.59e+03 |\n", "| StdTestEpRet | 1.7e+03 |\n", "| MaxTestEpRet | -3.52e+03 |\n", "| MinTestEpRet | -8.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQVals | -963 |\n", "| StdQVals | 255 |\n", "| MaxQVals | -247 |\n", "| MinQVals | -1.83e+03 |\n", "| LossPi | 940 |\n", "| LossQ | 2.63e+03 |\n", "| Time | 27.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.28e+03 |\n", "| StdEpRet | 1.28e+03 |\n", "| MaxEpRet | -3.99e+03 |\n", "| MinEpRet | -8.21e+03 |\n", "| AverageTestEpRet | -6.89e+03 |\n", "| StdTestEpRet | 2.82e+03 |\n", "| MaxTestEpRet | -3.84e+03 |\n", "| MinTestEpRet | -1.32e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQVals | -1.21e+03 |\n", "| StdQVals | 308 |\n", "| MaxQVals | -302 |\n", "| MinQVals | -2.23e+03 |\n", "| LossPi | 1.19e+03 |\n", "| LossQ | 3.4e+03 |\n", "| Time | 35 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -6.17e+03 |\n", "| StdEpRet | 1.23e+03 |\n", "| MaxEpRet | -4.59e+03 |\n", "| MinEpRet | -8.7e+03 |\n", "| AverageTestEpRet | -4.85e+03 |\n", "| StdTestEpRet | 1.93e+03 |\n", "| MaxTestEpRet | -2.18e+03 |\n", "| MinTestEpRet | -8.3e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQVals | -1.44e+03 |\n", "| StdQVals | 350 |\n", "| MaxQVals | -392 |\n", "| MinQVals | -2.53e+03 |\n", "| LossPi | 1.42e+03 |\n", "| LossQ | 4.09e+03 |\n", "| Time | 41.6 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -3.99e+03 |\n", "| StdEpRet | 2.58e+03 |\n", "| MaxEpRet | -655 |\n", "| MinEpRet | -9.91e+03 |\n", "| AverageTestEpRet | -5.58e+03 |\n", "| StdTestEpRet | 2.37e+03 |\n", "| MaxTestEpRet | -1.85e+03 |\n", "| MinTestEpRet | -9.15e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQVals | -1.6e+03 |\n", "| StdQVals | 390 |\n", "| MaxQVals | -513 |\n", "| MinQVals | -2.76e+03 |\n", "| LossPi | 1.58e+03 |\n", "| LossQ | 4.49e+03 |\n", "| Time | 48.8 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -2.32e+03 |\n", "| StdEpRet | 1.87e+03 |\n", "| MaxEpRet | -349 |\n", "| MinEpRet | -7.49e+03 |\n", "| AverageTestEpRet | -3.2e+03 |\n", "| StdTestEpRet | 1.96e+03 |\n", "| MaxTestEpRet | -292 |\n", "| MinTestEpRet | -7.42e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQVals | -1.7e+03 |\n", "| StdQVals | 448 |\n", "| MaxQVals | -652 |\n", "| MinQVals | -3.02e+03 |\n", "| LossPi | 1.67e+03 |\n", "| LossQ | 4.54e+03 |\n", "| Time | 56.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -2.08e+03 |\n", "| StdEpRet | 1.19e+03 |\n", "| MaxEpRet | -331 |\n", "| MinEpRet | -4.91e+03 |\n", "| AverageTestEpRet | -3.71e+03 |\n", "| StdTestEpRet | 2.54e+03 |\n", "| MaxTestEpRet | -974 |\n", "| MinTestEpRet | -7.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQVals | -1.79e+03 |\n", "| StdQVals | 460 |\n", "| MaxQVals | -746 |\n", "| MinQVals | -3.2e+03 |\n", "| LossPi | 1.77e+03 |\n", "| LossQ | 4.83e+03 |\n", "| Time | 63.6 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -1.49e+03 |\n", "| StdEpRet | 1.07e+03 |\n", "| MaxEpRet | -415 |\n", "| MinEpRet | -4.02e+03 |\n", "| AverageTestEpRet | -2.41e+03 |\n", "| StdTestEpRet | 2.38e+03 |\n", "| MaxTestEpRet | -160 |\n", "| MinTestEpRet | -6.64e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQVals | -1.85e+03 |\n", "| StdQVals | 458 |\n", "| MaxQVals | -802 |\n", "| MinQVals | -3.33e+03 |\n", "| LossPi | 1.83e+03 |\n", "| LossQ | 5.24e+03 |\n", "| Time | 70.3 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -2.57e+03 |\n", "| StdEpRet | 2e+03 |\n", "| MaxEpRet | -182 |\n", "| MinEpRet | -7.96e+03 |\n", "| AverageTestEpRet | -2.11e+03 |\n", "| StdTestEpRet | 2.41e+03 |\n", "| MaxTestEpRet | -146 |\n", "| MinTestEpRet | -7.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQVals | -1.86e+03 |\n", "| StdQVals | 456 |\n", "| MaxQVals | -821 |\n", "| MinQVals | -3.38e+03 |\n", "| LossPi | 1.84e+03 |\n", "| LossQ | 5.61e+03 |\n", "| Time | 77.9 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -1.95e+03 |\n", "| StdEpRet | 1.76e+03 |\n", "| MaxEpRet | -154 |\n", "| MinEpRet | -6.04e+03 |\n", "| AverageTestEpRet | -1.66e+03 |\n", "| StdTestEpRet | 1.58e+03 |\n", "| MaxTestEpRet | -229 |\n", "| MinTestEpRet | -5.9e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQVals | -1.85e+03 |\n", "| StdQVals | 443 |\n", "| MaxQVals | -858 |\n", "| MinQVals | -3.41e+03 |\n", "| LossPi | 1.83e+03 |\n", "| LossQ | 5.73e+03 |\n", "| Time | 85.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -2.03e+03 |\n", "| StdEpRet | 2.21e+03 |\n", "| MaxEpRet | -126 |\n", "| MinEpRet | -6.87e+03 |\n", "| AverageTestEpRet | -1.34e+03 |\n", "| StdTestEpRet | 892 |\n", "| MaxTestEpRet | -112 |\n", "| MinTestEpRet | -2.84e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQVals | -1.81e+03 |\n", "| StdQVals | 438 |\n", "| MaxQVals | -879 |\n", "| MinQVals | -3.4e+03 |\n", "| LossPi | 1.79e+03 |\n", "| LossQ | 5.95e+03 |\n", "| Time | 92.4 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -1.2e+03 |\n", "| StdEpRet | 932 |\n", "| MaxEpRet | -27.2 |\n", "| MinEpRet | -3.41e+03 |\n", "| AverageTestEpRet | -975 |\n", "| StdTestEpRet | 667 |\n", "| MaxTestEpRet | -131 |\n", "| MinTestEpRet | -2.45e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQVals | -1.78e+03 |\n", "| StdQVals | 428 |\n", "| MaxQVals | -866 |\n", "| MinQVals | -3.38e+03 |\n", "| LossPi | 1.76e+03 |\n", "| LossQ | 5.98e+03 |\n", "| Time | 99.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -1.65e+03 |\n", "| StdEpRet | 2.09e+03 |\n", "| MaxEpRet | -222 |\n", "| MinEpRet | -9.15e+03 |\n", "| AverageTestEpRet | -1.17e+03 |\n", "| StdTestEpRet | 869 |\n", "| MaxTestEpRet | -389 |\n", "| MinTestEpRet | -3.36e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQVals | -1.73e+03 |\n", "| StdQVals | 422 |\n", "| MaxQVals | -797 |\n", "| MinQVals | -3.37e+03 |\n", "| LossPi | 1.71e+03 |\n", "| LossQ | 5.97e+03 |\n", "| Time | 108 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -1.03e+03 |\n", "| StdEpRet | 894 |\n", "| MaxEpRet | -146 |\n", "| MinEpRet | -3.26e+03 |\n", "| AverageTestEpRet | -1.27e+03 |\n", "| StdTestEpRet | 1.9e+03 |\n", "| MaxTestEpRet | -227 |\n", "| MinTestEpRet | -6.9e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQVals | -1.68e+03 |\n", "| StdQVals | 419 |\n", "| MaxQVals | -757 |\n", "| MinQVals | -3.32e+03 |\n", "| LossPi | 1.65e+03 |\n", "| LossQ | 6.05e+03 |\n", "| Time | 117 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -1.14e+03 |\n", "| StdEpRet | 1.17e+03 |\n", "| MaxEpRet | -109 |\n", "| MinEpRet | -4.77e+03 |\n", "| AverageTestEpRet | -649 |\n", "| StdTestEpRet | 471 |\n", "| MaxTestEpRet | -77.7 |\n", "| MinTestEpRet | -1.66e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQVals | -1.62e+03 |\n", "| StdQVals | 418 |\n", "| MaxQVals | -710 |\n", "| MinQVals | -3.29e+03 |\n", "| LossPi | 1.6e+03 |\n", "| LossQ | 6.35e+03 |\n", "| Time | 126 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -643 |\n", "| StdEpRet | 522 |\n", "| MaxEpRet | -136 |\n", "| MinEpRet | -1.87e+03 |\n", "| AverageTestEpRet | -1.21e+03 |\n", "| StdTestEpRet | 1.06e+03 |\n", "| MaxTestEpRet | -77.6 |\n", "| MinTestEpRet | -3.6e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQVals | -1.55e+03 |\n", "| StdQVals | 421 |\n", "| MaxQVals | -657 |\n", "| MinQVals | -3.19e+03 |\n", "| LossPi | 1.53e+03 |\n", "| LossQ | 6.08e+03 |\n", "| Time | 135 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -1.09e+03 |\n", "| StdEpRet | 865 |\n", "| MaxEpRet | -89.6 |\n", "| MinEpRet | -3.02e+03 |\n", "| AverageTestEpRet | -1.44e+03 |\n", "| StdTestEpRet | 1.34e+03 |\n", "| MaxTestEpRet | -417 |\n", "| MinTestEpRet | -5.19e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQVals | -1.48e+03 |\n", "| StdQVals | 426 |\n", "| MaxQVals | -601 |\n", "| MinQVals | -3.11e+03 |\n", "| LossPi | 1.46e+03 |\n", "| LossQ | 6.01e+03 |\n", "| Time | 144 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -740 |\n", "| StdEpRet | 668 |\n", "| MaxEpRet | -116 |\n", "| MinEpRet | -2.73e+03 |\n", "| AverageTestEpRet | -865 |\n", "| StdTestEpRet | 892 |\n", "| MaxTestEpRet | -113 |\n", "| MinTestEpRet | -3.26e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQVals | -1.41e+03 |\n", "| StdQVals | 428 |\n", "| MaxQVals | -550 |\n", "| MinQVals | -3.04e+03 |\n", "| LossPi | 1.39e+03 |\n", "| LossQ | 5.73e+03 |\n", "| Time | 153 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -697 |\n", "| StdEpRet | 472 |\n", "| MaxEpRet | -99.1 |\n", "| MinEpRet | -1.57e+03 |\n", "| AverageTestEpRet | -681 |\n", "| StdTestEpRet | 602 |\n", "| MaxTestEpRet | -34.3 |\n", "| MinTestEpRet | -1.95e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQVals | -1.34e+03 |\n", "| StdQVals | 426 |\n", "| MaxQVals | -492 |\n", "| MinQVals | -2.97e+03 |\n", "| LossPi | 1.32e+03 |\n", "| LossQ | 5.47e+03 |\n", "| Time | 162 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -983 |\n", "| StdEpRet | 911 |\n", "| MaxEpRet | -162 |\n", "| MinEpRet | -3.49e+03 |\n", "| AverageTestEpRet | -448 |\n", "| StdTestEpRet | 465 |\n", "| MaxTestEpRet | -65.8 |\n", "| MinTestEpRet | -1.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQVals | -1.27e+03 |\n", "| StdQVals | 427 |\n", "| MaxQVals | -441 |\n", "| MinQVals | -3.06e+03 |\n", "| LossPi | 1.24e+03 |\n", "| LossQ | 5.33e+03 |\n", "| Time | 172 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -742 |\n", "| StdEpRet | 444 |\n", "| MaxEpRet | -103 |\n", "| MinEpRet | -1.54e+03 |\n", "| AverageTestEpRet | -1.08e+03 |\n", "| StdTestEpRet | 859 |\n", "| MaxTestEpRet | -176 |\n", "| MinTestEpRet | -2.41e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQVals | -1.19e+03 |\n", "| StdQVals | 421 |\n", "| MaxQVals | -392 |\n", "| MinQVals | -2.97e+03 |\n", "| LossPi | 1.17e+03 |\n", "| LossQ | 5.34e+03 |\n", "| Time | 181 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -825 |\n", "| StdEpRet | 723 |\n", "| MaxEpRet | -219 |\n", "| MinEpRet | -2.79e+03 |\n", "| AverageTestEpRet | -781 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -47.8 |\n", "| MinTestEpRet | -3.86e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQVals | -1.13e+03 |\n", "| StdQVals | 417 |\n", "| MaxQVals | -343 |\n", "| MinQVals | -2.89e+03 |\n", "| LossPi | 1.11e+03 |\n", "| LossQ | 5.07e+03 |\n", "| Time | 190 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -627 |\n", "| StdEpRet | 402 |\n", "| MaxEpRet | -90.1 |\n", "| MinEpRet | -1.55e+03 |\n", "| AverageTestEpRet | -863 |\n", "| StdTestEpRet | 830 |\n", "| MaxTestEpRet | -100 |\n", "| MinTestEpRet | -3.17e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQVals | -1.06e+03 |\n", "| StdQVals | 409 |\n", "| MaxQVals | -303 |\n", "| MinQVals | -2.76e+03 |\n", "| LossPi | 1.04e+03 |\n", "| LossQ | 4.94e+03 |\n", "| Time | 199 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -752 |\n", "| StdEpRet | 456 |\n", "| MaxEpRet | -90.3 |\n", "| MinEpRet | -1.4e+03 |\n", "| AverageTestEpRet | -170 |\n", "| StdTestEpRet | 117 |\n", "| MaxTestEpRet | -20.5 |\n", "| MinTestEpRet | -475 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQVals | -1e+03 |\n", "| StdQVals | 401 |\n", "| MaxQVals | -262 |\n", "| MinQVals | -2.71e+03 |\n", "| LossPi | 985 |\n", "| LossQ | 4.63e+03 |\n", "| Time | 208 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -574 |\n", "| StdEpRet | 403 |\n", "| MaxEpRet | -49.7 |\n", "| MinEpRet | -1.66e+03 |\n", "| AverageTestEpRet | -769 |\n", "| StdTestEpRet | 563 |\n", "| MaxTestEpRet | -41.8 |\n", "| MinTestEpRet | -2.07e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQVals | -945 |\n", "| StdQVals | 399 |\n", "| MaxQVals | -221 |\n", "| MinQVals | -2.62e+03 |\n", "| LossPi | 927 |\n", "| LossQ | 4.35e+03 |\n", "| Time | 217 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -673 |\n", "| StdEpRet | 525 |\n", "| MaxEpRet | -59.8 |\n", "| MinEpRet | -1.9e+03 |\n", "| AverageTestEpRet | -532 |\n", "| StdTestEpRet | 315 |\n", "| MaxTestEpRet | -85 |\n", "| MinTestEpRet | -982 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQVals | -884 |\n", "| StdQVals | 392 |\n", "| MaxQVals | -181 |\n", "| MinQVals | -2.56e+03 |\n", "| LossPi | 866 |\n", "| LossQ | 4.22e+03 |\n", "| Time | 226 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -565 |\n", "| StdEpRet | 356 |\n", "| MaxEpRet | -113 |\n", "| MinEpRet | -1.32e+03 |\n", "| AverageTestEpRet | -471 |\n", "| StdTestEpRet | 245 |\n", "| MaxTestEpRet | -26.2 |\n", "| MinTestEpRet | -751 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQVals | -825 |\n", "| StdQVals | 382 |\n", "| MaxQVals | -148 |\n", "| MinQVals | -2.53e+03 |\n", "| LossPi | 807 |\n", "| LossQ | 3.87e+03 |\n", "| Time | 235 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -723 |\n", "| StdEpRet | 533 |\n", "| MaxEpRet | -237 |\n", "| MinEpRet | -2.53e+03 |\n", "| AverageTestEpRet | -757 |\n", "| StdTestEpRet | 781 |\n", "| MaxTestEpRet | -80.1 |\n", "| MinTestEpRet | -2.94e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQVals | -772 |\n", "| StdQVals | 376 |\n", "| MaxQVals | -113 |\n", "| MinQVals | -2.42e+03 |\n", "| LossPi | 754 |\n", "| LossQ | 3.72e+03 |\n", "| Time | 244 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -677 |\n", "| StdEpRet | 482 |\n", "| MaxEpRet | -79.9 |\n", "| MinEpRet | -2.31e+03 |\n", "| AverageTestEpRet | -821 |\n", "| StdTestEpRet | 535 |\n", "| MaxTestEpRet | -64.7 |\n", "| MinTestEpRet | -1.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQVals | -717 |\n", "| StdQVals | 366 |\n", "| MaxQVals | -80.2 |\n", "| MinQVals | -2.38e+03 |\n", "| LossPi | 701 |\n", "| LossQ | 3.45e+03 |\n", "| Time | 254 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -763 |\n", "| StdEpRet | 750 |\n", "| MaxEpRet | -29 |\n", "| MinEpRet | -3.18e+03 |\n", "| AverageTestEpRet | -559 |\n", "| StdTestEpRet | 393 |\n", "| MaxTestEpRet | -98.8 |\n", "| MinTestEpRet | -1.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQVals | -674 |\n", "| StdQVals | 362 |\n", "| MaxQVals | -55.5 |\n", "| MinQVals | -2.31e+03 |\n", "| LossPi | 659 |\n", "| LossQ | 3.49e+03 |\n", "| Time | 263 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -803 |\n", "| StdEpRet | 565 |\n", "| MaxEpRet | -27.6 |\n", "| MinEpRet | -1.83e+03 |\n", "| AverageTestEpRet | -1.03e+03 |\n", "| StdTestEpRet | 1e+03 |\n", "| MaxTestEpRet | -56.6 |\n", "| MinTestEpRet | -3.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQVals | -637 |\n", "| StdQVals | 360 |\n", "| MaxQVals | -27.6 |\n", "| MinQVals | -2.28e+03 |\n", "| LossPi | 621 |\n", "| LossQ | 3.3e+03 |\n", "| Time | 273 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -852 |\n", "| StdEpRet | 766 |\n", "| MaxEpRet | -14.2 |\n", "| MinEpRet | -3.2e+03 |\n", "| AverageTestEpRet | -585 |\n", "| StdTestEpRet | 389 |\n", "| MaxTestEpRet | -50.8 |\n", "| MinTestEpRet | -1.3e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQVals | -598 |\n", "| StdQVals | 353 |\n", "| MaxQVals | -2.32 |\n", "| MinQVals | -2.21e+03 |\n", "| LossPi | 583 |\n", "| LossQ | 3.1e+03 |\n", "| Time | 284 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -569 |\n", "| StdEpRet | 326 |\n", "| MaxEpRet | -152 |\n", "| MinEpRet | -1.34e+03 |\n", "| AverageTestEpRet | -466 |\n", "| StdTestEpRet | 338 |\n", "| MaxTestEpRet | -195 |\n", "| MinTestEpRet | -1.19e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQVals | -560 |\n", "| StdQVals | 345 |\n", "| MaxQVals | 20.3 |\n", "| MinQVals | -2.18e+03 |\n", "| LossPi | 545 |\n", "| LossQ | 2.98e+03 |\n", "| Time | 294 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -805 |\n", "| StdEpRet | 612 |\n", "| MaxEpRet | -43 |\n", "| MinEpRet | -1.93e+03 |\n", "| AverageTestEpRet | -866 |\n", "| StdTestEpRet | 355 |\n", "| MaxTestEpRet | -160 |\n", "| MinTestEpRet | -1.32e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQVals | -528 |\n", "| StdQVals | 342 |\n", "| MaxQVals | 48.9 |\n", "| MinQVals | -2.1e+03 |\n", "| LossPi | 514 |\n", "| LossQ | 2.92e+03 |\n", "| Time | 305 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -508 |\n", "| StdEpRet | 358 |\n", "| MaxEpRet | -77.4 |\n", "| MinEpRet | -1.21e+03 |\n", "| AverageTestEpRet | -646 |\n", "| StdTestEpRet | 521 |\n", "| MaxTestEpRet | -130 |\n", "| MinTestEpRet | -1.87e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQVals | -498 |\n", "| StdQVals | 338 |\n", "| MaxQVals | 66.1 |\n", "| MinQVals | -2.09e+03 |\n", "| LossPi | 484 |\n", "| LossQ | 2.73e+03 |\n", "| Time | 314 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -823 |\n", "| StdEpRet | 744 |\n", "| MaxEpRet | -47.1 |\n", "| MinEpRet | -3.35e+03 |\n", "| AverageTestEpRet | -721 |\n", "| StdTestEpRet | 434 |\n", "| MaxTestEpRet | -153 |\n", "| MinTestEpRet | -1.59e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQVals | -468 |\n", "| StdQVals | 336 |\n", "| MaxQVals | 84.5 |\n", "| MinQVals | -2.04e+03 |\n", "| LossPi | 455 |\n", "| LossQ | 2.57e+03 |\n", "| Time | 323 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -843 |\n", "| StdEpRet | 708 |\n", "| MaxEpRet | -24.4 |\n", "| MinEpRet | -3.17e+03 |\n", "| AverageTestEpRet | -806 |\n", "| StdTestEpRet | 425 |\n", "| MaxTestEpRet | -241 |\n", "| MinTestEpRet | -1.82e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQVals | -440 |\n", "| StdQVals | 329 |\n", "| MaxQVals | 99.4 |\n", "| MinQVals | -1.98e+03 |\n", "| LossPi | 427 |\n", "| LossQ | 2.48e+03 |\n", "| Time | 331 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -781 |\n", "| StdEpRet | 698 |\n", "| MaxEpRet | -280 |\n", "| MinEpRet | -3.24e+03 |\n", "| AverageTestEpRet | -625 |\n", "| StdTestEpRet | 324 |\n", "| MaxTestEpRet | -217 |\n", "| MinTestEpRet | -1.16e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQVals | -415 |\n", "| StdQVals | 325 |\n", "| MaxQVals | 112 |\n", "| MinQVals | -1.94e+03 |\n", "| LossPi | 402 |\n", "| LossQ | 2.29e+03 |\n", "| Time | 340 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -601 |\n", "| StdEpRet | 297 |\n", "| MaxEpRet | -208 |\n", "| MinEpRet | -1.18e+03 |\n", "| AverageTestEpRet | -580 |\n", "| StdTestEpRet | 404 |\n", "| MaxTestEpRet | -65.1 |\n", "| MinTestEpRet | -1.32e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQVals | -391 |\n", "| StdQVals | 324 |\n", "| MaxQVals | 131 |\n", "| MinQVals | -1.9e+03 |\n", "| LossPi | 378 |\n", "| LossQ | 2.3e+03 |\n", "| Time | 347 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -801 |\n", "| StdEpRet | 786 |\n", "| MaxEpRet | -105 |\n", "| MinEpRet | -3.47e+03 |\n", "| AverageTestEpRet | -620 |\n", "| StdTestEpRet | 417 |\n", "| MaxTestEpRet | -172 |\n", "| MinTestEpRet | -1.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQVals | -368 |\n", "| StdQVals | 321 |\n", "| MaxQVals | 147 |\n", "| MinQVals | -1.87e+03 |\n", "| LossPi | 356 |\n", "| LossQ | 2.14e+03 |\n", "| Time | 354 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -568 |\n", "| StdEpRet | 386 |\n", "| MaxEpRet | -68.3 |\n", "| MinEpRet | -1.32e+03 |\n", "| AverageTestEpRet | -440 |\n", "| StdTestEpRet | 297 |\n", "| MaxTestEpRet | -37.6 |\n", "| MinTestEpRet | -941 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQVals | -351 |\n", "| StdQVals | 324 |\n", "| MaxQVals | 160 |\n", "| MinQVals | -1.85e+03 |\n", "| LossPi | 339 |\n", "| LossQ | 2.25e+03 |\n", "| Time | 361 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -746 |\n", "| StdEpRet | 420 |\n", "| MaxEpRet | -94.3 |\n", "| MinEpRet | -1.43e+03 |\n", "| AverageTestEpRet | -619 |\n", "| StdTestEpRet | 273 |\n", "| MaxTestEpRet | -206 |\n", "| MinTestEpRet | -1.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQVals | -326 |\n", "| StdQVals | 319 |\n", "| MaxQVals | 173 |\n", "| MinQVals | -1.84e+03 |\n", "| LossPi | 314 |\n", "| LossQ | 2.21e+03 |\n", "| Time | 370 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -763 |\n", "| StdEpRet | 721 |\n", "| MaxEpRet | -36.5 |\n", "| MinEpRet | -3.1e+03 |\n", "| AverageTestEpRet | -615 |\n", "| StdTestEpRet | 577 |\n", "| MaxTestEpRet | -147 |\n", "| MinTestEpRet | -2.23e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQVals | -308 |\n", "| StdQVals | 318 |\n", "| MaxQVals | 187 |\n", "| MinQVals | -1.8e+03 |\n", "| LossPi | 297 |\n", "| LossQ | 2.18e+03 |\n", "| Time | 381 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -765 |\n", "| StdEpRet | 393 |\n", "| MaxEpRet | -88.4 |\n", "| MinEpRet | -1.5e+03 |\n", "| AverageTestEpRet | -895 |\n", "| StdTestEpRet | 602 |\n", "| MaxTestEpRet | -134 |\n", "| MinTestEpRet | -2.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQVals | -288 |\n", "| StdQVals | 315 |\n", "| MaxQVals | 201 |\n", "| MinQVals | -1.77e+03 |\n", "| LossPi | 276 |\n", "| LossQ | 2.05e+03 |\n", "| Time | 391 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -850 |\n", "| StdEpRet | 887 |\n", "| MaxEpRet | -162 |\n", "| MinEpRet | -3.85e+03 |\n", "| AverageTestEpRet | -497 |\n", "| StdTestEpRet | 304 |\n", "| MaxTestEpRet | -62.3 |\n", "| MinTestEpRet | -980 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQVals | -266 |\n", "| StdQVals | 312 |\n", "| MaxQVals | 210 |\n", "| MinQVals | -1.75e+03 |\n", "| LossPi | 254 |\n", "| LossQ | 1.95e+03 |\n", "| Time | 401 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -506 |\n", "| StdEpRet | 418 |\n", "| MaxEpRet | -62 |\n", "| MinEpRet | -1.58e+03 |\n", "| AverageTestEpRet | -537 |\n", "| StdTestEpRet | 236 |\n", "| MaxTestEpRet | -182 |\n", "| MinTestEpRet | -1e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQVals | -246 |\n", "| StdQVals | 313 |\n", "| MaxQVals | 222 |\n", "| MinQVals | -1.75e+03 |\n", "| LossPi | 235 |\n", "| LossQ | 2e+03 |\n", "| Time | 411 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -482 |\n", "| StdEpRet | 354 |\n", "| MaxEpRet | -122 |\n", "| MinEpRet | -1.46e+03 |\n", "| AverageTestEpRet | -537 |\n", "| StdTestEpRet | 487 |\n", "| MaxTestEpRet | -78.8 |\n", "| MinTestEpRet | -1.77e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQVals | -228 |\n", "| StdQVals | 311 |\n", "| MaxQVals | 231 |\n", "| MinQVals | -1.72e+03 |\n", "| LossPi | 216 |\n", "| LossQ | 2.06e+03 |\n", "| Time | 421 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -846 |\n", "| StdEpRet | 384 |\n", "| MaxEpRet | -190 |\n", "| MinEpRet | -1.86e+03 |\n", "| AverageTestEpRet | -629 |\n", "| StdTestEpRet | 359 |\n", "| MaxTestEpRet | -104 |\n", "| MinTestEpRet | -1.3e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQVals | -209 |\n", "| StdQVals | 308 |\n", "| MaxQVals | 239 |\n", "| MinQVals | -1.68e+03 |\n", "| LossPi | 197 |\n", "| LossQ | 1.93e+03 |\n", "| Time | 429 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -696 |\n", "| StdEpRet | 350 |\n", "| MaxEpRet | -133 |\n", "| MinEpRet | -1.27e+03 |\n", "| AverageTestEpRet | -512 |\n", "| StdTestEpRet | 391 |\n", "| MaxTestEpRet | -64 |\n", "| MinTestEpRet | -1.17e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQVals | -188 |\n", "| StdQVals | 306 |\n", "| MaxQVals | 250 |\n", "| MinQVals | -1.68e+03 |\n", "| LossPi | 176 |\n", "| LossQ | 1.88e+03 |\n", "| Time | 438 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -450 |\n", "| StdEpRet | 318 |\n", "| MaxEpRet | -58.3 |\n", "| MinEpRet | -1.16e+03 |\n", "| AverageTestEpRet | -877 |\n", "| StdTestEpRet | 389 |\n", "| MaxTestEpRet | -273 |\n", "| MinTestEpRet | -1.39e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQVals | -163 |\n", "| StdQVals | 303 |\n", "| MaxQVals | 260 |\n", "| MinQVals | -1.62e+03 |\n", "| LossPi | 151 |\n", "| LossQ | 1.78e+03 |\n", "| Time | 447 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -786 |\n", "| StdEpRet | 612 |\n", "| MaxEpRet | -96 |\n", "| MinEpRet | -2.14e+03 |\n", "| AverageTestEpRet | -577 |\n", "| StdTestEpRet | 187 |\n", "| MaxTestEpRet | -205 |\n", "| MinTestEpRet | -983 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQVals | -139 |\n", "| StdQVals | 296 |\n", "| MaxQVals | 292 |\n", "| MinQVals | -1.55e+03 |\n", "| LossPi | 127 |\n", "| LossQ | 1.75e+03 |\n", "| Time | 455 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -586 |\n", "| StdEpRet | 365 |\n", "| MaxEpRet | -117 |\n", "| MinEpRet | -1.39e+03 |\n", "| AverageTestEpRet | -826 |\n", "| StdTestEpRet | 702 |\n", "| MaxTestEpRet | -64 |\n", "| MinTestEpRet | -2.56e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQVals | -124 |\n", "| StdQVals | 295 |\n", "| MaxQVals | 300 |\n", "| MinQVals | -1.54e+03 |\n", "| LossPi | 112 |\n", "| LossQ | 1.74e+03 |\n", "| Time | 464 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -497 |\n", "| StdEpRet | 425 |\n", "| MaxEpRet | -24.1 |\n", "| MinEpRet | -1.32e+03 |\n", "| AverageTestEpRet | -423 |\n", "| StdTestEpRet | 177 |\n", "| MaxTestEpRet | -178 |\n", "| MinTestEpRet | -669 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQVals | -103 |\n", "| StdQVals | 294 |\n", "| MaxQVals | 326 |\n", "| MinQVals | -1.53e+03 |\n", "| LossPi | 90.8 |\n", "| LossQ | 1.65e+03 |\n", "| Time | 473 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -587 |\n", "| StdEpRet | 304 |\n", "| MaxEpRet | -80.3 |\n", "| MinEpRet | -1.07e+03 |\n", "| AverageTestEpRet | -629 |\n", "| StdTestEpRet | 302 |\n", "| MaxTestEpRet | -260 |\n", "| MinTestEpRet | -1.22e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQVals | -80.3 |\n", "| StdQVals | 291 |\n", "| MaxQVals | 332 |\n", "| MinQVals | -1.49e+03 |\n", "| LossPi | 68.4 |\n", "| LossQ | 1.59e+03 |\n", "| Time | 483 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -480 |\n", "| StdEpRet | 442 |\n", "| MaxEpRet | -45 |\n", "| MinEpRet | -1.71e+03 |\n", "| AverageTestEpRet | -634 |\n", "| StdTestEpRet | 278 |\n", "| MaxTestEpRet | -181 |\n", "| MinTestEpRet | -1.09e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQVals | -60.9 |\n", "| StdQVals | 287 |\n", "| MaxQVals | 337 |\n", "| MinQVals | -1.5e+03 |\n", "| LossPi | 49.2 |\n", "| LossQ | 1.58e+03 |\n", "| Time | 492 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -442 |\n", "| StdEpRet | 294 |\n", "| MaxEpRet | -40.4 |\n", "| MinEpRet | -1.13e+03 |\n", "| AverageTestEpRet | -558 |\n", "| StdTestEpRet | 289 |\n", "| MaxTestEpRet | -168 |\n", "| MinTestEpRet | -1.21e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQVals | -43.3 |\n", "| StdQVals | 285 |\n", "| MaxQVals | 345 |\n", "| MinQVals | -1.48e+03 |\n", "| LossPi | 31.7 |\n", "| LossQ | 1.51e+03 |\n", "| Time | 500 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -717 |\n", "| StdEpRet | 615 |\n", "| MaxEpRet | -90.2 |\n", "| MinEpRet | -2.7e+03 |\n", "| AverageTestEpRet | -522 |\n", "| StdTestEpRet | 326 |\n", "| MaxTestEpRet | -97.2 |\n", "| MinTestEpRet | -1.08e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQVals | -23.8 |\n", "| StdQVals | 284 |\n", "| MaxQVals | 357 |\n", "| MinQVals | -1.45e+03 |\n", "| LossPi | 12.3 |\n", "| LossQ | 1.56e+03 |\n", "| Time | 509 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -686 |\n", "| StdEpRet | 649 |\n", "| MaxEpRet | -86.4 |\n", "| MinEpRet | -2.62e+03 |\n", "| AverageTestEpRet | -625 |\n", "| StdTestEpRet | 411 |\n", "| MaxTestEpRet | -189 |\n", "| MinTestEpRet | -1.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQVals | -6.46 |\n", "| StdQVals | 283 |\n", "| MaxQVals | 363 |\n", "| MinQVals | -1.4e+03 |\n", "| LossPi | -5.08 |\n", "| LossQ | 1.53e+03 |\n", "| Time | 517 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 0\n", "logger_kwargs = dict(output_dir='ddpg_b0', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 10000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "actnoise_b = 0.1\n", "pilr_b = 0.001\n", "qlr_b = 0.001\n", "\n", "# Baseline 0 training\n", "spinup.ddpg_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Log dir ddpg_b1 already exists! Storing info there anyway.\n", "\u001b[32;1mLogging data to ddpg_b1/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 1000\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"ddpg_b1\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='ddpg_b1/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"ddpg_b1\"\n", " },\n", " \"max_ep_len\":\t110,\n", " \"num_test_episodes\":\t10,\n", " \"pi_lr\":\t0.001,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t10,\n", " \"start_steps\":\t20000,\n", " \"steps_per_epoch\":\t1650,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 10002, \t q: 11001\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -7.14e+03 |\n", "| StdEpRet | 1.09e+03 |\n", "| MaxEpRet | -5.48e+03 |\n", "| MinEpRet | -9.07e+03 |\n", "| AverageTestEpRet | -6.71e+03 |\n", "| StdTestEpRet | 2.33e+03 |\n", "| MaxTestEpRet | -4.14e+03 |\n", "| MinTestEpRet | -1.09e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQVals | -144 |\n", "| StdQVals | 69.1 |\n", "| MaxQVals | 4.44 |\n", "| MinQVals | -413 |\n", "| LossPi | 144 |\n", "| LossQ | 1.27e+03 |\n", "| Time | 5.23 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -7.21e+03 |\n", "| StdEpRet | 1.48e+03 |\n", "| MaxEpRet | -5.28e+03 |\n", "| MinEpRet | -9.98e+03 |\n", "| AverageTestEpRet | -6.76e+03 |\n", "| StdTestEpRet | 2.32e+03 |\n", "| MaxTestEpRet | -4.13e+03 |\n", "| MinTestEpRet | -1.07e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQVals | -434 |\n", "| StdQVals | 156 |\n", "| MaxQVals | -54 |\n", "| MinQVals | -1.12e+03 |\n", "| LossPi | 426 |\n", "| LossQ | 1.69e+03 |\n", "| Time | 14.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -6.95e+03 |\n", "| StdEpRet | 1.12e+03 |\n", "| MaxEpRet | -4.69e+03 |\n", "| MinEpRet | -9.1e+03 |\n", "| AverageTestEpRet | -6.44e+03 |\n", "| StdTestEpRet | 1.61e+03 |\n", "| MaxTestEpRet | -3.08e+03 |\n", "| MinTestEpRet | -8.84e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQVals | -765 |\n", "| StdQVals | 200 |\n", "| MaxQVals | -253 |\n", "| MinQVals | -1.61e+03 |\n", "| LossPi | 743 |\n", "| LossQ | 2.46e+03 |\n", "| Time | 23.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -7.14e+03 |\n", "| StdEpRet | 893 |\n", "| MaxEpRet | -5.27e+03 |\n", "| MinEpRet | -8.69e+03 |\n", "| AverageTestEpRet | -4.88e+03 |\n", "| StdTestEpRet | 1.73e+03 |\n", "| MaxTestEpRet | -1.23e+03 |\n", "| MinTestEpRet | -7.36e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQVals | -1.03e+03 |\n", "| StdQVals | 230 |\n", "| MaxQVals | -407 |\n", "| MinQVals | -1.99e+03 |\n", "| LossPi | 1e+03 |\n", "| LossQ | 3.34e+03 |\n", "| Time | 33 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.89e+03 |\n", "| StdEpRet | 1.48e+03 |\n", "| MaxEpRet | -4.7e+03 |\n", "| MinEpRet | -1.01e+04 |\n", "| AverageTestEpRet | -4.4e+03 |\n", "| StdTestEpRet | 1.24e+03 |\n", "| MaxTestEpRet | -1.98e+03 |\n", "| MinTestEpRet | -6.62e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQVals | -1.26e+03 |\n", "| StdQVals | 264 |\n", "| MaxQVals | -527 |\n", "| MinQVals | -2.22e+03 |\n", "| LossPi | 1.23e+03 |\n", "| LossQ | 4.19e+03 |\n", "| Time | 43.9 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -7.16e+03 |\n", "| StdEpRet | 1.49e+03 |\n", "| MaxEpRet | -3.48e+03 |\n", "| MinEpRet | -9.86e+03 |\n", "| AverageTestEpRet | -2.57e+03 |\n", "| StdTestEpRet | 2.46e+03 |\n", "| MaxTestEpRet | -62.8 |\n", "| MinTestEpRet | -8.53e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQVals | -1.45e+03 |\n", "| StdQVals | 293 |\n", "| MaxQVals | -674 |\n", "| MinQVals | -2.51e+03 |\n", "| LossPi | 1.42e+03 |\n", "| LossQ | 4.41e+03 |\n", "| Time | 55.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -6.59e+03 |\n", "| StdEpRet | 956 |\n", "| MaxEpRet | -5.07e+03 |\n", "| MinEpRet | -8.05e+03 |\n", "| AverageTestEpRet | -2.67e+03 |\n", "| StdTestEpRet | 1.88e+03 |\n", "| MaxTestEpRet | -240 |\n", "| MinTestEpRet | -5.54e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQVals | -1.62e+03 |\n", "| StdQVals | 310 |\n", "| MaxQVals | -809 |\n", "| MinQVals | -2.78e+03 |\n", "| LossPi | 1.6e+03 |\n", "| LossQ | 4.25e+03 |\n", "| Time | 65.8 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -7.1e+03 |\n", "| StdEpRet | 1.36e+03 |\n", "| MaxEpRet | -4.85e+03 |\n", "| MinEpRet | -9.07e+03 |\n", "| AverageTestEpRet | -3.14e+03 |\n", "| StdTestEpRet | 1.93e+03 |\n", "| MaxTestEpRet | -419 |\n", "| MinTestEpRet | -5.35e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQVals | -1.8e+03 |\n", "| StdQVals | 326 |\n", "| MaxQVals | -954 |\n", "| MinQVals | -2.96e+03 |\n", "| LossPi | 1.77e+03 |\n", "| LossQ | 4.36e+03 |\n", "| Time | 76.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -7.19e+03 |\n", "| StdEpRet | 1.08e+03 |\n", "| MaxEpRet | -4.65e+03 |\n", "| MinEpRet | -8.69e+03 |\n", "| AverageTestEpRet | -1.43e+03 |\n", "| StdTestEpRet | 906 |\n", "| MaxTestEpRet | -273 |\n", "| MinTestEpRet | -3.29e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQVals | -1.95e+03 |\n", "| StdQVals | 336 |\n", "| MaxQVals | -1.09e+03 |\n", "| MinQVals | -3.6e+03 |\n", "| LossPi | 1.92e+03 |\n", "| LossQ | 4.36e+03 |\n", "| Time | 87.4 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -6.57e+03 |\n", "| StdEpRet | 1.32e+03 |\n", "| MaxEpRet | -3.71e+03 |\n", "| MinEpRet | -8.64e+03 |\n", "| AverageTestEpRet | -2.12e+03 |\n", "| StdTestEpRet | 1.6e+03 |\n", "| MaxTestEpRet | -197 |\n", "| MinTestEpRet | -4.99e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQVals | -2.08e+03 |\n", "| StdQVals | 349 |\n", "| MaxQVals | -1.22e+03 |\n", "| MinQVals | -3.62e+03 |\n", "| LossPi | 2.05e+03 |\n", "| LossQ | 4.39e+03 |\n", "| Time | 98.4 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -6.6e+03 |\n", "| StdEpRet | 1.12e+03 |\n", "| MaxEpRet | -5.17e+03 |\n", "| MinEpRet | -8.66e+03 |\n", "| AverageTestEpRet | -1.52e+03 |\n", "| StdTestEpRet | 1.31e+03 |\n", "| MaxTestEpRet | -272 |\n", "| MinTestEpRet | -4.05e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQVals | -2.17e+03 |\n", "| StdQVals | 346 |\n", "| MaxQVals | -1.31e+03 |\n", "| MinQVals | -3.7e+03 |\n", "| LossPi | 2.14e+03 |\n", "| LossQ | 4.52e+03 |\n", "| Time | 109 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -6.48e+03 |\n", "| StdEpRet | 1.56e+03 |\n", "| MaxEpRet | -4.3e+03 |\n", "| MinEpRet | -9.64e+03 |\n", "| AverageTestEpRet | -853 |\n", "| StdTestEpRet | 975 |\n", "| MaxTestEpRet | -252 |\n", "| MinTestEpRet | -3.67e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQVals | -2.23e+03 |\n", "| StdQVals | 351 |\n", "| MaxQVals | -1.33e+03 |\n", "| MinQVals | -3.71e+03 |\n", "| LossPi | 2.19e+03 |\n", "| LossQ | 4.55e+03 |\n", "| Time | 120 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -2.15e+03 |\n", "| StdEpRet | 1.82e+03 |\n", "| MaxEpRet | -104 |\n", "| MinEpRet | -5.94e+03 |\n", "| AverageTestEpRet | -904 |\n", "| StdTestEpRet | 698 |\n", "| MaxTestEpRet | -112 |\n", "| MinTestEpRet | -2.64e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQVals | -2.26e+03 |\n", "| StdQVals | 358 |\n", "| MaxQVals | -1.36e+03 |\n", "| MinQVals | -3.72e+03 |\n", "| LossPi | 2.22e+03 |\n", "| LossQ | 4.46e+03 |\n", "| Time | 130 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -1.07e+03 |\n", "| StdEpRet | 1.01e+03 |\n", "| MaxEpRet | -50.3 |\n", "| MinEpRet | -3.32e+03 |\n", "| AverageTestEpRet | -1.86e+03 |\n", "| StdTestEpRet | 1.43e+03 |\n", "| MaxTestEpRet | -70.3 |\n", "| MinTestEpRet | -3.91e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQVals | -2.27e+03 |\n", "| StdQVals | 365 |\n", "| MaxQVals | -1.38e+03 |\n", "| MinQVals | -3.67e+03 |\n", "| LossPi | 2.24e+03 |\n", "| LossQ | 4.4e+03 |\n", "| Time | 139 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -1.17e+03 |\n", "| StdEpRet | 1.42e+03 |\n", "| MaxEpRet | -90.8 |\n", "| MinEpRet | -5.9e+03 |\n", "| AverageTestEpRet | -1.81e+03 |\n", "| StdTestEpRet | 2.05e+03 |\n", "| MaxTestEpRet | -39.8 |\n", "| MinTestEpRet | -7.58e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQVals | -2.28e+03 |\n", "| StdQVals | 384 |\n", "| MaxQVals | -1.41e+03 |\n", "| MinQVals | -3.7e+03 |\n", "| LossPi | 2.25e+03 |\n", "| LossQ | 4.73e+03 |\n", "| Time | 149 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -1.07e+03 |\n", "| StdEpRet | 900 |\n", "| MaxEpRet | -161 |\n", "| MinEpRet | -3.06e+03 |\n", "| AverageTestEpRet | -666 |\n", "| StdTestEpRet | 658 |\n", "| MaxTestEpRet | -36.8 |\n", "| MinTestEpRet | -2.14e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQVals | -2.26e+03 |\n", "| StdQVals | 408 |\n", "| MaxQVals | -1.34e+03 |\n", "| MinQVals | -3.72e+03 |\n", "| LossPi | 2.23e+03 |\n", "| LossQ | 5.27e+03 |\n", "| Time | 158 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -735 |\n", "| StdEpRet | 506 |\n", "| MaxEpRet | -149 |\n", "| MinEpRet | -1.86e+03 |\n", "| AverageTestEpRet | -1.06e+03 |\n", "| StdTestEpRet | 857 |\n", "| MaxTestEpRet | -432 |\n", "| MinTestEpRet | -3.48e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQVals | -2.21e+03 |\n", "| StdQVals | 427 |\n", "| MaxQVals | -1.24e+03 |\n", "| MinQVals | -3.72e+03 |\n", "| LossPi | 2.18e+03 |\n", "| LossQ | 5.37e+03 |\n", "| Time | 169 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -733 |\n", "| StdEpRet | 503 |\n", "| MaxEpRet | -133 |\n", "| MinEpRet | -2.05e+03 |\n", "| AverageTestEpRet | -419 |\n", "| StdTestEpRet | 199 |\n", "| MaxTestEpRet | -124 |\n", "| MinTestEpRet | -909 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQVals | -2.12e+03 |\n", "| StdQVals | 444 |\n", "| MaxQVals | -1.11e+03 |\n", "| MinQVals | -3.7e+03 |\n", "| LossPi | 2.08e+03 |\n", "| LossQ | 5.27e+03 |\n", "| Time | 180 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -1.07e+03 |\n", "| StdEpRet | 1.01e+03 |\n", "| MaxEpRet | -175 |\n", "| MinEpRet | -3.62e+03 |\n", "| AverageTestEpRet | -947 |\n", "| StdTestEpRet | 1.22e+03 |\n", "| MaxTestEpRet | -150 |\n", "| MinTestEpRet | -4.57e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQVals | -2.01e+03 |\n", "| StdQVals | 455 |\n", "| MaxQVals | -912 |\n", "| MinQVals | -3.57e+03 |\n", "| LossPi | 1.98e+03 |\n", "| LossQ | 5.19e+03 |\n", "| Time | 191 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -1.06e+03 |\n", "| StdEpRet | 1.57e+03 |\n", "| MaxEpRet | -133 |\n", "| MinEpRet | -6.81e+03 |\n", "| AverageTestEpRet | -1.01e+03 |\n", "| StdTestEpRet | 843 |\n", "| MaxTestEpRet | -32.9 |\n", "| MinTestEpRet | -3.37e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQVals | -1.89e+03 |\n", "| StdQVals | 464 |\n", "| MaxQVals | -793 |\n", "| MinQVals | -3.5e+03 |\n", "| LossPi | 1.85e+03 |\n", "| LossQ | 4.81e+03 |\n", "| Time | 200 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -742 |\n", "| StdEpRet | 596 |\n", "| MaxEpRet | -103 |\n", "| MinEpRet | -2.31e+03 |\n", "| AverageTestEpRet | -618 |\n", "| StdTestEpRet | 405 |\n", "| MaxTestEpRet | -106 |\n", "| MinTestEpRet | -1.49e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQVals | -1.76e+03 |\n", "| StdQVals | 470 |\n", "| MaxQVals | -662 |\n", "| MinQVals | -3.41e+03 |\n", "| LossPi | 1.73e+03 |\n", "| LossQ | 4.45e+03 |\n", "| Time | 210 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -1.13e+03 |\n", "| StdEpRet | 1.07e+03 |\n", "| MaxEpRet | -253 |\n", "| MinEpRet | -3.85e+03 |\n", "| AverageTestEpRet | -582 |\n", "| StdTestEpRet | 350 |\n", "| MaxTestEpRet | -78.6 |\n", "| MinTestEpRet | -1.11e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQVals | -1.65e+03 |\n", "| StdQVals | 473 |\n", "| MaxQVals | -528 |\n", "| MinQVals | -3.41e+03 |\n", "| LossPi | 1.61e+03 |\n", "| LossQ | 4.25e+03 |\n", "| Time | 220 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -842 |\n", "| StdEpRet | 694 |\n", "| MaxEpRet | -184 |\n", "| MinEpRet | -2.86e+03 |\n", "| AverageTestEpRet | -610 |\n", "| StdTestEpRet | 470 |\n", "| MaxTestEpRet | -75.9 |\n", "| MinTestEpRet | -1.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQVals | -1.55e+03 |\n", "| StdQVals | 472 |\n", "| MaxQVals | -404 |\n", "| MinQVals | -3.34e+03 |\n", "| LossPi | 1.52e+03 |\n", "| LossQ | 4.02e+03 |\n", "| Time | 229 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -979 |\n", "| StdEpRet | 997 |\n", "| MaxEpRet | -151 |\n", "| MinEpRet | -4.5e+03 |\n", "| AverageTestEpRet | -940 |\n", "| StdTestEpRet | 578 |\n", "| MaxTestEpRet | -303 |\n", "| MinTestEpRet | -2.14e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQVals | -1.45e+03 |\n", "| StdQVals | 471 |\n", "| MaxQVals | -282 |\n", "| MinQVals | -3.21e+03 |\n", "| LossPi | 1.41e+03 |\n", "| LossQ | 3.65e+03 |\n", "| Time | 238 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -827 |\n", "| StdEpRet | 1.01e+03 |\n", "| MaxEpRet | -65.9 |\n", "| MinEpRet | -4.32e+03 |\n", "| AverageTestEpRet | -507 |\n", "| StdTestEpRet | 408 |\n", "| MaxTestEpRet | -129 |\n", "| MinTestEpRet | -1.55e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQVals | -1.34e+03 |\n", "| StdQVals | 475 |\n", "| MaxQVals | -198 |\n", "| MinQVals | -3.12e+03 |\n", "| LossPi | 1.31e+03 |\n", "| LossQ | 3.46e+03 |\n", "| Time | 247 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -570 |\n", "| StdEpRet | 393 |\n", "| MaxEpRet | -219 |\n", "| MinEpRet | -1.64e+03 |\n", "| AverageTestEpRet | -1.38e+03 |\n", "| StdTestEpRet | 2.39e+03 |\n", "| MaxTestEpRet | -199 |\n", "| MinTestEpRet | -8.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQVals | -1.23e+03 |\n", "| StdQVals | 468 |\n", "| MaxQVals | -118 |\n", "| MinQVals | -2.98e+03 |\n", "| LossPi | 1.2e+03 |\n", "| LossQ | 3.32e+03 |\n", "| Time | 257 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -548 |\n", "| StdEpRet | 222 |\n", "| MaxEpRet | -206 |\n", "| MinEpRet | -902 |\n", "| AverageTestEpRet | -499 |\n", "| StdTestEpRet | 385 |\n", "| MaxTestEpRet | -39.2 |\n", "| MinTestEpRet | -1.35e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQVals | -1.12e+03 |\n", "| StdQVals | 456 |\n", "| MaxQVals | -37.4 |\n", "| MinQVals | -2.85e+03 |\n", "| LossPi | 1.09e+03 |\n", "| LossQ | 3.1e+03 |\n", "| Time | 266 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -729 |\n", "| StdEpRet | 468 |\n", "| MaxEpRet | -39 |\n", "| MinEpRet | -1.69e+03 |\n", "| AverageTestEpRet | -639 |\n", "| StdTestEpRet | 634 |\n", "| MaxTestEpRet | -180 |\n", "| MinTestEpRet | -2.42e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQVals | -1.02e+03 |\n", "| StdQVals | 441 |\n", "| MaxQVals | 8.18 |\n", "| MinQVals | -2.7e+03 |\n", "| LossPi | 985 |\n", "| LossQ | 2.85e+03 |\n", "| Time | 275 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -675 |\n", "| StdEpRet | 286 |\n", "| MaxEpRet | -215 |\n", "| MinEpRet | -1.16e+03 |\n", "| AverageTestEpRet | -543 |\n", "| StdTestEpRet | 308 |\n", "| MaxTestEpRet | -88.7 |\n", "| MinTestEpRet | -1.19e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQVals | -915 |\n", "| StdQVals | 423 |\n", "| MaxQVals | 68.8 |\n", "| MinQVals | -2.6e+03 |\n", "| LossPi | 884 |\n", "| LossQ | 2.65e+03 |\n", "| Time | 285 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -621 |\n", "| StdEpRet | 300 |\n", "| MaxEpRet | -123 |\n", "| MinEpRet | -1.19e+03 |\n", "| AverageTestEpRet | -624 |\n", "| StdTestEpRet | 402 |\n", "| MaxTestEpRet | -120 |\n", "| MinTestEpRet | -1.65e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQVals | -816 |\n", "| StdQVals | 410 |\n", "| MaxQVals | 89.4 |\n", "| MinQVals | -2.46e+03 |\n", "| LossPi | 786 |\n", "| LossQ | 2.62e+03 |\n", "| Time | 294 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -575 |\n", "| StdEpRet | 326 |\n", "| MaxEpRet | -162 |\n", "| MinEpRet | -1.25e+03 |\n", "| AverageTestEpRet | -771 |\n", "| StdTestEpRet | 581 |\n", "| MaxTestEpRet | -185 |\n", "| MinTestEpRet | -1.98e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQVals | -722 |\n", "| StdQVals | 394 |\n", "| MaxQVals | 128 |\n", "| MinQVals | -2.35e+03 |\n", "| LossPi | 692 |\n", "| LossQ | 2.52e+03 |\n", "| Time | 304 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -948 |\n", "| StdEpRet | 1.13e+03 |\n", "| MaxEpRet | -203 |\n", "| MinEpRet | -4.87e+03 |\n", "| AverageTestEpRet | -432 |\n", "| StdTestEpRet | 203 |\n", "| MaxTestEpRet | -136 |\n", "| MinTestEpRet | -820 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQVals | -629 |\n", "| StdQVals | 375 |\n", "| MaxQVals | 168 |\n", "| MinQVals | -2.12e+03 |\n", "| LossPi | 599 |\n", "| LossQ | 2.39e+03 |\n", "| Time | 313 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -645 |\n", "| StdEpRet | 334 |\n", "| MaxEpRet | -236 |\n", "| MinEpRet | -1.47e+03 |\n", "| AverageTestEpRet | -571 |\n", "| StdTestEpRet | 244 |\n", "| MaxTestEpRet | -172 |\n", "| MinTestEpRet | -850 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQVals | -543 |\n", "| StdQVals | 363 |\n", "| MaxQVals | 212 |\n", "| MinQVals | -2.03e+03 |\n", "| LossPi | 513 |\n", "| LossQ | 2.31e+03 |\n", "| Time | 324 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -678 |\n", "| StdEpRet | 551 |\n", "| MaxEpRet | -140 |\n", "| MinEpRet | -2.28e+03 |\n", "| AverageTestEpRet | -527 |\n", "| StdTestEpRet | 379 |\n", "| MaxTestEpRet | -53.7 |\n", "| MinTestEpRet | -1.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQVals | -461 |\n", "| StdQVals | 350 |\n", "| MaxQVals | 253 |\n", "| MinQVals | -1.93e+03 |\n", "| LossPi | 432 |\n", "| LossQ | 2.2e+03 |\n", "| Time | 336 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -706 |\n", "| StdEpRet | 350 |\n", "| MaxEpRet | -92.1 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -719 |\n", "| StdTestEpRet | 329 |\n", "| MaxTestEpRet | -95.6 |\n", "| MinTestEpRet | -1.32e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQVals | -386 |\n", "| StdQVals | 340 |\n", "| MaxQVals | 282 |\n", "| MinQVals | -1.83e+03 |\n", "| LossPi | 357 |\n", "| LossQ | 2.15e+03 |\n", "| Time | 348 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -489 |\n", "| StdEpRet | 245 |\n", "| MaxEpRet | -96.9 |\n", "| MinEpRet | -883 |\n", "| AverageTestEpRet | -543 |\n", "| StdTestEpRet | 276 |\n", "| MaxTestEpRet | -231 |\n", "| MinTestEpRet | -1.21e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQVals | -310 |\n", "| StdQVals | 327 |\n", "| MaxQVals | 316 |\n", "| MinQVals | -1.73e+03 |\n", "| LossPi | 282 |\n", "| LossQ | 2.05e+03 |\n", "| Time | 359 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -717 |\n", "| StdEpRet | 456 |\n", "| MaxEpRet | -45.3 |\n", "| MinEpRet | -1.62e+03 |\n", "| AverageTestEpRet | -1.72e+03 |\n", "| StdTestEpRet | 2.52e+03 |\n", "| MaxTestEpRet | -78.1 |\n", "| MinTestEpRet | -8.97e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQVals | -245 |\n", "| StdQVals | 317 |\n", "| MaxQVals | 356 |\n", "| MinQVals | -1.58e+03 |\n", "| LossPi | 218 |\n", "| LossQ | 1.93e+03 |\n", "| Time | 370 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -812 |\n", "| StdEpRet | 886 |\n", "| MaxEpRet | -83.9 |\n", "| MinEpRet | -3.72e+03 |\n", "| AverageTestEpRet | -1.5e+03 |\n", "| StdTestEpRet | 2.56e+03 |\n", "| MaxTestEpRet | -234 |\n", "| MinTestEpRet | -9.15e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQVals | -193 |\n", "| StdQVals | 308 |\n", "| MaxQVals | 396 |\n", "| MinQVals | -1.52e+03 |\n", "| LossPi | 167 |\n", "| LossQ | 1.82e+03 |\n", "| Time | 381 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -536 |\n", "| StdEpRet | 405 |\n", "| MaxEpRet | -47.5 |\n", "| MinEpRet | -1.63e+03 |\n", "| AverageTestEpRet | -509 |\n", "| StdTestEpRet | 313 |\n", "| MaxTestEpRet | -99.5 |\n", "| MinTestEpRet | -1.24e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQVals | -143 |\n", "| StdQVals | 300 |\n", "| MaxQVals | 426 |\n", "| MinQVals | -1.4e+03 |\n", "| LossPi | 117 |\n", "| LossQ | 1.72e+03 |\n", "| Time | 392 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -954 |\n", "| StdEpRet | 1.03e+03 |\n", "| MaxEpRet | -283 |\n", "| MinEpRet | -4.69e+03 |\n", "| AverageTestEpRet | -655 |\n", "| StdTestEpRet | 302 |\n", "| MaxTestEpRet | -133 |\n", "| MinTestEpRet | -1.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQVals | -100 |\n", "| StdQVals | 294 |\n", "| MaxQVals | 467 |\n", "| MinQVals | -1.32e+03 |\n", "| LossPi | 75.2 |\n", "| LossQ | 1.74e+03 |\n", "| Time | 402 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -804 |\n", "| StdEpRet | 775 |\n", "| MaxEpRet | -89.1 |\n", "| MinEpRet | -3.35e+03 |\n", "| AverageTestEpRet | -552 |\n", "| StdTestEpRet | 335 |\n", "| MaxTestEpRet | -158 |\n", "| MinTestEpRet | -1.09e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQVals | -63.2 |\n", "| StdQVals | 289 |\n", "| MaxQVals | 520 |\n", "| MinQVals | -1.24e+03 |\n", "| LossPi | 39 |\n", "| LossQ | 1.7e+03 |\n", "| Time | 411 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -748 |\n", "| StdEpRet | 326 |\n", "| MaxEpRet | -298 |\n", "| MinEpRet | -1.45e+03 |\n", "| AverageTestEpRet | -618 |\n", "| StdTestEpRet | 288 |\n", "| MaxTestEpRet | -219 |\n", "| MinTestEpRet | -1.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQVals | -24.8 |\n", "| StdQVals | 282 |\n", "| MaxQVals | 528 |\n", "| MinQVals | -1.24e+03 |\n", "| LossPi | 0.71 |\n", "| LossQ | 1.65e+03 |\n", "| Time | 421 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -692 |\n", "| StdEpRet | 506 |\n", "| MaxEpRet | -37.6 |\n", "| MinEpRet | -1.71e+03 |\n", "| AverageTestEpRet | -745 |\n", "| StdTestEpRet | 315 |\n", "| MaxTestEpRet | -382 |\n", "| MinTestEpRet | -1.56e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQVals | 9.08 |\n", "| StdQVals | 277 |\n", "| MaxQVals | 553 |\n", "| MinQVals | -1.14e+03 |\n", "| LossPi | -31.9 |\n", "| LossQ | 1.6e+03 |\n", "| Time | 431 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -616 |\n", "| StdEpRet | 316 |\n", "| MaxEpRet | -103 |\n", "| MinEpRet | -1.3e+03 |\n", "| AverageTestEpRet | -848 |\n", "| StdTestEpRet | 327 |\n", "| MaxTestEpRet | -470 |\n", "| MinTestEpRet | -1.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQVals | 35.5 |\n", "| StdQVals | 275 |\n", "| MaxQVals | 563 |\n", "| MinQVals | -1.12e+03 |\n", "| LossPi | -58.2 |\n", "| LossQ | 1.56e+03 |\n", "| Time | 440 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -771 |\n", "| StdEpRet | 461 |\n", "| MaxEpRet | -67.5 |\n", "| MinEpRet | -1.77e+03 |\n", "| AverageTestEpRet | -671 |\n", "| StdTestEpRet | 399 |\n", "| MaxTestEpRet | -155 |\n", "| MinTestEpRet | -1.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQVals | 63.8 |\n", "| StdQVals | 270 |\n", "| MaxQVals | 583 |\n", "| MinQVals | -1.11e+03 |\n", "| LossPi | -86.5 |\n", "| LossQ | 1.51e+03 |\n", "| Time | 450 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -673 |\n", "| StdEpRet | 441 |\n", "| MaxEpRet | -56.6 |\n", "| MinEpRet | -1.36e+03 |\n", "| AverageTestEpRet | -834 |\n", "| StdTestEpRet | 721 |\n", "| MaxTestEpRet | -126 |\n", "| MinTestEpRet | -2.87e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQVals | 90.2 |\n", "| StdQVals | 266 |\n", "| MaxQVals | 608 |\n", "| MinQVals | -1.06e+03 |\n", "| LossPi | -112 |\n", "| LossQ | 1.41e+03 |\n", "| Time | 459 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -612 |\n", "| StdEpRet | 339 |\n", "| MaxEpRet | -94.3 |\n", "| MinEpRet | -1.33e+03 |\n", "| AverageTestEpRet | -448 |\n", "| StdTestEpRet | 330 |\n", "| MaxTestEpRet | -20.4 |\n", "| MinTestEpRet | -1.13e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQVals | 107 |\n", "| StdQVals | 265 |\n", "| MaxQVals | 631 |\n", "| MinQVals | -1.05e+03 |\n", "| LossPi | -128 |\n", "| LossQ | 1.42e+03 |\n", "| Time | 468 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -568 |\n", "| StdEpRet | 285 |\n", "| MaxEpRet | -68.5 |\n", "| MinEpRet | -1.3e+03 |\n", "| AverageTestEpRet | -643 |\n", "| StdTestEpRet | 339 |\n", "| MaxTestEpRet | -141 |\n", "| MinTestEpRet | -1.24e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQVals | 129 |\n", "| StdQVals | 267 |\n", "| MaxQVals | 667 |\n", "| MinQVals | -1.02e+03 |\n", "| LossPi | -150 |\n", "| LossQ | 1.37e+03 |\n", "| Time | 478 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -616 |\n", "| StdEpRet | 302 |\n", "| MaxEpRet | -188 |\n", "| MinEpRet | -1.36e+03 |\n", "| AverageTestEpRet | -672 |\n", "| StdTestEpRet | 345 |\n", "| MaxTestEpRet | -175 |\n", "| MinTestEpRet | -1.15e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQVals | 150 |\n", "| StdQVals | 266 |\n", "| MaxQVals | 676 |\n", "| MinQVals | -1.01e+03 |\n", "| LossPi | -171 |\n", "| LossQ | 1.36e+03 |\n", "| Time | 488 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -584 |\n", "| StdEpRet | 338 |\n", "| MaxEpRet | -179 |\n", "| MinEpRet | -1.21e+03 |\n", "| AverageTestEpRet | -388 |\n", "| StdTestEpRet | 216 |\n", "| MaxTestEpRet | -101 |\n", "| MinTestEpRet | -817 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQVals | 170 |\n", "| StdQVals | 264 |\n", "| MaxQVals | 687 |\n", "| MinQVals | -980 |\n", "| LossPi | -191 |\n", "| LossQ | 1.33e+03 |\n", "| Time | 497 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -589 |\n", "| StdEpRet | 381 |\n", "| MaxEpRet | -36.9 |\n", "| MinEpRet | -1.2e+03 |\n", "| AverageTestEpRet | -509 |\n", "| StdTestEpRet | 244 |\n", "| MaxTestEpRet | -191 |\n", "| MinTestEpRet | -886 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQVals | 192 |\n", "| StdQVals | 264 |\n", "| MaxQVals | 740 |\n", "| MinQVals | -953 |\n", "| LossPi | -214 |\n", "| LossQ | 1.29e+03 |\n", "| Time | 506 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -663 |\n", "| StdEpRet | 299 |\n", "| MaxEpRet | -81.1 |\n", "| MinEpRet | -1.24e+03 |\n", "| AverageTestEpRet | -864 |\n", "| StdTestEpRet | 444 |\n", "| MaxTestEpRet | -410 |\n", "| MinTestEpRet | -2.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQVals | 219 |\n", "| StdQVals | 263 |\n", "| MaxQVals | 764 |\n", "| MinQVals | -940 |\n", "| LossPi | -241 |\n", "| LossQ | 1.25e+03 |\n", "| Time | 516 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -539 |\n", "| StdEpRet | 355 |\n", "| MaxEpRet | -156 |\n", "| MinEpRet | -1.38e+03 |\n", "| AverageTestEpRet | -425 |\n", "| StdTestEpRet | 229 |\n", "| MaxTestEpRet | -147 |\n", "| MinTestEpRet | -913 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQVals | 242 |\n", "| StdQVals | 266 |\n", "| MaxQVals | 781 |\n", "| MinQVals | -874 |\n", "| LossPi | -263 |\n", "| LossQ | 1.29e+03 |\n", "| Time | 526 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -627 |\n", "| StdEpRet | 357 |\n", "| MaxEpRet | -242 |\n", "| MinEpRet | -1.4e+03 |\n", "| AverageTestEpRet | -600 |\n", "| StdTestEpRet | 219 |\n", "| MaxTestEpRet | -275 |\n", "| MinTestEpRet | -1.05e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQVals | 260 |\n", "| StdQVals | 266 |\n", "| MaxQVals | 814 |\n", "| MinQVals | -844 |\n", "| LossPi | -280 |\n", "| LossQ | 1.21e+03 |\n", "| Time | 536 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -626 |\n", "| StdEpRet | 416 |\n", "| MaxEpRet | -106 |\n", "| MinEpRet | -1.48e+03 |\n", "| AverageTestEpRet | -640 |\n", "| StdTestEpRet | 502 |\n", "| MaxTestEpRet | -119 |\n", "| MinTestEpRet | -1.74e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQVals | 277 |\n", "| StdQVals | 265 |\n", "| MaxQVals | 824 |\n", "| MinQVals | -892 |\n", "| LossPi | -297 |\n", "| LossQ | 1.2e+03 |\n", "| Time | 546 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -616 |\n", "| StdEpRet | 331 |\n", "| MaxEpRet | -43 |\n", "| MinEpRet | -1.34e+03 |\n", "| AverageTestEpRet | -751 |\n", "| StdTestEpRet | 635 |\n", "| MaxTestEpRet | -78.4 |\n", "| MinTestEpRet | -2.29e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQVals | 291 |\n", "| StdQVals | 263 |\n", "| MaxQVals | 833 |\n", "| MinQVals | -834 |\n", "| LossPi | -311 |\n", "| LossQ | 1.18e+03 |\n", "| Time | 555 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -819 |\n", "| StdEpRet | 410 |\n", "| MaxEpRet | -156 |\n", "| MinEpRet | -1.58e+03 |\n", "| AverageTestEpRet | -670 |\n", "| StdTestEpRet | 492 |\n", "| MaxTestEpRet | -152 |\n", "| MinTestEpRet | -1.89e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQVals | 304 |\n", "| StdQVals | 265 |\n", "| MaxQVals | 850 |\n", "| MinQVals | -816 |\n", "| LossPi | -324 |\n", "| LossQ | 1.17e+03 |\n", "| Time | 565 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -564 |\n", "| StdEpRet | 228 |\n", "| MaxEpRet | -263 |\n", "| MinEpRet | -975 |\n", "| AverageTestEpRet | -555 |\n", "| StdTestEpRet | 290 |\n", "| MaxTestEpRet | -60.9 |\n", "| MinTestEpRet | -1.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQVals | 317 |\n", "| StdQVals | 262 |\n", "| MaxQVals | 862 |\n", "| MinQVals | -777 |\n", "| LossPi | -336 |\n", "| LossQ | 1.12e+03 |\n", "| Time | 577 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -494 |\n", "| StdEpRet | 357 |\n", "| MaxEpRet | -105 |\n", "| MinEpRet | -1.34e+03 |\n", "| AverageTestEpRet | -630 |\n", "| StdTestEpRet | 309 |\n", "| MaxTestEpRet | -158 |\n", "| MinTestEpRet | -1.34e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQVals | 323 |\n", "| StdQVals | 262 |\n", "| MaxQVals | 854 |\n", "| MinQVals | -796 |\n", "| LossPi | -342 |\n", "| LossQ | 1.11e+03 |\n", "| Time | 588 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -535 |\n", "| StdEpRet | 286 |\n", "| MaxEpRet | -189 |\n", "| MinEpRet | -1.36e+03 |\n", "| AverageTestEpRet | -587 |\n", "| StdTestEpRet | 399 |\n", "| MaxTestEpRet | -83.5 |\n", "| MinTestEpRet | -1.23e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQVals | 330 |\n", "| StdQVals | 260 |\n", "| MaxQVals | 866 |\n", "| MinQVals | -780 |\n", "| LossPi | -348 |\n", "| LossQ | 1.06e+03 |\n", "| Time | 600 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 1\n", "logger_kwargs = dict(output_dir='ddpg_b1', exp_name='baseline')\n", "seed_b = 10\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 20000\n", "args_b = dict(hidden_sizes=[1000,], activation=torch.nn.ReLU)\n", "actnoise_b = 0.1\n", "pilr_b = 0.001\n", "qlr_b = 0.001\n", "\n", "# Baseline 1 training\n", "spinup.ddpg_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### TD3" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[32;1mLogging data to td3_b0/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"td3_b0\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='td3_b0/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"td3_b0\"\n", " },\n", " \"max_ep_len\":\t110,\n", " \"noise_clip\":\t0.5,\n", " \"num_test_episodes\":\t10,\n", " \"pi_lr\":\t0.001,\n", " \"policy_delay\":\t2,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"target_noise\":\t0.2,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3002, \t q1: 3301, \t q2: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -7.08e+03 |\n", "| StdEpRet | 1.27e+03 |\n", "| MaxEpRet | -4.69e+03 |\n", "| MinEpRet | -8.92e+03 |\n", "| AverageTestEpRet | -6.74e+03 |\n", "| StdTestEpRet | 1.09e+03 |\n", "| MaxTestEpRet | -5.3e+03 |\n", "| MinTestEpRet | -9.16e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQ1Vals | -86.3 |\n", "| StdQ1Vals | 42.5 |\n", "| MaxQ1Vals | 3.25 |\n", "| MinQ1Vals | -222 |\n", "| AverageQ2Vals | -86.1 |\n", "| StdQ2Vals | 42.6 |\n", "| MaxQ2Vals | 4.88 |\n", "| MinQ2Vals | -220 |\n", "| LossPi | 77 |\n", "| LossQ | 3.66e+03 |\n", "| Time | 4.33 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -7.21e+03 |\n", "| StdEpRet | 1.02e+03 |\n", "| MaxEpRet | -5.89e+03 |\n", "| MinEpRet | -9.11e+03 |\n", "| AverageTestEpRet | -6.12e+03 |\n", "| StdTestEpRet | 1.22e+03 |\n", "| MaxTestEpRet | -3.43e+03 |\n", "| MinTestEpRet | -7.93e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQ1Vals | -226 |\n", "| StdQ1Vals | 82.5 |\n", "| MaxQ1Vals | -26.4 |\n", "| MinQ1Vals | -592 |\n", "| AverageQ2Vals | -226 |\n", "| StdQ2Vals | 82.6 |\n", "| MaxQ2Vals | -26.8 |\n", "| MinQ2Vals | -596 |\n", "| LossPi | 213 |\n", "| LossQ | 2.52e+03 |\n", "| Time | 12.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -7.28e+03 |\n", "| StdEpRet | 1.44e+03 |\n", "| MaxEpRet | -4.72e+03 |\n", "| MinEpRet | -1.06e+04 |\n", "| AverageTestEpRet | -7.38e+03 |\n", "| StdTestEpRet | 1.61e+03 |\n", "| MaxTestEpRet | -5.61e+03 |\n", "| MinTestEpRet | -1.1e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQ1Vals | -425 |\n", "| StdQ1Vals | 125 |\n", "| MaxQ1Vals | -87.4 |\n", "| MinQ1Vals | -899 |\n", "| AverageQ2Vals | -425 |\n", "| StdQ2Vals | 125 |\n", "| MaxQ2Vals | -83.2 |\n", "| MinQ2Vals | -901 |\n", "| LossPi | 411 |\n", "| LossQ | 2.87e+03 |\n", "| Time | 20.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -6.63e+03 |\n", "| StdEpRet | 1.19e+03 |\n", "| MaxEpRet | -5.15e+03 |\n", "| MinEpRet | -9.01e+03 |\n", "| AverageTestEpRet | -6.16e+03 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -3.85e+03 |\n", "| MinTestEpRet | -7.53e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQ1Vals | -601 |\n", "| StdQ1Vals | 152 |\n", "| MaxQ1Vals | -151 |\n", "| MinQ1Vals | -1.15e+03 |\n", "| AverageQ2Vals | -601 |\n", "| StdQ2Vals | 152 |\n", "| MaxQ2Vals | -150 |\n", "| MinQ2Vals | -1.15e+03 |\n", "| LossPi | 585 |\n", "| LossQ | 4.51e+03 |\n", "| Time | 27.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.91e+03 |\n", "| StdEpRet | 1.18e+03 |\n", "| MaxEpRet | -5.26e+03 |\n", "| MinEpRet | -9.21e+03 |\n", "| AverageTestEpRet | -5.3e+03 |\n", "| StdTestEpRet | 2.84e+03 |\n", "| MaxTestEpRet | -256 |\n", "| MinTestEpRet | -1.05e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQ1Vals | -767 |\n", "| StdQ1Vals | 178 |\n", "| MaxQ1Vals | -233 |\n", "| MinQ1Vals | -1.42e+03 |\n", "| AverageQ2Vals | -767 |\n", "| StdQ2Vals | 178 |\n", "| MaxQ2Vals | -232 |\n", "| MinQ2Vals | -1.42e+03 |\n", "| LossPi | 749 |\n", "| LossQ | 6.17e+03 |\n", "| Time | 34.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -7.46e+03 |\n", "| StdEpRet | 1.34e+03 |\n", "| MaxEpRet | -4.48e+03 |\n", "| MinEpRet | -1.02e+04 |\n", "| AverageTestEpRet | -4.83e+03 |\n", "| StdTestEpRet | 2.98e+03 |\n", "| MaxTestEpRet | -788 |\n", "| MinTestEpRet | -1.08e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQ1Vals | -917 |\n", "| StdQ1Vals | 201 |\n", "| MaxQ1Vals | -332 |\n", "| MinQ1Vals | -1.73e+03 |\n", "| AverageQ2Vals | -917 |\n", "| StdQ2Vals | 201 |\n", "| MaxQ2Vals | -333 |\n", "| MinQ2Vals | -1.74e+03 |\n", "| LossPi | 897 |\n", "| LossQ | 7.66e+03 |\n", "| Time | 40.8 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -4.36e+03 |\n", "| StdEpRet | 2.56e+03 |\n", "| MaxEpRet | -1.15e+03 |\n", "| MinEpRet | -1e+04 |\n", "| AverageTestEpRet | -3.25e+03 |\n", "| StdTestEpRet | 2.18e+03 |\n", "| MaxTestEpRet | -522 |\n", "| MinTestEpRet | -6.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQ1Vals | -1.05e+03 |\n", "| StdQ1Vals | 223 |\n", "| MaxQ1Vals | -410 |\n", "| MinQ1Vals | -1.93e+03 |\n", "| AverageQ2Vals | -1.05e+03 |\n", "| StdQ2Vals | 223 |\n", "| MaxQ2Vals | -412 |\n", "| MinQ2Vals | -1.94e+03 |\n", "| LossPi | 1.03e+03 |\n", "| LossQ | 8.29e+03 |\n", "| Time | 47.8 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -2.85e+03 |\n", "| StdEpRet | 1.72e+03 |\n", "| MaxEpRet | -666 |\n", "| MinEpRet | -7.37e+03 |\n", "| AverageTestEpRet | -1.99e+03 |\n", "| StdTestEpRet | 1.03e+03 |\n", "| MaxTestEpRet | -588 |\n", "| MinTestEpRet | -3.87e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQ1Vals | -1.15e+03 |\n", "| StdQ1Vals | 246 |\n", "| MaxQ1Vals | -494 |\n", "| MinQ1Vals | -2.13e+03 |\n", "| AverageQ2Vals | -1.15e+03 |\n", "| StdQ2Vals | 246 |\n", "| MaxQ2Vals | -495 |\n", "| MinQ2Vals | -2.13e+03 |\n", "| LossPi | 1.13e+03 |\n", "| LossQ | 8.87e+03 |\n", "| Time | 54.5 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -1.39e+03 |\n", "| StdEpRet | 1.11e+03 |\n", "| MaxEpRet | -175 |\n", "| MinEpRet | -4.25e+03 |\n", "| AverageTestEpRet | -1.73e+03 |\n", "| StdTestEpRet | 1.09e+03 |\n", "| MaxTestEpRet | -233 |\n", "| MinTestEpRet | -3.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQ1Vals | -1.24e+03 |\n", "| StdQ1Vals | 266 |\n", "| MaxQ1Vals | -571 |\n", "| MinQ1Vals | -2.22e+03 |\n", "| AverageQ2Vals | -1.24e+03 |\n", "| StdQ2Vals | 265 |\n", "| MaxQ2Vals | -569 |\n", "| MinQ2Vals | -2.22e+03 |\n", "| LossPi | 1.22e+03 |\n", "| LossQ | 9.06e+03 |\n", "| Time | 61.8 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -1.87e+03 |\n", "| StdEpRet | 1.33e+03 |\n", "| MaxEpRet | -653 |\n", "| MinEpRet | -5.58e+03 |\n", "| AverageTestEpRet | -1.92e+03 |\n", "| StdTestEpRet | 1.17e+03 |\n", "| MaxTestEpRet | -154 |\n", "| MinTestEpRet | -3.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQ1Vals | -1.3e+03 |\n", "| StdQ1Vals | 290 |\n", "| MaxQ1Vals | -629 |\n", "| MinQ1Vals | -2.33e+03 |\n", "| AverageQ2Vals | -1.3e+03 |\n", "| StdQ2Vals | 290 |\n", "| MaxQ2Vals | -628 |\n", "| MinQ2Vals | -2.32e+03 |\n", "| LossPi | 1.28e+03 |\n", "| LossQ | 9.43e+03 |\n", "| Time | 69 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -1.86e+03 |\n", "| StdEpRet | 2.59e+03 |\n", "| MaxEpRet | -235 |\n", "| MinEpRet | -1.08e+04 |\n", "| AverageTestEpRet | -942 |\n", "| StdTestEpRet | 929 |\n", "| MaxTestEpRet | -20.6 |\n", "| MinTestEpRet | -3.18e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQ1Vals | -1.35e+03 |\n", "| StdQ1Vals | 305 |\n", "| MaxQ1Vals | -667 |\n", "| MinQ1Vals | -2.44e+03 |\n", "| AverageQ2Vals | -1.35e+03 |\n", "| StdQ2Vals | 305 |\n", "| MaxQ2Vals | -666 |\n", "| MinQ2Vals | -2.43e+03 |\n", "| LossPi | 1.33e+03 |\n", "| LossQ | 9.92e+03 |\n", "| Time | 76.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -1.2e+03 |\n", "| StdEpRet | 1.16e+03 |\n", "| MaxEpRet | -177 |\n", "| MinEpRet | -4.65e+03 |\n", "| AverageTestEpRet | -1.22e+03 |\n", "| StdTestEpRet | 1.11e+03 |\n", "| MaxTestEpRet | -365 |\n", "| MinTestEpRet | -3.97e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQ1Vals | -1.38e+03 |\n", "| StdQ1Vals | 325 |\n", "| MaxQ1Vals | -687 |\n", "| MinQ1Vals | -2.53e+03 |\n", "| AverageQ2Vals | -1.38e+03 |\n", "| StdQ2Vals | 325 |\n", "| MaxQ2Vals | -689 |\n", "| MinQ2Vals | -2.53e+03 |\n", "| LossPi | 1.36e+03 |\n", "| LossQ | 1.03e+04 |\n", "| Time | 83.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -1.1e+03 |\n", "| StdEpRet | 877 |\n", "| MaxEpRet | -137 |\n", "| MinEpRet | -3.32e+03 |\n", "| AverageTestEpRet | -1.19e+03 |\n", "| StdTestEpRet | 479 |\n", "| MaxTestEpRet | -441 |\n", "| MinTestEpRet | -1.76e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQ1Vals | -1.39e+03 |\n", "| StdQ1Vals | 343 |\n", "| MaxQ1Vals | -677 |\n", "| MinQ1Vals | -2.61e+03 |\n", "| AverageQ2Vals | -1.39e+03 |\n", "| StdQ2Vals | 343 |\n", "| MaxQ2Vals | -680 |\n", "| MinQ2Vals | -2.61e+03 |\n", "| LossPi | 1.37e+03 |\n", "| LossQ | 1.08e+04 |\n", "| Time | 90.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -852 |\n", "| StdEpRet | 529 |\n", "| MaxEpRet | -21.3 |\n", "| MinEpRet | -1.74e+03 |\n", "| AverageTestEpRet | -1.6e+03 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -120 |\n", "| MinTestEpRet | -3.09e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQ1Vals | -1.39e+03 |\n", "| StdQ1Vals | 361 |\n", "| MaxQ1Vals | -647 |\n", "| MinQ1Vals | -2.68e+03 |\n", "| AverageQ2Vals | -1.39e+03 |\n", "| StdQ2Vals | 361 |\n", "| MaxQ2Vals | -657 |\n", "| MinQ2Vals | -2.67e+03 |\n", "| LossPi | 1.36e+03 |\n", "| LossQ | 1.09e+04 |\n", "| Time | 97.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -1.02e+03 |\n", "| StdEpRet | 555 |\n", "| MaxEpRet | -137 |\n", "| MinEpRet | -2.26e+03 |\n", "| AverageTestEpRet | -635 |\n", "| StdTestEpRet | 511 |\n", "| MaxTestEpRet | -112 |\n", "| MinTestEpRet | -1.78e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQ1Vals | -1.38e+03 |\n", "| StdQ1Vals | 369 |\n", "| MaxQ1Vals | -638 |\n", "| MinQ1Vals | -2.73e+03 |\n", "| AverageQ2Vals | -1.38e+03 |\n", "| StdQ2Vals | 369 |\n", "| MaxQ2Vals | -640 |\n", "| MinQ2Vals | -2.73e+03 |\n", "| LossPi | 1.36e+03 |\n", "| LossQ | 1.12e+04 |\n", "| Time | 104 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -626 |\n", "| StdEpRet | 758 |\n", "| MaxEpRet | -59.3 |\n", "| MinEpRet | -3.17e+03 |\n", "| AverageTestEpRet | -1.19e+03 |\n", "| StdTestEpRet | 948 |\n", "| MaxTestEpRet | -109 |\n", "| MinTestEpRet | -2.7e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQ1Vals | -1.36e+03 |\n", "| StdQ1Vals | 377 |\n", "| MaxQ1Vals | -618 |\n", "| MinQ1Vals | -2.8e+03 |\n", "| AverageQ2Vals | -1.36e+03 |\n", "| StdQ2Vals | 377 |\n", "| MaxQ2Vals | -616 |\n", "| MinQ2Vals | -2.8e+03 |\n", "| LossPi | 1.33e+03 |\n", "| LossQ | 1.13e+04 |\n", "| Time | 111 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -672 |\n", "| StdEpRet | 346 |\n", "| MaxEpRet | -57.8 |\n", "| MinEpRet | -1.29e+03 |\n", "| AverageTestEpRet | -934 |\n", "| StdTestEpRet | 706 |\n", "| MaxTestEpRet | -73.2 |\n", "| MinTestEpRet | -2.55e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQ1Vals | -1.33e+03 |\n", "| StdQ1Vals | 383 |\n", "| MaxQ1Vals | -590 |\n", "| MinQ1Vals | -2.81e+03 |\n", "| AverageQ2Vals | -1.33e+03 |\n", "| StdQ2Vals | 383 |\n", "| MaxQ2Vals | -586 |\n", "| MinQ2Vals | -2.81e+03 |\n", "| LossPi | 1.3e+03 |\n", "| LossQ | 1.14e+04 |\n", "| Time | 119 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -601 |\n", "| StdEpRet | 445 |\n", "| MaxEpRet | -96.3 |\n", "| MinEpRet | -1.76e+03 |\n", "| AverageTestEpRet | -512 |\n", "| StdTestEpRet | 349 |\n", "| MaxTestEpRet | -103 |\n", "| MinTestEpRet | -1.17e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQ1Vals | -1.29e+03 |\n", "| StdQ1Vals | 390 |\n", "| MaxQ1Vals | -554 |\n", "| MinQ1Vals | -2.81e+03 |\n", "| AverageQ2Vals | -1.29e+03 |\n", "| StdQ2Vals | 390 |\n", "| MaxQ2Vals | -550 |\n", "| MinQ2Vals | -2.81e+03 |\n", "| LossPi | 1.26e+03 |\n", "| LossQ | 1.1e+04 |\n", "| Time | 126 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -821 |\n", "| StdEpRet | 798 |\n", "| MaxEpRet | -104 |\n", "| MinEpRet | -3.3e+03 |\n", "| AverageTestEpRet | -750 |\n", "| StdTestEpRet | 447 |\n", "| MaxTestEpRet | -98.1 |\n", "| MinTestEpRet | -1.41e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQ1Vals | -1.25e+03 |\n", "| StdQ1Vals | 391 |\n", "| MaxQ1Vals | -528 |\n", "| MinQ1Vals | -2.82e+03 |\n", "| AverageQ2Vals | -1.25e+03 |\n", "| StdQ2Vals | 391 |\n", "| MaxQ2Vals | -524 |\n", "| MinQ2Vals | -2.83e+03 |\n", "| LossPi | 1.22e+03 |\n", "| LossQ | 1.09e+04 |\n", "| Time | 133 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -552 |\n", "| StdEpRet | 345 |\n", "| MaxEpRet | -45.9 |\n", "| MinEpRet | -1.39e+03 |\n", "| AverageTestEpRet | -561 |\n", "| StdTestEpRet | 313 |\n", "| MaxTestEpRet | -184 |\n", "| MinTestEpRet | -1.25e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQ1Vals | -1.21e+03 |\n", "| StdQ1Vals | 392 |\n", "| MaxQ1Vals | -492 |\n", "| MinQ1Vals | -2.82e+03 |\n", "| AverageQ2Vals | -1.21e+03 |\n", "| StdQ2Vals | 392 |\n", "| MaxQ2Vals | -488 |\n", "| MinQ2Vals | -2.82e+03 |\n", "| LossPi | 1.19e+03 |\n", "| LossQ | 1.07e+04 |\n", "| Time | 140 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -645 |\n", "| StdEpRet | 498 |\n", "| MaxEpRet | -68.2 |\n", "| MinEpRet | -1.92e+03 |\n", "| AverageTestEpRet | -568 |\n", "| StdTestEpRet | 476 |\n", "| MaxTestEpRet | -56 |\n", "| MinTestEpRet | -1.65e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQ1Vals | -1.17e+03 |\n", "| StdQ1Vals | 391 |\n", "| MaxQ1Vals | -459 |\n", "| MinQ1Vals | -2.82e+03 |\n", "| AverageQ2Vals | -1.17e+03 |\n", "| StdQ2Vals | 391 |\n", "| MaxQ2Vals | -454 |\n", "| MinQ2Vals | -2.82e+03 |\n", "| LossPi | 1.15e+03 |\n", "| LossQ | 9.97e+03 |\n", "| Time | 147 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -745 |\n", "| StdEpRet | 377 |\n", "| MaxEpRet | -243 |\n", "| MinEpRet | -1.44e+03 |\n", "| AverageTestEpRet | -620 |\n", "| StdTestEpRet | 377 |\n", "| MaxTestEpRet | -229 |\n", "| MinTestEpRet | -1.35e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQ1Vals | -1.13e+03 |\n", "| StdQ1Vals | 385 |\n", "| MaxQ1Vals | -431 |\n", "| MinQ1Vals | -2.76e+03 |\n", "| AverageQ2Vals | -1.13e+03 |\n", "| StdQ2Vals | 385 |\n", "| MaxQ2Vals | -429 |\n", "| MinQ2Vals | -2.76e+03 |\n", "| LossPi | 1.1e+03 |\n", "| LossQ | 9.81e+03 |\n", "| Time | 154 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -728 |\n", "| StdEpRet | 715 |\n", "| MaxEpRet | -60.4 |\n", "| MinEpRet | -2.52e+03 |\n", "| AverageTestEpRet | -668 |\n", "| StdTestEpRet | 207 |\n", "| MaxTestEpRet | -395 |\n", "| MinTestEpRet | -1.08e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQ1Vals | -1.08e+03 |\n", "| StdQ1Vals | 380 |\n", "| MaxQ1Vals | -402 |\n", "| MinQ1Vals | -2.73e+03 |\n", "| AverageQ2Vals | -1.08e+03 |\n", "| StdQ2Vals | 380 |\n", "| MaxQ2Vals | -399 |\n", "| MinQ2Vals | -2.73e+03 |\n", "| LossPi | 1.06e+03 |\n", "| LossQ | 9.24e+03 |\n", "| Time | 161 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -647 |\n", "| StdEpRet | 344 |\n", "| MaxEpRet | -273 |\n", "| MinEpRet | -1.37e+03 |\n", "| AverageTestEpRet | -593 |\n", "| StdTestEpRet | 250 |\n", "| MaxTestEpRet | -235 |\n", "| MinTestEpRet | -912 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQ1Vals | -1.05e+03 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -376 |\n", "| MinQ1Vals | -2.69e+03 |\n", "| AverageQ2Vals | -1.05e+03 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -373 |\n", "| MinQ2Vals | -2.7e+03 |\n", "| LossPi | 1.03e+03 |\n", "| LossQ | 8.66e+03 |\n", "| Time | 168 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -590 |\n", "| StdEpRet | 436 |\n", "| MaxEpRet | -35 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -657 |\n", "| StdTestEpRet | 392 |\n", "| MaxTestEpRet | -53 |\n", "| MinTestEpRet | -1.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQ1Vals | -1.02e+03 |\n", "| StdQ1Vals | 369 |\n", "| MaxQ1Vals | -354 |\n", "| MinQ1Vals | -2.67e+03 |\n", "| AverageQ2Vals | -1.02e+03 |\n", "| StdQ2Vals | 369 |\n", "| MaxQ2Vals | -350 |\n", "| MinQ2Vals | -2.67e+03 |\n", "| LossPi | 1e+03 |\n", "| LossQ | 7.87e+03 |\n", "| Time | 175 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -561 |\n", "| StdEpRet | 335 |\n", "| MaxEpRet | -64.9 |\n", "| MinEpRet | -1.05e+03 |\n", "| AverageTestEpRet | -616 |\n", "| StdTestEpRet | 380 |\n", "| MaxTestEpRet | -60 |\n", "| MinTestEpRet | -1.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQ1Vals | -986 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -332 |\n", "| MinQ1Vals | -2.64e+03 |\n", "| AverageQ2Vals | -986 |\n", "| StdQ2Vals | 366 |\n", "| MaxQ2Vals | -329 |\n", "| MinQ2Vals | -2.63e+03 |\n", "| LossPi | 970 |\n", "| LossQ | 7.77e+03 |\n", "| Time | 182 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -707 |\n", "| StdEpRet | 584 |\n", "| MaxEpRet | -68.3 |\n", "| MinEpRet | -2.21e+03 |\n", "| AverageTestEpRet | -549 |\n", "| StdTestEpRet | 231 |\n", "| MaxTestEpRet | -250 |\n", "| MinTestEpRet | -890 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQ1Vals | -956 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -291 |\n", "| MinQ1Vals | -2.6e+03 |\n", "| AverageQ2Vals | -956 |\n", "| StdQ2Vals | 366 |\n", "| MaxQ2Vals | -289 |\n", "| MinQ2Vals | -2.58e+03 |\n", "| LossPi | 938 |\n", "| LossQ | 7.26e+03 |\n", "| Time | 190 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -578 |\n", "| StdEpRet | 269 |\n", "| MaxEpRet | -185 |\n", "| MinEpRet | -974 |\n", "| AverageTestEpRet | -492 |\n", "| StdTestEpRet | 539 |\n", "| MaxTestEpRet | -109 |\n", "| MinTestEpRet | -1.82e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQ1Vals | -929 |\n", "| StdQ1Vals | 363 |\n", "| MaxQ1Vals | -272 |\n", "| MinQ1Vals | -2.55e+03 |\n", "| AverageQ2Vals | -929 |\n", "| StdQ2Vals | 363 |\n", "| MaxQ2Vals | -271 |\n", "| MinQ2Vals | -2.55e+03 |\n", "| LossPi | 912 |\n", "| LossQ | 7.08e+03 |\n", "| Time | 197 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -880 |\n", "| StdEpRet | 645 |\n", "| MaxEpRet | -129 |\n", "| MinEpRet | -2.28e+03 |\n", "| AverageTestEpRet | -948 |\n", "| StdTestEpRet | 639 |\n", "| MaxTestEpRet | -141 |\n", "| MinTestEpRet | -2.43e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQ1Vals | -903 |\n", "| StdQ1Vals | 358 |\n", "| MaxQ1Vals | -255 |\n", "| MinQ1Vals | -2.5e+03 |\n", "| AverageQ2Vals | -903 |\n", "| StdQ2Vals | 358 |\n", "| MaxQ2Vals | -252 |\n", "| MinQ2Vals | -2.49e+03 |\n", "| LossPi | 886 |\n", "| LossQ | 6.79e+03 |\n", "| Time | 204 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -519 |\n", "| StdEpRet | 337 |\n", "| MaxEpRet | -102 |\n", "| MinEpRet | -1.11e+03 |\n", "| AverageTestEpRet | -582 |\n", "| StdTestEpRet | 416 |\n", "| MaxTestEpRet | -164 |\n", "| MinTestEpRet | -1.6e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQ1Vals | -876 |\n", "| StdQ1Vals | 353 |\n", "| MaxQ1Vals | -240 |\n", "| MinQ1Vals | -2.47e+03 |\n", "| AverageQ2Vals | -876 |\n", "| StdQ2Vals | 353 |\n", "| MaxQ2Vals | -237 |\n", "| MinQ2Vals | -2.46e+03 |\n", "| LossPi | 862 |\n", "| LossQ | 6.44e+03 |\n", "| Time | 211 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -795 |\n", "| StdEpRet | 608 |\n", "| MaxEpRet | -92.9 |\n", "| MinEpRet | -2.52e+03 |\n", "| AverageTestEpRet | -603 |\n", "| StdTestEpRet | 536 |\n", "| MaxTestEpRet | -57 |\n", "| MinTestEpRet | -1.45e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQ1Vals | -853 |\n", "| StdQ1Vals | 348 |\n", "| MaxQ1Vals | -226 |\n", "| MinQ1Vals | -2.45e+03 |\n", "| AverageQ2Vals | -853 |\n", "| StdQ2Vals | 348 |\n", "| MaxQ2Vals | -224 |\n", "| MinQ2Vals | -2.44e+03 |\n", "| LossPi | 839 |\n", "| LossQ | 6.08e+03 |\n", "| Time | 219 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -747 |\n", "| StdEpRet | 487 |\n", "| MaxEpRet | -114 |\n", "| MinEpRet | -2.01e+03 |\n", "| AverageTestEpRet | -716 |\n", "| StdTestEpRet | 461 |\n", "| MaxTestEpRet | -122 |\n", "| MinTestEpRet | -1.54e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQ1Vals | -832 |\n", "| StdQ1Vals | 349 |\n", "| MaxQ1Vals | -213 |\n", "| MinQ1Vals | -2.41e+03 |\n", "| AverageQ2Vals | -832 |\n", "| StdQ2Vals | 349 |\n", "| MaxQ2Vals | -211 |\n", "| MinQ2Vals | -2.4e+03 |\n", "| LossPi | 817 |\n", "| LossQ | 5.67e+03 |\n", "| Time | 228 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -647 |\n", "| StdEpRet | 437 |\n", "| MaxEpRet | -161 |\n", "| MinEpRet | -1.8e+03 |\n", "| AverageTestEpRet | -1.04e+03 |\n", "| StdTestEpRet | 840 |\n", "| MaxTestEpRet | -173 |\n", "| MinTestEpRet | -2.67e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQ1Vals | -812 |\n", "| StdQ1Vals | 345 |\n", "| MaxQ1Vals | -202 |\n", "| MinQ1Vals | -2.37e+03 |\n", "| AverageQ2Vals | -812 |\n", "| StdQ2Vals | 345 |\n", "| MaxQ2Vals | -200 |\n", "| MinQ2Vals | -2.37e+03 |\n", "| LossPi | 799 |\n", "| LossQ | 5.67e+03 |\n", "| Time | 236 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -537 |\n", "| StdEpRet | 471 |\n", "| MaxEpRet | -27.3 |\n", "| MinEpRet | -1.51e+03 |\n", "| AverageTestEpRet | -706 |\n", "| StdTestEpRet | 465 |\n", "| MaxTestEpRet | -49.4 |\n", "| MinTestEpRet | -1.7e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQ1Vals | -795 |\n", "| StdQ1Vals | 343 |\n", "| MaxQ1Vals | -188 |\n", "| MinQ1Vals | -2.36e+03 |\n", "| AverageQ2Vals | -795 |\n", "| StdQ2Vals | 343 |\n", "| MaxQ2Vals | -188 |\n", "| MinQ2Vals | -2.36e+03 |\n", "| LossPi | 781 |\n", "| LossQ | 5.36e+03 |\n", "| Time | 245 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -740 |\n", "| StdEpRet | 327 |\n", "| MaxEpRet | -118 |\n", "| MinEpRet | -1.4e+03 |\n", "| AverageTestEpRet | -1.04e+03 |\n", "| StdTestEpRet | 500 |\n", "| MaxTestEpRet | -292 |\n", "| MinTestEpRet | -1.88e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQ1Vals | -776 |\n", "| StdQ1Vals | 342 |\n", "| MaxQ1Vals | -176 |\n", "| MinQ1Vals | -2.37e+03 |\n", "| AverageQ2Vals | -776 |\n", "| StdQ2Vals | 342 |\n", "| MaxQ2Vals | -174 |\n", "| MinQ2Vals | -2.36e+03 |\n", "| LossPi | 764 |\n", "| LossQ | 5.54e+03 |\n", "| Time | 253 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -780 |\n", "| StdEpRet | 692 |\n", "| MaxEpRet | -127 |\n", "| MinEpRet | -2.49e+03 |\n", "| AverageTestEpRet | -687 |\n", "| StdTestEpRet | 503 |\n", "| MaxTestEpRet | -95.5 |\n", "| MinTestEpRet | -1.82e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQ1Vals | -758 |\n", "| StdQ1Vals | 341 |\n", "| MaxQ1Vals | -163 |\n", "| MinQ1Vals | -2.33e+03 |\n", "| AverageQ2Vals | -758 |\n", "| StdQ2Vals | 341 |\n", "| MaxQ2Vals | -161 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| LossPi | 746 |\n", "| LossQ | 5.23e+03 |\n", "| Time | 262 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -827 |\n", "| StdEpRet | 579 |\n", "| MaxEpRet | -118 |\n", "| MinEpRet | -2.64e+03 |\n", "| AverageTestEpRet | -506 |\n", "| StdTestEpRet | 304 |\n", "| MaxTestEpRet | -75.5 |\n", "| MinTestEpRet | -1.13e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQ1Vals | -743 |\n", "| StdQ1Vals | 342 |\n", "| MaxQ1Vals | -153 |\n", "| MinQ1Vals | -2.34e+03 |\n", "| AverageQ2Vals | -743 |\n", "| StdQ2Vals | 342 |\n", "| MaxQ2Vals | -151 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| LossPi | 730 |\n", "| LossQ | 5.12e+03 |\n", "| Time | 269 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -698 |\n", "| StdEpRet | 347 |\n", "| MaxEpRet | -133 |\n", "| MinEpRet | -1.43e+03 |\n", "| AverageTestEpRet | -669 |\n", "| StdTestEpRet | 430 |\n", "| MaxTestEpRet | -158 |\n", "| MinTestEpRet | -1.72e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQ1Vals | -729 |\n", "| StdQ1Vals | 340 |\n", "| MaxQ1Vals | -142 |\n", "| MinQ1Vals | -2.33e+03 |\n", "| AverageQ2Vals | -729 |\n", "| StdQ2Vals | 340 |\n", "| MaxQ2Vals | -140 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| LossPi | 717 |\n", "| LossQ | 5.1e+03 |\n", "| Time | 276 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -764 |\n", "| StdEpRet | 402 |\n", "| MaxEpRet | -106 |\n", "| MinEpRet | -1.76e+03 |\n", "| AverageTestEpRet | -524 |\n", "| StdTestEpRet | 467 |\n", "| MaxTestEpRet | -86.4 |\n", "| MinTestEpRet | -1.58e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQ1Vals | -711 |\n", "| StdQ1Vals | 336 |\n", "| MaxQ1Vals | -131 |\n", "| MinQ1Vals | -2.32e+03 |\n", "| AverageQ2Vals | -711 |\n", "| StdQ2Vals | 336 |\n", "| MaxQ2Vals | -127 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| LossPi | 700 |\n", "| LossQ | 4.89e+03 |\n", "| Time | 283 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -1.01e+03 |\n", "| StdEpRet | 525 |\n", "| MaxEpRet | -64.4 |\n", "| MinEpRet | -1.81e+03 |\n", "| AverageTestEpRet | -1.19e+03 |\n", "| StdTestEpRet | 794 |\n", "| MaxTestEpRet | -118 |\n", "| MinTestEpRet | -2.76e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQ1Vals | -695 |\n", "| StdQ1Vals | 335 |\n", "| MaxQ1Vals | -122 |\n", "| MinQ1Vals | -2.31e+03 |\n", "| AverageQ2Vals | -695 |\n", "| StdQ2Vals | 335 |\n", "| MaxQ2Vals | -118 |\n", "| MinQ2Vals | -2.31e+03 |\n", "| LossPi | 682 |\n", "| LossQ | 4.8e+03 |\n", "| Time | 291 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -1.06e+03 |\n", "| StdEpRet | 904 |\n", "| MaxEpRet | -31.9 |\n", "| MinEpRet | -3.02e+03 |\n", "| AverageTestEpRet | -1.22e+03 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -110 |\n", "| MinTestEpRet | -2.79e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQ1Vals | -677 |\n", "| StdQ1Vals | 329 |\n", "| MaxQ1Vals | -114 |\n", "| MinQ1Vals | -2.29e+03 |\n", "| AverageQ2Vals | -678 |\n", "| StdQ2Vals | 329 |\n", "| MaxQ2Vals | -111 |\n", "| MinQ2Vals | -2.29e+03 |\n", "| LossPi | 665 |\n", "| LossQ | 4.41e+03 |\n", "| Time | 297 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -819 |\n", "| StdEpRet | 826 |\n", "| MaxEpRet | -42 |\n", "| MinEpRet | -3.15e+03 |\n", "| AverageTestEpRet | -867 |\n", "| StdTestEpRet | 920 |\n", "| MaxTestEpRet | -142 |\n", "| MinTestEpRet | -3.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQ1Vals | -665 |\n", "| StdQ1Vals | 329 |\n", "| MaxQ1Vals | -107 |\n", "| MinQ1Vals | -2.27e+03 |\n", "| AverageQ2Vals | -665 |\n", "| StdQ2Vals | 329 |\n", "| MaxQ2Vals | -107 |\n", "| MinQ2Vals | -2.27e+03 |\n", "| LossPi | 652 |\n", "| LossQ | 4.24e+03 |\n", "| Time | 304 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -1.09e+03 |\n", "| StdEpRet | 1.06e+03 |\n", "| MaxEpRet | -127 |\n", "| MinEpRet | -3.68e+03 |\n", "| AverageTestEpRet | -569 |\n", "| StdTestEpRet | 310 |\n", "| MaxTestEpRet | -101 |\n", "| MinTestEpRet | -1.02e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQ1Vals | -651 |\n", "| StdQ1Vals | 325 |\n", "| MaxQ1Vals | -99.9 |\n", "| MinQ1Vals | -2.24e+03 |\n", "| AverageQ2Vals | -651 |\n", "| StdQ2Vals | 325 |\n", "| MaxQ2Vals | -99.7 |\n", "| MinQ2Vals | -2.24e+03 |\n", "| LossPi | 640 |\n", "| LossQ | 4.25e+03 |\n", "| Time | 312 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -653 |\n", "| StdEpRet | 479 |\n", "| MaxEpRet | -116 |\n", "| MinEpRet | -1.77e+03 |\n", "| AverageTestEpRet | -621 |\n", "| StdTestEpRet | 325 |\n", "| MaxTestEpRet | -208 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQ1Vals | -634 |\n", "| StdQ1Vals | 321 |\n", "| MaxQ1Vals | -90.1 |\n", "| MinQ1Vals | -2.19e+03 |\n", "| AverageQ2Vals | -634 |\n", "| StdQ2Vals | 321 |\n", "| MaxQ2Vals | -89.6 |\n", "| MinQ2Vals | -2.2e+03 |\n", "| LossPi | 622 |\n", "| LossQ | 4.01e+03 |\n", "| Time | 319 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -536 |\n", "| StdEpRet | 377 |\n", "| MaxEpRet | -68.4 |\n", "| MinEpRet | -1.6e+03 |\n", "| AverageTestEpRet | -538 |\n", "| StdTestEpRet | 798 |\n", "| MaxTestEpRet | -125 |\n", "| MinTestEpRet | -2.88e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQ1Vals | -623 |\n", "| StdQ1Vals | 318 |\n", "| MaxQ1Vals | -84.1 |\n", "| MinQ1Vals | -2.16e+03 |\n", "| AverageQ2Vals | -623 |\n", "| StdQ2Vals | 318 |\n", "| MaxQ2Vals | -84.6 |\n", "| MinQ2Vals | -2.16e+03 |\n", "| LossPi | 612 |\n", "| LossQ | 4.07e+03 |\n", "| Time | 326 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -792 |\n", "| StdEpRet | 688 |\n", "| MaxEpRet | -142 |\n", "| MinEpRet | -2.73e+03 |\n", "| AverageTestEpRet | -984 |\n", "| StdTestEpRet | 780 |\n", "| MaxTestEpRet | -122 |\n", "| MinTestEpRet | -3.17e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQ1Vals | -609 |\n", "| StdQ1Vals | 316 |\n", "| MaxQ1Vals | -78.5 |\n", "| MinQ1Vals | -2.17e+03 |\n", "| AverageQ2Vals | -609 |\n", "| StdQ2Vals | 316 |\n", "| MaxQ2Vals | -78.3 |\n", "| MinQ2Vals | -2.18e+03 |\n", "| LossPi | 599 |\n", "| LossQ | 3.7e+03 |\n", "| Time | 334 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -482 |\n", "| StdEpRet | 323 |\n", "| MaxEpRet | -23.8 |\n", "| MinEpRet | -1.22e+03 |\n", "| AverageTestEpRet | -639 |\n", "| StdTestEpRet | 259 |\n", "| MaxTestEpRet | -240 |\n", "| MinTestEpRet | -1.1e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQ1Vals | -598 |\n", "| StdQ1Vals | 315 |\n", "| MaxQ1Vals | -72 |\n", "| MinQ1Vals | -2.15e+03 |\n", "| AverageQ2Vals | -598 |\n", "| StdQ2Vals | 315 |\n", "| MaxQ2Vals | -71.5 |\n", "| MinQ2Vals | -2.15e+03 |\n", "| LossPi | 588 |\n", "| LossQ | 3.78e+03 |\n", "| Time | 343 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -643 |\n", "| StdEpRet | 359 |\n", "| MaxEpRet | -203 |\n", "| MinEpRet | -1.37e+03 |\n", "| AverageTestEpRet | -555 |\n", "| StdTestEpRet | 386 |\n", "| MaxTestEpRet | -69.4 |\n", "| MinTestEpRet | -1.13e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQ1Vals | -584 |\n", "| StdQ1Vals | 313 |\n", "| MaxQ1Vals | -66.4 |\n", "| MinQ1Vals | -2.17e+03 |\n", "| AverageQ2Vals | -584 |\n", "| StdQ2Vals | 313 |\n", "| MaxQ2Vals | -67.5 |\n", "| MinQ2Vals | -2.16e+03 |\n", "| LossPi | 573 |\n", "| LossQ | 3.51e+03 |\n", "| Time | 351 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -1.32e+03 |\n", "| StdEpRet | 922 |\n", "| MaxEpRet | -167 |\n", "| MinEpRet | -3.26e+03 |\n", "| AverageTestEpRet | -611 |\n", "| StdTestEpRet | 324 |\n", "| MaxTestEpRet | -167 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQ1Vals | -575 |\n", "| StdQ1Vals | 314 |\n", "| MaxQ1Vals | -63.3 |\n", "| MinQ1Vals | -2.17e+03 |\n", "| AverageQ2Vals | -575 |\n", "| StdQ2Vals | 314 |\n", "| MaxQ2Vals | -62.4 |\n", "| MinQ2Vals | -2.16e+03 |\n", "| LossPi | 564 |\n", "| LossQ | 3.58e+03 |\n", "| Time | 359 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -582 |\n", "| StdEpRet | 399 |\n", "| MaxEpRet | -45.7 |\n", "| MinEpRet | -1.57e+03 |\n", "| AverageTestEpRet | -806 |\n", "| StdTestEpRet | 396 |\n", "| MaxTestEpRet | -275 |\n", "| MinTestEpRet | -1.73e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQ1Vals | -564 |\n", "| StdQ1Vals | 312 |\n", "| MaxQ1Vals | -59.5 |\n", "| MinQ1Vals | -2.15e+03 |\n", "| AverageQ2Vals | -564 |\n", "| StdQ2Vals | 312 |\n", "| MaxQ2Vals | -58.3 |\n", "| MinQ2Vals | -2.14e+03 |\n", "| LossPi | 553 |\n", "| LossQ | 3.35e+03 |\n", "| Time | 368 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -741 |\n", "| StdEpRet | 669 |\n", "| MaxEpRet | -116 |\n", "| MinEpRet | -2.95e+03 |\n", "| AverageTestEpRet | -519 |\n", "| StdTestEpRet | 287 |\n", "| MaxTestEpRet | -95.1 |\n", "| MinTestEpRet | -1.07e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQ1Vals | -554 |\n", "| StdQ1Vals | 312 |\n", "| MaxQ1Vals | -55.5 |\n", "| MinQ1Vals | -2.11e+03 |\n", "| AverageQ2Vals | -554 |\n", "| StdQ2Vals | 312 |\n", "| MaxQ2Vals | -56.9 |\n", "| MinQ2Vals | -2.1e+03 |\n", "| LossPi | 544 |\n", "| LossQ | 3.44e+03 |\n", "| Time | 375 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -850 |\n", "| StdEpRet | 673 |\n", "| MaxEpRet | -37.8 |\n", "| MinEpRet | -2.11e+03 |\n", "| AverageTestEpRet | -460 |\n", "| StdTestEpRet | 356 |\n", "| MaxTestEpRet | -16.4 |\n", "| MinTestEpRet | -1.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQ1Vals | -545 |\n", "| StdQ1Vals | 312 |\n", "| MaxQ1Vals | -54.5 |\n", "| MinQ1Vals | -2.12e+03 |\n", "| AverageQ2Vals | -545 |\n", "| StdQ2Vals | 312 |\n", "| MaxQ2Vals | -55.1 |\n", "| MinQ2Vals | -2.11e+03 |\n", "| LossPi | 535 |\n", "| LossQ | 3.33e+03 |\n", "| Time | 382 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -864 |\n", "| StdEpRet | 650 |\n", "| MaxEpRet | -170 |\n", "| MinEpRet | -2.74e+03 |\n", "| AverageTestEpRet | -273 |\n", "| StdTestEpRet | 190 |\n", "| MaxTestEpRet | -16.7 |\n", "| MinTestEpRet | -645 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQ1Vals | -536 |\n", "| StdQ1Vals | 311 |\n", "| MaxQ1Vals | -49.8 |\n", "| MinQ1Vals | -2.13e+03 |\n", "| AverageQ2Vals | -536 |\n", "| StdQ2Vals | 311 |\n", "| MaxQ2Vals | -51.8 |\n", "| MinQ2Vals | -2.11e+03 |\n", "| LossPi | 526 |\n", "| LossQ | 3.56e+03 |\n", "| Time | 390 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -781 |\n", "| StdEpRet | 366 |\n", "| MaxEpRet | -62.3 |\n", "| MinEpRet | -1.6e+03 |\n", "| AverageTestEpRet | -550 |\n", "| StdTestEpRet | 425 |\n", "| MaxTestEpRet | -58.6 |\n", "| MinTestEpRet | -1.35e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQ1Vals | -529 |\n", "| StdQ1Vals | 312 |\n", "| MaxQ1Vals | -46.7 |\n", "| MinQ1Vals | -2.14e+03 |\n", "| AverageQ2Vals | -529 |\n", "| StdQ2Vals | 312 |\n", "| MaxQ2Vals | -48 |\n", "| MinQ2Vals | -2.13e+03 |\n", "| LossPi | 517 |\n", "| LossQ | 3.48e+03 |\n", "| Time | 397 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -879 |\n", "| StdEpRet | 634 |\n", "| MaxEpRet | -84.6 |\n", "| MinEpRet | -2.26e+03 |\n", "| AverageTestEpRet | -541 |\n", "| StdTestEpRet | 369 |\n", "| MaxTestEpRet | -179 |\n", "| MinTestEpRet | -1.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQ1Vals | -518 |\n", "| StdQ1Vals | 309 |\n", "| MaxQ1Vals | -43.9 |\n", "| MinQ1Vals | -2.13e+03 |\n", "| AverageQ2Vals | -518 |\n", "| StdQ2Vals | 309 |\n", "| MaxQ2Vals | -45.3 |\n", "| MinQ2Vals | -2.12e+03 |\n", "| LossPi | 508 |\n", "| LossQ | 3.3e+03 |\n", "| Time | 404 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -559 |\n", "| StdEpRet | 428 |\n", "| MaxEpRet | -15.6 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -798 |\n", "| StdTestEpRet | 490 |\n", "| MaxTestEpRet | -86.6 |\n", "| MinTestEpRet | -1.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQ1Vals | -508 |\n", "| StdQ1Vals | 310 |\n", "| MaxQ1Vals | -40.2 |\n", "| MinQ1Vals | -2.09e+03 |\n", "| AverageQ2Vals | -508 |\n", "| StdQ2Vals | 310 |\n", "| MaxQ2Vals | -40.1 |\n", "| MinQ2Vals | -2.07e+03 |\n", "| LossPi | 499 |\n", "| LossQ | 3.33e+03 |\n", "| Time | 411 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -637 |\n", "| StdEpRet | 543 |\n", "| MaxEpRet | -90 |\n", "| MinEpRet | -2.3e+03 |\n", "| AverageTestEpRet | -451 |\n", "| StdTestEpRet | 194 |\n", "| MaxTestEpRet | -179 |\n", "| MinTestEpRet | -806 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQ1Vals | -498 |\n", "| StdQ1Vals | 310 |\n", "| MaxQ1Vals | -36.7 |\n", "| MinQ1Vals | -2.15e+03 |\n", "| AverageQ2Vals | -498 |\n", "| StdQ2Vals | 310 |\n", "| MaxQ2Vals | -39.2 |\n", "| MinQ2Vals | -2.13e+03 |\n", "| LossPi | 489 |\n", "| LossQ | 3.11e+03 |\n", "| Time | 418 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -755 |\n", "| StdEpRet | 567 |\n", "| MaxEpRet | -111 |\n", "| MinEpRet | -2.44e+03 |\n", "| AverageTestEpRet | -867 |\n", "| StdTestEpRet | 562 |\n", "| MaxTestEpRet | -146 |\n", "| MinTestEpRet | -2.25e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQ1Vals | -490 |\n", "| StdQ1Vals | 310 |\n", "| MaxQ1Vals | -31.7 |\n", "| MinQ1Vals | -2.13e+03 |\n", "| AverageQ2Vals | -490 |\n", "| StdQ2Vals | 310 |\n", "| MaxQ2Vals | -33.3 |\n", "| MinQ2Vals | -2.12e+03 |\n", "| LossPi | 480 |\n", "| LossQ | 3.21e+03 |\n", "| Time | 425 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -680 |\n", "| StdEpRet | 388 |\n", "| MaxEpRet | -41 |\n", "| MinEpRet | -1.68e+03 |\n", "| AverageTestEpRet | -816 |\n", "| StdTestEpRet | 498 |\n", "| MaxTestEpRet | -207 |\n", "| MinTestEpRet | -1.77e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQ1Vals | -479 |\n", "| StdQ1Vals | 309 |\n", "| MaxQ1Vals | -27.2 |\n", "| MinQ1Vals | -2.1e+03 |\n", "| AverageQ2Vals | -479 |\n", "| StdQ2Vals | 309 |\n", "| MaxQ2Vals | -29.3 |\n", "| MinQ2Vals | -2.09e+03 |\n", "| LossPi | 470 |\n", "| LossQ | 2.99e+03 |\n", "| Time | 433 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -850 |\n", "| StdEpRet | 578 |\n", "| MaxEpRet | -71.3 |\n", "| MinEpRet | -2.19e+03 |\n", "| AverageTestEpRet | -833 |\n", "| StdTestEpRet | 631 |\n", "| MaxTestEpRet | -192 |\n", "| MinTestEpRet | -2.43e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQ1Vals | -471 |\n", "| StdQ1Vals | 310 |\n", "| MaxQ1Vals | -24 |\n", "| MinQ1Vals | -2.05e+03 |\n", "| AverageQ2Vals | -471 |\n", "| StdQ2Vals | 310 |\n", "| MaxQ2Vals | -25.7 |\n", "| MinQ2Vals | -2.04e+03 |\n", "| LossPi | 462 |\n", "| LossQ | 3.06e+03 |\n", "| Time | 440 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 0\n", "logger_kwargs = dict(output_dir='td3_b0', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 10000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "actnoise_b = 0.1\n", "pilr_b = 0.001\n", "qlr_b = 0.001\n", "\n", "# TD3 specific params\n", "pd_b = 2\n", "targnoise_b = 0.2\n", "noiseclip_b = 0.5\n", "\n", "\n", "# Baseline 0 training\n", "spinup.td3_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b, policy_delay = pd_b, target_noise = targnoise_b, noise_clip = noiseclip_b)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[32;1mLogging data to td3_b1/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"td3_b1\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='td3_b1/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"td3_b1\"\n", " },\n", " \"max_ep_len\":\t110,\n", " \"noise_clip\":\t0.1,\n", " \"num_test_episodes\":\t10,\n", " \"pi_lr\":\t0.001,\n", " \"policy_delay\":\t2,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"target_noise\":\t0.2,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3002, \t q1: 3301, \t q2: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -6.82e+03 |\n", "| StdEpRet | 1.43e+03 |\n", "| MaxEpRet | -4.34e+03 |\n", "| MinEpRet | -8.99e+03 |\n", "| AverageTestEpRet | -6.48e+03 |\n", "| StdTestEpRet | 1.38e+03 |\n", "| MaxTestEpRet | -4.35e+03 |\n", "| MinTestEpRet | -9.09e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQ1Vals | -82.7 |\n", "| StdQ1Vals | 41 |\n", "| MaxQ1Vals | 3.29 |\n", "| MinQ1Vals | -226 |\n", "| AverageQ2Vals | -82.5 |\n", "| StdQ2Vals | 41.1 |\n", "| MaxQ2Vals | 3.35 |\n", "| MinQ2Vals | -224 |\n", "| LossPi | 75.4 |\n", "| LossQ | 3.05e+03 |\n", "| Time | 4.06 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -7.02e+03 |\n", "| StdEpRet | 1.08e+03 |\n", "| MaxEpRet | -5.85e+03 |\n", "| MinEpRet | -9.03e+03 |\n", "| AverageTestEpRet | -6.81e+03 |\n", "| StdTestEpRet | 2.1e+03 |\n", "| MaxTestEpRet | -3.98e+03 |\n", "| MinTestEpRet | -1.13e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQ1Vals | -214 |\n", "| StdQ1Vals | 78.3 |\n", "| MaxQ1Vals | -30.3 |\n", "| MinQ1Vals | -550 |\n", "| AverageQ2Vals | -214 |\n", "| StdQ2Vals | 78.3 |\n", "| MaxQ2Vals | -31.5 |\n", "| MinQ2Vals | -553 |\n", "| LossPi | 202 |\n", "| LossQ | 2.37e+03 |\n", "| Time | 11.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -6.6e+03 |\n", "| StdEpRet | 1.5e+03 |\n", "| MaxEpRet | -4.28e+03 |\n", "| MinEpRet | -9.77e+03 |\n", "| AverageTestEpRet | -7.33e+03 |\n", "| StdTestEpRet | 2.78e+03 |\n", "| MaxTestEpRet | -3.04e+03 |\n", "| MinTestEpRet | -1.16e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQ1Vals | -396 |\n", "| StdQ1Vals | 115 |\n", "| MaxQ1Vals | -108 |\n", "| MinQ1Vals | -920 |\n", "| AverageQ2Vals | -396 |\n", "| StdQ2Vals | 115 |\n", "| MaxQ2Vals | -106 |\n", "| MinQ2Vals | -917 |\n", "| LossPi | 383 |\n", "| LossQ | 3.04e+03 |\n", "| Time | 18.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -7.13e+03 |\n", "| StdEpRet | 1.2e+03 |\n", "| MaxEpRet | -5.4e+03 |\n", "| MinEpRet | -8.81e+03 |\n", "| AverageTestEpRet | -3.67e+03 |\n", "| StdTestEpRet | 1.76e+03 |\n", "| MaxTestEpRet | -1.37e+03 |\n", "| MinTestEpRet | -6.98e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQ1Vals | -568 |\n", "| StdQ1Vals | 151 |\n", "| MaxQ1Vals | -186 |\n", "| MinQ1Vals | -1.23e+03 |\n", "| AverageQ2Vals | -568 |\n", "| StdQ2Vals | 151 |\n", "| MaxQ2Vals | -181 |\n", "| MinQ2Vals | -1.22e+03 |\n", "| LossPi | 552 |\n", "| LossQ | 4.76e+03 |\n", "| Time | 25.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.6e+03 |\n", "| StdEpRet | 1.3e+03 |\n", "| MaxEpRet | -4.92e+03 |\n", "| MinEpRet | -9.9e+03 |\n", "| AverageTestEpRet | -3.16e+03 |\n", "| StdTestEpRet | 1.9e+03 |\n", "| MaxTestEpRet | -1.1e+03 |\n", "| MinTestEpRet | -6.75e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQ1Vals | -727 |\n", "| StdQ1Vals | 178 |\n", "| MaxQ1Vals | -270 |\n", "| MinQ1Vals | -1.47e+03 |\n", "| AverageQ2Vals | -727 |\n", "| StdQ2Vals | 178 |\n", "| MaxQ2Vals | -265 |\n", "| MinQ2Vals | -1.47e+03 |\n", "| LossPi | 708 |\n", "| LossQ | 6.82e+03 |\n", "| Time | 32.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -6.87e+03 |\n", "| StdEpRet | 957 |\n", "| MaxEpRet | -5.52e+03 |\n", "| MinEpRet | -8.42e+03 |\n", "| AverageTestEpRet | -3.26e+03 |\n", "| StdTestEpRet | 2.87e+03 |\n", "| MaxTestEpRet | -265 |\n", "| MinTestEpRet | -1.08e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQ1Vals | -869 |\n", "| StdQ1Vals | 197 |\n", "| MaxQ1Vals | -341 |\n", "| MinQ1Vals | -1.69e+03 |\n", "| AverageQ2Vals | -869 |\n", "| StdQ2Vals | 197 |\n", "| MaxQ2Vals | -336 |\n", "| MinQ2Vals | -1.69e+03 |\n", "| LossPi | 848 |\n", "| LossQ | 8.82e+03 |\n", "| Time | 39.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -2.89e+03 |\n", "| StdEpRet | 1.7e+03 |\n", "| MaxEpRet | -759 |\n", "| MinEpRet | -7.06e+03 |\n", "| AverageTestEpRet | -3.55e+03 |\n", "| StdTestEpRet | 2.54e+03 |\n", "| MaxTestEpRet | -534 |\n", "| MinTestEpRet | -8.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQ1Vals | -977 |\n", "| StdQ1Vals | 221 |\n", "| MaxQ1Vals | -429 |\n", "| MinQ1Vals | -1.85e+03 |\n", "| AverageQ2Vals | -978 |\n", "| StdQ2Vals | 221 |\n", "| MaxQ2Vals | -438 |\n", "| MinQ2Vals | -1.84e+03 |\n", "| LossPi | 953 |\n", "| LossQ | 9.69e+03 |\n", "| Time | 46.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -2e+03 |\n", "| StdEpRet | 1.73e+03 |\n", "| MaxEpRet | -186 |\n", "| MinEpRet | -6.77e+03 |\n", "| AverageTestEpRet | -1.41e+03 |\n", "| StdTestEpRet | 989 |\n", "| MaxTestEpRet | -385 |\n", "| MinTestEpRet | -3.49e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQ1Vals | -1.04e+03 |\n", "| StdQ1Vals | 250 |\n", "| MaxQ1Vals | -479 |\n", "| MinQ1Vals | -1.97e+03 |\n", "| AverageQ2Vals | -1.04e+03 |\n", "| StdQ2Vals | 250 |\n", "| MaxQ2Vals | -486 |\n", "| MinQ2Vals | -1.96e+03 |\n", "| LossPi | 1.02e+03 |\n", "| LossQ | 9.37e+03 |\n", "| Time | 53.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -2.07e+03 |\n", "| StdEpRet | 1.78e+03 |\n", "| MaxEpRet | -247 |\n", "| MinEpRet | -6.3e+03 |\n", "| AverageTestEpRet | -2.43e+03 |\n", "| StdTestEpRet | 1.47e+03 |\n", "| MaxTestEpRet | -647 |\n", "| MinTestEpRet | -5.71e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQ1Vals | -1.09e+03 |\n", "| StdQ1Vals | 275 |\n", "| MaxQ1Vals | -505 |\n", "| MinQ1Vals | -2.08e+03 |\n", "| AverageQ2Vals | -1.09e+03 |\n", "| StdQ2Vals | 275 |\n", "| MaxQ2Vals | -509 |\n", "| MinQ2Vals | -2.08e+03 |\n", "| LossPi | 1.06e+03 |\n", "| LossQ | 9.5e+03 |\n", "| Time | 60.4 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -2.14e+03 |\n", "| StdEpRet | 2.1e+03 |\n", "| MaxEpRet | -242 |\n", "| MinEpRet | -8.93e+03 |\n", "| AverageTestEpRet | -2.12e+03 |\n", "| StdTestEpRet | 2.75e+03 |\n", "| MaxTestEpRet | -79.7 |\n", "| MinTestEpRet | -9.07e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQ1Vals | -1.13e+03 |\n", "| StdQ1Vals | 292 |\n", "| MaxQ1Vals | -536 |\n", "| MinQ1Vals | -2.18e+03 |\n", "| AverageQ2Vals | -1.13e+03 |\n", "| StdQ2Vals | 292 |\n", "| MaxQ2Vals | -538 |\n", "| MinQ2Vals | -2.17e+03 |\n", "| LossPi | 1.11e+03 |\n", "| LossQ | 9.45e+03 |\n", "| Time | 67.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -1.82e+03 |\n", "| StdEpRet | 2.44e+03 |\n", "| MaxEpRet | -110 |\n", "| MinEpRet | -8.63e+03 |\n", "| AverageTestEpRet | -1.56e+03 |\n", "| StdTestEpRet | 1.74e+03 |\n", "| MaxTestEpRet | -64.8 |\n", "| MinTestEpRet | -6.1e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQ1Vals | -1.16e+03 |\n", "| StdQ1Vals | 310 |\n", "| MaxQ1Vals | -550 |\n", "| MinQ1Vals | -2.38e+03 |\n", "| AverageQ2Vals | -1.16e+03 |\n", "| StdQ2Vals | 310 |\n", "| MaxQ2Vals | -549 |\n", "| MinQ2Vals | -2.39e+03 |\n", "| LossPi | 1.14e+03 |\n", "| LossQ | 9.9e+03 |\n", "| Time | 74.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -2.3e+03 |\n", "| StdEpRet | 2.51e+03 |\n", "| MaxEpRet | -392 |\n", "| MinEpRet | -1.01e+04 |\n", "| AverageTestEpRet | -998 |\n", "| StdTestEpRet | 589 |\n", "| MaxTestEpRet | -223 |\n", "| MinTestEpRet | -2.29e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQ1Vals | -1.18e+03 |\n", "| StdQ1Vals | 327 |\n", "| MaxQ1Vals | -559 |\n", "| MinQ1Vals | -2.49e+03 |\n", "| AverageQ2Vals | -1.18e+03 |\n", "| StdQ2Vals | 327 |\n", "| MaxQ2Vals | -562 |\n", "| MinQ2Vals | -2.51e+03 |\n", "| LossPi | 1.16e+03 |\n", "| LossQ | 9.91e+03 |\n", "| Time | 81.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -1.92e+03 |\n", "| StdEpRet | 2.06e+03 |\n", "| MaxEpRet | -174 |\n", "| MinEpRet | -7.09e+03 |\n", "| AverageTestEpRet | -1.01e+03 |\n", "| StdTestEpRet | 663 |\n", "| MaxTestEpRet | -97.4 |\n", "| MinTestEpRet | -2.07e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQ1Vals | -1.2e+03 |\n", "| StdQ1Vals | 344 |\n", "| MaxQ1Vals | -569 |\n", "| MinQ1Vals | -2.59e+03 |\n", "| AverageQ2Vals | -1.2e+03 |\n", "| StdQ2Vals | 344 |\n", "| MaxQ2Vals | -567 |\n", "| MinQ2Vals | -2.61e+03 |\n", "| LossPi | 1.17e+03 |\n", "| LossQ | 1.04e+04 |\n", "| Time | 88.2 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -1.39e+03 |\n", "| StdEpRet | 1.86e+03 |\n", "| MaxEpRet | -80.7 |\n", "| MinEpRet | -7.67e+03 |\n", "| AverageTestEpRet | -1.24e+03 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -357 |\n", "| MinTestEpRet | -3.24e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQ1Vals | -1.2e+03 |\n", "| StdQ1Vals | 356 |\n", "| MaxQ1Vals | -570 |\n", "| MinQ1Vals | -2.73e+03 |\n", "| AverageQ2Vals | -1.2e+03 |\n", "| StdQ2Vals | 356 |\n", "| MaxQ2Vals | -568 |\n", "| MinQ2Vals | -2.74e+03 |\n", "| LossPi | 1.18e+03 |\n", "| LossQ | 1.11e+04 |\n", "| Time | 95.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -889 |\n", "| StdEpRet | 559 |\n", "| MaxEpRet | -177 |\n", "| MinEpRet | -2.04e+03 |\n", "| AverageTestEpRet | -756 |\n", "| StdTestEpRet | 529 |\n", "| MaxTestEpRet | -128 |\n", "| MinTestEpRet | -1.57e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQ1Vals | -1.2e+03 |\n", "| StdQ1Vals | 370 |\n", "| MaxQ1Vals | -567 |\n", "| MinQ1Vals | -2.81e+03 |\n", "| AverageQ2Vals | -1.2e+03 |\n", "| StdQ2Vals | 370 |\n", "| MaxQ2Vals | -569 |\n", "| MinQ2Vals | -2.81e+03 |\n", "| LossPi | 1.18e+03 |\n", "| LossQ | 1.07e+04 |\n", "| Time | 102 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -991 |\n", "| StdEpRet | 672 |\n", "| MaxEpRet | -115 |\n", "| MinEpRet | -2.54e+03 |\n", "| AverageTestEpRet | -900 |\n", "| StdTestEpRet | 748 |\n", "| MaxTestEpRet | -173 |\n", "| MinTestEpRet | -2.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQ1Vals | -1.19e+03 |\n", "| StdQ1Vals | 383 |\n", "| MaxQ1Vals | -542 |\n", "| MinQ1Vals | -2.86e+03 |\n", "| AverageQ2Vals | -1.19e+03 |\n", "| StdQ2Vals | 383 |\n", "| MaxQ2Vals | -542 |\n", "| MinQ2Vals | -2.86e+03 |\n", "| LossPi | 1.16e+03 |\n", "| LossQ | 1.12e+04 |\n", "| Time | 109 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -771 |\n", "| StdEpRet | 558 |\n", "| MaxEpRet | -138 |\n", "| MinEpRet | -1.86e+03 |\n", "| AverageTestEpRet | -441 |\n", "| StdTestEpRet | 326 |\n", "| MaxTestEpRet | -112 |\n", "| MinTestEpRet | -1.07e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQ1Vals | -1.17e+03 |\n", "| StdQ1Vals | 390 |\n", "| MaxQ1Vals | -518 |\n", "| MinQ1Vals | -2.93e+03 |\n", "| AverageQ2Vals | -1.17e+03 |\n", "| StdQ2Vals | 390 |\n", "| MaxQ2Vals | -518 |\n", "| MinQ2Vals | -2.93e+03 |\n", "| LossPi | 1.15e+03 |\n", "| LossQ | 1.17e+04 |\n", "| Time | 116 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -473 |\n", "| StdEpRet | 244 |\n", "| MaxEpRet | -122 |\n", "| MinEpRet | -991 |\n", "| AverageTestEpRet | -1.22e+03 |\n", "| StdTestEpRet | 1.61e+03 |\n", "| MaxTestEpRet | -46.2 |\n", "| MinTestEpRet | -4.63e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQ1Vals | -1.15e+03 |\n", "| StdQ1Vals | 393 |\n", "| MaxQ1Vals | -499 |\n", "| MinQ1Vals | -2.93e+03 |\n", "| AverageQ2Vals | -1.15e+03 |\n", "| StdQ2Vals | 393 |\n", "| MaxQ2Vals | -499 |\n", "| MinQ2Vals | -2.93e+03 |\n", "| LossPi | 1.13e+03 |\n", "| LossQ | 1.13e+04 |\n", "| Time | 123 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -1.01e+03 |\n", "| StdEpRet | 888 |\n", "| MaxEpRet | -42.2 |\n", "| MinEpRet | -3.28e+03 |\n", "| AverageTestEpRet | -691 |\n", "| StdTestEpRet | 425 |\n", "| MaxTestEpRet | -52.2 |\n", "| MinTestEpRet | -1.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQ1Vals | -1.13e+03 |\n", "| StdQ1Vals | 398 |\n", "| MaxQ1Vals | -475 |\n", "| MinQ1Vals | -2.96e+03 |\n", "| AverageQ2Vals | -1.13e+03 |\n", "| StdQ2Vals | 398 |\n", "| MaxQ2Vals | -471 |\n", "| MinQ2Vals | -2.96e+03 |\n", "| LossPi | 1.1e+03 |\n", "| LossQ | 1.12e+04 |\n", "| Time | 131 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -572 |\n", "| StdEpRet | 334 |\n", "| MaxEpRet | -217 |\n", "| MinEpRet | -1.37e+03 |\n", "| AverageTestEpRet | -1.02e+03 |\n", "| StdTestEpRet | 738 |\n", "| MaxTestEpRet | -39.8 |\n", "| MinTestEpRet | -2.13e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQ1Vals | -1.1e+03 |\n", "| StdQ1Vals | 399 |\n", "| MaxQ1Vals | -448 |\n", "| MinQ1Vals | -2.95e+03 |\n", "| AverageQ2Vals | -1.1e+03 |\n", "| StdQ2Vals | 398 |\n", "| MaxQ2Vals | -446 |\n", "| MinQ2Vals | -2.95e+03 |\n", "| LossPi | 1.08e+03 |\n", "| LossQ | 1.11e+04 |\n", "| Time | 138 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -697 |\n", "| StdEpRet | 465 |\n", "| MaxEpRet | -211 |\n", "| MinEpRet | -2.02e+03 |\n", "| AverageTestEpRet | -682 |\n", "| StdTestEpRet | 314 |\n", "| MaxTestEpRet | -216 |\n", "| MinTestEpRet | -1.21e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQ1Vals | -1.07e+03 |\n", "| StdQ1Vals | 399 |\n", "| MaxQ1Vals | -424 |\n", "| MinQ1Vals | -2.94e+03 |\n", "| AverageQ2Vals | -1.07e+03 |\n", "| StdQ2Vals | 399 |\n", "| MaxQ2Vals | -422 |\n", "| MinQ2Vals | -2.94e+03 |\n", "| LossPi | 1.05e+03 |\n", "| LossQ | 1.1e+04 |\n", "| Time | 144 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -584 |\n", "| StdEpRet | 449 |\n", "| MaxEpRet | -61.1 |\n", "| MinEpRet | -1.79e+03 |\n", "| AverageTestEpRet | -486 |\n", "| StdTestEpRet | 455 |\n", "| MaxTestEpRet | -67.9 |\n", "| MinTestEpRet | -1.68e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQ1Vals | -1.03e+03 |\n", "| StdQ1Vals | 398 |\n", "| MaxQ1Vals | -406 |\n", "| MinQ1Vals | -2.88e+03 |\n", "| AverageQ2Vals | -1.03e+03 |\n", "| StdQ2Vals | 398 |\n", "| MaxQ2Vals | -402 |\n", "| MinQ2Vals | -2.88e+03 |\n", "| LossPi | 1.01e+03 |\n", "| LossQ | 1.02e+04 |\n", "| Time | 151 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -783 |\n", "| StdEpRet | 684 |\n", "| MaxEpRet | -73.7 |\n", "| MinEpRet | -3.06e+03 |\n", "| AverageTestEpRet | -546 |\n", "| StdTestEpRet | 343 |\n", "| MaxTestEpRet | -118 |\n", "| MinTestEpRet | -1.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQ1Vals | -994 |\n", "| StdQ1Vals | 397 |\n", "| MaxQ1Vals | -383 |\n", "| MinQ1Vals | -2.8e+03 |\n", "| AverageQ2Vals | -994 |\n", "| StdQ2Vals | 397 |\n", "| MaxQ2Vals | -381 |\n", "| MinQ2Vals | -2.8e+03 |\n", "| LossPi | 973 |\n", "| LossQ | 1.01e+04 |\n", "| Time | 159 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -662 |\n", "| StdEpRet | 388 |\n", "| MaxEpRet | -50 |\n", "| MinEpRet | -1.23e+03 |\n", "| AverageTestEpRet | -880 |\n", "| StdTestEpRet | 558 |\n", "| MaxTestEpRet | -180 |\n", "| MinTestEpRet | -2.01e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQ1Vals | -962 |\n", "| StdQ1Vals | 391 |\n", "| MaxQ1Vals | -361 |\n", "| MinQ1Vals | -2.8e+03 |\n", "| AverageQ2Vals | -962 |\n", "| StdQ2Vals | 391 |\n", "| MaxQ2Vals | -356 |\n", "| MinQ2Vals | -2.81e+03 |\n", "| LossPi | 941 |\n", "| LossQ | 9.66e+03 |\n", "| Time | 165 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -845 |\n", "| StdEpRet | 826 |\n", "| MaxEpRet | -79.2 |\n", "| MinEpRet | -3.5e+03 |\n", "| AverageTestEpRet | -535 |\n", "| StdTestEpRet | 432 |\n", "| MaxTestEpRet | -93.4 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQ1Vals | -925 |\n", "| StdQ1Vals | 386 |\n", "| MaxQ1Vals | -337 |\n", "| MinQ1Vals | -2.77e+03 |\n", "| AverageQ2Vals | -925 |\n", "| StdQ2Vals | 385 |\n", "| MaxQ2Vals | -331 |\n", "| MinQ2Vals | -2.78e+03 |\n", "| LossPi | 906 |\n", "| LossQ | 8.82e+03 |\n", "| Time | 173 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -635 |\n", "| StdEpRet | 399 |\n", "| MaxEpRet | -25.9 |\n", "| MinEpRet | -1.25e+03 |\n", "| AverageTestEpRet | -577 |\n", "| StdTestEpRet | 425 |\n", "| MaxTestEpRet | -24.4 |\n", "| MinTestEpRet | -1.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQ1Vals | -891 |\n", "| StdQ1Vals | 382 |\n", "| MaxQ1Vals | -312 |\n", "| MinQ1Vals | -2.68e+03 |\n", "| AverageQ2Vals | -891 |\n", "| StdQ2Vals | 382 |\n", "| MaxQ2Vals | -307 |\n", "| MinQ2Vals | -2.68e+03 |\n", "| LossPi | 873 |\n", "| LossQ | 8.52e+03 |\n", "| Time | 180 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -622 |\n", "| StdEpRet | 597 |\n", "| MaxEpRet | -15.8 |\n", "| MinEpRet | -2.45e+03 |\n", "| AverageTestEpRet | -837 |\n", "| StdTestEpRet | 383 |\n", "| MaxTestEpRet | -208 |\n", "| MinTestEpRet | -1.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQ1Vals | -863 |\n", "| StdQ1Vals | 379 |\n", "| MaxQ1Vals | -295 |\n", "| MinQ1Vals | -2.64e+03 |\n", "| AverageQ2Vals | -863 |\n", "| StdQ2Vals | 379 |\n", "| MaxQ2Vals | -292 |\n", "| MinQ2Vals | -2.65e+03 |\n", "| LossPi | 847 |\n", "| LossQ | 7.59e+03 |\n", "| Time | 187 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -596 |\n", "| StdEpRet | 452 |\n", "| MaxEpRet | -76.2 |\n", "| MinEpRet | -1.5e+03 |\n", "| AverageTestEpRet | -537 |\n", "| StdTestEpRet | 234 |\n", "| MaxTestEpRet | -146 |\n", "| MinTestEpRet | -971 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQ1Vals | -840 |\n", "| StdQ1Vals | 377 |\n", "| MaxQ1Vals | -277 |\n", "| MinQ1Vals | -2.63e+03 |\n", "| AverageQ2Vals | -840 |\n", "| StdQ2Vals | 377 |\n", "| MaxQ2Vals | -273 |\n", "| MinQ2Vals | -2.64e+03 |\n", "| LossPi | 824 |\n", "| LossQ | 7.53e+03 |\n", "| Time | 194 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -765 |\n", "| StdEpRet | 322 |\n", "| MaxEpRet | -225 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -733 |\n", "| StdTestEpRet | 383 |\n", "| MaxTestEpRet | -100 |\n", "| MinTestEpRet | -1.5e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQ1Vals | -813 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -255 |\n", "| MinQ1Vals | -2.57e+03 |\n", "| AverageQ2Vals | -813 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -252 |\n", "| MinQ2Vals | -2.57e+03 |\n", "| LossPi | 796 |\n", "| LossQ | 7.44e+03 |\n", "| Time | 201 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -551 |\n", "| StdEpRet | 415 |\n", "| MaxEpRet | -42.4 |\n", "| MinEpRet | -1.62e+03 |\n", "| AverageTestEpRet | -860 |\n", "| StdTestEpRet | 372 |\n", "| MaxTestEpRet | -254 |\n", "| MinTestEpRet | -1.48e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQ1Vals | -790 |\n", "| StdQ1Vals | 371 |\n", "| MaxQ1Vals | -232 |\n", "| MinQ1Vals | -2.51e+03 |\n", "| AverageQ2Vals | -790 |\n", "| StdQ2Vals | 371 |\n", "| MaxQ2Vals | -231 |\n", "| MinQ2Vals | -2.51e+03 |\n", "| LossPi | 774 |\n", "| LossQ | 7.09e+03 |\n", "| Time | 208 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -624 |\n", "| StdEpRet | 515 |\n", "| MaxEpRet | -156 |\n", "| MinEpRet | -1.69e+03 |\n", "| AverageTestEpRet | -839 |\n", "| StdTestEpRet | 472 |\n", "| MaxTestEpRet | -316 |\n", "| MinTestEpRet | -1.65e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQ1Vals | -768 |\n", "| StdQ1Vals | 369 |\n", "| MaxQ1Vals | -216 |\n", "| MinQ1Vals | -2.47e+03 |\n", "| AverageQ2Vals | -768 |\n", "| StdQ2Vals | 369 |\n", "| MaxQ2Vals | -214 |\n", "| MinQ2Vals | -2.47e+03 |\n", "| LossPi | 753 |\n", "| LossQ | 6.56e+03 |\n", "| Time | 215 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -812 |\n", "| StdEpRet | 489 |\n", "| MaxEpRet | -232 |\n", "| MinEpRet | -1.98e+03 |\n", "| AverageTestEpRet | -508 |\n", "| StdTestEpRet | 326 |\n", "| MaxTestEpRet | -88.3 |\n", "| MinTestEpRet | -955 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQ1Vals | -751 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -196 |\n", "| MinQ1Vals | -2.48e+03 |\n", "| AverageQ2Vals | -751 |\n", "| StdQ2Vals | 366 |\n", "| MaxQ2Vals | -195 |\n", "| MinQ2Vals | -2.49e+03 |\n", "| LossPi | 734 |\n", "| LossQ | 6.78e+03 |\n", "| Time | 222 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -862 |\n", "| StdEpRet | 472 |\n", "| MaxEpRet | -190 |\n", "| MinEpRet | -1.63e+03 |\n", "| AverageTestEpRet | -677 |\n", "| StdTestEpRet | 347 |\n", "| MaxTestEpRet | -137 |\n", "| MinTestEpRet | -1.24e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQ1Vals | -730 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -174 |\n", "| MinQ1Vals | -2.41e+03 |\n", "| AverageQ2Vals | -730 |\n", "| StdQ2Vals | 366 |\n", "| MaxQ2Vals | -171 |\n", "| MinQ2Vals | -2.41e+03 |\n", "| LossPi | 715 |\n", "| LossQ | 6.46e+03 |\n", "| Time | 229 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -603 |\n", "| StdEpRet | 334 |\n", "| MaxEpRet | -174 |\n", "| MinEpRet | -1.17e+03 |\n", "| AverageTestEpRet | -700 |\n", "| StdTestEpRet | 318 |\n", "| MaxTestEpRet | -195 |\n", "| MinTestEpRet | -1.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQ1Vals | -710 |\n", "| StdQ1Vals | 363 |\n", "| MaxQ1Vals | -156 |\n", "| MinQ1Vals | -2.38e+03 |\n", "| AverageQ2Vals | -710 |\n", "| StdQ2Vals | 363 |\n", "| MaxQ2Vals | -154 |\n", "| MinQ2Vals | -2.38e+03 |\n", "| LossPi | 697 |\n", "| LossQ | 6.56e+03 |\n", "| Time | 237 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -510 |\n", "| StdEpRet | 357 |\n", "| MaxEpRet | -77.1 |\n", "| MinEpRet | -1.23e+03 |\n", "| AverageTestEpRet | -713 |\n", "| StdTestEpRet | 344 |\n", "| MaxTestEpRet | -231 |\n", "| MinTestEpRet | -1.32e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQ1Vals | -689 |\n", "| StdQ1Vals | 361 |\n", "| MaxQ1Vals | -143 |\n", "| MinQ1Vals | -2.36e+03 |\n", "| AverageQ2Vals | -689 |\n", "| StdQ2Vals | 361 |\n", "| MaxQ2Vals | -141 |\n", "| MinQ2Vals | -2.36e+03 |\n", "| LossPi | 675 |\n", "| LossQ | 6.29e+03 |\n", "| Time | 243 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -654 |\n", "| StdEpRet | 370 |\n", "| MaxEpRet | -123 |\n", "| MinEpRet | -1.31e+03 |\n", "| AverageTestEpRet | -604 |\n", "| StdTestEpRet | 216 |\n", "| MaxTestEpRet | -340 |\n", "| MinTestEpRet | -1.03e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQ1Vals | -670 |\n", "| StdQ1Vals | 358 |\n", "| MaxQ1Vals | -123 |\n", "| MinQ1Vals | -2.3e+03 |\n", "| AverageQ2Vals | -670 |\n", "| StdQ2Vals | 358 |\n", "| MaxQ2Vals | -118 |\n", "| MinQ2Vals | -2.32e+03 |\n", "| LossPi | 656 |\n", "| LossQ | 5.87e+03 |\n", "| Time | 250 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -560 |\n", "| StdEpRet | 254 |\n", "| MaxEpRet | -83.2 |\n", "| MinEpRet | -1.03e+03 |\n", "| AverageTestEpRet | -541 |\n", "| StdTestEpRet | 295 |\n", "| MaxTestEpRet | -106 |\n", "| MinTestEpRet | -980 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQ1Vals | -651 |\n", "| StdQ1Vals | 353 |\n", "| MaxQ1Vals | -108 |\n", "| MinQ1Vals | -2.28e+03 |\n", "| AverageQ2Vals | -651 |\n", "| StdQ2Vals | 353 |\n", "| MaxQ2Vals | -104 |\n", "| MinQ2Vals | -2.29e+03 |\n", "| LossPi | 637 |\n", "| LossQ | 5.67e+03 |\n", "| Time | 257 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -731 |\n", "| StdEpRet | 239 |\n", "| MaxEpRet | -301 |\n", "| MinEpRet | -1.13e+03 |\n", "| AverageTestEpRet | -622 |\n", "| StdTestEpRet | 271 |\n", "| MaxTestEpRet | -192 |\n", "| MinTestEpRet | -1.08e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQ1Vals | -633 |\n", "| StdQ1Vals | 352 |\n", "| MaxQ1Vals | -89.6 |\n", "| MinQ1Vals | -2.25e+03 |\n", "| AverageQ2Vals | -633 |\n", "| StdQ2Vals | 352 |\n", "| MaxQ2Vals | -85 |\n", "| MinQ2Vals | -2.28e+03 |\n", "| LossPi | 620 |\n", "| LossQ | 5.35e+03 |\n", "| Time | 264 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -740 |\n", "| StdEpRet | 365 |\n", "| MaxEpRet | -155 |\n", "| MinEpRet | -1.64e+03 |\n", "| AverageTestEpRet | -497 |\n", "| StdTestEpRet | 365 |\n", "| MaxTestEpRet | -64.6 |\n", "| MinTestEpRet | -1.05e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQ1Vals | -614 |\n", "| StdQ1Vals | 348 |\n", "| MaxQ1Vals | -80.7 |\n", "| MinQ1Vals | -2.26e+03 |\n", "| AverageQ2Vals | -614 |\n", "| StdQ2Vals | 349 |\n", "| MaxQ2Vals | -77.1 |\n", "| MinQ2Vals | -2.28e+03 |\n", "| LossPi | 601 |\n", "| LossQ | 5.23e+03 |\n", "| Time | 271 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -637 |\n", "| StdEpRet | 394 |\n", "| MaxEpRet | -102 |\n", "| MinEpRet | -1.45e+03 |\n", "| AverageTestEpRet | -501 |\n", "| StdTestEpRet | 413 |\n", "| MaxTestEpRet | -17.8 |\n", "| MinTestEpRet | -1.33e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQ1Vals | -596 |\n", "| StdQ1Vals | 346 |\n", "| MaxQ1Vals | -71.5 |\n", "| MinQ1Vals | -2.21e+03 |\n", "| AverageQ2Vals | -596 |\n", "| StdQ2Vals | 346 |\n", "| MaxQ2Vals | -67.1 |\n", "| MinQ2Vals | -2.24e+03 |\n", "| LossPi | 585 |\n", "| LossQ | 5.17e+03 |\n", "| Time | 278 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -526 |\n", "| StdEpRet | 360 |\n", "| MaxEpRet | -50 |\n", "| MinEpRet | -1.43e+03 |\n", "| AverageTestEpRet | -339 |\n", "| StdTestEpRet | 506 |\n", "| MaxTestEpRet | -24.9 |\n", "| MinTestEpRet | -1.82e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQ1Vals | -578 |\n", "| StdQ1Vals | 344 |\n", "| MaxQ1Vals | -58.1 |\n", "| MinQ1Vals | -2.2e+03 |\n", "| AverageQ2Vals | -578 |\n", "| StdQ2Vals | 344 |\n", "| MaxQ2Vals | -55.4 |\n", "| MinQ2Vals | -2.23e+03 |\n", "| LossPi | 564 |\n", "| LossQ | 5.13e+03 |\n", "| Time | 286 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -629 |\n", "| StdEpRet | 411 |\n", "| MaxEpRet | -83.7 |\n", "| MinEpRet | -1.29e+03 |\n", "| AverageTestEpRet | -442 |\n", "| StdTestEpRet | 265 |\n", "| MaxTestEpRet | -39.6 |\n", "| MinTestEpRet | -764 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQ1Vals | -559 |\n", "| StdQ1Vals | 340 |\n", "| MaxQ1Vals | -52.2 |\n", "| MinQ1Vals | -2.22e+03 |\n", "| AverageQ2Vals | -559 |\n", "| StdQ2Vals | 340 |\n", "| MaxQ2Vals | -48.7 |\n", "| MinQ2Vals | -2.25e+03 |\n", "| LossPi | 544 |\n", "| LossQ | 5.16e+03 |\n", "| Time | 293 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -583 |\n", "| StdEpRet | 442 |\n", "| MaxEpRet | -58.4 |\n", "| MinEpRet | -1.69e+03 |\n", "| AverageTestEpRet | -752 |\n", "| StdTestEpRet | 430 |\n", "| MaxTestEpRet | -128 |\n", "| MinTestEpRet | -1.68e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQ1Vals | -545 |\n", "| StdQ1Vals | 341 |\n", "| MaxQ1Vals | -42.5 |\n", "| MinQ1Vals | -2.21e+03 |\n", "| AverageQ2Vals | -545 |\n", "| StdQ2Vals | 341 |\n", "| MaxQ2Vals | -41 |\n", "| MinQ2Vals | -2.25e+03 |\n", "| LossPi | 533 |\n", "| LossQ | 4.94e+03 |\n", "| Time | 300 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -665 |\n", "| StdEpRet | 424 |\n", "| MaxEpRet | -79.1 |\n", "| MinEpRet | -1.76e+03 |\n", "| AverageTestEpRet | -456 |\n", "| StdTestEpRet | 305 |\n", "| MaxTestEpRet | -60.8 |\n", "| MinTestEpRet | -927 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQ1Vals | -525 |\n", "| StdQ1Vals | 334 |\n", "| MaxQ1Vals | -31.8 |\n", "| MinQ1Vals | -2.17e+03 |\n", "| AverageQ2Vals | -525 |\n", "| StdQ2Vals | 334 |\n", "| MaxQ2Vals | -31.3 |\n", "| MinQ2Vals | -2.2e+03 |\n", "| LossPi | 512 |\n", "| LossQ | 4.52e+03 |\n", "| Time | 307 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -445 |\n", "| StdEpRet | 279 |\n", "| MaxEpRet | -104 |\n", "| MinEpRet | -1.17e+03 |\n", "| AverageTestEpRet | -728 |\n", "| StdTestEpRet | 473 |\n", "| MaxTestEpRet | -71.2 |\n", "| MinTestEpRet | -1.55e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQ1Vals | -510 |\n", "| StdQ1Vals | 331 |\n", "| MaxQ1Vals | -17.2 |\n", "| MinQ1Vals | -2.15e+03 |\n", "| AverageQ2Vals | -510 |\n", "| StdQ2Vals | 331 |\n", "| MaxQ2Vals | -22.8 |\n", "| MinQ2Vals | -2.17e+03 |\n", "| LossPi | 500 |\n", "| LossQ | 4.64e+03 |\n", "| Time | 314 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -652 |\n", "| StdEpRet | 381 |\n", "| MaxEpRet | -151 |\n", "| MinEpRet | -1.28e+03 |\n", "| AverageTestEpRet | -916 |\n", "| StdTestEpRet | 598 |\n", "| MaxTestEpRet | -259 |\n", "| MinTestEpRet | -2.47e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQ1Vals | -493 |\n", "| StdQ1Vals | 326 |\n", "| MaxQ1Vals | -6.54 |\n", "| MinQ1Vals | -2.13e+03 |\n", "| AverageQ2Vals | -493 |\n", "| StdQ2Vals | 326 |\n", "| MaxQ2Vals | -11.6 |\n", "| MinQ2Vals | -2.15e+03 |\n", "| LossPi | 483 |\n", "| LossQ | 4.52e+03 |\n", "| Time | 321 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -553 |\n", "| StdEpRet | 373 |\n", "| MaxEpRet | -130 |\n", "| MinEpRet | -1.31e+03 |\n", "| AverageTestEpRet | -518 |\n", "| StdTestEpRet | 434 |\n", "| MaxTestEpRet | -29.3 |\n", "| MinTestEpRet | -1.69e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQ1Vals | -479 |\n", "| StdQ1Vals | 322 |\n", "| MaxQ1Vals | -0.235 |\n", "| MinQ1Vals | -2.11e+03 |\n", "| AverageQ2Vals | -479 |\n", "| StdQ2Vals | 322 |\n", "| MaxQ2Vals | 0.744 |\n", "| MinQ2Vals | -2.15e+03 |\n", "| LossPi | 467 |\n", "| LossQ | 4.28e+03 |\n", "| Time | 328 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -714 |\n", "| StdEpRet | 329 |\n", "| MaxEpRet | -279 |\n", "| MinEpRet | -1.36e+03 |\n", "| AverageTestEpRet | -888 |\n", "| StdTestEpRet | 490 |\n", "| MaxTestEpRet | -312 |\n", "| MinTestEpRet | -1.94e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQ1Vals | -466 |\n", "| StdQ1Vals | 318 |\n", "| MaxQ1Vals | 4.95 |\n", "| MinQ1Vals | -2.08e+03 |\n", "| AverageQ2Vals | -466 |\n", "| StdQ2Vals | 318 |\n", "| MaxQ2Vals | 3.89 |\n", "| MinQ2Vals | -2.1e+03 |\n", "| LossPi | 454 |\n", "| LossQ | 4.15e+03 |\n", "| Time | 336 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -517 |\n", "| StdEpRet | 301 |\n", "| MaxEpRet | -52.9 |\n", "| MinEpRet | -1.13e+03 |\n", "| AverageTestEpRet | -607 |\n", "| StdTestEpRet | 534 |\n", "| MaxTestEpRet | -77.2 |\n", "| MinTestEpRet | -1.85e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQ1Vals | -453 |\n", "| StdQ1Vals | 316 |\n", "| MaxQ1Vals | 9.3 |\n", "| MinQ1Vals | -2.06e+03 |\n", "| AverageQ2Vals | -453 |\n", "| StdQ2Vals | 316 |\n", "| MaxQ2Vals | 7.32 |\n", "| MinQ2Vals | -2.08e+03 |\n", "| LossPi | 440 |\n", "| LossQ | 4.02e+03 |\n", "| Time | 342 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -565 |\n", "| StdEpRet | 219 |\n", "| MaxEpRet | -130 |\n", "| MinEpRet | -899 |\n", "| AverageTestEpRet | -532 |\n", "| StdTestEpRet | 249 |\n", "| MaxTestEpRet | -142 |\n", "| MinTestEpRet | -934 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQ1Vals | -439 |\n", "| StdQ1Vals | 313 |\n", "| MaxQ1Vals | 21.9 |\n", "| MinQ1Vals | -2.05e+03 |\n", "| AverageQ2Vals | -439 |\n", "| StdQ2Vals | 313 |\n", "| MaxQ2Vals | 16 |\n", "| MinQ2Vals | -2.09e+03 |\n", "| LossPi | 427 |\n", "| LossQ | 4.01e+03 |\n", "| Time | 349 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -695 |\n", "| StdEpRet | 414 |\n", "| MaxEpRet | -119 |\n", "| MinEpRet | -1.43e+03 |\n", "| AverageTestEpRet | -470 |\n", "| StdTestEpRet | 271 |\n", "| MaxTestEpRet | -87.5 |\n", "| MinTestEpRet | -1.04e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQ1Vals | -425 |\n", "| StdQ1Vals | 309 |\n", "| MaxQ1Vals | 23.1 |\n", "| MinQ1Vals | -2.01e+03 |\n", "| AverageQ2Vals | -425 |\n", "| StdQ2Vals | 309 |\n", "| MaxQ2Vals | 19.8 |\n", "| MinQ2Vals | -2.04e+03 |\n", "| LossPi | 414 |\n", "| LossQ | 3.85e+03 |\n", "| Time | 356 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -719 |\n", "| StdEpRet | 495 |\n", "| MaxEpRet | -56.4 |\n", "| MinEpRet | -1.78e+03 |\n", "| AverageTestEpRet | -830 |\n", "| StdTestEpRet | 538 |\n", "| MaxTestEpRet | -273 |\n", "| MinTestEpRet | -1.72e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQ1Vals | -415 |\n", "| StdQ1Vals | 306 |\n", "| MaxQ1Vals | 55 |\n", "| MinQ1Vals | -1.98e+03 |\n", "| AverageQ2Vals | -415 |\n", "| StdQ2Vals | 306 |\n", "| MaxQ2Vals | 57.6 |\n", "| MinQ2Vals | -2e+03 |\n", "| LossPi | 402 |\n", "| LossQ | 3.65e+03 |\n", "| Time | 363 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -679 |\n", "| StdEpRet | 322 |\n", "| MaxEpRet | -160 |\n", "| MinEpRet | -1.21e+03 |\n", "| AverageTestEpRet | -617 |\n", "| StdTestEpRet | 298 |\n", "| MaxTestEpRet | -131 |\n", "| MinTestEpRet | -1.1e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQ1Vals | -400 |\n", "| StdQ1Vals | 302 |\n", "| MaxQ1Vals | 59.8 |\n", "| MinQ1Vals | -2e+03 |\n", "| AverageQ2Vals | -400 |\n", "| StdQ2Vals | 302 |\n", "| MaxQ2Vals | 60.3 |\n", "| MinQ2Vals | -2.01e+03 |\n", "| LossPi | 388 |\n", "| LossQ | 3.76e+03 |\n", "| Time | 370 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -742 |\n", "| StdEpRet | 395 |\n", "| MaxEpRet | -171 |\n", "| MinEpRet | -1.34e+03 |\n", "| AverageTestEpRet | -748 |\n", "| StdTestEpRet | 478 |\n", "| MaxTestEpRet | -111 |\n", "| MinTestEpRet | -1.66e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQ1Vals | -390 |\n", "| StdQ1Vals | 302 |\n", "| MaxQ1Vals | 61.9 |\n", "| MinQ1Vals | -1.98e+03 |\n", "| AverageQ2Vals | -390 |\n", "| StdQ2Vals | 302 |\n", "| MaxQ2Vals | 62.4 |\n", "| MinQ2Vals | -1.98e+03 |\n", "| LossPi | 379 |\n", "| LossQ | 3.6e+03 |\n", "| Time | 377 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -638 |\n", "| StdEpRet | 313 |\n", "| MaxEpRet | -81.5 |\n", "| MinEpRet | -1.16e+03 |\n", "| AverageTestEpRet | -547 |\n", "| StdTestEpRet | 359 |\n", "| MaxTestEpRet | -87.9 |\n", "| MinTestEpRet | -1.03e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQ1Vals | -378 |\n", "| StdQ1Vals | 301 |\n", "| MaxQ1Vals | 62.3 |\n", "| MinQ1Vals | -1.96e+03 |\n", "| AverageQ2Vals | -378 |\n", "| StdQ2Vals | 301 |\n", "| MaxQ2Vals | 61.1 |\n", "| MinQ2Vals | -1.98e+03 |\n", "| LossPi | 369 |\n", "| LossQ | 3.45e+03 |\n", "| Time | 385 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -702 |\n", "| StdEpRet | 469 |\n", "| MaxEpRet | -136 |\n", "| MinEpRet | -1.51e+03 |\n", "| AverageTestEpRet | -387 |\n", "| StdTestEpRet | 258 |\n", "| MaxTestEpRet | -26.8 |\n", "| MinTestEpRet | -763 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQ1Vals | -366 |\n", "| StdQ1Vals | 297 |\n", "| MaxQ1Vals | 61.2 |\n", "| MinQ1Vals | -1.93e+03 |\n", "| AverageQ2Vals | -366 |\n", "| StdQ2Vals | 297 |\n", "| MaxQ2Vals | 59 |\n", "| MinQ2Vals | -1.94e+03 |\n", "| LossPi | 355 |\n", "| LossQ | 3.48e+03 |\n", "| Time | 392 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -623 |\n", "| StdEpRet | 242 |\n", "| MaxEpRet | -314 |\n", "| MinEpRet | -1.2e+03 |\n", "| AverageTestEpRet | -763 |\n", "| StdTestEpRet | 471 |\n", "| MaxTestEpRet | -84.6 |\n", "| MinTestEpRet | -1.52e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQ1Vals | -357 |\n", "| StdQ1Vals | 297 |\n", "| MaxQ1Vals | 63.8 |\n", "| MinQ1Vals | -1.97e+03 |\n", "| AverageQ2Vals | -357 |\n", "| StdQ2Vals | 297 |\n", "| MaxQ2Vals | 60.2 |\n", "| MinQ2Vals | -1.94e+03 |\n", "| LossPi | 344 |\n", "| LossQ | 3.44e+03 |\n", "| Time | 399 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -776 |\n", "| StdEpRet | 437 |\n", "| MaxEpRet | -180 |\n", "| MinEpRet | -1.7e+03 |\n", "| AverageTestEpRet | -739 |\n", "| StdTestEpRet | 295 |\n", "| MaxTestEpRet | -224 |\n", "| MinTestEpRet | -1.18e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQ1Vals | -344 |\n", "| StdQ1Vals | 290 |\n", "| MaxQ1Vals | 70.5 |\n", "| MinQ1Vals | -1.92e+03 |\n", "| AverageQ2Vals | -344 |\n", "| StdQ2Vals | 290 |\n", "| MaxQ2Vals | 64.3 |\n", "| MinQ2Vals | -1.89e+03 |\n", "| LossPi | 333 |\n", "| LossQ | 3.5e+03 |\n", "| Time | 406 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -525 |\n", "| StdEpRet | 453 |\n", "| MaxEpRet | -51 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -580 |\n", "| StdTestEpRet | 353 |\n", "| MaxTestEpRet | -112 |\n", "| MinTestEpRet | -1.45e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQ1Vals | -332 |\n", "| StdQ1Vals | 287 |\n", "| MaxQ1Vals | 75.6 |\n", "| MinQ1Vals | -1.94e+03 |\n", "| AverageQ2Vals | -332 |\n", "| StdQ2Vals | 287 |\n", "| MaxQ2Vals | 71.7 |\n", "| MinQ2Vals | -1.92e+03 |\n", "| LossPi | 321 |\n", "| LossQ | 3.2e+03 |\n", "| Time | 413 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -670 |\n", "| StdEpRet | 376 |\n", "| MaxEpRet | -154 |\n", "| MinEpRet | -1.47e+03 |\n", "| AverageTestEpRet | -671 |\n", "| StdTestEpRet | 365 |\n", "| MaxTestEpRet | -59.3 |\n", "| MinTestEpRet | -1.16e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQ1Vals | -324 |\n", "| StdQ1Vals | 285 |\n", "| MaxQ1Vals | 90.1 |\n", "| MinQ1Vals | -1.91e+03 |\n", "| AverageQ2Vals | -324 |\n", "| StdQ2Vals | 285 |\n", "| MaxQ2Vals | 86 |\n", "| MinQ2Vals | -1.89e+03 |\n", "| LossPi | 314 |\n", "| LossQ | 3.16e+03 |\n", "| Time | 420 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 1\n", "logger_kwargs = dict(output_dir='td3_b1', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 10000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "actnoise_b = 0.1\n", "pilr_b = 0.001\n", "qlr_b = 0.001\n", "\n", "# TD3 specific params\n", "pd_b = 2\n", "targnoise_b = 0.2\n", "noiseclip_b = 0.1\n", "\n", "\n", "# Baseline 1 training\n", "spinup.td3_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b, policy_delay = pd_b, target_noise = targnoise_b, noise_clip = noiseclip_b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### SAC" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Log dir sac_b0 already exists! Storing info there anyway.\n", "\u001b[32;1mLogging data to sac_b0/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"alpha\":\t0.2,\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"sac_b0\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='sac_b0/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"sac_b0\"\n", " },\n", " \"lr\":\t0.001,\n", " \"max_ep_len\":\t110,\n", " \"num_test_episodes\":\t10,\n", " \"polyak\":\t0.995,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3604, \t q1: 3301, \t q2: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -6.79e+03 |\n", "| StdEpRet | 1.37e+03 |\n", "| MaxEpRet | -4.52e+03 |\n", "| MinEpRet | -1.03e+04 |\n", "| AverageTestEpRet | -6.93e+03 |\n", "| StdTestEpRet | 2.29e+03 |\n", "| MaxTestEpRet | -3.04e+03 |\n", "| MinTestEpRet | -1.13e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQ1Vals | -107 |\n", "| StdQ1Vals | 56 |\n", "| MaxQ1Vals | 4.59 |\n", "| MinQ1Vals | -318 |\n", "| AverageQ2Vals | -108 |\n", "| StdQ2Vals | 55.5 |\n", "| MaxQ2Vals | 2.45 |\n", "| MinQ2Vals | -322 |\n", "| AverageLogPi | 2.25 |\n", "| StdLogPi | 1.43 |\n", "| MaxLogPi | 28.4 |\n", "| MinLogPi | -7.32 |\n", "| LossPi | 99 |\n", "| LossQ | 3.32e+03 |\n", "| Time | 6.36 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -6.82e+03 |\n", "| StdEpRet | 1.46e+03 |\n", "| MaxEpRet | -4.73e+03 |\n", "| MinEpRet | -9.67e+03 |\n", "| AverageTestEpRet | -5.9e+03 |\n", "| StdTestEpRet | 2.22e+03 |\n", "| MaxTestEpRet | -3.72e+03 |\n", "| MinTestEpRet | -1.17e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQ1Vals | -323 |\n", "| StdQ1Vals | 132 |\n", "| MaxQ1Vals | -22.3 |\n", "| MinQ1Vals | -889 |\n", "| AverageQ2Vals | -323 |\n", "| StdQ2Vals | 132 |\n", "| MaxQ2Vals | -19.1 |\n", "| MinQ2Vals | -889 |\n", "| AverageLogPi | 2.76 |\n", "| StdLogPi | 1.2 |\n", "| MaxLogPi | 8.62 |\n", "| MinLogPi | -8.57 |\n", "| LossPi | 307 |\n", "| LossQ | 3.07e+03 |\n", "| Time | 17.9 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -6.55e+03 |\n", "| StdEpRet | 1.29e+03 |\n", "| MaxEpRet | -4.36e+03 |\n", "| MinEpRet | -9.04e+03 |\n", "| AverageTestEpRet | -3.5e+03 |\n", "| StdTestEpRet | 1.69e+03 |\n", "| MaxTestEpRet | -1.19e+03 |\n", "| MinTestEpRet | -6.63e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQ1Vals | -617 |\n", "| StdQ1Vals | 197 |\n", "| MaxQ1Vals | -93.1 |\n", "| MinQ1Vals | -1.45e+03 |\n", "| AverageQ2Vals | -617 |\n", "| StdQ2Vals | 197 |\n", "| MaxQ2Vals | -90.1 |\n", "| MinQ2Vals | -1.46e+03 |\n", "| AverageLogPi | 2.83 |\n", "| StdLogPi | 1.32 |\n", "| MaxLogPi | 14 |\n", "| MinLogPi | -7.4 |\n", "| LossPi | 599 |\n", "| LossQ | 4.79e+03 |\n", "| Time | 29 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -7e+03 |\n", "| StdEpRet | 959 |\n", "| MaxEpRet | -5.27e+03 |\n", "| MinEpRet | -9.54e+03 |\n", "| AverageTestEpRet | -3.01e+03 |\n", "| StdTestEpRet | 963 |\n", "| MaxTestEpRet | -1.15e+03 |\n", "| MinTestEpRet | -4.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQ1Vals | -895 |\n", "| StdQ1Vals | 247 |\n", "| MaxQ1Vals | -212 |\n", "| MinQ1Vals | -2.02e+03 |\n", "| AverageQ2Vals | -895 |\n", "| StdQ2Vals | 247 |\n", "| MaxQ2Vals | -208 |\n", "| MinQ2Vals | -2.03e+03 |\n", "| AverageLogPi | 3.22 |\n", "| StdLogPi | 1.59 |\n", "| MaxLogPi | 17.6 |\n", "| MinLogPi | -7.79 |\n", "| LossPi | 873 |\n", "| LossQ | 8.24e+03 |\n", "| Time | 40.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.77e+03 |\n", "| StdEpRet | 1.58e+03 |\n", "| MaxEpRet | -4.25e+03 |\n", "| MinEpRet | -9.61e+03 |\n", "| AverageTestEpRet | -2.4e+03 |\n", "| StdTestEpRet | 1.95e+03 |\n", "| MaxTestEpRet | -497 |\n", "| MinTestEpRet | -6.72e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQ1Vals | -1.1e+03 |\n", "| StdQ1Vals | 280 |\n", "| MaxQ1Vals | -355 |\n", "| MinQ1Vals | -2.33e+03 |\n", "| AverageQ2Vals | -1.1e+03 |\n", "| StdQ2Vals | 280 |\n", "| MaxQ2Vals | -347 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| AverageLogPi | 3.5 |\n", "| StdLogPi | 1.73 |\n", "| MaxLogPi | 23.4 |\n", "| MinLogPi | -8.29 |\n", "| LossPi | 1.07e+03 |\n", "| LossQ | 1.12e+04 |\n", "| Time | 52.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -6.36e+03 |\n", "| StdEpRet | 1.42e+03 |\n", "| MaxEpRet | -3.15e+03 |\n", "| MinEpRet | -8.3e+03 |\n", "| AverageTestEpRet | -3.23e+03 |\n", "| StdTestEpRet | 1.05e+03 |\n", "| MaxTestEpRet | -1.15e+03 |\n", "| MinTestEpRet | -5.08e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQ1Vals | -1.27e+03 |\n", "| StdQ1Vals | 305 |\n", "| MaxQ1Vals | -454 |\n", "| MinQ1Vals | -2.52e+03 |\n", "| AverageQ2Vals | -1.27e+03 |\n", "| StdQ2Vals | 305 |\n", "| MaxQ2Vals | -454 |\n", "| MinQ2Vals | -2.51e+03 |\n", "| AverageLogPi | 3.42 |\n", "| StdLogPi | 1.56 |\n", "| MaxLogPi | 19.3 |\n", "| MinLogPi | -10.4 |\n", "| LossPi | 1.24e+03 |\n", "| LossQ | 1.26e+04 |\n", "| Time | 63.9 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -2.58e+03 |\n", "| StdEpRet | 1.97e+03 |\n", "| MaxEpRet | -201 |\n", "| MinEpRet | -7.15e+03 |\n", "| AverageTestEpRet | -2.99e+03 |\n", "| StdTestEpRet | 1.57e+03 |\n", "| MaxTestEpRet | -964 |\n", "| MinTestEpRet | -5.67e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQ1Vals | -1.4e+03 |\n", "| StdQ1Vals | 324 |\n", "| MaxQ1Vals | -551 |\n", "| MinQ1Vals | -2.7e+03 |\n", "| AverageQ2Vals | -1.4e+03 |\n", "| StdQ2Vals | 324 |\n", "| MaxQ2Vals | -549 |\n", "| MinQ2Vals | -2.69e+03 |\n", "| AverageLogPi | 3.47 |\n", "| StdLogPi | 1.64 |\n", "| MaxLogPi | 15.8 |\n", "| MinLogPi | -8.49 |\n", "| LossPi | 1.38e+03 |\n", "| LossQ | 1.28e+04 |\n", "| Time | 75.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -2.61e+03 |\n", "| StdEpRet | 1.69e+03 |\n", "| MaxEpRet | -404 |\n", "| MinEpRet | -5.77e+03 |\n", "| AverageTestEpRet | -2.44e+03 |\n", "| StdTestEpRet | 2.19e+03 |\n", "| MaxTestEpRet | -366 |\n", "| MinTestEpRet | -7.24e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQ1Vals | -1.5e+03 |\n", "| StdQ1Vals | 332 |\n", "| MaxQ1Vals | -673 |\n", "| MinQ1Vals | -2.88e+03 |\n", "| AverageQ2Vals | -1.5e+03 |\n", "| StdQ2Vals | 332 |\n", "| MaxQ2Vals | -673 |\n", "| MinQ2Vals | -2.87e+03 |\n", "| AverageLogPi | 3.34 |\n", "| StdLogPi | 1.47 |\n", "| MaxLogPi | 11 |\n", "| MinLogPi | -10 |\n", "| LossPi | 1.47e+03 |\n", "| LossQ | 1.22e+04 |\n", "| Time | 86.8 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -2.8e+03 |\n", "| StdEpRet | 2.15e+03 |\n", "| MaxEpRet | -388 |\n", "| MinEpRet | -8.4e+03 |\n", "| AverageTestEpRet | -1.71e+03 |\n", "| StdTestEpRet | 1.22e+03 |\n", "| MaxTestEpRet | -561 |\n", "| MinTestEpRet | -4.08e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQ1Vals | -1.58e+03 |\n", "| StdQ1Vals | 351 |\n", "| MaxQ1Vals | -764 |\n", "| MinQ1Vals | -2.98e+03 |\n", "| AverageQ2Vals | -1.58e+03 |\n", "| StdQ2Vals | 351 |\n", "| MaxQ2Vals | -758 |\n", "| MinQ2Vals | -2.98e+03 |\n", "| AverageLogPi | 3.41 |\n", "| StdLogPi | 1.47 |\n", "| MaxLogPi | 12.9 |\n", "| MinLogPi | -8.49 |\n", "| LossPi | 1.56e+03 |\n", "| LossQ | 1.22e+04 |\n", "| Time | 98.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -2.21e+03 |\n", "| StdEpRet | 1.68e+03 |\n", "| MaxEpRet | -320 |\n", "| MinEpRet | -6.11e+03 |\n", "| AverageTestEpRet | -2.59e+03 |\n", "| StdTestEpRet | 1.79e+03 |\n", "| MaxTestEpRet | -434 |\n", "| MinTestEpRet | -4.84e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQ1Vals | -1.63e+03 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -757 |\n", "| MinQ1Vals | -3.08e+03 |\n", "| AverageQ2Vals | -1.63e+03 |\n", "| StdQ2Vals | 365 |\n", "| MaxQ2Vals | -754 |\n", "| MinQ2Vals | -3.08e+03 |\n", "| AverageLogPi | 3.53 |\n", "| StdLogPi | 1.48 |\n", "| MaxLogPi | 12.7 |\n", "| MinLogPi | -10.4 |\n", "| LossPi | 1.61e+03 |\n", "| LossQ | 1.24e+04 |\n", "| Time | 110 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -2.06e+03 |\n", "| StdEpRet | 1.12e+03 |\n", "| MaxEpRet | -521 |\n", "| MinEpRet | -4.23e+03 |\n", "| AverageTestEpRet | -1.78e+03 |\n", "| StdTestEpRet | 1.74e+03 |\n", "| MaxTestEpRet | -386 |\n", "| MinTestEpRet | -5.57e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQ1Vals | -1.67e+03 |\n", "| StdQ1Vals | 373 |\n", "| MaxQ1Vals | -813 |\n", "| MinQ1Vals | -3.15e+03 |\n", "| AverageQ2Vals | -1.67e+03 |\n", "| StdQ2Vals | 372 |\n", "| MaxQ2Vals | -808 |\n", "| MinQ2Vals | -3.14e+03 |\n", "| AverageLogPi | 3.52 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 13.8 |\n", "| MinLogPi | -9.94 |\n", "| LossPi | 1.65e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 122 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -1.93e+03 |\n", "| StdEpRet | 1.05e+03 |\n", "| MaxEpRet | -481 |\n", "| MinEpRet | -3.54e+03 |\n", "| AverageTestEpRet | -1.56e+03 |\n", "| StdTestEpRet | 2.05e+03 |\n", "| MaxTestEpRet | -103 |\n", "| MinTestEpRet | -7.17e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQ1Vals | -1.71e+03 |\n", "| StdQ1Vals | 373 |\n", "| MaxQ1Vals | -859 |\n", "| MinQ1Vals | -3.18e+03 |\n", "| AverageQ2Vals | -1.71e+03 |\n", "| StdQ2Vals | 373 |\n", "| MaxQ2Vals | -856 |\n", "| MinQ2Vals | -3.17e+03 |\n", "| AverageLogPi | 3.56 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 13.7 |\n", "| MinLogPi | -8.51 |\n", "| LossPi | 1.69e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 134 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -1.77e+03 |\n", "| StdEpRet | 1.59e+03 |\n", "| MaxEpRet | -184 |\n", "| MinEpRet | -5.56e+03 |\n", "| AverageTestEpRet | -1.91e+03 |\n", "| StdTestEpRet | 1.73e+03 |\n", "| MaxTestEpRet | -166 |\n", "| MinTestEpRet | -4.78e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQ1Vals | -1.72e+03 |\n", "| StdQ1Vals | 383 |\n", "| MaxQ1Vals | -888 |\n", "| MinQ1Vals | -3.25e+03 |\n", "| AverageQ2Vals | -1.72e+03 |\n", "| StdQ2Vals | 382 |\n", "| MaxQ2Vals | -887 |\n", "| MinQ2Vals | -3.24e+03 |\n", "| AverageLogPi | 3.54 |\n", "| StdLogPi | 1.43 |\n", "| MaxLogPi | 12.1 |\n", "| MinLogPi | -8.31 |\n", "| LossPi | 1.71e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 145 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -1.55e+03 |\n", "| StdEpRet | 1.65e+03 |\n", "| MaxEpRet | -199 |\n", "| MinEpRet | -6.31e+03 |\n", "| AverageTestEpRet | -1.26e+03 |\n", "| StdTestEpRet | 1.34e+03 |\n", "| MaxTestEpRet | -237 |\n", "| MinTestEpRet | -4.8e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQ1Vals | -1.73e+03 |\n", "| StdQ1Vals | 390 |\n", "| MaxQ1Vals | -893 |\n", "| MinQ1Vals | -3.25e+03 |\n", "| AverageQ2Vals | -1.73e+03 |\n", "| StdQ2Vals | 390 |\n", "| MaxQ2Vals | -893 |\n", "| MinQ2Vals | -3.24e+03 |\n", "| AverageLogPi | 3.67 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 15.8 |\n", "| MinLogPi | -7.82 |\n", "| LossPi | 1.71e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 157 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -620 |\n", "| StdEpRet | 373 |\n", "| MaxEpRet | -258 |\n", "| MinEpRet | -1.65e+03 |\n", "| AverageTestEpRet | -1.16e+03 |\n", "| StdTestEpRet | 1.05e+03 |\n", "| MaxTestEpRet | -146 |\n", "| MinTestEpRet | -3.81e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQ1Vals | -1.72e+03 |\n", "| StdQ1Vals | 396 |\n", "| MaxQ1Vals | -885 |\n", "| MinQ1Vals | -3.3e+03 |\n", "| AverageQ2Vals | -1.72e+03 |\n", "| StdQ2Vals | 396 |\n", "| MaxQ2Vals | -883 |\n", "| MinQ2Vals | -3.31e+03 |\n", "| AverageLogPi | 3.72 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 13.2 |\n", "| MinLogPi | -8.63 |\n", "| LossPi | 1.7e+03 |\n", "| LossQ | 1.14e+04 |\n", "| Time | 169 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -763 |\n", "| StdEpRet | 796 |\n", "| MaxEpRet | -80.9 |\n", "| MinEpRet | -3.16e+03 |\n", "| AverageTestEpRet | -1.25e+03 |\n", "| StdTestEpRet | 1.06e+03 |\n", "| MaxTestEpRet | -142 |\n", "| MinTestEpRet | -3.04e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQ1Vals | -1.69e+03 |\n", "| StdQ1Vals | 399 |\n", "| MaxQ1Vals | -869 |\n", "| MinQ1Vals | -3.33e+03 |\n", "| AverageQ2Vals | -1.69e+03 |\n", "| StdQ2Vals | 399 |\n", "| MaxQ2Vals | -867 |\n", "| MinQ2Vals | -3.33e+03 |\n", "| AverageLogPi | 3.77 |\n", "| StdLogPi | 1.52 |\n", "| MaxLogPi | 13.6 |\n", "| MinLogPi | -6.79 |\n", "| LossPi | 1.68e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 181 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -1.12e+03 |\n", "| StdEpRet | 950 |\n", "| MaxEpRet | -76.5 |\n", "| MinEpRet | -3.22e+03 |\n", "| AverageTestEpRet | -846 |\n", "| StdTestEpRet | 779 |\n", "| MaxTestEpRet | -185 |\n", "| MinTestEpRet | -2.96e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQ1Vals | -1.66e+03 |\n", "| StdQ1Vals | 404 |\n", "| MaxQ1Vals | -851 |\n", "| MinQ1Vals | -3.32e+03 |\n", "| AverageQ2Vals | -1.66e+03 |\n", "| StdQ2Vals | 404 |\n", "| MaxQ2Vals | -848 |\n", "| MinQ2Vals | -3.33e+03 |\n", "| AverageLogPi | 3.89 |\n", "| StdLogPi | 1.54 |\n", "| MaxLogPi | 15.2 |\n", "| MinLogPi | -7.62 |\n", "| LossPi | 1.65e+03 |\n", "| LossQ | 1.2e+04 |\n", "| Time | 193 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -992 |\n", "| StdEpRet | 899 |\n", "| MaxEpRet | -70.1 |\n", "| MinEpRet | -3.52e+03 |\n", "| AverageTestEpRet | -992 |\n", "| StdTestEpRet | 794 |\n", "| MaxTestEpRet | -114 |\n", "| MinTestEpRet | -3.16e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQ1Vals | -1.62e+03 |\n", "| StdQ1Vals | 403 |\n", "| MaxQ1Vals | -822 |\n", "| MinQ1Vals | -3.29e+03 |\n", "| AverageQ2Vals | -1.62e+03 |\n", "| StdQ2Vals | 403 |\n", "| MaxQ2Vals | -819 |\n", "| MinQ2Vals | -3.3e+03 |\n", "| AverageLogPi | 3.92 |\n", "| StdLogPi | 1.53 |\n", "| MaxLogPi | 16.3 |\n", "| MinLogPi | -7.69 |\n", "| LossPi | 1.61e+03 |\n", "| LossQ | 1.13e+04 |\n", "| Time | 204 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -627 |\n", "| StdEpRet | 514 |\n", "| MaxEpRet | -98.9 |\n", "| MinEpRet | -2.01e+03 |\n", "| AverageTestEpRet | -921 |\n", "| StdTestEpRet | 820 |\n", "| MaxTestEpRet | -59.4 |\n", "| MinTestEpRet | -3e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQ1Vals | -1.58e+03 |\n", "| StdQ1Vals | 410 |\n", "| MaxQ1Vals | -786 |\n", "| MinQ1Vals | -3.25e+03 |\n", "| AverageQ2Vals | -1.58e+03 |\n", "| StdQ2Vals | 410 |\n", "| MaxQ2Vals | -784 |\n", "| MinQ2Vals | -3.25e+03 |\n", "| AverageLogPi | 3.99 |\n", "| StdLogPi | 1.57 |\n", "| MaxLogPi | 19.4 |\n", "| MinLogPi | -9.84 |\n", "| LossPi | 1.56e+03 |\n", "| LossQ | 1.1e+04 |\n", "| Time | 216 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -1.01e+03 |\n", "| StdEpRet | 775 |\n", "| MaxEpRet | -87.4 |\n", "| MinEpRet | -3.24e+03 |\n", "| AverageTestEpRet | -1.19e+03 |\n", "| StdTestEpRet | 1.02e+03 |\n", "| MaxTestEpRet | -180 |\n", "| MinTestEpRet | -3.26e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQ1Vals | -1.52e+03 |\n", "| StdQ1Vals | 416 |\n", "| MaxQ1Vals | -752 |\n", "| MinQ1Vals | -3.23e+03 |\n", "| AverageQ2Vals | -1.52e+03 |\n", "| StdQ2Vals | 416 |\n", "| MaxQ2Vals | -749 |\n", "| MinQ2Vals | -3.23e+03 |\n", "| AverageLogPi | 4 |\n", "| StdLogPi | 1.52 |\n", "| MaxLogPi | 16.5 |\n", "| MinLogPi | -7.32 |\n", "| LossPi | 1.51e+03 |\n", "| LossQ | 1.1e+04 |\n", "| Time | 227 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -763 |\n", "| StdEpRet | 711 |\n", "| MaxEpRet | -63.6 |\n", "| MinEpRet | -2.73e+03 |\n", "| AverageTestEpRet | -669 |\n", "| StdTestEpRet | 650 |\n", "| MaxTestEpRet | -77.2 |\n", "| MinTestEpRet | -2.45e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQ1Vals | -1.47e+03 |\n", "| StdQ1Vals | 417 |\n", "| MaxQ1Vals | -707 |\n", "| MinQ1Vals | -3.21e+03 |\n", "| AverageQ2Vals | -1.47e+03 |\n", "| StdQ2Vals | 417 |\n", "| MaxQ2Vals | -704 |\n", "| MinQ2Vals | -3.22e+03 |\n", "| AverageLogPi | 4.25 |\n", "| StdLogPi | 1.63 |\n", "| MaxLogPi | 16.6 |\n", "| MinLogPi | -9.13 |\n", "| LossPi | 1.45e+03 |\n", "| LossQ | 1.05e+04 |\n", "| Time | 238 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -493 |\n", "| StdEpRet | 257 |\n", "| MaxEpRet | -84.8 |\n", "| MinEpRet | -960 |\n", "| AverageTestEpRet | -765 |\n", "| StdTestEpRet | 398 |\n", "| MaxTestEpRet | -51.7 |\n", "| MinTestEpRet | -1.4e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQ1Vals | -1.42e+03 |\n", "| StdQ1Vals | 418 |\n", "| MaxQ1Vals | -671 |\n", "| MinQ1Vals | -3.18e+03 |\n", "| AverageQ2Vals | -1.42e+03 |\n", "| StdQ2Vals | 417 |\n", "| MaxQ2Vals | -670 |\n", "| MinQ2Vals | -3.19e+03 |\n", "| AverageLogPi | 4.26 |\n", "| StdLogPi | 1.65 |\n", "| MaxLogPi | 16 |\n", "| MinLogPi | -6.41 |\n", "| LossPi | 1.4e+03 |\n", "| LossQ | 1.02e+04 |\n", "| Time | 250 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -803 |\n", "| StdEpRet | 684 |\n", "| MaxEpRet | -156 |\n", "| MinEpRet | -2.58e+03 |\n", "| AverageTestEpRet | -705 |\n", "| StdTestEpRet | 570 |\n", "| MaxTestEpRet | -177 |\n", "| MinTestEpRet | -1.79e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQ1Vals | -1.36e+03 |\n", "| StdQ1Vals | 415 |\n", "| MaxQ1Vals | -634 |\n", "| MinQ1Vals | -3.11e+03 |\n", "| AverageQ2Vals | -1.36e+03 |\n", "| StdQ2Vals | 415 |\n", "| MaxQ2Vals | -633 |\n", "| MinQ2Vals | -3.12e+03 |\n", "| AverageLogPi | 4.3 |\n", "| StdLogPi | 1.61 |\n", "| MaxLogPi | 18.7 |\n", "| MinLogPi | -8.29 |\n", "| LossPi | 1.35e+03 |\n", "| LossQ | 9.95e+03 |\n", "| Time | 261 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -831 |\n", "| StdEpRet | 721 |\n", "| MaxEpRet | -125 |\n", "| MinEpRet | -3.04e+03 |\n", "| AverageTestEpRet | -896 |\n", "| StdTestEpRet | 811 |\n", "| MaxTestEpRet | -41.3 |\n", "| MinTestEpRet | -2.91e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQ1Vals | -1.31e+03 |\n", "| StdQ1Vals | 413 |\n", "| MaxQ1Vals | -595 |\n", "| MinQ1Vals | -2.99e+03 |\n", "| AverageQ2Vals | -1.31e+03 |\n", "| StdQ2Vals | 413 |\n", "| MaxQ2Vals | -596 |\n", "| MinQ2Vals | -3e+03 |\n", "| AverageLogPi | 4.32 |\n", "| StdLogPi | 1.62 |\n", "| MaxLogPi | 17.2 |\n", "| MinLogPi | -8.05 |\n", "| LossPi | 1.29e+03 |\n", "| LossQ | 9.49e+03 |\n", "| Time | 273 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -686 |\n", "| StdEpRet | 699 |\n", "| MaxEpRet | -124 |\n", "| MinEpRet | -2.36e+03 |\n", "| AverageTestEpRet | -1.26e+03 |\n", "| StdTestEpRet | 1.17e+03 |\n", "| MaxTestEpRet | -210 |\n", "| MinTestEpRet | -4.37e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQ1Vals | -1.26e+03 |\n", "| StdQ1Vals | 410 |\n", "| MaxQ1Vals | -555 |\n", "| MinQ1Vals | -3.07e+03 |\n", "| AverageQ2Vals | -1.26e+03 |\n", "| StdQ2Vals | 409 |\n", "| MaxQ2Vals | -557 |\n", "| MinQ2Vals | -3.07e+03 |\n", "| AverageLogPi | 4.38 |\n", "| StdLogPi | 1.66 |\n", "| MaxLogPi | 17.7 |\n", "| MinLogPi | -7.55 |\n", "| LossPi | 1.24e+03 |\n", "| LossQ | 9.55e+03 |\n", "| Time | 285 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -566 |\n", "| StdEpRet | 624 |\n", "| MaxEpRet | -27.8 |\n", "| MinEpRet | -2.76e+03 |\n", "| AverageTestEpRet | -927 |\n", "| StdTestEpRet | 880 |\n", "| MaxTestEpRet | -18 |\n", "| MinTestEpRet | -3.3e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQ1Vals | -1.2e+03 |\n", "| StdQ1Vals | 401 |\n", "| MaxQ1Vals | -527 |\n", "| MinQ1Vals | -2.92e+03 |\n", "| AverageQ2Vals | -1.2e+03 |\n", "| StdQ2Vals | 401 |\n", "| MaxQ2Vals | -528 |\n", "| MinQ2Vals | -2.92e+03 |\n", "| AverageLogPi | 4.29 |\n", "| StdLogPi | 1.62 |\n", "| MaxLogPi | 18.3 |\n", "| MinLogPi | -10.1 |\n", "| LossPi | 1.19e+03 |\n", "| LossQ | 8.8e+03 |\n", "| Time | 297 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -957 |\n", "| StdEpRet | 628 |\n", "| MaxEpRet | -197 |\n", "| MinEpRet | -2.25e+03 |\n", "| AverageTestEpRet | -1.1e+03 |\n", "| StdTestEpRet | 1.07e+03 |\n", "| MaxTestEpRet | -193 |\n", "| MinTestEpRet | -3.48e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQ1Vals | -1.16e+03 |\n", "| StdQ1Vals | 399 |\n", "| MaxQ1Vals | -492 |\n", "| MinQ1Vals | -2.94e+03 |\n", "| AverageQ2Vals | -1.16e+03 |\n", "| StdQ2Vals | 399 |\n", "| MaxQ2Vals | -494 |\n", "| MinQ2Vals | -2.94e+03 |\n", "| AverageLogPi | 4.34 |\n", "| StdLogPi | 1.61 |\n", "| MaxLogPi | 16.3 |\n", "| MinLogPi | -6.98 |\n", "| LossPi | 1.15e+03 |\n", "| LossQ | 8.3e+03 |\n", "| Time | 308 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -737 |\n", "| StdEpRet | 484 |\n", "| MaxEpRet | -77.4 |\n", "| MinEpRet | -1.73e+03 |\n", "| AverageTestEpRet | -581 |\n", "| StdTestEpRet | 322 |\n", "| MaxTestEpRet | -131 |\n", "| MinTestEpRet | -1.33e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQ1Vals | -1.11e+03 |\n", "| StdQ1Vals | 396 |\n", "| MaxQ1Vals | -467 |\n", "| MinQ1Vals | -2.9e+03 |\n", "| AverageQ2Vals | -1.11e+03 |\n", "| StdQ2Vals | 396 |\n", "| MaxQ2Vals | -469 |\n", "| MinQ2Vals | -2.9e+03 |\n", "| AverageLogPi | 4.33 |\n", "| StdLogPi | 1.6 |\n", "| MaxLogPi | 17.5 |\n", "| MinLogPi | -7.95 |\n", "| LossPi | 1.1e+03 |\n", "| LossQ | 7.9e+03 |\n", "| Time | 320 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -737 |\n", "| StdEpRet | 341 |\n", "| MaxEpRet | -269 |\n", "| MinEpRet | -1.6e+03 |\n", "| AverageTestEpRet | -858 |\n", "| StdTestEpRet | 578 |\n", "| MaxTestEpRet | -168 |\n", "| MinTestEpRet | -2.09e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQ1Vals | -1.07e+03 |\n", "| StdQ1Vals | 391 |\n", "| MaxQ1Vals | -437 |\n", "| MinQ1Vals | -2.88e+03 |\n", "| AverageQ2Vals | -1.07e+03 |\n", "| StdQ2Vals | 391 |\n", "| MaxQ2Vals | -440 |\n", "| MinQ2Vals | -2.88e+03 |\n", "| AverageLogPi | 4.4 |\n", "| StdLogPi | 1.61 |\n", "| MaxLogPi | 16.5 |\n", "| MinLogPi | -8.41 |\n", "| LossPi | 1.06e+03 |\n", "| LossQ | 7.62e+03 |\n", "| Time | 332 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -917 |\n", "| StdEpRet | 670 |\n", "| MaxEpRet | -152 |\n", "| MinEpRet | -2.36e+03 |\n", "| AverageTestEpRet | -792 |\n", "| StdTestEpRet | 530 |\n", "| MaxTestEpRet | -192 |\n", "| MinTestEpRet | -1.69e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQ1Vals | -1.03e+03 |\n", "| StdQ1Vals | 391 |\n", "| MaxQ1Vals | -415 |\n", "| MinQ1Vals | -2.86e+03 |\n", "| AverageQ2Vals | -1.03e+03 |\n", "| StdQ2Vals | 390 |\n", "| MaxQ2Vals | -415 |\n", "| MinQ2Vals | -2.86e+03 |\n", "| AverageLogPi | 4.41 |\n", "| StdLogPi | 1.61 |\n", "| MaxLogPi | 18.7 |\n", "| MinLogPi | -9.6 |\n", "| LossPi | 1.01e+03 |\n", "| LossQ | 7.63e+03 |\n", "| Time | 343 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -927 |\n", "| StdEpRet | 705 |\n", "| MaxEpRet | -111 |\n", "| MinEpRet | -3.02e+03 |\n", "| AverageTestEpRet | -623 |\n", "| StdTestEpRet | 434 |\n", "| MaxTestEpRet | -161 |\n", "| MinTestEpRet | -1.58e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQ1Vals | -994 |\n", "| StdQ1Vals | 388 |\n", "| MaxQ1Vals | -388 |\n", "| MinQ1Vals | -2.84e+03 |\n", "| AverageQ2Vals | -994 |\n", "| StdQ2Vals | 388 |\n", "| MaxQ2Vals | -389 |\n", "| MinQ2Vals | -2.84e+03 |\n", "| AverageLogPi | 4.42 |\n", "| StdLogPi | 1.6 |\n", "| MaxLogPi | 15.7 |\n", "| MinLogPi | -7.39 |\n", "| LossPi | 981 |\n", "| LossQ | 7.38e+03 |\n", "| Time | 355 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -555 |\n", "| StdEpRet | 294 |\n", "| MaxEpRet | -63.6 |\n", "| MinEpRet | -1.01e+03 |\n", "| AverageTestEpRet | -533 |\n", "| StdTestEpRet | 90.9 |\n", "| MaxTestEpRet | -300 |\n", "| MinTestEpRet | -653 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQ1Vals | -961 |\n", "| StdQ1Vals | 383 |\n", "| MaxQ1Vals | -369 |\n", "| MinQ1Vals | -2.76e+03 |\n", "| AverageQ2Vals | -961 |\n", "| StdQ2Vals | 383 |\n", "| MaxQ2Vals | -368 |\n", "| MinQ2Vals | -2.77e+03 |\n", "| AverageLogPi | 4.41 |\n", "| StdLogPi | 1.57 |\n", "| MaxLogPi | 16.7 |\n", "| MinLogPi | -7.98 |\n", "| LossPi | 950 |\n", "| LossQ | 7.09e+03 |\n", "| Time | 367 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -968 |\n", "| StdEpRet | 414 |\n", "| MaxEpRet | -137 |\n", "| MinEpRet | -1.88e+03 |\n", "| AverageTestEpRet | -457 |\n", "| StdTestEpRet | 250 |\n", "| MaxTestEpRet | -79.5 |\n", "| MinTestEpRet | -864 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQ1Vals | -929 |\n", "| StdQ1Vals | 381 |\n", "| MaxQ1Vals | -343 |\n", "| MinQ1Vals | -2.69e+03 |\n", "| AverageQ2Vals | -929 |\n", "| StdQ2Vals | 381 |\n", "| MaxQ2Vals | -344 |\n", "| MinQ2Vals | -2.69e+03 |\n", "| AverageLogPi | 4.43 |\n", "| StdLogPi | 1.55 |\n", "| MaxLogPi | 17.9 |\n", "| MinLogPi | -7.49 |\n", "| LossPi | 918 |\n", "| LossQ | 7.13e+03 |\n", "| Time | 378 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -697 |\n", "| StdEpRet | 718 |\n", "| MaxEpRet | -112 |\n", "| MinEpRet | -2.68e+03 |\n", "| AverageTestEpRet | -933 |\n", "| StdTestEpRet | 565 |\n", "| MaxTestEpRet | -437 |\n", "| MinTestEpRet | -2.14e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQ1Vals | -901 |\n", "| StdQ1Vals | 380 |\n", "| MaxQ1Vals | -325 |\n", "| MinQ1Vals | -2.73e+03 |\n", "| AverageQ2Vals | -901 |\n", "| StdQ2Vals | 380 |\n", "| MaxQ2Vals | -326 |\n", "| MinQ2Vals | -2.73e+03 |\n", "| AverageLogPi | 4.42 |\n", "| StdLogPi | 1.52 |\n", "| MaxLogPi | 17.1 |\n", "| MinLogPi | -9.68 |\n", "| LossPi | 891 |\n", "| LossQ | 7.08e+03 |\n", "| Time | 390 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -758 |\n", "| StdEpRet | 383 |\n", "| MaxEpRet | -96.3 |\n", "| MinEpRet | -1.69e+03 |\n", "| AverageTestEpRet | -557 |\n", "| StdTestEpRet | 380 |\n", "| MaxTestEpRet | -24 |\n", "| MinTestEpRet | -1.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQ1Vals | -872 |\n", "| StdQ1Vals | 379 |\n", "| MaxQ1Vals | -304 |\n", "| MinQ1Vals | -2.58e+03 |\n", "| AverageQ2Vals | -872 |\n", "| StdQ2Vals | 379 |\n", "| MaxQ2Vals | -304 |\n", "| MinQ2Vals | -2.59e+03 |\n", "| AverageLogPi | 4.5 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 16.4 |\n", "| MinLogPi | -9.06 |\n", "| LossPi | 862 |\n", "| LossQ | 6.48e+03 |\n", "| Time | 401 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -585 |\n", "| StdEpRet | 376 |\n", "| MaxEpRet | -74.2 |\n", "| MinEpRet | -1.18e+03 |\n", "| AverageTestEpRet | -796 |\n", "| StdTestEpRet | 431 |\n", "| MaxTestEpRet | -135 |\n", "| MinTestEpRet | -1.31e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQ1Vals | -844 |\n", "| StdQ1Vals | 378 |\n", "| MaxQ1Vals | -288 |\n", "| MinQ1Vals | -2.66e+03 |\n", "| AverageQ2Vals | -844 |\n", "| StdQ2Vals | 378 |\n", "| MaxQ2Vals | -290 |\n", "| MinQ2Vals | -2.67e+03 |\n", "| AverageLogPi | 4.48 |\n", "| StdLogPi | 1.5 |\n", "| MaxLogPi | 18.5 |\n", "| MinLogPi | -6.94 |\n", "| LossPi | 834 |\n", "| LossQ | 6.48e+03 |\n", "| Time | 413 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -941 |\n", "| StdEpRet | 469 |\n", "| MaxEpRet | -312 |\n", "| MinEpRet | -2.22e+03 |\n", "| AverageTestEpRet | -966 |\n", "| StdTestEpRet | 741 |\n", "| MaxTestEpRet | -193 |\n", "| MinTestEpRet | -2.48e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQ1Vals | -822 |\n", "| StdQ1Vals | 375 |\n", "| MaxQ1Vals | -272 |\n", "| MinQ1Vals | -2.64e+03 |\n", "| AverageQ2Vals | -822 |\n", "| StdQ2Vals | 375 |\n", "| MaxQ2Vals | -275 |\n", "| MinQ2Vals | -2.65e+03 |\n", "| AverageLogPi | 4.55 |\n", "| StdLogPi | 1.54 |\n", "| MaxLogPi | 18.7 |\n", "| MinLogPi | -7.33 |\n", "| LossPi | 813 |\n", "| LossQ | 6.27e+03 |\n", "| Time | 424 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -927 |\n", "| StdEpRet | 545 |\n", "| MaxEpRet | -93 |\n", "| MinEpRet | -2.09e+03 |\n", "| AverageTestEpRet | -1.08e+03 |\n", "| StdTestEpRet | 621 |\n", "| MaxTestEpRet | -56.3 |\n", "| MinTestEpRet | -2.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQ1Vals | -798 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -255 |\n", "| MinQ1Vals | -2.63e+03 |\n", "| AverageQ2Vals | -798 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -257 |\n", "| MinQ2Vals | -2.64e+03 |\n", "| AverageLogPi | 4.5 |\n", "| StdLogPi | 1.5 |\n", "| MaxLogPi | 16 |\n", "| MinLogPi | -6.96 |\n", "| LossPi | 789 |\n", "| LossQ | 6.28e+03 |\n", "| Time | 435 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -701 |\n", "| StdEpRet | 611 |\n", "| MaxEpRet | -133 |\n", "| MinEpRet | -1.96e+03 |\n", "| AverageTestEpRet | -1.05e+03 |\n", "| StdTestEpRet | 634 |\n", "| MaxTestEpRet | -172 |\n", "| MinTestEpRet | -2.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQ1Vals | -777 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -243 |\n", "| MinQ1Vals | -2.63e+03 |\n", "| AverageQ2Vals | -777 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -243 |\n", "| MinQ2Vals | -2.64e+03 |\n", "| AverageLogPi | 4.5 |\n", "| StdLogPi | 1.52 |\n", "| MaxLogPi | 16.2 |\n", "| MinLogPi | -10.8 |\n", "| LossPi | 768 |\n", "| LossQ | 6.11e+03 |\n", "| Time | 447 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -1.16e+03 |\n", "| StdEpRet | 911 |\n", "| MaxEpRet | -114 |\n", "| MinEpRet | -3.28e+03 |\n", "| AverageTestEpRet | -1.36e+03 |\n", "| StdTestEpRet | 862 |\n", "| MaxTestEpRet | -185 |\n", "| MinTestEpRet | -2.96e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQ1Vals | -763 |\n", "| StdQ1Vals | 378 |\n", "| MaxQ1Vals | -225 |\n", "| MinQ1Vals | -2.57e+03 |\n", "| AverageQ2Vals | -763 |\n", "| StdQ2Vals | 377 |\n", "| MaxQ2Vals | -223 |\n", "| MinQ2Vals | -2.58e+03 |\n", "| AverageLogPi | 4.53 |\n", "| StdLogPi | 1.48 |\n", "| MaxLogPi | 15.5 |\n", "| MinLogPi | -8.13 |\n", "| LossPi | 755 |\n", "| LossQ | 5.96e+03 |\n", "| Time | 458 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -631 |\n", "| StdEpRet | 448 |\n", "| MaxEpRet | -43.3 |\n", "| MinEpRet | -1.55e+03 |\n", "| AverageTestEpRet | -912 |\n", "| StdTestEpRet | 1.06e+03 |\n", "| MaxTestEpRet | -89.2 |\n", "| MinTestEpRet | -2.99e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQ1Vals | -747 |\n", "| StdQ1Vals | 377 |\n", "| MaxQ1Vals | -205 |\n", "| MinQ1Vals | -2.57e+03 |\n", "| AverageQ2Vals | -747 |\n", "| StdQ2Vals | 376 |\n", "| MaxQ2Vals | -207 |\n", "| MinQ2Vals | -2.59e+03 |\n", "| AverageLogPi | 4.58 |\n", "| StdLogPi | 1.48 |\n", "| MaxLogPi | 19.1 |\n", "| MinLogPi | -6.34 |\n", "| LossPi | 739 |\n", "| LossQ | 5.96e+03 |\n", "| Time | 470 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -789 |\n", "| StdEpRet | 513 |\n", "| MaxEpRet | -73.3 |\n", "| MinEpRet | -1.94e+03 |\n", "| AverageTestEpRet | -876 |\n", "| StdTestEpRet | 733 |\n", "| MaxTestEpRet | -259 |\n", "| MinTestEpRet | -2.92e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQ1Vals | -730 |\n", "| StdQ1Vals | 376 |\n", "| MaxQ1Vals | -188 |\n", "| MinQ1Vals | -2.6e+03 |\n", "| AverageQ2Vals | -730 |\n", "| StdQ2Vals | 376 |\n", "| MaxQ2Vals | -188 |\n", "| MinQ2Vals | -2.61e+03 |\n", "| AverageLogPi | 4.62 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 20.1 |\n", "| MinLogPi | -7.47 |\n", "| LossPi | 722 |\n", "| LossQ | 5.73e+03 |\n", "| Time | 482 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -960 |\n", "| StdEpRet | 848 |\n", "| MaxEpRet | -197 |\n", "| MinEpRet | -3.64e+03 |\n", "| AverageTestEpRet | -1.49e+03 |\n", "| StdTestEpRet | 1.93e+03 |\n", "| MaxTestEpRet | -224 |\n", "| MinTestEpRet | -6.88e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQ1Vals | -718 |\n", "| StdQ1Vals | 375 |\n", "| MaxQ1Vals | -175 |\n", "| MinQ1Vals | -2.57e+03 |\n", "| AverageQ2Vals | -719 |\n", "| StdQ2Vals | 375 |\n", "| MaxQ2Vals | -177 |\n", "| MinQ2Vals | -2.6e+03 |\n", "| AverageLogPi | 4.65 |\n", "| StdLogPi | 1.53 |\n", "| MaxLogPi | 18.7 |\n", "| MinLogPi | -6.93 |\n", "| LossPi | 710 |\n", "| LossQ | 5.55e+03 |\n", "| Time | 494 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -935 |\n", "| StdEpRet | 808 |\n", "| MaxEpRet | -128 |\n", "| MinEpRet | -2.95e+03 |\n", "| AverageTestEpRet | -774 |\n", "| StdTestEpRet | 666 |\n", "| MaxTestEpRet | -330 |\n", "| MinTestEpRet | -2.66e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQ1Vals | -699 |\n", "| StdQ1Vals | 371 |\n", "| MaxQ1Vals | -157 |\n", "| MinQ1Vals | -2.49e+03 |\n", "| AverageQ2Vals | -699 |\n", "| StdQ2Vals | 371 |\n", "| MaxQ2Vals | -159 |\n", "| MinQ2Vals | -2.52e+03 |\n", "| AverageLogPi | 4.62 |\n", "| StdLogPi | 1.57 |\n", "| MaxLogPi | 20 |\n", "| MinLogPi | -6.47 |\n", "| LossPi | 691 |\n", "| LossQ | 5.25e+03 |\n", "| Time | 506 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -762 |\n", "| StdEpRet | 855 |\n", "| MaxEpRet | -62.5 |\n", "| MinEpRet | -2.8e+03 |\n", "| AverageTestEpRet | -955 |\n", "| StdTestEpRet | 775 |\n", "| MaxTestEpRet | -212 |\n", "| MinTestEpRet | -3.03e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQ1Vals | -688 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -146 |\n", "| MinQ1Vals | -2.53e+03 |\n", "| AverageQ2Vals | -688 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -148 |\n", "| MinQ2Vals | -2.55e+03 |\n", "| AverageLogPi | 4.65 |\n", "| StdLogPi | 1.55 |\n", "| MaxLogPi | 20.4 |\n", "| MinLogPi | -7.04 |\n", "| LossPi | 680 |\n", "| LossQ | 5.28e+03 |\n", "| Time | 517 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -1.26e+03 |\n", "| StdEpRet | 1.09e+03 |\n", "| MaxEpRet | -127 |\n", "| MinEpRet | -3.94e+03 |\n", "| AverageTestEpRet | -667 |\n", "| StdTestEpRet | 603 |\n", "| MaxTestEpRet | -97.7 |\n", "| MinTestEpRet | -2.39e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQ1Vals | -674 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -137 |\n", "| MinQ1Vals | -2.45e+03 |\n", "| AverageQ2Vals | -674 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -138 |\n", "| MinQ2Vals | -2.46e+03 |\n", "| AverageLogPi | 4.63 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 18.7 |\n", "| MinLogPi | -7.61 |\n", "| LossPi | 667 |\n", "| LossQ | 5.34e+03 |\n", "| Time | 528 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -755 |\n", "| StdEpRet | 598 |\n", "| MaxEpRet | -175 |\n", "| MinEpRet | -2.48e+03 |\n", "| AverageTestEpRet | -985 |\n", "| StdTestEpRet | 990 |\n", "| MaxTestEpRet | -41.1 |\n", "| MinTestEpRet | -3.57e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQ1Vals | -662 |\n", "| StdQ1Vals | 373 |\n", "| MaxQ1Vals | -124 |\n", "| MinQ1Vals | -2.47e+03 |\n", "| AverageQ2Vals | -662 |\n", "| StdQ2Vals | 373 |\n", "| MaxQ2Vals | -122 |\n", "| MinQ2Vals | -2.5e+03 |\n", "| AverageLogPi | 4.7 |\n", "| StdLogPi | 1.55 |\n", "| MaxLogPi | 19.7 |\n", "| MinLogPi | -7.02 |\n", "| LossPi | 655 |\n", "| LossQ | 5.1e+03 |\n", "| Time | 540 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -825 |\n", "| StdEpRet | 523 |\n", "| MaxEpRet | -94.8 |\n", "| MinEpRet | -2.01e+03 |\n", "| AverageTestEpRet | -785 |\n", "| StdTestEpRet | 391 |\n", "| MaxTestEpRet | -60.2 |\n", "| MinTestEpRet | -1.57e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQ1Vals | -647 |\n", "| StdQ1Vals | 372 |\n", "| MaxQ1Vals | -112 |\n", "| MinQ1Vals | -2.46e+03 |\n", "| AverageQ2Vals | -647 |\n", "| StdQ2Vals | 372 |\n", "| MaxQ2Vals | -111 |\n", "| MinQ2Vals | -2.48e+03 |\n", "| AverageLogPi | 4.73 |\n", "| StdLogPi | 1.54 |\n", "| MaxLogPi | 18.9 |\n", "| MinLogPi | -8.41 |\n", "| LossPi | 640 |\n", "| LossQ | 5.21e+03 |\n", "| Time | 551 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -1.47e+03 |\n", "| StdEpRet | 1.53e+03 |\n", "| MaxEpRet | -22.3 |\n", "| MinEpRet | -5.24e+03 |\n", "| AverageTestEpRet | -620 |\n", "| StdTestEpRet | 378 |\n", "| MaxTestEpRet | -117 |\n", "| MinTestEpRet | -1.34e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQ1Vals | -636 |\n", "| StdQ1Vals | 372 |\n", "| MaxQ1Vals | -104 |\n", "| MinQ1Vals | -2.37e+03 |\n", "| AverageQ2Vals | -636 |\n", "| StdQ2Vals | 372 |\n", "| MaxQ2Vals | -107 |\n", "| MinQ2Vals | -2.39e+03 |\n", "| AverageLogPi | 4.68 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 17.8 |\n", "| MinLogPi | -6.12 |\n", "| LossPi | 630 |\n", "| LossQ | 4.81e+03 |\n", "| Time | 564 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -754 |\n", "| StdEpRet | 561 |\n", "| MaxEpRet | -42.8 |\n", "| MinEpRet | -2.61e+03 |\n", "| AverageTestEpRet | -877 |\n", "| StdTestEpRet | 384 |\n", "| MaxTestEpRet | -352 |\n", "| MinTestEpRet | -1.37e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQ1Vals | -627 |\n", "| StdQ1Vals | 376 |\n", "| MaxQ1Vals | -96.8 |\n", "| MinQ1Vals | -2.46e+03 |\n", "| AverageQ2Vals | -627 |\n", "| StdQ2Vals | 376 |\n", "| MaxQ2Vals | -94.9 |\n", "| MinQ2Vals | -2.49e+03 |\n", "| AverageLogPi | 4.7 |\n", "| StdLogPi | 1.5 |\n", "| MaxLogPi | 17.3 |\n", "| MinLogPi | -8.68 |\n", "| LossPi | 621 |\n", "| LossQ | 5.12e+03 |\n", "| Time | 579 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -1.01e+03 |\n", "| StdEpRet | 1.12e+03 |\n", "| MaxEpRet | -155 |\n", "| MinEpRet | -4.86e+03 |\n", "| AverageTestEpRet | -885 |\n", "| StdTestEpRet | 529 |\n", "| MaxTestEpRet | -99.4 |\n", "| MinTestEpRet | -1.8e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQ1Vals | -620 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | -83.9 |\n", "| MinQ1Vals | -2.38e+03 |\n", "| AverageQ2Vals | -620 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | -78.4 |\n", "| MinQ2Vals | -2.41e+03 |\n", "| AverageLogPi | 4.72 |\n", "| StdLogPi | 1.48 |\n", "| MaxLogPi | 18.6 |\n", "| MinLogPi | -9.03 |\n", "| LossPi | 614 |\n", "| LossQ | 5e+03 |\n", "| Time | 590 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -748 |\n", "| StdEpRet | 642 |\n", "| MaxEpRet | -102 |\n", "| MinEpRet | -2.76e+03 |\n", "| AverageTestEpRet | -961 |\n", "| StdTestEpRet | 1.04e+03 |\n", "| MaxTestEpRet | -62.5 |\n", "| MinTestEpRet | -3.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQ1Vals | -609 |\n", "| StdQ1Vals | 373 |\n", "| MaxQ1Vals | -76.4 |\n", "| MinQ1Vals | -2.37e+03 |\n", "| AverageQ2Vals | -609 |\n", "| StdQ2Vals | 373 |\n", "| MaxQ2Vals | -76 |\n", "| MinQ2Vals | -2.4e+03 |\n", "| AverageLogPi | 4.69 |\n", "| StdLogPi | 1.5 |\n", "| MaxLogPi | 19.3 |\n", "| MinLogPi | -6.81 |\n", "| LossPi | 603 |\n", "| LossQ | 4.93e+03 |\n", "| Time | 601 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -1.04e+03 |\n", "| StdEpRet | 963 |\n", "| MaxEpRet | -209 |\n", "| MinEpRet | -4.27e+03 |\n", "| AverageTestEpRet | -727 |\n", "| StdTestEpRet | 463 |\n", "| MaxTestEpRet | -48.5 |\n", "| MinTestEpRet | -1.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQ1Vals | -602 |\n", "| StdQ1Vals | 373 |\n", "| MaxQ1Vals | -72.7 |\n", "| MinQ1Vals | -2.39e+03 |\n", "| AverageQ2Vals | -602 |\n", "| StdQ2Vals | 373 |\n", "| MaxQ2Vals | -73.3 |\n", "| MinQ2Vals | -2.42e+03 |\n", "| AverageLogPi | 4.74 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 20.6 |\n", "| MinLogPi | -9.58 |\n", "| LossPi | 595 |\n", "| LossQ | 4.89e+03 |\n", "| Time | 613 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -782 |\n", "| StdEpRet | 519 |\n", "| MaxEpRet | -92.4 |\n", "| MinEpRet | -2.31e+03 |\n", "| AverageTestEpRet | -669 |\n", "| StdTestEpRet | 557 |\n", "| MaxTestEpRet | -52.4 |\n", "| MinTestEpRet | -1.74e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQ1Vals | -589 |\n", "| StdQ1Vals | 370 |\n", "| MaxQ1Vals | -67.9 |\n", "| MinQ1Vals | -2.4e+03 |\n", "| AverageQ2Vals | -589 |\n", "| StdQ2Vals | 370 |\n", "| MaxQ2Vals | -62.5 |\n", "| MinQ2Vals | -2.43e+03 |\n", "| AverageLogPi | 4.72 |\n", "| StdLogPi | 1.47 |\n", "| MaxLogPi | 20.2 |\n", "| MinLogPi | -9.21 |\n", "| LossPi | 583 |\n", "| LossQ | 4.93e+03 |\n", "| Time | 624 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -1.12e+03 |\n", "| StdEpRet | 957 |\n", "| MaxEpRet | -45.3 |\n", "| MinEpRet | -3.57e+03 |\n", "| AverageTestEpRet | -962 |\n", "| StdTestEpRet | 456 |\n", "| MaxTestEpRet | -284 |\n", "| MinTestEpRet | -1.71e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQ1Vals | -574 |\n", "| StdQ1Vals | 369 |\n", "| MaxQ1Vals | -60.5 |\n", "| MinQ1Vals | -2.39e+03 |\n", "| AverageQ2Vals | -574 |\n", "| StdQ2Vals | 369 |\n", "| MaxQ2Vals | -62.6 |\n", "| MinQ2Vals | -2.41e+03 |\n", "| AverageLogPi | 4.74 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 20.6 |\n", "| MinLogPi | -9.01 |\n", "| LossPi | 568 |\n", "| LossQ | 4.75e+03 |\n", "| Time | 635 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -665 |\n", "| StdEpRet | 331 |\n", "| MaxEpRet | -121 |\n", "| MinEpRet | -1.24e+03 |\n", "| AverageTestEpRet | -819 |\n", "| StdTestEpRet | 295 |\n", "| MaxTestEpRet | -326 |\n", "| MinTestEpRet | -1.29e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQ1Vals | -563 |\n", "| StdQ1Vals | 366 |\n", "| MaxQ1Vals | -54.5 |\n", "| MinQ1Vals | -2.33e+03 |\n", "| AverageQ2Vals | -563 |\n", "| StdQ2Vals | 365 |\n", "| MaxQ2Vals | -56 |\n", "| MinQ2Vals | -2.36e+03 |\n", "| AverageLogPi | 4.67 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 21.2 |\n", "| MinLogPi | -6.61 |\n", "| LossPi | 557 |\n", "| LossQ | 4.74e+03 |\n", "| Time | 646 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -590 |\n", "| StdEpRet | 310 |\n", "| MaxEpRet | -115 |\n", "| MinEpRet | -1.28e+03 |\n", "| AverageTestEpRet | -697 |\n", "| StdTestEpRet | 356 |\n", "| MaxTestEpRet | -104 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQ1Vals | -551 |\n", "| StdQ1Vals | 364 |\n", "| MaxQ1Vals | -46.7 |\n", "| MinQ1Vals | -2.34e+03 |\n", "| AverageQ2Vals | -551 |\n", "| StdQ2Vals | 364 |\n", "| MaxQ2Vals | -47.9 |\n", "| MinQ2Vals | -2.36e+03 |\n", "| AverageLogPi | 4.73 |\n", "| StdLogPi | 1.49 |\n", "| MaxLogPi | 22.2 |\n", "| MinLogPi | -8.68 |\n", "| LossPi | 545 |\n", "| LossQ | 4.68e+03 |\n", "| Time | 658 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -699 |\n", "| StdEpRet | 391 |\n", "| MaxEpRet | -188 |\n", "| MinEpRet | -1.4e+03 |\n", "| AverageTestEpRet | -665 |\n", "| StdTestEpRet | 372 |\n", "| MaxTestEpRet | -129 |\n", "| MinTestEpRet | -1.27e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQ1Vals | -535 |\n", "| StdQ1Vals | 358 |\n", "| MaxQ1Vals | -39.6 |\n", "| MinQ1Vals | -2.3e+03 |\n", "| AverageQ2Vals | -535 |\n", "| StdQ2Vals | 358 |\n", "| MaxQ2Vals | -40.9 |\n", "| MinQ2Vals | -2.33e+03 |\n", "| AverageLogPi | 4.73 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 22.5 |\n", "| MinLogPi | -9.08 |\n", "| LossPi | 529 |\n", "| LossQ | 4.52e+03 |\n", "| Time | 670 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -559 |\n", "| StdEpRet | 473 |\n", "| MaxEpRet | -48.8 |\n", "| MinEpRet | -1.83e+03 |\n", "| AverageTestEpRet | -783 |\n", "| StdTestEpRet | 646 |\n", "| MaxTestEpRet | -13.8 |\n", "| MinTestEpRet | -2.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQ1Vals | -523 |\n", "| StdQ1Vals | 357 |\n", "| MaxQ1Vals | -29 |\n", "| MinQ1Vals | -2.25e+03 |\n", "| AverageQ2Vals | -523 |\n", "| StdQ2Vals | 357 |\n", "| MaxQ2Vals | -31.4 |\n", "| MinQ2Vals | -2.26e+03 |\n", "| AverageLogPi | 4.72 |\n", "| StdLogPi | 1.52 |\n", "| MaxLogPi | 21.7 |\n", "| MinLogPi | -7.48 |\n", "| LossPi | 517 |\n", "| LossQ | 4.47e+03 |\n", "| Time | 681 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -715 |\n", "| StdEpRet | 401 |\n", "| MaxEpRet | -141 |\n", "| MinEpRet | -1.3e+03 |\n", "| AverageTestEpRet | -641 |\n", "| StdTestEpRet | 431 |\n", "| MaxTestEpRet | -106 |\n", "| MinTestEpRet | -1.61e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQ1Vals | -507 |\n", "| StdQ1Vals | 353 |\n", "| MaxQ1Vals | -21.2 |\n", "| MinQ1Vals | -2.26e+03 |\n", "| AverageQ2Vals | -507 |\n", "| StdQ2Vals | 353 |\n", "| MaxQ2Vals | -23.3 |\n", "| MinQ2Vals | -2.27e+03 |\n", "| AverageLogPi | 4.66 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 22.3 |\n", "| MinLogPi | -6.64 |\n", "| LossPi | 501 |\n", "| LossQ | 4.18e+03 |\n", "| Time | 693 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 0\n", "logger_kwargs = dict(output_dir='sac_b0', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 10000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "lr_b = 0.001\n", "alpha_b = 0.2\n", "\n", "\n", "# Baseline 0 training\n", "spinup.sac_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, lr = lr_b, alpha = alpha_b)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Log dir sac_b1 already exists! Storing info there anyway.\n", "\u001b[32;1mLogging data to sac_b1/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"alpha\":\t0.2,\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\"GyroscopeEnv\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"sac_b1\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='sac_b1/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"sac_b1\"\n", " },\n", " \"lr\":\t0.001,\n", " \"max_ep_len\":\t110,\n", " \"num_test_episodes\":\t10,\n", " \"polyak\":\t0.9,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t5000,\n", " \"steps_per_epoch\":\t1650,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3604, \t q1: 3301, \t q2: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -6.93e+03 |\n", "| StdEpRet | 1.24e+03 |\n", "| MaxEpRet | -3.98e+03 |\n", "| MinEpRet | -9.1e+03 |\n", "| AverageTestEpRet | -6.87e+03 |\n", "| StdTestEpRet | 1.52e+03 |\n", "| MaxTestEpRet | -5.3e+03 |\n", "| MinTestEpRet | -1.01e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQ1Vals | -467 |\n", "| StdQ1Vals | 383 |\n", "| MaxQ1Vals | 4.36 |\n", "| MinQ1Vals | -1.82e+03 |\n", "| AverageQ2Vals | -467 |\n", "| StdQ2Vals | 382 |\n", "| MaxQ2Vals | 1.96 |\n", "| MinQ2Vals | -1.82e+03 |\n", "| AverageLogPi | 3.36 |\n", "| StdLogPi | 2.31 |\n", "| MaxLogPi | 32.8 |\n", "| MinLogPi | -10.4 |\n", "| LossPi | 446 |\n", "| LossQ | 5.44e+03 |\n", "| Time | 5.96 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -7.2e+03 |\n", "| StdEpRet | 1.39e+03 |\n", "| MaxEpRet | -4.67e+03 |\n", "| MinEpRet | -9.48e+03 |\n", "| AverageTestEpRet | -7.46e+03 |\n", "| StdTestEpRet | 1.76e+03 |\n", "| MaxTestEpRet | -5.09e+03 |\n", "| MinTestEpRet | -1.09e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQ1Vals | -1.16e+03 |\n", "| StdQ1Vals | 508 |\n", "| MaxQ1Vals | -16.3 |\n", "| MinQ1Vals | -2.76e+03 |\n", "| AverageQ2Vals | -1.16e+03 |\n", "| StdQ2Vals | 508 |\n", "| MaxQ2Vals | -23.7 |\n", "| MinQ2Vals | -2.75e+03 |\n", "| AverageLogPi | 5.02 |\n", "| StdLogPi | 2.16 |\n", "| MaxLogPi | 19.8 |\n", "| MinLogPi | -8.64 |\n", "| LossPi | 1.11e+03 |\n", "| LossQ | 4.44e+03 |\n", "| Time | 17.6 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 3 |\n", "| AverageEpRet | -7.18e+03 |\n", "| StdEpRet | 1.29e+03 |\n", "| MaxEpRet | -4.09e+03 |\n", "| MinEpRet | -8.88e+03 |\n", "| AverageTestEpRet | -5.77e+03 |\n", "| StdTestEpRet | 1.63e+03 |\n", "| MaxTestEpRet | -1.18e+03 |\n", "| MinTestEpRet | -7.68e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+03 |\n", "| AverageQ1Vals | -1.86e+03 |\n", "| StdQ1Vals | 1.02e+03 |\n", "| MaxQ1Vals | -35.1 |\n", "| MinQ1Vals | -5.44e+03 |\n", "| AverageQ2Vals | -1.86e+03 |\n", "| StdQ2Vals | 1.02e+03 |\n", "| MaxQ2Vals | -47.7 |\n", "| MinQ2Vals | -5.44e+03 |\n", "| AverageLogPi | 3.84 |\n", "| StdLogPi | 1.92 |\n", "| MaxLogPi | 12.3 |\n", "| MinLogPi | -9.6 |\n", "| LossPi | 1.83e+03 |\n", "| LossQ | 4.58e+03 |\n", "| Time | 29.3 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 4 |\n", "| AverageEpRet | -6.68e+03 |\n", "| StdEpRet | 1.17e+03 |\n", "| MaxEpRet | -5.04e+03 |\n", "| MinEpRet | -8.7e+03 |\n", "| AverageTestEpRet | -5.63e+03 |\n", "| StdTestEpRet | 1.71e+03 |\n", "| MaxTestEpRet | -3.11e+03 |\n", "| MinTestEpRet | -8.12e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+03 |\n", "| AverageQ1Vals | -3.31e+03 |\n", "| StdQ1Vals | 1.59e+03 |\n", "| MaxQ1Vals | -301 |\n", "| MinQ1Vals | -6.74e+03 |\n", "| AverageQ2Vals | -3.31e+03 |\n", "| StdQ2Vals | 1.59e+03 |\n", "| MaxQ2Vals | -298 |\n", "| MinQ2Vals | -6.75e+03 |\n", "| AverageLogPi | 2.84 |\n", "| StdLogPi | 1.4 |\n", "| MaxLogPi | 9.51 |\n", "| MinLogPi | -9.25 |\n", "| LossPi | 3.29e+03 |\n", "| LossQ | 4.17e+03 |\n", "| Time | 41.1 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 5 |\n", "| AverageEpRet | -6.79e+03 |\n", "| StdEpRet | 2.03e+03 |\n", "| MaxEpRet | -3.24e+03 |\n", "| MinEpRet | -1.07e+04 |\n", "| AverageTestEpRet | -5.17e+03 |\n", "| StdTestEpRet | 1.16e+03 |\n", "| MaxTestEpRet | -3.58e+03 |\n", "| MinTestEpRet | -7.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+03 |\n", "| AverageQ1Vals | -4.05e+03 |\n", "| StdQ1Vals | 1.48e+03 |\n", "| MaxQ1Vals | -919 |\n", "| MinQ1Vals | -7.44e+03 |\n", "| AverageQ2Vals | -4.05e+03 |\n", "| StdQ2Vals | 1.48e+03 |\n", "| MaxQ2Vals | -919 |\n", "| MinQ2Vals | -7.44e+03 |\n", "| AverageLogPi | 2.92 |\n", "| StdLogPi | 1.28 |\n", "| MaxLogPi | 10.2 |\n", "| MinLogPi | -8.87 |\n", "| LossPi | 4.03e+03 |\n", "| LossQ | 5.52e+03 |\n", "| Time | 52.8 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 6 |\n", "| AverageEpRet | -5.62e+03 |\n", "| StdEpRet | 1.46e+03 |\n", "| MaxEpRet | -3.24e+03 |\n", "| MinEpRet | -9.22e+03 |\n", "| AverageTestEpRet | -6.69e+03 |\n", "| StdTestEpRet | 2.3e+03 |\n", "| MaxTestEpRet | -4.04e+03 |\n", "| MinTestEpRet | -1.11e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+03 |\n", "| AverageQ1Vals | -4.51e+03 |\n", "| StdQ1Vals | 1.43e+03 |\n", "| MaxQ1Vals | -1.4e+03 |\n", "| MinQ1Vals | -8.56e+03 |\n", "| AverageQ2Vals | -4.51e+03 |\n", "| StdQ2Vals | 1.43e+03 |\n", "| MaxQ2Vals | -1.38e+03 |\n", "| MinQ2Vals | -8.55e+03 |\n", "| AverageLogPi | 2.86 |\n", "| StdLogPi | 1.28 |\n", "| MaxLogPi | 10.3 |\n", "| MinLogPi | -7.85 |\n", "| LossPi | 4.5e+03 |\n", "| LossQ | 8.48e+03 |\n", "| Time | 63.7 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 7 |\n", "| AverageEpRet | -5.41e+03 |\n", "| StdEpRet | 2.2e+03 |\n", "| MaxEpRet | -1.48e+03 |\n", "| MinEpRet | -9.61e+03 |\n", "| AverageTestEpRet | -4.44e+03 |\n", "| StdTestEpRet | 2.47e+03 |\n", "| MaxTestEpRet | -832 |\n", "| MinTestEpRet | -8.55e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.15e+04 |\n", "| AverageQ1Vals | -4.76e+03 |\n", "| StdQ1Vals | 1.34e+03 |\n", "| MaxQ1Vals | -1.97e+03 |\n", "| MinQ1Vals | -8.6e+03 |\n", "| AverageQ2Vals | -4.76e+03 |\n", "| StdQ2Vals | 1.34e+03 |\n", "| MaxQ2Vals | -1.96e+03 |\n", "| MinQ2Vals | -8.57e+03 |\n", "| AverageLogPi | 2.81 |\n", "| StdLogPi | 1.28 |\n", "| MaxLogPi | 13.9 |\n", "| MinLogPi | -7.73 |\n", "| LossPi | 4.75e+03 |\n", "| LossQ | 1.09e+04 |\n", "| Time | 75.4 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 8 |\n", "| AverageEpRet | -5.24e+03 |\n", "| StdEpRet | 2.06e+03 |\n", "| MaxEpRet | -1.76e+03 |\n", "| MinEpRet | -8.83e+03 |\n", "| AverageTestEpRet | -5.95e+03 |\n", "| StdTestEpRet | 2.63e+03 |\n", "| MaxTestEpRet | -1.58e+03 |\n", "| MinTestEpRet | -1.04e+04 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.32e+04 |\n", "| AverageQ1Vals | -4.82e+03 |\n", "| StdQ1Vals | 1.21e+03 |\n", "| MaxQ1Vals | -2.31e+03 |\n", "| MinQ1Vals | -8.62e+03 |\n", "| AverageQ2Vals | -4.82e+03 |\n", "| StdQ2Vals | 1.21e+03 |\n", "| MaxQ2Vals | -2.32e+03 |\n", "| MinQ2Vals | -8.61e+03 |\n", "| AverageLogPi | 2.81 |\n", "| StdLogPi | 1.28 |\n", "| MaxLogPi | 11.8 |\n", "| MinLogPi | -8.11 |\n", "| LossPi | 4.81e+03 |\n", "| LossQ | 1.22e+04 |\n", "| Time | 86.9 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 9 |\n", "| AverageEpRet | -3.6e+03 |\n", "| StdEpRet | 2.41e+03 |\n", "| MaxEpRet | -304 |\n", "| MinEpRet | -7.49e+03 |\n", "| AverageTestEpRet | -5.37e+03 |\n", "| StdTestEpRet | 1.68e+03 |\n", "| MaxTestEpRet | -2.38e+03 |\n", "| MinTestEpRet | -8.7e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.48e+04 |\n", "| AverageQ1Vals | -4.73e+03 |\n", "| StdQ1Vals | 1.04e+03 |\n", "| MaxQ1Vals | -2.46e+03 |\n", "| MinQ1Vals | -8.22e+03 |\n", "| AverageQ2Vals | -4.73e+03 |\n", "| StdQ2Vals | 1.04e+03 |\n", "| MaxQ2Vals | -2.45e+03 |\n", "| MinQ2Vals | -8.22e+03 |\n", "| AverageLogPi | 2.83 |\n", "| StdLogPi | 1.33 |\n", "| MaxLogPi | 10.6 |\n", "| MinLogPi | -10.1 |\n", "| LossPi | 4.72e+03 |\n", "| LossQ | 1.24e+04 |\n", "| Time | 97.9 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 10 |\n", "| AverageEpRet | -4.44e+03 |\n", "| StdEpRet | 2.11e+03 |\n", "| MaxEpRet | -1.05e+03 |\n", "| MinEpRet | -7.92e+03 |\n", "| AverageTestEpRet | -5.04e+03 |\n", "| StdTestEpRet | 2.22e+03 |\n", "| MaxTestEpRet | -1.79e+03 |\n", "| MinTestEpRet | -8.79e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+04 |\n", "| AverageQ1Vals | -4.59e+03 |\n", "| StdQ1Vals | 983 |\n", "| MaxQ1Vals | -2.37e+03 |\n", "| MinQ1Vals | -7.96e+03 |\n", "| AverageQ2Vals | -4.59e+03 |\n", "| StdQ2Vals | 983 |\n", "| MaxQ2Vals | -2.36e+03 |\n", "| MinQ2Vals | -7.98e+03 |\n", "| AverageLogPi | 2.82 |\n", "| StdLogPi | 1.36 |\n", "| MaxLogPi | 11.8 |\n", "| MinLogPi | -10.8 |\n", "| LossPi | 4.59e+03 |\n", "| LossQ | 1.21e+04 |\n", "| Time | 109 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 11 |\n", "| AverageEpRet | -4.01e+03 |\n", "| StdEpRet | 1.92e+03 |\n", "| MaxEpRet | -1.45e+03 |\n", "| MinEpRet | -8.46e+03 |\n", "| AverageTestEpRet | -4.43e+03 |\n", "| StdTestEpRet | 2.6e+03 |\n", "| MaxTestEpRet | -299 |\n", "| MinTestEpRet | -9.21e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.81e+04 |\n", "| AverageQ1Vals | -4.49e+03 |\n", "| StdQ1Vals | 948 |\n", "| MaxQ1Vals | -2.18e+03 |\n", "| MinQ1Vals | -7.77e+03 |\n", "| AverageQ2Vals | -4.49e+03 |\n", "| StdQ2Vals | 948 |\n", "| MaxQ2Vals | -2.18e+03 |\n", "| MinQ2Vals | -7.79e+03 |\n", "| AverageLogPi | 2.78 |\n", "| StdLogPi | 1.34 |\n", "| MaxLogPi | 12.4 |\n", "| MinLogPi | -9.08 |\n", "| LossPi | 4.48e+03 |\n", "| LossQ | 1.21e+04 |\n", "| Time | 121 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 12 |\n", "| AverageEpRet | -4.9e+03 |\n", "| StdEpRet | 2.51e+03 |\n", "| MaxEpRet | -1.3e+03 |\n", "| MinEpRet | -1.02e+04 |\n", "| AverageTestEpRet | -2.2e+03 |\n", "| StdTestEpRet | 1.58e+03 |\n", "| MaxTestEpRet | -367 |\n", "| MinTestEpRet | -4.8e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.98e+04 |\n", "| AverageQ1Vals | -4.41e+03 |\n", "| StdQ1Vals | 937 |\n", "| MaxQ1Vals | -2.1e+03 |\n", "| MinQ1Vals | -7.7e+03 |\n", "| AverageQ2Vals | -4.41e+03 |\n", "| StdQ2Vals | 937 |\n", "| MaxQ2Vals | -2.1e+03 |\n", "| MinQ2Vals | -7.72e+03 |\n", "| AverageLogPi | 2.82 |\n", "| StdLogPi | 1.39 |\n", "| MaxLogPi | 12.3 |\n", "| MinLogPi | -9.27 |\n", "| LossPi | 4.4e+03 |\n", "| LossQ | 1.18e+04 |\n", "| Time | 132 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 13 |\n", "| AverageEpRet | -4.15e+03 |\n", "| StdEpRet | 1.93e+03 |\n", "| MaxEpRet | -396 |\n", "| MinEpRet | -7.39e+03 |\n", "| AverageTestEpRet | -2.99e+03 |\n", "| StdTestEpRet | 1.43e+03 |\n", "| MaxTestEpRet | -352 |\n", "| MinTestEpRet | -4.73e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.14e+04 |\n", "| AverageQ1Vals | -4.28e+03 |\n", "| StdQ1Vals | 940 |\n", "| MaxQ1Vals | -2e+03 |\n", "| MinQ1Vals | -7.56e+03 |\n", "| AverageQ2Vals | -4.28e+03 |\n", "| StdQ2Vals | 940 |\n", "| MaxQ2Vals | -2e+03 |\n", "| MinQ2Vals | -7.58e+03 |\n", "| AverageLogPi | 2.84 |\n", "| StdLogPi | 1.41 |\n", "| MaxLogPi | 11.8 |\n", "| MinLogPi | -11 |\n", "| LossPi | 4.27e+03 |\n", "| LossQ | 1.17e+04 |\n", "| Time | 144 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 14 |\n", "| AverageEpRet | -2.71e+03 |\n", "| StdEpRet | 2.03e+03 |\n", "| MaxEpRet | -439 |\n", "| MinEpRet | -7.53e+03 |\n", "| AverageTestEpRet | -2.19e+03 |\n", "| StdTestEpRet | 1.47e+03 |\n", "| MaxTestEpRet | -138 |\n", "| MinTestEpRet | -4.26e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.31e+04 |\n", "| AverageQ1Vals | -4.1e+03 |\n", "| StdQ1Vals | 934 |\n", "| MaxQ1Vals | -1.87e+03 |\n", "| MinQ1Vals | -7.36e+03 |\n", "| AverageQ2Vals | -4.1e+03 |\n", "| StdQ2Vals | 933 |\n", "| MaxQ2Vals | -1.86e+03 |\n", "| MinQ2Vals | -7.38e+03 |\n", "| AverageLogPi | 2.9 |\n", "| StdLogPi | 1.44 |\n", "| MaxLogPi | 13 |\n", "| MinLogPi | -9.16 |\n", "| LossPi | 4.09e+03 |\n", "| LossQ | 1.16e+04 |\n", "| Time | 156 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 15 |\n", "| AverageEpRet | -3.45e+03 |\n", "| StdEpRet | 2.23e+03 |\n", "| MaxEpRet | -156 |\n", "| MinEpRet | -7.71e+03 |\n", "| AverageTestEpRet | -2.66e+03 |\n", "| StdTestEpRet | 2.27e+03 |\n", "| MaxTestEpRet | -554 |\n", "| MinTestEpRet | -6.65e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.47e+04 |\n", "| AverageQ1Vals | -3.87e+03 |\n", "| StdQ1Vals | 906 |\n", "| MaxQ1Vals | -1.61e+03 |\n", "| MinQ1Vals | -6.99e+03 |\n", "| AverageQ2Vals | -3.87e+03 |\n", "| StdQ2Vals | 906 |\n", "| MaxQ2Vals | -1.61e+03 |\n", "| MinQ2Vals | -7e+03 |\n", "| AverageLogPi | 2.98 |\n", "| StdLogPi | 1.44 |\n", "| MaxLogPi | 13.4 |\n", "| MinLogPi | -8.96 |\n", "| LossPi | 3.86e+03 |\n", "| LossQ | 1.18e+04 |\n", "| Time | 167 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 16 |\n", "| AverageEpRet | -2.57e+03 |\n", "| StdEpRet | 1.27e+03 |\n", "| MaxEpRet | -545 |\n", "| MinEpRet | -4.85e+03 |\n", "| AverageTestEpRet | -2.83e+03 |\n", "| StdTestEpRet | 1.81e+03 |\n", "| MaxTestEpRet | -631 |\n", "| MinTestEpRet | -6.15e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.64e+04 |\n", "| AverageQ1Vals | -3.68e+03 |\n", "| StdQ1Vals | 890 |\n", "| MaxQ1Vals | -1.48e+03 |\n", "| MinQ1Vals | -6.67e+03 |\n", "| AverageQ2Vals | -3.68e+03 |\n", "| StdQ2Vals | 890 |\n", "| MaxQ2Vals | -1.49e+03 |\n", "| MinQ2Vals | -6.67e+03 |\n", "| AverageLogPi | 3.01 |\n", "| StdLogPi | 1.4 |\n", "| MaxLogPi | 13.8 |\n", "| MinLogPi | -8.62 |\n", "| LossPi | 3.67e+03 |\n", "| LossQ | 1.13e+04 |\n", "| Time | 179 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 17 |\n", "| AverageEpRet | -1.58e+03 |\n", "| StdEpRet | 1.32e+03 |\n", "| MaxEpRet | -73.4 |\n", "| MinEpRet | -5.25e+03 |\n", "| AverageTestEpRet | -1.58e+03 |\n", "| StdTestEpRet | 1.19e+03 |\n", "| MaxTestEpRet | -300 |\n", "| MinTestEpRet | -3.64e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.8e+04 |\n", "| AverageQ1Vals | -3.49e+03 |\n", "| StdQ1Vals | 853 |\n", "| MaxQ1Vals | -1.41e+03 |\n", "| MinQ1Vals | -6.47e+03 |\n", "| AverageQ2Vals | -3.49e+03 |\n", "| StdQ2Vals | 853 |\n", "| MaxQ2Vals | -1.41e+03 |\n", "| MinQ2Vals | -6.48e+03 |\n", "| AverageLogPi | 3.09 |\n", "| StdLogPi | 1.37 |\n", "| MaxLogPi | 13.2 |\n", "| MinLogPi | -7.7 |\n", "| LossPi | 3.48e+03 |\n", "| LossQ | 1.12e+04 |\n", "| Time | 190 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 18 |\n", "| AverageEpRet | -1.73e+03 |\n", "| StdEpRet | 1.14e+03 |\n", "| MaxEpRet | -99.5 |\n", "| MinEpRet | -3.82e+03 |\n", "| AverageTestEpRet | -953 |\n", "| StdTestEpRet | 549 |\n", "| MaxTestEpRet | -114 |\n", "| MinTestEpRet | -1.63e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 2.97e+04 |\n", "| AverageQ1Vals | -3.28e+03 |\n", "| StdQ1Vals | 777 |\n", "| MaxQ1Vals | -1.36e+03 |\n", "| MinQ1Vals | -5.97e+03 |\n", "| AverageQ2Vals | -3.28e+03 |\n", "| StdQ2Vals | 777 |\n", "| MaxQ2Vals | -1.36e+03 |\n", "| MinQ2Vals | -5.97e+03 |\n", "| AverageLogPi | 3.13 |\n", "| StdLogPi | 1.36 |\n", "| MaxLogPi | 11.6 |\n", "| MinLogPi | -10.7 |\n", "| LossPi | 3.27e+03 |\n", "| LossQ | 1.11e+04 |\n", "| Time | 202 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 19 |\n", "| AverageEpRet | -1.5e+03 |\n", "| StdEpRet | 1.71e+03 |\n", "| MaxEpRet | -144 |\n", "| MinEpRet | -6.27e+03 |\n", "| AverageTestEpRet | -1.27e+03 |\n", "| StdTestEpRet | 1.09e+03 |\n", "| MaxTestEpRet | -70.3 |\n", "| MinTestEpRet | -4.22e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.13e+04 |\n", "| AverageQ1Vals | -3.07e+03 |\n", "| StdQ1Vals | 711 |\n", "| MaxQ1Vals | -1.36e+03 |\n", "| MinQ1Vals | -5.61e+03 |\n", "| AverageQ2Vals | -3.07e+03 |\n", "| StdQ2Vals | 711 |\n", "| MaxQ2Vals | -1.36e+03 |\n", "| MinQ2Vals | -5.6e+03 |\n", "| AverageLogPi | 3.24 |\n", "| StdLogPi | 1.34 |\n", "| MaxLogPi | 11.3 |\n", "| MinLogPi | -9.11 |\n", "| LossPi | 3.06e+03 |\n", "| LossQ | 1.18e+04 |\n", "| Time | 214 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 20 |\n", "| AverageEpRet | -954 |\n", "| StdEpRet | 772 |\n", "| MaxEpRet | -201 |\n", "| MinEpRet | -2.77e+03 |\n", "| AverageTestEpRet | -1.02e+03 |\n", "| StdTestEpRet | 969 |\n", "| MaxTestEpRet | -104 |\n", "| MinTestEpRet | -3.66e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+04 |\n", "| AverageQ1Vals | -2.79e+03 |\n", "| StdQ1Vals | 646 |\n", "| MaxQ1Vals | -1.26e+03 |\n", "| MinQ1Vals | -5.19e+03 |\n", "| AverageQ2Vals | -2.79e+03 |\n", "| StdQ2Vals | 646 |\n", "| MaxQ2Vals | -1.27e+03 |\n", "| MinQ2Vals | -5.19e+03 |\n", "| AverageLogPi | 3.48 |\n", "| StdLogPi | 1.39 |\n", "| MaxLogPi | 13.6 |\n", "| MinLogPi | -6.83 |\n", "| LossPi | 2.77e+03 |\n", "| LossQ | 1.18e+04 |\n", "| Time | 225 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 21 |\n", "| AverageEpRet | -1.9e+03 |\n", "| StdEpRet | 1.57e+03 |\n", "| MaxEpRet | -86.1 |\n", "| MinEpRet | -5.5e+03 |\n", "| AverageTestEpRet | -1.52e+03 |\n", "| StdTestEpRet | 1.18e+03 |\n", "| MaxTestEpRet | -276 |\n", "| MinTestEpRet | -3.56e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.46e+04 |\n", "| AverageQ1Vals | -2.5e+03 |\n", "| StdQ1Vals | 587 |\n", "| MaxQ1Vals | -1.15e+03 |\n", "| MinQ1Vals | -4.67e+03 |\n", "| AverageQ2Vals | -2.5e+03 |\n", "| StdQ2Vals | 587 |\n", "| MaxQ2Vals | -1.15e+03 |\n", "| MinQ2Vals | -4.64e+03 |\n", "| AverageLogPi | 3.67 |\n", "| StdLogPi | 1.46 |\n", "| MaxLogPi | 14.4 |\n", "| MinLogPi | -8.08 |\n", "| LossPi | 2.48e+03 |\n", "| LossQ | 1.24e+04 |\n", "| Time | 237 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 22 |\n", "| AverageEpRet | -1.21e+03 |\n", "| StdEpRet | 1.32e+03 |\n", "| MaxEpRet | -43.9 |\n", "| MinEpRet | -5.36e+03 |\n", "| AverageTestEpRet | -1.39e+03 |\n", "| StdTestEpRet | 795 |\n", "| MaxTestEpRet | -313 |\n", "| MinTestEpRet | -3.05e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.63e+04 |\n", "| AverageQ1Vals | -2.31e+03 |\n", "| StdQ1Vals | 557 |\n", "| MaxQ1Vals | -1e+03 |\n", "| MinQ1Vals | -4.34e+03 |\n", "| AverageQ2Vals | -2.31e+03 |\n", "| StdQ2Vals | 557 |\n", "| MaxQ2Vals | -993 |\n", "| MinQ2Vals | -4.31e+03 |\n", "| AverageLogPi | 3.84 |\n", "| StdLogPi | 1.51 |\n", "| MaxLogPi | 13.3 |\n", "| MinLogPi | -9.22 |\n", "| LossPi | 2.29e+03 |\n", "| LossQ | 1.27e+04 |\n", "| Time | 248 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 23 |\n", "| AverageEpRet | -902 |\n", "| StdEpRet | 849 |\n", "| MaxEpRet | -154 |\n", "| MinEpRet | -3.01e+03 |\n", "| AverageTestEpRet | -909 |\n", "| StdTestEpRet | 567 |\n", "| MaxTestEpRet | -207 |\n", "| MinTestEpRet | -1.89e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.79e+04 |\n", "| AverageQ1Vals | -2.05e+03 |\n", "| StdQ1Vals | 516 |\n", "| MaxQ1Vals | -884 |\n", "| MinQ1Vals | -3.9e+03 |\n", "| AverageQ2Vals | -2.05e+03 |\n", "| StdQ2Vals | 516 |\n", "| MaxQ2Vals | -875 |\n", "| MinQ2Vals | -3.88e+03 |\n", "| AverageLogPi | 4.09 |\n", "| StdLogPi | 1.56 |\n", "| MaxLogPi | 17.1 |\n", "| MinLogPi | -8.67 |\n", "| LossPi | 2.03e+03 |\n", "| LossQ | 1.27e+04 |\n", "| Time | 259 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 24 |\n", "| AverageEpRet | -1.08e+03 |\n", "| StdEpRet | 1.04e+03 |\n", "| MaxEpRet | -66.7 |\n", "| MinEpRet | -3.45e+03 |\n", "| AverageTestEpRet | -847 |\n", "| StdTestEpRet | 604 |\n", "| MaxTestEpRet | -186 |\n", "| MinTestEpRet | -2.33e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.96e+04 |\n", "| AverageQ1Vals | -1.85e+03 |\n", "| StdQ1Vals | 498 |\n", "| MaxQ1Vals | -748 |\n", "| MinQ1Vals | -3.59e+03 |\n", "| AverageQ2Vals | -1.85e+03 |\n", "| StdQ2Vals | 498 |\n", "| MaxQ2Vals | -741 |\n", "| MinQ2Vals | -3.58e+03 |\n", "| AverageLogPi | 4.2 |\n", "| StdLogPi | 1.61 |\n", "| MaxLogPi | 16.7 |\n", "| MinLogPi | -7.12 |\n", "| LossPi | 1.84e+03 |\n", "| LossQ | 1.25e+04 |\n", "| Time | 270 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 25 |\n", "| AverageEpRet | -1.3e+03 |\n", "| StdEpRet | 989 |\n", "| MaxEpRet | -118 |\n", "| MinEpRet | -3.69e+03 |\n", "| AverageTestEpRet | -635 |\n", "| StdTestEpRet | 469 |\n", "| MaxTestEpRet | -218 |\n", "| MinTestEpRet | -1.86e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.12e+04 |\n", "| AverageQ1Vals | -1.73e+03 |\n", "| StdQ1Vals | 493 |\n", "| MaxQ1Vals | -710 |\n", "| MinQ1Vals | -3.64e+03 |\n", "| AverageQ2Vals | -1.73e+03 |\n", "| StdQ2Vals | 493 |\n", "| MaxQ2Vals | -703 |\n", "| MinQ2Vals | -3.63e+03 |\n", "| AverageLogPi | 4.2 |\n", "| StdLogPi | 1.62 |\n", "| MaxLogPi | 19.5 |\n", "| MinLogPi | -6.95 |\n", "| LossPi | 1.72e+03 |\n", "| LossQ | 1.32e+04 |\n", "| Time | 282 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 26 |\n", "| AverageEpRet | -1.63e+03 |\n", "| StdEpRet | 1.38e+03 |\n", "| MaxEpRet | -184 |\n", "| MinEpRet | -4.86e+03 |\n", "| AverageTestEpRet | -1.61e+03 |\n", "| StdTestEpRet | 1.57e+03 |\n", "| MaxTestEpRet | -304 |\n", "| MinTestEpRet | -5.14e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.29e+04 |\n", "| AverageQ1Vals | -1.63e+03 |\n", "| StdQ1Vals | 478 |\n", "| MaxQ1Vals | -645 |\n", "| MinQ1Vals | -3.56e+03 |\n", "| AverageQ2Vals | -1.63e+03 |\n", "| StdQ2Vals | 478 |\n", "| MaxQ2Vals | -638 |\n", "| MinQ2Vals | -3.55e+03 |\n", "| AverageLogPi | 4.35 |\n", "| StdLogPi | 1.63 |\n", "| MaxLogPi | 22.5 |\n", "| MinLogPi | -7.16 |\n", "| LossPi | 1.61e+03 |\n", "| LossQ | 1.27e+04 |\n", "| Time | 294 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 27 |\n", "| AverageEpRet | -1.1e+03 |\n", "| StdEpRet | 793 |\n", "| MaxEpRet | -57.9 |\n", "| MinEpRet | -2.8e+03 |\n", "| AverageTestEpRet | -1.62e+03 |\n", "| StdTestEpRet | 1.44e+03 |\n", "| MaxTestEpRet | -211 |\n", "| MinTestEpRet | -4.75e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.45e+04 |\n", "| AverageQ1Vals | -1.57e+03 |\n", "| StdQ1Vals | 482 |\n", "| MaxQ1Vals | -622 |\n", "| MinQ1Vals | -3.58e+03 |\n", "| AverageQ2Vals | -1.57e+03 |\n", "| StdQ2Vals | 482 |\n", "| MaxQ2Vals | -610 |\n", "| MinQ2Vals | -3.57e+03 |\n", "| AverageLogPi | 4.19 |\n", "| StdLogPi | 1.63 |\n", "| MaxLogPi | 17.9 |\n", "| MinLogPi | -7.52 |\n", "| LossPi | 1.55e+03 |\n", "| LossQ | 1.31e+04 |\n", "| Time | 305 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 28 |\n", "| AverageEpRet | -1.33e+03 |\n", "| StdEpRet | 731 |\n", "| MaxEpRet | -127 |\n", "| MinEpRet | -3.09e+03 |\n", "| AverageTestEpRet | -630 |\n", "| StdTestEpRet | 407 |\n", "| MaxTestEpRet | -84.9 |\n", "| MinTestEpRet | -1.42e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.62e+04 |\n", "| AverageQ1Vals | -1.47e+03 |\n", "| StdQ1Vals | 472 |\n", "| MaxQ1Vals | -515 |\n", "| MinQ1Vals | -3.54e+03 |\n", "| AverageQ2Vals | -1.47e+03 |\n", "| StdQ2Vals | 472 |\n", "| MaxQ2Vals | -503 |\n", "| MinQ2Vals | -3.53e+03 |\n", "| AverageLogPi | 4.44 |\n", "| StdLogPi | 1.67 |\n", "| MaxLogPi | 21.7 |\n", "| MinLogPi | -8.17 |\n", "| LossPi | 1.45e+03 |\n", "| LossQ | 1.26e+04 |\n", "| Time | 316 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 29 |\n", "| AverageEpRet | -717 |\n", "| StdEpRet | 370 |\n", "| MaxEpRet | -234 |\n", "| MinEpRet | -1.39e+03 |\n", "| AverageTestEpRet | -828 |\n", "| StdTestEpRet | 538 |\n", "| MaxTestEpRet | -6.06 |\n", "| MinTestEpRet | -1.83e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.78e+04 |\n", "| AverageQ1Vals | -1.31e+03 |\n", "| StdQ1Vals | 456 |\n", "| MaxQ1Vals | -457 |\n", "| MinQ1Vals | -3.14e+03 |\n", "| AverageQ2Vals | -1.31e+03 |\n", "| StdQ2Vals | 456 |\n", "| MaxQ2Vals | -448 |\n", "| MinQ2Vals | -3.15e+03 |\n", "| AverageLogPi | 4.47 |\n", "| StdLogPi | 1.71 |\n", "| MaxLogPi | 16.8 |\n", "| MinLogPi | -6.96 |\n", "| LossPi | 1.29e+03 |\n", "| LossQ | 1.26e+04 |\n", "| Time | 327 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 30 |\n", "| AverageEpRet | -966 |\n", "| StdEpRet | 1.06e+03 |\n", "| MaxEpRet | -56.1 |\n", "| MinEpRet | -4.45e+03 |\n", "| AverageTestEpRet | -889 |\n", "| StdTestEpRet | 438 |\n", "| MaxTestEpRet | -135 |\n", "| MinTestEpRet | -1.53e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 4.95e+04 |\n", "| AverageQ1Vals | -1.14e+03 |\n", "| StdQ1Vals | 437 |\n", "| MaxQ1Vals | -312 |\n", "| MinQ1Vals | -3.07e+03 |\n", "| AverageQ2Vals | -1.14e+03 |\n", "| StdQ2Vals | 437 |\n", "| MaxQ2Vals | -310 |\n", "| MinQ2Vals | -3.08e+03 |\n", "| AverageLogPi | 4.81 |\n", "| StdLogPi | 1.87 |\n", "| MaxLogPi | 19.2 |\n", "| MinLogPi | -11 |\n", "| LossPi | 1.12e+03 |\n", "| LossQ | 1.17e+04 |\n", "| Time | 338 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 31 |\n", "| AverageEpRet | -866 |\n", "| StdEpRet | 576 |\n", "| MaxEpRet | -79.7 |\n", "| MinEpRet | -2.28e+03 |\n", "| AverageTestEpRet | -1.05e+03 |\n", "| StdTestEpRet | 777 |\n", "| MaxTestEpRet | -175 |\n", "| MinTestEpRet | -2.92e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.11e+04 |\n", "| AverageQ1Vals | -1.01e+03 |\n", "| StdQ1Vals | 412 |\n", "| MaxQ1Vals | -234 |\n", "| MinQ1Vals | -2.71e+03 |\n", "| AverageQ2Vals | -1.01e+03 |\n", "| StdQ2Vals | 412 |\n", "| MaxQ2Vals | -230 |\n", "| MinQ2Vals | -2.73e+03 |\n", "| AverageLogPi | 4.77 |\n", "| StdLogPi | 1.88 |\n", "| MaxLogPi | 20.4 |\n", "| MinLogPi | -10.6 |\n", "| LossPi | 989 |\n", "| LossQ | 1.17e+04 |\n", "| Time | 349 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 32 |\n", "| AverageEpRet | -930 |\n", "| StdEpRet | 1.01e+03 |\n", "| MaxEpRet | -242 |\n", "| MinEpRet | -4.48e+03 |\n", "| AverageTestEpRet | -557 |\n", "| StdTestEpRet | 330 |\n", "| MaxTestEpRet | -147 |\n", "| MinTestEpRet | -1.04e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.28e+04 |\n", "| AverageQ1Vals | -898 |\n", "| StdQ1Vals | 403 |\n", "| MaxQ1Vals | -223 |\n", "| MinQ1Vals | -2.55e+03 |\n", "| AverageQ2Vals | -898 |\n", "| StdQ2Vals | 403 |\n", "| MaxQ2Vals | -221 |\n", "| MinQ2Vals | -2.59e+03 |\n", "| AverageLogPi | 4.78 |\n", "| StdLogPi | 1.94 |\n", "| MaxLogPi | 20.9 |\n", "| MinLogPi | -8.53 |\n", "| LossPi | 881 |\n", "| LossQ | 1.16e+04 |\n", "| Time | 361 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 33 |\n", "| AverageEpRet | -1.07e+03 |\n", "| StdEpRet | 1.23e+03 |\n", "| MaxEpRet | -12.7 |\n", "| MinEpRet | -4.5e+03 |\n", "| AverageTestEpRet | -847 |\n", "| StdTestEpRet | 324 |\n", "| MaxTestEpRet | -407 |\n", "| MinTestEpRet | -1.51e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.44e+04 |\n", "| AverageQ1Vals | -925 |\n", "| StdQ1Vals | 414 |\n", "| MaxQ1Vals | -216 |\n", "| MinQ1Vals | -2.68e+03 |\n", "| AverageQ2Vals | -925 |\n", "| StdQ2Vals | 414 |\n", "| MaxQ2Vals | -220 |\n", "| MinQ2Vals | -2.73e+03 |\n", "| AverageLogPi | 4.73 |\n", "| StdLogPi | 1.87 |\n", "| MaxLogPi | 19.4 |\n", "| MinLogPi | -7.51 |\n", "| LossPi | 909 |\n", "| LossQ | 1.15e+04 |\n", "| Time | 372 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 34 |\n", "| AverageEpRet | -802 |\n", "| StdEpRet | 589 |\n", "| MaxEpRet | -69.1 |\n", "| MinEpRet | -2.52e+03 |\n", "| AverageTestEpRet | -777 |\n", "| StdTestEpRet | 381 |\n", "| MaxTestEpRet | -104 |\n", "| MinTestEpRet | -1.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.61e+04 |\n", "| AverageQ1Vals | -729 |\n", "| StdQ1Vals | 385 |\n", "| MaxQ1Vals | -59 |\n", "| MinQ1Vals | -2.36e+03 |\n", "| AverageQ2Vals | -729 |\n", "| StdQ2Vals | 385 |\n", "| MaxQ2Vals | -60.7 |\n", "| MinQ2Vals | -2.41e+03 |\n", "| AverageLogPi | 5.14 |\n", "| StdLogPi | 2.11 |\n", "| MaxLogPi | 21.8 |\n", "| MinLogPi | -7.23 |\n", "| LossPi | 710 |\n", "| LossQ | 1.09e+04 |\n", "| Time | 383 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 35 |\n", "| AverageEpRet | -671 |\n", "| StdEpRet | 547 |\n", "| MaxEpRet | -43.1 |\n", "| MinEpRet | -1.89e+03 |\n", "| AverageTestEpRet | -839 |\n", "| StdTestEpRet | 492 |\n", "| MaxTestEpRet | -79.7 |\n", "| MinTestEpRet | -1.63e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.77e+04 |\n", "| AverageQ1Vals | -560 |\n", "| StdQ1Vals | 367 |\n", "| MaxQ1Vals | 22.7 |\n", "| MinQ1Vals | -2.14e+03 |\n", "| AverageQ2Vals | -560 |\n", "| StdQ2Vals | 367 |\n", "| MaxQ2Vals | 21.3 |\n", "| MinQ2Vals | -2.14e+03 |\n", "| AverageLogPi | 5.31 |\n", "| StdLogPi | 2.36 |\n", "| MaxLogPi | 26.3 |\n", "| MinLogPi | -7.11 |\n", "| LossPi | 541 |\n", "| LossQ | 1.05e+04 |\n", "| Time | 398 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 36 |\n", "| AverageEpRet | -726 |\n", "| StdEpRet | 499 |\n", "| MaxEpRet | -131 |\n", "| MinEpRet | -2.06e+03 |\n", "| AverageTestEpRet | -639 |\n", "| StdTestEpRet | 371 |\n", "| MaxTestEpRet | -178 |\n", "| MinTestEpRet | -1.33e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 5.94e+04 |\n", "| AverageQ1Vals | -520 |\n", "| StdQ1Vals | 367 |\n", "| MaxQ1Vals | 41.4 |\n", "| MinQ1Vals | -2.14e+03 |\n", "| AverageQ2Vals | -520 |\n", "| StdQ2Vals | 368 |\n", "| MaxQ2Vals | 40.7 |\n", "| MinQ2Vals | -2.14e+03 |\n", "| AverageLogPi | 5.11 |\n", "| StdLogPi | 2.38 |\n", "| MaxLogPi | 23.3 |\n", "| MinLogPi | -7.32 |\n", "| LossPi | 502 |\n", "| LossQ | 9.94e+03 |\n", "| Time | 412 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 37 |\n", "| AverageEpRet | -613 |\n", "| StdEpRet | 571 |\n", "| MaxEpRet | -113 |\n", "| MinEpRet | -1.91e+03 |\n", "| AverageTestEpRet | -668 |\n", "| StdTestEpRet | 319 |\n", "| MaxTestEpRet | -280 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.1e+04 |\n", "| AverageQ1Vals | -568 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | 9.43 |\n", "| MinQ1Vals | -2.25e+03 |\n", "| AverageQ2Vals | -568 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | 6.82 |\n", "| MinQ2Vals | -2.23e+03 |\n", "| AverageLogPi | 4.91 |\n", "| StdLogPi | 2.24 |\n", "| MaxLogPi | 29.3 |\n", "| MinLogPi | -6.06 |\n", "| LossPi | 551 |\n", "| LossQ | 9.76e+03 |\n", "| Time | 423 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 38 |\n", "| AverageEpRet | -978 |\n", "| StdEpRet | 643 |\n", "| MaxEpRet | -194 |\n", "| MinEpRet | -2.93e+03 |\n", "| AverageTestEpRet | -627 |\n", "| StdTestEpRet | 542 |\n", "| MaxTestEpRet | -43.3 |\n", "| MinTestEpRet | -1.63e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.27e+04 |\n", "| AverageQ1Vals | -582 |\n", "| StdQ1Vals | 379 |\n", "| MaxQ1Vals | -6.11 |\n", "| MinQ1Vals | -2.24e+03 |\n", "| AverageQ2Vals | -582 |\n", "| StdQ2Vals | 379 |\n", "| MaxQ2Vals | -10 |\n", "| MinQ2Vals | -2.22e+03 |\n", "| AverageLogPi | 4.88 |\n", "| StdLogPi | 2.13 |\n", "| MaxLogPi | 29.7 |\n", "| MinLogPi | -7.89 |\n", "| LossPi | 566 |\n", "| LossQ | 1.04e+04 |\n", "| Time | 435 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 39 |\n", "| AverageEpRet | -476 |\n", "| StdEpRet | 385 |\n", "| MaxEpRet | -41.6 |\n", "| MinEpRet | -1.53e+03 |\n", "| AverageTestEpRet | -727 |\n", "| StdTestEpRet | 395 |\n", "| MaxTestEpRet | -294 |\n", "| MinTestEpRet | -1.54e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.43e+04 |\n", "| AverageQ1Vals | -491 |\n", "| StdQ1Vals | 374 |\n", "| MaxQ1Vals | 122 |\n", "| MinQ1Vals | -2.34e+03 |\n", "| AverageQ2Vals | -491 |\n", "| StdQ2Vals | 374 |\n", "| MaxQ2Vals | 115 |\n", "| MinQ2Vals | -2.32e+03 |\n", "| AverageLogPi | 5.19 |\n", "| StdLogPi | 2.33 |\n", "| MaxLogPi | 27.9 |\n", "| MinLogPi | -14.2 |\n", "| LossPi | 472 |\n", "| LossQ | 9.84e+03 |\n", "| Time | 446 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 40 |\n", "| AverageEpRet | -870 |\n", "| StdEpRet | 555 |\n", "| MaxEpRet | -167 |\n", "| MinEpRet | -2.02e+03 |\n", "| AverageTestEpRet | -782 |\n", "| StdTestEpRet | 432 |\n", "| MaxTestEpRet | -154 |\n", "| MinTestEpRet | -1.44e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.6e+04 |\n", "| AverageQ1Vals | -282 |\n", "| StdQ1Vals | 339 |\n", "| MaxQ1Vals | 241 |\n", "| MinQ1Vals | -1.94e+03 |\n", "| AverageQ2Vals | -282 |\n", "| StdQ2Vals | 339 |\n", "| MaxQ2Vals | 243 |\n", "| MinQ2Vals | -1.91e+03 |\n", "| AverageLogPi | 5.28 |\n", "| StdLogPi | 2.66 |\n", "| MaxLogPi | 28 |\n", "| MinLogPi | -10.5 |\n", "| LossPi | 262 |\n", "| LossQ | 9.25e+03 |\n", "| Time | 458 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 41 |\n", "| AverageEpRet | -625 |\n", "| StdEpRet | 415 |\n", "| MaxEpRet | -50 |\n", "| MinEpRet | -1.35e+03 |\n", "| AverageTestEpRet | -740 |\n", "| StdTestEpRet | 862 |\n", "| MaxTestEpRet | -57.1 |\n", "| MinTestEpRet | -3.14e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.76e+04 |\n", "| AverageQ1Vals | -279 |\n", "| StdQ1Vals | 331 |\n", "| MaxQ1Vals | 253 |\n", "| MinQ1Vals | -1.87e+03 |\n", "| AverageQ2Vals | -279 |\n", "| StdQ2Vals | 331 |\n", "| MaxQ2Vals | 251 |\n", "| MinQ2Vals | -1.83e+03 |\n", "| AverageLogPi | 4.99 |\n", "| StdLogPi | 2.64 |\n", "| MaxLogPi | 27.3 |\n", "| MinLogPi | -7.54 |\n", "| LossPi | 263 |\n", "| LossQ | 8.32e+03 |\n", "| Time | 472 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 42 |\n", "| AverageEpRet | -576 |\n", "| StdEpRet | 435 |\n", "| MaxEpRet | -116 |\n", "| MinEpRet | -1.76e+03 |\n", "| AverageTestEpRet | -350 |\n", "| StdTestEpRet | 281 |\n", "| MaxTestEpRet | -41.8 |\n", "| MinTestEpRet | -849 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 6.93e+04 |\n", "| AverageQ1Vals | -425 |\n", "| StdQ1Vals | 346 |\n", "| MaxQ1Vals | 156 |\n", "| MinQ1Vals | -2.06e+03 |\n", "| AverageQ2Vals | -425 |\n", "| StdQ2Vals | 346 |\n", "| MaxQ2Vals | 154 |\n", "| MinQ2Vals | -2.02e+03 |\n", "| AverageLogPi | 4.74 |\n", "| StdLogPi | 2.17 |\n", "| MaxLogPi | 23.3 |\n", "| MinLogPi | -7.15 |\n", "| LossPi | 410 |\n", "| LossQ | 8.25e+03 |\n", "| Time | 487 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 43 |\n", "| AverageEpRet | -606 |\n", "| StdEpRet | 462 |\n", "| MaxEpRet | -38.6 |\n", "| MinEpRet | -1.57e+03 |\n", "| AverageTestEpRet | -479 |\n", "| StdTestEpRet | 309 |\n", "| MaxTestEpRet | -122 |\n", "| MinTestEpRet | -1.2e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.09e+04 |\n", "| AverageQ1Vals | -429 |\n", "| StdQ1Vals | 351 |\n", "| MaxQ1Vals | 92.5 |\n", "| MinQ1Vals | -2.05e+03 |\n", "| AverageQ2Vals | -429 |\n", "| StdQ2Vals | 351 |\n", "| MaxQ2Vals | 95 |\n", "| MinQ2Vals | -2.02e+03 |\n", "| AverageLogPi | 4.79 |\n", "| StdLogPi | 2.01 |\n", "| MaxLogPi | 22.9 |\n", "| MinLogPi | -7.68 |\n", "| LossPi | 414 |\n", "| LossQ | 8.67e+03 |\n", "| Time | 500 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 44 |\n", "| AverageEpRet | -701 |\n", "| StdEpRet | 374 |\n", "| MaxEpRet | -82.9 |\n", "| MinEpRet | -1.29e+03 |\n", "| AverageTestEpRet | -1.04e+03 |\n", "| StdTestEpRet | 445 |\n", "| MaxTestEpRet | -425 |\n", "| MinTestEpRet | -1.92e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.26e+04 |\n", "| AverageQ1Vals | -360 |\n", "| StdQ1Vals | 338 |\n", "| MaxQ1Vals | 130 |\n", "| MinQ1Vals | -1.88e+03 |\n", "| AverageQ2Vals | -359 |\n", "| StdQ2Vals | 338 |\n", "| MaxQ2Vals | 132 |\n", "| MinQ2Vals | -1.86e+03 |\n", "| AverageLogPi | 4.97 |\n", "| StdLogPi | 2.3 |\n", "| MaxLogPi | 33.4 |\n", "| MinLogPi | -7.21 |\n", "| LossPi | 344 |\n", "| LossQ | 8.28e+03 |\n", "| Time | 511 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 45 |\n", "| AverageEpRet | -925 |\n", "| StdEpRet | 977 |\n", "| MaxEpRet | -211 |\n", "| MinEpRet | -4.25e+03 |\n", "| AverageTestEpRet | -832 |\n", "| StdTestEpRet | 400 |\n", "| MaxTestEpRet | -126 |\n", "| MinTestEpRet | -1.48e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.42e+04 |\n", "| AverageQ1Vals | -345 |\n", "| StdQ1Vals | 338 |\n", "| MaxQ1Vals | 161 |\n", "| MinQ1Vals | -1.77e+03 |\n", "| AverageQ2Vals | -345 |\n", "| StdQ2Vals | 338 |\n", "| MaxQ2Vals | 161 |\n", "| MinQ2Vals | -1.77e+03 |\n", "| AverageLogPi | 5.01 |\n", "| StdLogPi | 2.38 |\n", "| MaxLogPi | 32.7 |\n", "| MinLogPi | -8.31 |\n", "| LossPi | 329 |\n", "| LossQ | 7.65e+03 |\n", "| Time | 523 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 46 |\n", "| AverageEpRet | -561 |\n", "| StdEpRet | 414 |\n", "| MaxEpRet | -101 |\n", "| MinEpRet | -1.52e+03 |\n", "| AverageTestEpRet | -652 |\n", "| StdTestEpRet | 405 |\n", "| MaxTestEpRet | -150 |\n", "| MinTestEpRet | -1.43e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.59e+04 |\n", "| AverageQ1Vals | -304 |\n", "| StdQ1Vals | 333 |\n", "| MaxQ1Vals | 188 |\n", "| MinQ1Vals | -1.73e+03 |\n", "| AverageQ2Vals | -304 |\n", "| StdQ2Vals | 333 |\n", "| MaxQ2Vals | 190 |\n", "| MinQ2Vals | -1.73e+03 |\n", "| AverageLogPi | 4.97 |\n", "| StdLogPi | 2.38 |\n", "| MaxLogPi | 32.1 |\n", "| MinLogPi | -7.54 |\n", "| LossPi | 290 |\n", "| LossQ | 7.32e+03 |\n", "| Time | 534 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 47 |\n", "| AverageEpRet | -809 |\n", "| StdEpRet | 435 |\n", "| MaxEpRet | -118 |\n", "| MinEpRet | -1.43e+03 |\n", "| AverageTestEpRet | -716 |\n", "| StdTestEpRet | 308 |\n", "| MaxTestEpRet | -257 |\n", "| MinTestEpRet | -1.42e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.75e+04 |\n", "| AverageQ1Vals | -379 |\n", "| StdQ1Vals | 349 |\n", "| MaxQ1Vals | 140 |\n", "| MinQ1Vals | -1.86e+03 |\n", "| AverageQ2Vals | -379 |\n", "| StdQ2Vals | 349 |\n", "| MaxQ2Vals | 144 |\n", "| MinQ2Vals | -1.88e+03 |\n", "| AverageLogPi | 4.86 |\n", "| StdLogPi | 2.1 |\n", "| MaxLogPi | 32.3 |\n", "| MinLogPi | -7.18 |\n", "| LossPi | 365 |\n", "| LossQ | 7.3e+03 |\n", "| Time | 544 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 48 |\n", "| AverageEpRet | -670 |\n", "| StdEpRet | 307 |\n", "| MaxEpRet | -249 |\n", "| MinEpRet | -1.21e+03 |\n", "| AverageTestEpRet | -867 |\n", "| StdTestEpRet | 564 |\n", "| MaxTestEpRet | -125 |\n", "| MinTestEpRet | -1.96e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 7.92e+04 |\n", "| AverageQ1Vals | -335 |\n", "| StdQ1Vals | 356 |\n", "| MaxQ1Vals | 202 |\n", "| MinQ1Vals | -1.89e+03 |\n", "| AverageQ2Vals | -335 |\n", "| StdQ2Vals | 356 |\n", "| MaxQ2Vals | 205 |\n", "| MinQ2Vals | -1.9e+03 |\n", "| AverageLogPi | 4.89 |\n", "| StdLogPi | 2.12 |\n", "| MaxLogPi | 35.7 |\n", "| MinLogPi | -7.1 |\n", "| LossPi | 321 |\n", "| LossQ | 7.28e+03 |\n", "| Time | 556 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 49 |\n", "| AverageEpRet | -565 |\n", "| StdEpRet | 345 |\n", "| MaxEpRet | -44.1 |\n", "| MinEpRet | -1.15e+03 |\n", "| AverageTestEpRet | -535 |\n", "| StdTestEpRet | 267 |\n", "| MaxTestEpRet | -75.3 |\n", "| MinTestEpRet | -1.06e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.08e+04 |\n", "| AverageQ1Vals | -292 |\n", "| StdQ1Vals | 344 |\n", "| MaxQ1Vals | 251 |\n", "| MinQ1Vals | -1.79e+03 |\n", "| AverageQ2Vals | -292 |\n", "| StdQ2Vals | 344 |\n", "| MaxQ2Vals | 248 |\n", "| MinQ2Vals | -1.8e+03 |\n", "| AverageLogPi | 4.93 |\n", "| StdLogPi | 2.32 |\n", "| MaxLogPi | 41.3 |\n", "| MinLogPi | -7.28 |\n", "| LossPi | 278 |\n", "| LossQ | 6.64e+03 |\n", "| Time | 568 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 50 |\n", "| AverageEpRet | -528 |\n", "| StdEpRet | 252 |\n", "| MaxEpRet | -95.7 |\n", "| MinEpRet | -892 |\n", "| AverageTestEpRet | -557 |\n", "| StdTestEpRet | 310 |\n", "| MaxTestEpRet | -95.2 |\n", "| MinTestEpRet | -996 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.25e+04 |\n", "| AverageQ1Vals | -300 |\n", "| StdQ1Vals | 350 |\n", "| MaxQ1Vals | 297 |\n", "| MinQ1Vals | -1.77e+03 |\n", "| AverageQ2Vals | -300 |\n", "| StdQ2Vals | 350 |\n", "| MaxQ2Vals | 291 |\n", "| MinQ2Vals | -1.8e+03 |\n", "| AverageLogPi | 4.91 |\n", "| StdLogPi | 2.2 |\n", "| MaxLogPi | 34.7 |\n", "| MinLogPi | -6.98 |\n", "| LossPi | 286 |\n", "| LossQ | 6.44e+03 |\n", "| Time | 580 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 51 |\n", "| AverageEpRet | -864 |\n", "| StdEpRet | 389 |\n", "| MaxEpRet | -350 |\n", "| MinEpRet | -1.6e+03 |\n", "| AverageTestEpRet | -441 |\n", "| StdTestEpRet | 566 |\n", "| MaxTestEpRet | -73.2 |\n", "| MinTestEpRet | -2.05e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.41e+04 |\n", "| AverageQ1Vals | -275 |\n", "| StdQ1Vals | 351 |\n", "| MaxQ1Vals | 272 |\n", "| MinQ1Vals | -1.84e+03 |\n", "| AverageQ2Vals | -275 |\n", "| StdQ2Vals | 351 |\n", "| MaxQ2Vals | 274 |\n", "| MinQ2Vals | -1.8e+03 |\n", "| AverageLogPi | 4.91 |\n", "| StdLogPi | 2.32 |\n", "| MaxLogPi | 43.9 |\n", "| MinLogPi | -6.21 |\n", "| LossPi | 261 |\n", "| LossQ | 6.25e+03 |\n", "| Time | 591 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 52 |\n", "| AverageEpRet | -869 |\n", "| StdEpRet | 561 |\n", "| MaxEpRet | -161 |\n", "| MinEpRet | -1.92e+03 |\n", "| AverageTestEpRet | -761 |\n", "| StdTestEpRet | 390 |\n", "| MaxTestEpRet | -206 |\n", "| MinTestEpRet | -1.68e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.58e+04 |\n", "| AverageQ1Vals | -273 |\n", "| StdQ1Vals | 342 |\n", "| MaxQ1Vals | 297 |\n", "| MinQ1Vals | -1.77e+03 |\n", "| AverageQ2Vals | -273 |\n", "| StdQ2Vals | 342 |\n", "| MaxQ2Vals | 297 |\n", "| MinQ2Vals | -1.79e+03 |\n", "| AverageLogPi | 4.88 |\n", "| StdLogPi | 2.29 |\n", "| MaxLogPi | 35.1 |\n", "| MinLogPi | -6.79 |\n", "| LossPi | 260 |\n", "| LossQ | 5.86e+03 |\n", "| Time | 603 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 53 |\n", "| AverageEpRet | -798 |\n", "| StdEpRet | 393 |\n", "| MaxEpRet | -171 |\n", "| MinEpRet | -1.73e+03 |\n", "| AverageTestEpRet | -476 |\n", "| StdTestEpRet | 167 |\n", "| MaxTestEpRet | -139 |\n", "| MinTestEpRet | -670 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.74e+04 |\n", "| AverageQ1Vals | -287 |\n", "| StdQ1Vals | 339 |\n", "| MaxQ1Vals | 294 |\n", "| MinQ1Vals | -1.82e+03 |\n", "| AverageQ2Vals | -287 |\n", "| StdQ2Vals | 339 |\n", "| MaxQ2Vals | 295 |\n", "| MinQ2Vals | -1.8e+03 |\n", "| AverageLogPi | 4.87 |\n", "| StdLogPi | 2.14 |\n", "| MaxLogPi | 39.8 |\n", "| MinLogPi | -6.5 |\n", "| LossPi | 274 |\n", "| LossQ | 5.57e+03 |\n", "| Time | 614 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 54 |\n", "| AverageEpRet | -563 |\n", "| StdEpRet | 300 |\n", "| MaxEpRet | -112 |\n", "| MinEpRet | -1.12e+03 |\n", "| AverageTestEpRet | -776 |\n", "| StdTestEpRet | 360 |\n", "| MaxTestEpRet | -310 |\n", "| MinTestEpRet | -1.37e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 8.91e+04 |\n", "| AverageQ1Vals | -262 |\n", "| StdQ1Vals | 342 |\n", "| MaxQ1Vals | 331 |\n", "| MinQ1Vals | -1.73e+03 |\n", "| AverageQ2Vals | -262 |\n", "| StdQ2Vals | 342 |\n", "| MaxQ2Vals | 331 |\n", "| MinQ2Vals | -1.75e+03 |\n", "| AverageLogPi | 4.85 |\n", "| StdLogPi | 2.18 |\n", "| MaxLogPi | 35.7 |\n", "| MinLogPi | -8.03 |\n", "| LossPi | 250 |\n", "| LossQ | 5.5e+03 |\n", "| Time | 625 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 55 |\n", "| AverageEpRet | -696 |\n", "| StdEpRet | 464 |\n", "| MaxEpRet | -144 |\n", "| MinEpRet | -1.97e+03 |\n", "| AverageTestEpRet | -580 |\n", "| StdTestEpRet | 376 |\n", "| MaxTestEpRet | -67.2 |\n", "| MinTestEpRet | -1.34e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.07e+04 |\n", "| AverageQ1Vals | -297 |\n", "| StdQ1Vals | 353 |\n", "| MaxQ1Vals | 347 |\n", "| MinQ1Vals | -1.82e+03 |\n", "| AverageQ2Vals | -297 |\n", "| StdQ2Vals | 353 |\n", "| MaxQ2Vals | 348 |\n", "| MinQ2Vals | -1.87e+03 |\n", "| AverageLogPi | 4.83 |\n", "| StdLogPi | 1.99 |\n", "| MaxLogPi | 34.5 |\n", "| MinLogPi | -6.72 |\n", "| LossPi | 284 |\n", "| LossQ | 5.28e+03 |\n", "| Time | 636 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 56 |\n", "| AverageEpRet | -655 |\n", "| StdEpRet | 296 |\n", "| MaxEpRet | -58.9 |\n", "| MinEpRet | -1.08e+03 |\n", "| AverageTestEpRet | -1.11e+03 |\n", "| StdTestEpRet | 638 |\n", "| MaxTestEpRet | -219 |\n", "| MinTestEpRet | -2.38e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.24e+04 |\n", "| AverageQ1Vals | -252 |\n", "| StdQ1Vals | 357 |\n", "| MaxQ1Vals | 401 |\n", "| MinQ1Vals | -1.82e+03 |\n", "| AverageQ2Vals | -252 |\n", "| StdQ2Vals | 357 |\n", "| MaxQ2Vals | 402 |\n", "| MinQ2Vals | -1.87e+03 |\n", "| AverageLogPi | 4.86 |\n", "| StdLogPi | 2.07 |\n", "| MaxLogPi | 35.5 |\n", "| MinLogPi | -8.26 |\n", "| LossPi | 240 |\n", "| LossQ | 5.14e+03 |\n", "| Time | 648 |\n", "---------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 57 |\n", "| AverageEpRet | -685 |\n", "| StdEpRet | 380 |\n", "| MaxEpRet | -60.3 |\n", "| MinEpRet | -1.38e+03 |\n", "| AverageTestEpRet | -558 |\n", "| StdTestEpRet | 286 |\n", "| MaxTestEpRet | -184 |\n", "| MinTestEpRet | -1.28e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.4e+04 |\n", "| AverageQ1Vals | -215 |\n", "| StdQ1Vals | 350 |\n", "| MaxQ1Vals | 428 |\n", "| MinQ1Vals | -1.76e+03 |\n", "| AverageQ2Vals | -215 |\n", "| StdQ2Vals | 350 |\n", "| MaxQ2Vals | 426 |\n", "| MinQ2Vals | -1.79e+03 |\n", "| AverageLogPi | 4.88 |\n", "| StdLogPi | 2.14 |\n", "| MaxLogPi | 34.1 |\n", "| MinLogPi | -6.51 |\n", "| LossPi | 202 |\n", "| LossQ | 4.95e+03 |\n", "| Time | 659 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 58 |\n", "| AverageEpRet | -852 |\n", "| StdEpRet | 640 |\n", "| MaxEpRet | -107 |\n", "| MinEpRet | -2.85e+03 |\n", "| AverageTestEpRet | -569 |\n", "| StdTestEpRet | 298 |\n", "| MaxTestEpRet | -135 |\n", "| MinTestEpRet | -1.04e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.57e+04 |\n", "| AverageQ1Vals | -243 |\n", "| StdQ1Vals | 349 |\n", "| MaxQ1Vals | 389 |\n", "| MinQ1Vals | -1.89e+03 |\n", "| AverageQ2Vals | -243 |\n", "| StdQ2Vals | 349 |\n", "| MaxQ2Vals | 383 |\n", "| MinQ2Vals | -1.92e+03 |\n", "| AverageLogPi | 4.78 |\n", "| StdLogPi | 2.07 |\n", "| MaxLogPi | 41.7 |\n", "| MinLogPi | -7.86 |\n", "| LossPi | 232 |\n", "| LossQ | 4.59e+03 |\n", "| Time | 671 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 59 |\n", "| AverageEpRet | -624 |\n", "| StdEpRet | 303 |\n", "| MaxEpRet | -73.6 |\n", "| MinEpRet | -1.17e+03 |\n", "| AverageTestEpRet | -753 |\n", "| StdTestEpRet | 372 |\n", "| MaxTestEpRet | -213 |\n", "| MinTestEpRet | -1.46e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.73e+04 |\n", "| AverageQ1Vals | -286 |\n", "| StdQ1Vals | 364 |\n", "| MaxQ1Vals | 405 |\n", "| MinQ1Vals | -1.94e+03 |\n", "| AverageQ2Vals | -286 |\n", "| StdQ2Vals | 364 |\n", "| MaxQ2Vals | 404 |\n", "| MinQ2Vals | -1.98e+03 |\n", "| AverageLogPi | 4.78 |\n", "| StdLogPi | 1.95 |\n", "| MaxLogPi | 34.3 |\n", "| MinLogPi | -7.8 |\n", "| LossPi | 274 |\n", "| LossQ | 4.77e+03 |\n", "| Time | 683 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 60 |\n", "| AverageEpRet | -686 |\n", "| StdEpRet | 362 |\n", "| MaxEpRet | -175 |\n", "| MinEpRet | -1.34e+03 |\n", "| AverageTestEpRet | -588 |\n", "| StdTestEpRet | 318 |\n", "| MaxTestEpRet | -107 |\n", "| MinTestEpRet | -1.34e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 9.9e+04 |\n", "| AverageQ1Vals | -219 |\n", "| StdQ1Vals | 359 |\n", "| MaxQ1Vals | 507 |\n", "| MinQ1Vals | -1.89e+03 |\n", "| AverageQ2Vals | -219 |\n", "| StdQ2Vals | 359 |\n", "| MaxQ2Vals | 505 |\n", "| MinQ2Vals | -1.93e+03 |\n", "| AverageLogPi | 4.82 |\n", "| StdLogPi | 2.06 |\n", "| MaxLogPi | 33.2 |\n", "| MinLogPi | -7.57 |\n", "| LossPi | 206 |\n", "| LossQ | 4.4e+03 |\n", "| Time | 694 |\n", "---------------------------------------\n" ] } ], "source": [ "# Setup baseline 1\n", "logger_kwargs = dict(output_dir='sac_b1', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.9\n", "batchsize_b = 100\n", "startsteps_b = 5000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "lr_b = 0.001\n", "alpha_b = 0.2\n", "\n", "\n", "# Baseline 1 training\n", "spinup.sac_pytorch(GyroscopeEnv, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, lr = lr_b, alpha = alpha_b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Template to use environment installed to gym" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Log dir ddpg_b0 already exists! Storing info there anyway.\n", "\u001b[32;1mLogging data to ddpg_b0/progress.txt\u001b[0m\n", "\u001b[36;1mSaving config:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"actor_critic\":\t\"MLPActorCritic\",\n", " \"batch_size\":\t100,\n", " \"env_fn\":\t\" at 0x7f6eb0527950>\",\n", " \"epochs\":\t60,\n", " \"exp_name\":\t\"baseline\",\n", " \"gamma\":\t0.99,\n", " \"logger\":\t{\n", " \"\":\t{\n", " \"epoch_dict\":\t{},\n", " \"exp_name\":\t\"baseline\",\n", " \"first_row\":\ttrue,\n", " \"log_current_row\":\t{},\n", " \"log_headers\":\t[],\n", " \"output_dir\":\t\"ddpg_b0\",\n", " \"output_file\":\t{\n", " \"<_io.TextIOWrapper name='ddpg_b0/progress.txt' mode='w' encoding='UTF-8'>\":\t{\n", " \"mode\":\t\"w\"\n", " }\n", " }\n", " }\n", " },\n", " \"logger_kwargs\":\t{\n", " \"exp_name\":\t\"baseline\",\n", " \"output_dir\":\t\"ddpg_b0\"\n", " },\n", " \"max_ep_len\":\t110,\n", " \"num_test_episodes\":\t10,\n", " \"pi_lr\":\t0.001,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"save_freq\":\t1,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"update_after\":\t1000,\n", " \"update_every\":\t50\n", "}\n", "\u001b[32;1m\n", "Number of parameters: \t pi: 3002, \t q: 3301\n", "\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/matthieulc/.local/lib/python3.6/site-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------\n", "| Epoch | 1 |\n", "| AverageEpRet | -6.65e+03 |\n", "| StdEpRet | 1.07e+03 |\n", "| MaxEpRet | -4.78e+03 |\n", "| MinEpRet | -8.51e+03 |\n", "| AverageTestEpRet | -7.62e+03 |\n", "| StdTestEpRet | 1.67e+03 |\n", "| MaxTestEpRet | -4.37e+03 |\n", "| MinTestEpRet | -9.25e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 1.65e+03 |\n", "| AverageQVals | -108 |\n", "| StdQVals | 53.1 |\n", "| MaxQVals | 3.47 |\n", "| MinQVals | -275 |\n", "| LossPi | 99.3 |\n", "| LossQ | 1.61e+03 |\n", "| Time | 6.36 |\n", "---------------------------------------\n", "---------------------------------------\n", "| Epoch | 2 |\n", "| AverageEpRet | -6.6e+03 |\n", "| StdEpRet | 1.23e+03 |\n", "| MaxEpRet | -4.64e+03 |\n", "| MinEpRet | -9.46e+03 |\n", "| AverageTestEpRet | -6.52e+03 |\n", "| StdTestEpRet | 2.2e+03 |\n", "| MaxTestEpRet | -3.36e+03 |\n", "| MinTestEpRet | -9.68e+03 |\n", "| EpLen | 110 |\n", "| TestEpLen | 110 |\n", "| TotalEnvInteracts | 3.3e+03 |\n", "| AverageQVals | -336 |\n", "| StdQVals | 121 |\n", "| MaxQVals | -60.5 |\n", "| MinQVals | -813 |\n", "| LossPi | 321 |\n", "| LossQ | 1.33e+03 |\n", "| Time | 16.4 |\n", "---------------------------------------\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;31m# Training\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m spinup.ddpg_pytorch(env_fn, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n\u001b[0;32m---> 23\u001b[0;31m polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b)\n\u001b[0m", "\u001b[0;32m~/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/spinup/algos/pytorch/ddpg/ddpg.py\u001b[0m in \u001b[0;36mddpg\u001b[0;34m(env_fn, actor_critic, ac_kwargs, seed, steps_per_epoch, epochs, replay_size, gamma, polyak, pi_lr, q_lr, batch_size, start_steps, update_after, update_every, act_noise, num_test_episodes, max_ep_len, logger_kwargs, save_freq)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mupdate_every\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0mbatch\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreplay_buffer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m \u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 284\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0;31m# End of epoch handling\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/spinup/algos/pytorch/ddpg/ddpg.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 207\u001b[0m \u001b[0mloss_pi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompute_loss_pi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0mloss_pi\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 209\u001b[0;31m \u001b[0mpi_optimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 210\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0;31m# Unfreeze Q-network so you can optimize it at next DDPG step.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/.local/lib/python3.6/site-packages/torch/optim/adam.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0mdenom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mmax_exp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mmath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbias_correction2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'eps'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m \u001b[0mdenom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mexp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mmath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbias_correction2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'eps'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mstep_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'lr'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mbias_correction1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "# Parameters\n", "logger_kwargs = dict(output_dir='ddpg_b0', exp_name='baseline')\n", "seed_b = 0\n", "epochs_b = 60\n", "maxeplen_b = 110\n", "\n", "spe_b = maxeplen_b * 15\n", "repsize_b = 1000000\n", "gamma_b = 0.99\n", "polyak_b = 0.995\n", "batchsize_b = 100\n", "startsteps_b = 10000\n", "args_b = dict(hidden_sizes=[300,], activation=torch.nn.ReLU)\n", "actnoise_b = 0.1\n", "pilr_b = 0.001\n", "qlr_b = 0.001\n", "\n", "# Env function\n", "env_fn = lambda : gym.make('gyroscopeenv-v0')\n", "\n", "# Training\n", "spinup.ddpg_pytorch(env_fn, ac_kwargs = args_b, seed = seed_b, steps_per_epoch = spe_b, epochs = epochs_b, replay_size = repsize_b, gamma = gamma_b,\n", "polyak = polyak_b, batch_size = batchsize_b, start_steps = startsteps_b, max_ep_len = maxeplen_b,logger_kwargs = logger_kwargs, act_noise = actnoise_b, pi_lr = pilr_b, q_lr = qlr_b)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Gn3Gp40bcOVz" }, "source": [ "## Test" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 106 }, "colab_type": "code", "executionInfo": { "elapsed": 972, "status": "ok", "timestamp": 1584036455886, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "6GyY0wE-QBOj", "outputId": "9a5e9011-e024-4a65-8383-83c062cdcad9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-377.97614296159486\n" ] } ], "source": [ "# Creat environment\n", "env = GyroscopeEnv()\n", "env.seed(2)\n", "\n", "# Create agent\n", "agent = torch.load('td3_b1/pyt_save/model.pt') # best is td3_b0\n", "\n", "# Test parameters\n", "x1,x2,x3,x4,x1_ref,x3_ref,w = 2,1,0,1,1,3,25\n", "state = env.reset(np.array([x1,x2,x3,x4,x1_ref,x3_ref,w]))\n", "val = []\n", "act = []\n", "dt = 0.01\n", "time = np.arange(0, 4, dt)\n", "score = 0\n", "for i in range(len(time)):\n", " val.append(state)\n", " action = agent.act(torch.as_tensor(state, dtype=torch.float32))\n", " act.append(action)\n", " state, reward, done, _ = env.step(action)\n", " score += reward\n", " if done:\n", " break \n", "\n", "env.close()\n", "print(score)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "vvMjuRHDcfrE" }, "source": [ "## Plot" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "colab_type": "code", "executionInfo": { "elapsed": 1856, "status": "ok", "timestamp": 1584036457424, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "aCZCqujgcMVA", "outputId": "05490294-aab8-4933-ca9b-e13ba85ecf6d" }, "outputs": [ { "data": { "image/png": "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ImIxsBWwoK2FDsHxxx/P5MmTn/Pc3/3d33HcccexfPlyDjvssHVec/TRR3P00UezYMECjjjiiHX2f+ADH+DII4/k4Ycf5qijjlpn/wknnMAb3vAG7rrrLt7//vevs//EE0/k4IMP5qabbuL4449/zr5ly+ClL/0yt976Gm644Rrg02yyydppGCdNgu9+91vst9/eXH755Xzxi1/k0kufe/7vfe97vPjFL+bnP/85X//619e5/llnncW0adM4++yz+e53v7vO/nPPPZcpU6Zw5plncuaZZ66z/5JLLmH8+PFccMEFzJo1a5393d3dAJxyyin84he/eM6+cePGcWmj4C984Qv8+te/fs7+rbbaivPOOw+AT33qU1x77bXP2b/jjjvyox/9CCje25tuuuk5+3fddVdmz54NwDHHHMPd/RYa23vvvfnWt74FwLve9S4e6TukD9hvv/04+eSTAXjrW9/KE0888Zz9Bx10EJ/97GcBOPTQQ+np6XnO/sMPP5yPfexjAE2ntRroZ2/x4sVNX1/mZw/gy1/+Mq95zWu45ppr+PSnP73O/m9961vsvffaz15/7frsfec73+Gcc85ZZ//GPnuf+MQnAD97ZfzeO+SQQ+jq6vKzV8LvvTFjxjz7nvrZa93vvUWLFjF58mQ/eyX83uttWz97rfu9d/DBB6+zv9PUKkjLzLnA3MbjpRFxB0WHp2+Q9kbgh407B6+LiMkRsV3jtZ3tnnsY++ST8JGPwKmnFtM77rdf1VVJkiRJUq1l5mpg74iYDPwsIvbMzFsHe56IOAY4BmDq1KnP/uNOlVavXs2iRYue89zdd99Nd3c3K1asWGcfwJ133kl3dzeLFy9uuv+2226ju7ub+fPnN91/yy23MHHiRB566KGm+2+++WZGjx7Nvffey6JFi3j66VE8+eRYnnxyDCtXbsKNNyZ77LGYww//M3ffvZRx41b3u/4NrFy5iJtvvrnp+a+//nrmzp3LLbfc0nT/tddey3333cdtt93WdP/VV1/NFltswZ133tl0/5VXXslmm23GypUrm+7vfd/vu+++dfb39PQ8u/+BBx5YZ/+aNWue3d+s/caMGfPs/kceeWSd/Y8++uiz+x999NF19j/yyCPP7p83b946+x966KFn9z/++OMs6bfQ3AMPPPDs/oULF7Jy5crn7L/vvvue3d+sbQb62Vu2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SHtykl8Y339tkpdWVa11Aee8W5Q90rqTgweTAwe++ee220bFwEOHRrcbub/ac92T/1x++Z5cc83Gzt3uvC36+/31X5+USy/dvvc7UnziEyfnYx+bdRQ7k9wOR26HIa/DkdvpO+GE5ClPmXUU65taIa2q7pnkZ5N8clqvucJLk9wxo3GNSfLe7v6pqjopo9EcZyXZk+T14+NHJfnj7n7LQPEM7/bbFdIAAIAjygBry5OTfGrZ42uTPHKtc7r7YFXdlNF+bZ9fEdtc77O95MYb/35uuuno7Nt30WDv253cdNMd8oUvHJ0vfenofPGLo9svfekO2b//qHzlK7vzla/szi23fP3+V76yOwcO7MrBg5XbbhvddtdgMW7dd8w6gB1skGuwyQNmHcAOJrfDkdthyOtw5Hbavuu7bsq97vWhud5ne9OFtKq6Ot+8IfTRGRWxkuSHtxrUarr7tDWe/3SSs8b3r0rykCHefyYOHRpdSggAALDDzGptuRWLFv9jKwAAIABJREFUsM92ktz73qM90qYVX3dy2WXJvn3JxRcnl18++rnxxm8+9053So47LrnLXZK73jU59tjk5JNH9+985+SYY5Kjj/7mnzve8RsfH3XU6LrSXbu+fruR+8uf27UrqZr8533ve28e9ahHbfj87bTo7/e//tf/yqMf/ehte78jxeHyyuTkdjhyOwx5HY7cTt9RRx2b447bO9f7bE/SkfbufPNi56tJ/ibJ/+juoTrSjixLA+11pAEAADvTdq0tr0tyn2WPTxk/t9o511bVUUmOTfKFKb3/tpvWHml/93fJ7/5u8nu/l1xxxei5449PvvM7k6c9LXngA0dFsj17RiN59uwZFcx2ShHkb//2q7nf/WYdxc503HG35d73nnUUO8+xx96We91r1lHsTHI7HLkdhrwOR26PTJsupHX3MweIg5WWBtorpAEAADvQNq4tP5DkAVV1v4wKZuckefqKc85P8owkf5XkKUneuaj7oyVb3yPt9tuTl788ecELks98Jvnu705+53eSJzwhOfXUnVMoAwCAjZjaHmlMmY40AACALRvvefacJG9NsjvJK7r70qp6YZIPdvf5SV6e5A+q6sokX8yo2Lawdu+evCPtmmuSZz87ede7kkc/Onnd65Lv+Z6phgcAAAtFIW1eLV0+aI80AACALenuC5JcsOK5Fyy7/9Uk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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "f, axs = plt.subplots(4,2,figsize=(30,30))\n", "plt.subplot(4,2,1)\n", "plt.title('Red gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[0] for row in val],'r-')\n", "plt.plot(time, [row[4] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(4,2,2)\n", "plt.title('Blue gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[2] for row in val],'b-')\n", "plt.plot(time, [row[5] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(4,2,3)\n", "plt.title('Red gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\theta$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[1] for row in val],'r-')\n", "\n", "plt.subplot(4,2,4)\n", "plt.title('Blue gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\phi$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[3] for row in val],'b-')\n", "\n", "plt.subplot(4,2,5)\n", "plt.title('Red gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[angle_normalize(row[0]- row[4]) for row in val],'r-')\n", "\n", "plt.subplot(4,2,6)\n", "plt.title('Blue gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[angle_normalize(row[2]- row[5]) for row in val],'b-')\n", "\n", "plt.subplot(4,2,7)\n", "plt.title('Red gimbal input',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'u1 (V)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[0] for row in act],'r-')\n", "\n", "plt.subplot(4,2,8)\n", "plt.title('Blue gimbal input',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'u2 (V)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[1] for row in act],'b-')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "fz9r-gaStzpk" }, "source": [ "## 3D rendering" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", "id": "HQM1E8JYc-cC" }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "if (typeof Jupyter !== \"undefined\") { window.__context = { glowscript_container: $(\"#glowscript\").removeAttr(\"id\")};}else{ element.textContent = ' ';}" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Scene\n", "scene = canvas(background=color.white) \n", "\n", "# Objects\n", "redGimbal = ring(pos=vector(0,0,0), axis=vector(0,0,1), radius=2, thickness=0.2,color=vector(0.9,0,0))\n", "blueGimbal1 = cylinder(pos=vector(0,0,0), axis=vector(0,2,0), radius=0.3,color=color.blue)\n", "blueGimbal2 = cylinder(pos=vector(0,0,0), axis=vector(0,-2,0), radius=0.3,color=color.blue)\n", "disk1 = cylinder(pos=vector(0,0,0), axis=vector(0,0,0.15), radius=1.3,color=color.yellow)\n", "disk2 = cylinder(pos=vector(0,0,0), axis=vector(0,0,-0.15), radius=1.3,color=color.yellow)\n", "baseR = extrusion(path=[vec(0,0,0), vec(0.7,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(2,0,0), color=color.black)\n", "baseL = extrusion(path=[vec(-0.7,0,0), vec(0,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(-2,0,0), color=color.black)\n", "\n", "loops = 0\n", "ctime = 0\n", "start = clock()\n", "N = 400\n", "\n", "for k in range(len(time)):\n", " rate(N)\n", " ct = clock()\n", " theta = val[k][0]\n", " phi = val[k][2]\n", " redGimbal.axis = vector(0,-sin(theta), cos(theta))\n", " blueGimbal1.axis = 2*vector(0,cos(theta), sin(theta))\n", " blueGimbal2.axis = -2*vector(0,cos(theta), sin(theta))\n", " disk1.axis = 0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " disk2.axis = -0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " ctime += clock()-ct\n", " loops += 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "gyroscope_ddpg_testing.ipynb", "provenance": [] }, "kernelspec": { "display_name": "ps1venv", "language": "python", "name": "ps1venv" }, "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.6.9" } }, "nbformat": 4, "nbformat_minor": 1 } diff --git a/code/training_spinuplib/gyroscope_paramsearch_spinuplib.ipynb b/code/training_spinuplib/gyroscope_paramsearch_spinuplib.ipynb index a8e5e35..b4b7c28 100644 --- a/code/training_spinuplib/gyroscope_paramsearch_spinuplib.ipynb +++ b/code/training_spinuplib/gyroscope_paramsearch_spinuplib.ipynb @@ -1,941 +1,636 @@ { "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "x83dMPapQBN6" }, "source": [ "# Gyroscope TD3 hyperparameter search (spinup library)" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "id": "fuJhdd479TpP" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n", - " np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n", - "\n", - "Bad key \"text.kerning_factor\" on line 4 in\n", - "/home/matthieulc/.local/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test_patch.mplstyle.\n", - "You probably need to get an updated matplotlibrc file from\n", - "http://github.com/matplotlib/matplotlib/blob/master/matplotlibrc.template\n", - "or from the matplotlib source distribution\n" - ] - }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "if (typeof Jupyter !== \"undefined\") { window.__context = { glowscript_container: $(\"#glowscript\").removeAttr(\"id\")};}else{ element.textContent = ' ';}" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import gym\n", "from gym import spaces\n", "from gym.utils import seeding\n", - "import gym_GyroscopeEnv\n", "\n", "from spinup.utils.run_utils import ExperimentGrid\n", "from spinup import td3_pytorch\n", "from spinup import ppo_pytorch\n", "\n", "import torch\n", "\n", "from os import path\n", "from scipy.integrate import solve_ivp\n", "import random\n", "import numpy as np\n", "from collections import deque\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from vpython import *\n", "import argparse" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Environment Class and Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "class GyroscopeEnv(gym.Env):\n", - " \n", - " \n", - " \"\"\"\n", - " GyroscopeEnv is a double gimbal control moment gyroscope (DGCMG) with 2 input voltage u1 and u2 \n", - " on the two gimbals, and disk speed assumed constant (parameter w). Simulation is based on the \n", - " Quanser 3-DOF gyroscope setup.\n", - " \n", - " \n", - " **STATE:**\n", - " The state consists of the angle and angular speed of the outer red gimbal (theta = x1, thetadot = x2),\n", - " the angle and angular speed of the inner blue gimbal (phi = x3, phidot = x4), the difference to the reference\n", - " for tracking on theta and phi (tracking error theta = diff_x1, tracking error phi = diff_x3), and the \n", - " disk speed (disk speed = w):\n", - " \n", - " state = [x1, x2, x3, x4, diff_x1, diff_x3, w]\n", - " \n", - " **ACTIONS:**\n", - " The actions are the input voltage to create the red and blue gimbal torque (red voltage = u1, blue voltage = u2),\n", - " and are continuous in a range of -10 and 10V:\n", - " \n", - " action = [u1,u2]\n", - " \n", - " \"\"\"\n", - " \n", - " \n", - " metadata = {\n", - " 'render.modes' : ['human', 'rgb_array'],\n", - " 'video.frames_per_second' : 30\n", - " }\n", - "\n", - " def __init__(self):\n", - " \n", - " # Inertias in Kg*m2\n", - " self.Jbx1 = 0.0019\n", - " self.Jbx2 = 0.0008\n", - " self.Jbx3 = 0.0012\n", - " self.Jrx1 = 0.0179\n", - " self.Jdx1 = 0.0028\n", - " self.Jdx3 = 0.0056\n", - " \n", - " # Combined inertias\n", - " self.J1 = self.Jbx1 - self.Jbx3 + self.Jdx1 - self.Jdx3\n", - " self.J2 = self.Jbx1 + self.Jdx1 + self.Jrx1\n", - " self.J3 = self.Jbx2 + self.Jdx1\n", - "\n", - " # Motor constants\n", - " self.Kamp = 0.5 # A/V\n", - " self.Ktorque = 0.0704 # Nm/A\n", - " self.eff = 0.86\n", - " self.nRed = 1.5\n", - " self.nBlue = 1\n", - " self.KtotRed = self.Kamp*self.Ktorque*self.eff*self.nRed \n", - " self.KtotBlue = self.Kamp*self.Ktorque*self.eff*self.nBlue \n", - " \n", - " # Time step in s\n", - " self.dt = 0.05\n", - " \n", - " # Error\n", - " self.int_diff_x1 = 0\n", - " self.int_diff_x3 = 0\n", - " \n", - " # Action space\n", - " self.maxVoltage = 10 # V\n", - " self.highAct = np.array([self.maxVoltage,self.maxVoltage])\n", - " self.action_space = spaces.Box(low = -self.highAct, high = self.highAct, dtype=np.float32) \n", - " \n", - " # Observation space (here it is equal to state space)\n", - " self.maxSpeed = 100 * 2 * np.pi / 60\n", - " self.maxAngle = np.pi\n", - " self.maxdiskSpeed = 300 * 2 * np.pi / 60\n", - " self.highObs = np.array([self.maxAngle,self.maxSpeed,self.maxAngle,self.maxSpeed,self.maxAngle,self.maxAngle,self.maxdiskSpeed])\n", - " self.observation_space = spaces.Box(low = -self.highObs, high = self.highObs, dtype=np.float32)\n", - "\n", - " # Seed for random number generation\n", - " self.seed()\n", - " \n", - " self.viewer = None\n", - "\n", - " def seed(self, seed=None):\n", - " self.np_random, seed = seeding.np_random(seed)\n", - " return [seed]\n", - " \n", - " \n", - "\n", - " def step(self,u):\n", - " x1, x2, x3, x4, x1_ref, x3_ref, w= self.state \n", - " u1,u2 = u\n", - " \n", - " # Angle error\n", - " diff_x1 = angle_normalize(x1 - x1_ref)\n", - " diff_x3 = angle_normalize(x3 - x3_ref)\n", - " \n", - " # Integral of error\n", - " self.int_diff_x1 = self.int_diff_x1 + diff_x1\n", - " self.int_diff_x3 = self.int_diff_x3 + diff_x3\n", - " \n", - " # Reward 1: differentiable reward (LQR obj function)\n", - " reward = -((3*diff_x1)**2 + (3*diff_x3)**2 + (.2*x2)**2 + (.2*x4)**2 + (.1*u1)**2 + (.1*u2)**2)\\\n", - " #-(0.01*abs(self.int_diff_x1) + 0.01*abs(self.int_diff_x3))\n", - "\n", - " \"\"\"# Count time spent in goal:\n", - " if abs(diff_x1)<0.05 and abs(diff_x3)<0.05:\n", - " self.countGoal +=1\n", - " else:\n", - " self.countGoal = 0\n", - " \n", - " # Reward 2: sparse reward for staying in goal range for a long time \n", - " if self.countGoal >= (self.timeGoal)/self.dt: #max expected reward over length becomes 0 + (totaltime-goaltime)\n", - " reward += 1\"\"\"\n", - "\n", - "\n", - " results = solve_ivp(fun = dxdt, t_span = (0, self.dt), y0 = [x1,x2,x3,x4], method='RK45', args=(u1,u2,self))\n", - " \n", - " x1 = angle_normalize(results.y[0][-1])\n", - " x2 = np.clip(results.y[1][-1],-self.maxSpeed,self.maxSpeed)\n", - " x3 = angle_normalize(results.y[2][-1])\n", - " x4 = np.clip(results.y[3][-1],-self.maxSpeed,self.maxSpeed)\n", - " \n", - " self.state = np.asarray([x1,x2,x3,x4,x1_ref, x3_ref,w])\n", - "\n", - " return (self.state, reward, False, {})\n", - "\n", - " def reset(self, state = None):\n", - " \n", - " \n", - " # Generate random state (for training) or use given state (for simulation)\n", - " if state is None:\n", - " self.state = self.np_random.uniform(low=-self.highObs, high=self.highObs)\n", - " else:\n", - " self.state = state\n", - "\n", - " \n", - " return self.state\n", - "\n", - "\n", - " def render(self, mode='human'):\n", - " return None\n", - " \n", - " def close(self):\n", - " if self.viewer:\n", - " self.viewer.close()\n", - " self.viewer = None\n", - " \n", - "def dxdt(t, x, u1, u2, gyro):\n", - " \n", - " # Rewrite constants shorter\n", - " J1 = gyro.J1\n", - " J2 = gyro.J2\n", - " J3 = gyro.J3\n", - " Jdx3 = gyro.Jdx3\n", - " KtotRed = gyro.KtotRed\n", - " KtotBlue = gyro.KtotBlue\n", - " w = x[-1]\n", - "\n", - " # Convert input voltage to input torque\n", - " u1,u2 = KtotRed*u1, KtotBlue*u2\n", - " \n", - " # Equations of motion \n", - " dx_dt = [0, 0, 0, 0]\n", - " dx_dt[0] = x[1]\n", - " dx_dt[1] = (u1+J1*np.sin(2*x[2])*x[1]*x[3]-Jdx3*np.cos(x[2])*x[3]*w)/(J2 + J1*np.power(np.sin(x[2]),2))\n", - " dx_dt[2] = x[3]\n", - " dx_dt[3] = (u2 - J1*np.cos(x[2])*np.sin(x[2])*np.power(x[1],2)+Jdx3*np.cos(x[2])*x[1]*w)/J3\n", - " return dx_dt\n", - " \n", - "def angle_normalize(x):\n", - " return (((x+np.pi) % (2*np.pi)) - np.pi) # To keep the angles between -pi and pi\n" - ] - }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "be0wYIeBQBOc" }, "source": [ "## Search" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 533 }, "colab_type": "code", "executionInfo": { "elapsed": 654004, "status": "error", "timestamp": 1584037207187, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "fLyFHs0yQBOd", "outputId": "260489ff-5e40-416a-e529-5a0cfcaefceb" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", "Launching in...: | ? 00:00" ] }, { "name": "stdout", "output_type": "stream", "text": [ "================================================================================\n", "\u001b[32;1mExperimentGrid [grid search td3 for gyro] runs over parameters:\n", "\u001b[0m\n", - " \u001b[36;1menv_fn \u001b[0m [] \n", + " \u001b[36;1menv_name \u001b[0m [] \n", "\n", - "\tGyroscopeEnv\n", + "\tgyroscopeenv-v0\n", "\n", " \u001b[36;1mseed \u001b[0m [see] \n", "\n", "\t0\n", "\t10\n", "\t20\n", "\n", " \u001b[36;1mepochs \u001b[0m [epo] \n", "\n", - "\t3\n", + "\t60\n", "\n", " \u001b[36;1msteps_per_epoch \u001b[0m [ste] \n", "\n", "\t1650\n", "\n", " \u001b[36;1mreplay_size \u001b[0m [rep] \n", "\n", "\t1000000\n", "\n", " \u001b[36;1mgamma \u001b[0m [gam] \n", "\n", "\t0.95\n", "\t0.99\n", "\n", " \u001b[36;1mpolyak \u001b[0m [pol] \n", "\n", "\t0.995\n", "\t0.999\n", "\n", " \u001b[36;1mbatch_size \u001b[0m [bat] \n", "\n", "\t100\n", "\t150\n", "\n", " \u001b[36;1mstart_steps \u001b[0m [sta] \n", "\n", "\t10000\n", "\t20000\n", "\n", " \u001b[36;1mmax_ep_len \u001b[0m [max] \n", "\n", "\t110\n", "\n", " \u001b[36;1mact_noise \u001b[0m [act] \n", "\n", "\t0.1\n", "\n", " \u001b[36;1mpi_lr \u001b[0m [pi] \n", "\n", "\t0.001\n", "\n", " \u001b[36;1mq_lr \u001b[0m [ql] \n", "\n", "\t0.001\n", "\n", " \u001b[36;1mpolicy_delay \u001b[0m [pol] \n", "\n", "\t2\n", "\n", " \u001b[36;1mtarget_noise \u001b[0m [tar] \n", "\n", "\t0.2\n", "\n", " \u001b[36;1mnoise_clip \u001b[0m [noi] \n", "\n", "\t0.5\n", "\t0.7\n", "\n", " \u001b[36;1mac_kwargs:hidden_sizes \u001b[0m [hid] \n", "\n", "\t(300,)\n", "\t(800,)\n", "\t(64, 64)\n", "\n", " \u001b[36;1mac_kwargs:activation \u001b[0m [act] \n", "\n", "\tReLU\n", "\n", " Variants, counting seeds: 288\n", " Variants, not counting seeds: 96\n", "\n", "================================================================================\n", "\n", "\u001b[32;1mPreparing to run the following experiments...\u001b[0m\n", "\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid800\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid300\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid64-64\n", - "grid search td3 for gyro_gyroscopeenv_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat150_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat100_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-999_bat150_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat100_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-995_bat150_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat100_sta20000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta10000_noi0-7_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-5_hid800\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid64-64\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-99_pol0-999_bat150_sta20000_noi0-7_hid800\n", "\n", "================================================================================\n", "\u001b[36;1m\n", "Launch delayed to give you a few seconds to review your experiments.\n", "\n", "To customize or disable this behavior, change WAIT_BEFORE_LAUNCH in\n", "spinup/user_config.py.\n", "\n", "\u001b[0m================================================================================\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " \r" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[36;1mRunning experiment:\n", "\u001b[0m\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300\n", + "grid search td3 for gyro_gyroscopeenv-v0_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300\n", "\n", "\u001b[36;1mwith kwargs:\n", "\u001b[0m\n", "{\n", " \"ac_kwargs\":\t{\n", " \"activation\":\t\"ReLU\",\n", " \"hidden_sizes\":\t[\n", " 300\n", " ]\n", " },\n", " \"act_noise\":\t0.1,\n", " \"batch_size\":\t100,\n", - " \"env_fn\":\t\"GyroscopeEnv\",\n", - " \"epochs\":\t3,\n", - " \"gamma\":\t0.95,\n", - " \"max_ep_len\":\t110,\n", - " \"noise_clip\":\t0.5,\n", - " \"pi_lr\":\t0.001,\n", - " \"policy_delay\":\t2,\n", - " \"polyak\":\t0.995,\n", - " \"q_lr\":\t0.001,\n", - " \"replay_size\":\t1000000,\n", - " \"seed\":\t0,\n", - " \"start_steps\":\t10000,\n", - " \"steps_per_epoch\":\t1650,\n", - " \"target_noise\":\t0.2\n", - "}\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "================================================================================\n", - "End of experiment.\n", - "\n", - "\n", - "Plot results from this run with:\n", - "\n", - "\u001b[32mpython -m spinup.run plot /home/matthieulc/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/data/grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300/grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300_s0\u001b[0m\n", - "\n", - "\n", - "Watch the trained agent with:\n", - "\n", - "\u001b[32mpython -m spinup.run test_policy /home/matthieulc/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/data/grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300/grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid300_s0\u001b[0m\n", - "\n", - "\n", - "================================================================================\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\u001b[36;1mRunning experiment:\n", - "\u001b[0m\n", - "grid search td3 for gyro_gyroscopeenv_gam0-95_pol0-995_bat100_sta10000_noi0-5_hid800\n", - "\n", - "\u001b[36;1mwith kwargs:\n", - "\u001b[0m\n", - "{\n", - " \"ac_kwargs\":\t{\n", - " \"activation\":\t\"ReLU\",\n", - " \"hidden_sizes\":\t[\n", - " 800\n", - " ]\n", - " },\n", - " \"act_noise\":\t0.1,\n", - " \"batch_size\":\t100,\n", - " \"env_fn\":\t\"GyroscopeEnv\",\n", - " \"epochs\":\t3,\n", + " \"env_name\":\t\"gyroscopeenv-v0\",\n", + " \"epochs\":\t60,\n", " \"gamma\":\t0.95,\n", " \"max_ep_len\":\t110,\n", " \"noise_clip\":\t0.5,\n", " \"pi_lr\":\t0.001,\n", " \"policy_delay\":\t2,\n", " \"polyak\":\t0.995,\n", " \"q_lr\":\t0.001,\n", " \"replay_size\":\t1000000,\n", " \"seed\":\t0,\n", " \"start_steps\":\t10000,\n", " \"steps_per_epoch\":\t1650,\n", " \"target_noise\":\t0.2\n", "}\n", "\n", "\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;31m# Run experiments\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m \u001b[0meg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtd3_pytorch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_cpu\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'auto'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;31m# Run experiments\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0meg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtd3_pytorch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_cpu\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'auto'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/spinup/utils/run_utils.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, thunk, num_cpu, data_dir, datestamp)\u001b[0m\n\u001b[1;32m 548\u001b[0m \u001b[0mdata_dir\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata_dir\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 549\u001b[0m \u001b[0mdatestamp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdatestamp\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 550\u001b[0;31m **var)\n\u001b[0m\u001b[1;32m 551\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 552\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/Documents/MA2/ps-drl-for-gyroscope-control/resources/spinningup/spinup/utils/run_utils.py\u001b[0m in \u001b[0;36mcall_experiment\u001b[0;34m(exp_name, thunk, seed, num_cpu, data_dir, datestamp, **kwargs)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0mcmd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecutable\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecutable\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m'python'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mentrypoint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoded_thunk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcmd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0menv\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menviron\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mCalledProcessError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 173\u001b[0m err_msg = '\\n'*3 + '='*DIV_LINE_WIDTH + '\\n' + dedent(\"\"\"\n", "\u001b[0;32m/usr/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36mcheck_call\u001b[0;34m(*popenargs, **kwargs)\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0mcheck_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"ls\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"-l\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m \"\"\"\n\u001b[0;32m--> 306\u001b[0;31m \u001b[0mretcode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mpopenargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 307\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mretcode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0mcmd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"args\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(timeout, *popenargs, **kwargs)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mPopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mpopenargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 288\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 289\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 290\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 291\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkill\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout, endtime)\u001b[0m\n\u001b[1;32m 1475\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1476\u001b[0m \u001b[0;32mbreak\u001b[0m \u001b[0;31m# Another thread waited.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1477\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1478\u001b[0m \u001b[0;31m# Check the pid and loop as waitpid has been known to\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1479\u001b[0m \u001b[0;31m# return 0 even without WNOHANG in odd situations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python3.6/subprocess.py\u001b[0m in \u001b[0;36m_try_wait\u001b[0;34m(self, wait_flags)\u001b[0m\n\u001b[1;32m 1422\u001b[0m \u001b[0;34m\"\"\"All callers to this function MUST hold self._waitpid_lock.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1423\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1424\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwaitpid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwait_flags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1425\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mChildProcessError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1426\u001b[0m \u001b[0;31m# This happens if SIGCLD is set to be ignored or waiting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "# Setup experiment grid object\n", "eg = ExperimentGrid(name='gyro-td3-randomsearch')\n", "num_seed = 3 # number of different seeds to test\n", "epochs = 60\n", "maxeplen = 110\n", "spe = maxeplen * 15\n", "repsize = 1000000\n", "actnoise = 0.1\n", "pilr = 0.001\n", "qlr = 0.001\n", "pd = 2\n", "targnoise = 0.2\n", "\n", - "# Env function\n", - "env_fn = lambda : gym.make('gyroscopeenv-v0')\n", - "\n", "# Add parameter range\n", "eg = ExperimentGrid(name='grid search td3 for gyro')\n", - "eg.add('env_fn', GyroscopeEnv, '', True)\n", + "eg.add('env_name', 'gyroscopeenv-v0', '', True)\n", "eg.add('seed', [10*i for i in range(num_seed)])\n", "eg.add('epochs', epochs)\n", "eg.add('steps_per_epoch', spe)\n", "eg.add('replay_size',repsize)\n", "eg.add('gamma',[0.95,0.99])\n", "eg.add('polyak',[0.995, 0.999])\n", "eg.add('batch_size',[100,150])\n", "eg.add('start_steps',[10000,20000])\n", "eg.add('max_ep_len',maxeplen)\n", "eg.add('act_noise',actnoise)\n", "eg.add('pi_lr',pilr)\n", "eg.add('q_lr',qlr)\n", "eg.add('policy_delay',pd)\n", "eg.add('target_noise',targnoise)\n", "eg.add('noise_clip',[0.5,0.7])\n", "eg.add('ac_kwargs:hidden_sizes', [(300,),(800,), (64,64)], 'hid')\n", "eg.add('ac_kwargs:activation', torch.nn.ReLU, 'act')\n", "\n", "# Run experiments\n", "eg.run(td3_pytorch, num_cpu='auto')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Gn3Gp40bcOVz" }, "source": [ "### Test" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 106 }, "colab_type": "code", "executionInfo": { "elapsed": 972, "status": "ok", "timestamp": 1584036455886, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "6GyY0wE-QBOj", "outputId": "9a5e9011-e024-4a65-8383-83c062cdcad9" }, "outputs": [], "source": [ "# Creat environment\n", "env = GyroscopeEnv()\n", "env.seed(2)\n", "\n", "# Create agent\n", "agent = torch.load('model/pyt_save/model.pt')\n", "\n", "# Test parameters\n", "x1,x2,x3,x4,x1_ref,x3_ref,w = 0,1,0,1,1,3,25\n", "state = env.reset(np.array([x1,x2,x3,x4,x1_ref,x3_ref,w]))\n", "val = []\n", "act = []\n", "dt = 0.01\n", "time = np.arange(0, 4, dt)\n", "score = 0\n", "for i in range(len(time)):\n", " val.append(state)\n", " action = agent.act(torch.as_tensor(state, dtype=torch.float32))\n", " act.append(action)\n", " state, reward, done, _ = env.step(action)\n", " score += reward\n", " if done:\n", " break \n", "\n", "env.close()\n", "print(score)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "vvMjuRHDcfrE" }, "source": [ "## Plot" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "colab_type": "code", "executionInfo": { "elapsed": 1856, "status": "ok", "timestamp": 1584036457424, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "aCZCqujgcMVA", "outputId": "05490294-aab8-4933-ca9b-e13ba85ecf6d" }, "outputs": [], "source": [ "f, axs = plt.subplots(4,2,figsize=(30,30))\n", "plt.subplot(4,2,1)\n", "plt.title('Red gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[0] for row in val],'r-')\n", "plt.plot(time, [row[4] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(4,2,2)\n", "plt.title('Blue gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[2] for row in val],'b-')\n", "plt.plot(time, [row[5] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(4,2,3)\n", "plt.title('Red gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\theta$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[1] for row in val],'r-')\n", "\n", "plt.subplot(4,2,4)\n", "plt.title('Blue gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\phi$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[3] for row in val],'b-')\n", "\n", "plt.subplot(4,2,5)\n", "plt.title('Red gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[angle_normalize(row[0]- row[4]) for row in val],'r-')\n", "\n", "plt.subplot(4,2,6)\n", "plt.title('Blue gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[angle_normalize(row[2]- row[5]) for row in val],'b-')\n", "\n", "plt.subplot(4,2,7)\n", "plt.title('Red gimbal input',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'u1 (V)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[0] for row in act],'r-')\n", "\n", "plt.subplot(4,2,8)\n", "plt.title('Blue gimbal input',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'u2 (V)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[1] for row in act],'b-')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "fz9r-gaStzpk" }, "source": [ "## 3D rendering" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "HQM1E8JYc-cC" }, "outputs": [], "source": [ "# Scene\n", "scene = canvas(background=color.white) \n", "\n", "# Objects\n", "redGimbal = ring(pos=vector(0,0,0), axis=vector(0,0,1), radius=2, thickness=0.2,color=vector(0.9,0,0))\n", "blueGimbal1 = cylinder(pos=vector(0,0,0), axis=vector(0,2,0), radius=0.3,color=color.blue)\n", "blueGimbal2 = cylinder(pos=vector(0,0,0), axis=vector(0,-2,0), radius=0.3,color=color.blue)\n", "disk1 = cylinder(pos=vector(0,0,0), axis=vector(0,0,0.15), radius=1.3,color=color.yellow)\n", "disk2 = cylinder(pos=vector(0,0,0), axis=vector(0,0,-0.15), radius=1.3,color=color.yellow)\n", "baseR = extrusion(path=[vec(0,0,0), vec(0.7,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(2,0,0), color=color.black)\n", "baseL = extrusion(path=[vec(-0.7,0,0), vec(0,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(-2,0,0), color=color.black)\n", "\n", "loops = 0\n", "ctime = 0\n", "start = clock()\n", "N = 400\n", "\n", "for k in range(len(time)):\n", " rate(N)\n", " ct = clock()\n", " theta = val[k][0]\n", " phi = val[k][2]\n", " redGimbal.axis = vector(0,-sin(theta), cos(theta))\n", " blueGimbal1.axis = 2*vector(0,cos(theta), sin(theta))\n", " blueGimbal2.axis = -2*vector(0,cos(theta), sin(theta))\n", " disk1.axis = 0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " disk2.axis = -0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " ctime += clock()-ct\n", " loops += 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "gyroscope_ddpg_testing.ipynb", "provenance": [] }, "kernelspec": { "display_name": "ps1venv", "language": "python", "name": "ps1venv" }, "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.6.9" } }, "nbformat": 4, "nbformat_minor": 1 }