Skip to content

Instantly share code, notes, and snippets.

@wassname
Created July 13, 2017 13:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wassname/f6fb778ec4d5eb9a76af9a0b289048b9 to your computer and use it in GitHub Desktop.
Save wassname/f6fb778ec4d5eb9a76af9a0b289048b9 to your computer and use it in GitHub Desktop.
Pixels to pong annotated for deep learning group - 2017 July 13
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Reinforcement Learning, what is it good for?\n",
"\n",
"It can win atari games, learn to walk, and more:\n",
"- video: pong https://www.youtube.com/watch?v=YOW8m2YGtRg\n",
"- video: learning to walk https://www.youtube.com/watch?v=JzD8h4vtiuM\n",
"- browser demo http://cs.stanford.edu/people/karpathy/reinforcejs/waterworld.html\n",
"\n",
"- [slides](http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching_files/intro_RL.pdf)\n",
"\n",
"More:\n",
"- the article that goes with this code: [Karpathy: Pixels 2 Pong](http://karpathy.github.io/2016/05/31/rl/)\n",
"- main RL course [cs229]( )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"start_time": "2017-07-13T11:30:30.383Z"
},
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from matplotlib import pyplot as plt\n",
"plt.rcParams['figure.figsize'] = [10,6]"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-12T23:17:44.232545Z",
"start_time": "2017-07-13T07:17:44.228465+08:00"
}
},
"source": [
"# How it works: Pixels to Pong\n",
"\n",
"Trains an agent with (stochastic) Policy Gradients on Pong. Uses OpenAI Gym.\n",
"\n",
"From: https://gist.github.com/karpathy/a4166c7fe253700972fcbc77e4ea32c5\n",
"\n",
"Please don't expect to understand everything, I can never keep up with code/maths in a lecture. Instead just try to absorb parts and get a general overview."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"start_time": "2017-07-13T11:30:58.984Z"
},
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import cPickle as pickle\n",
"import gym # open ai gym provides an evironment which response to actions"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:21.644667Z",
"start_time": "2017-07-13T19:16:21.639115+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"# hyperparameters\n",
"H = 200 # number of hidden layer neurons\n",
"batch_size = 10 # every how many episodes to do a param update?\n",
"learning_rate = 1e-4\n",
"gamma = 0.99 # discount factor for reward\n",
"decay_rate = 0.99 # decay factor for RMSProp leaky sum of grad^2\n",
"resume = True # resume from previous checkpoint?\n",
"render = True"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# model initialization\n",
"\n",
"In keras this model would be\n",
"```py\n",
"from keras.layers import dense\n",
"model = Sequential()\n",
"model.add(Dense(H, bias=False, activation='relu'))\n",
"model.add(Dense(H, bias=False, activation='softmax'))\n",
"model.compile()\n",
"```\n",
"\n",
"But we are using numpy so lets make matrices for the weights\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:23.557627Z",
"start_time": "2017-07-13T19:16:22.250592+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"\n",
"D = 80 * 80 # input dimensionality: 80x80 grid\n",
"if resume:\n",
" model = pickle.load(open('save.p', 'rb'))\n",
"else:\n",
" model = {}\n",
" model['W1'] = np.random.randn(H,D) / np.sqrt(D) # \"Xavier\" initialization\n",
" model['W2'] = np.random.randn(H) / np.sqrt(H)\n",
" \n",
"grad_buffer = { k : np.zeros_like(v) for k,v in model.iteritems() } # update buffers that add up gradients over a batch\n",
"rmsprop_cache = { k : np.zeros_like(v) for k,v in model.iteritems() } # rmsprop memory"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Helpers functions we will use later\n",
"\n",
"These are puzzle pieces we will use later, so lets try to get a general idea of thier function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sigmoid"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:23.561649Z",
"start_time": "2017-07-13T19:16:23.559153+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"def sigmoid(x): \n",
" return 1.0 / (1.0 + np.exp(-x)) # sigmoid \"squashing\" function to interval [0,1]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:23.862829Z",
"start_time": "2017-07-13T19:16:23.651847+08:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f2bd48ce610>]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd49989d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# lets plot this to remind ourselves what a sigmoid is *cough*\n",
"plt.plot(sigmoid(np.arange(-10,10)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# policy model\n",
"\n",
"In keras these would be handled by `model.train(X,y)`\n",
"\n",
"\n",
"## Math\n",
"For the people who read maths easier than code:\n",
"\n",
"Given weights $W_1$ $W_2$ and input $x$\n",
"\n",
"$ h = W_1 \\cdot x$\n",
"\n",
"$ h = \\max(0, h)$\n",
"\n",
"$ o = W_2 \\cdot h $\n",
"\n",
"$ o = \\frac{1.0}{1.0 + \\exp(-o)} $\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:23.981979Z",
"start_time": "2017-07-13T19:16:23.977057+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"def policy_forward(x):\n",
" \"\"\"Predict with our model\"\"\"\n",
" h = np.dot(model['W1'], x) # Dense 1\n",
" h[h<0] = 0 # ReLU nonlinearity\n",
" logp = np.dot(model['W2'], h) # Dense 2\n",
" p = sigmoid(logp) # Sigmoid\n",
" return p, h # return probability of taking action 2, and hidden state"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:24.123976Z",
"start_time": "2017-07-13T19:16:24.119296+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"def policy_backward(eph, epdlogp):\n",
" \"\"\" backward pass. (eph is array of intermediate hidden states) \"\"\"\n",
" dW2 = np.dot(eph.T, epdlogp).ravel() # ? weighted change to W2?\n",
" dh = np.outer(epdlogp, model['W2']) # Backprop Dense 2\n",
" dh[eph <= 0] = 0 # Backprop relu\n",
" dW1 = np.dot(dh.T, epx) # Backprop Dense 1\n",
" return {'W1':dW1, 'W2':dW2}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## discount_rewards"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:24.412071Z",
"start_time": "2017-07-13T19:16:24.408013+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"def discount_rewards(r):\n",
" \"\"\" take 1D float array of rewards and compute discounted reward \"\"\"\n",
" discounted_r = np.zeros_like(r)\n",
" running_add = 0\n",
" for t in reversed(xrange(0, r.size)):\n",
" if r[t] != 0: running_add = 0 # reset the sum, since this was a game boundary (pong specific!)\n",
" running_add = running_add * gamma + r[t]\n",
" discounted_r[t] = running_add\n",
" return discounted_r"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:24.754280Z",
"start_time": "2017-07-13T19:16:24.591595+08:00"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f2bd47dff50>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nM2bMiOrwIiIiIsVmZkUtOQVoKlBERESkzCixEhERESkjSqxEREREykhkNVYiIiLlUVZWFkuXLiUz\nMzPqUCQC1atXp3HjxmRkZJTq95VYiYiIxFm6dCm1a9emefPmmFnU4UgSOedYu3YtS5cu5ZBDDinV\nPjQVKCIiEiczM5P9999fSVUKMjP233//vRqtVGIlIiKSh5Kq1LW3z70SKxEREdlN8+bNWbNmTdRh\nVEhKrERERMox5xxBECRs/9nZ2QnbdyoqMrEys+pmNt3MvjKzb83srny2qWZmL5nZQjObZmbNExGs\niIhIKli8eDEtW7bk4osvpl27djz33HP06NGDLl26cO6557Jlyxa++OILBg0aBMAbb7xBjRo12Llz\nJ5mZmRx66KEAPPnkkxx11FF07NiRs88+m23btgEwZMgQLr/8crp3786NN97I2rVrOfnkk2nbti2X\nXnopzrnI7ntFV5yzAncAJzjntphZBvCpmY13zk2N2+Y3wHrn3OFmdgFwH3B+AuIVERFJmrve+pa5\nyzeV6T7bHFyHO05vW+R2CxYs4JlnnuHwww9n0KBBTJgwgVq1anHffffx4IMPcuuttzJ79mwAJk+e\nTLt27fjiiy/Izs6me/fuAAwaNIjf/va3ANx22208/fTTXH311YA/+3HKlCmkp6dzzTXXcNxxxzF8\n+HDefvttnn766TK9z6mkyMTK+bR1S3gxI/yXN5U9E7gz/PlVYISZmVPKKyIiEftl8Tzq1D+ImvvU\nizqUEmnWrBlHH30048aNY+7cuRx77LEA7Ny5kx49elClShUOO+ww5s2bx/Tp07nuuuuYNGkSsViM\nnj17AvDNN99w2223sWHDBrZs2cIpp5ySu/9zzz2X9PR0ACZNmsTrr78OwGmnnca+++6b5HtbeRSr\nj5WZpQMzgcOBR51z0/Js0ghYAuCcyzazjcD+wJo8+7kMuAygadOmexe5iIhIUVZ9x74jezK76VC6\nD7u/xL9enJGlRKlVqxbga6xOOukkXnzxxT226dWrF+PHjycjI4O+ffsyZMgQYrEY99/v7+uQIUMY\nO3YsHTt2ZOTIkXzyySd77F/KVrGK151zMedcJ6Ax0M3M2pXmYM65/zjnujrnujZo0KA0uxARESme\nIAZv/J5qZOF2bI46mlI7+uij+eyzz1i4cCEAW7du5fvvvwegZ8+ePPTQQ/To0YMGDRqwdu1a5s+f\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd48a3590>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot this, we see it assigns a reward to previous actions\n",
"x = np.array([0] * 200 + [3.0] + [0] * 50 + [1.0] + [0] * 10 + [ 0.5])\n",
"y = discount_rewards(x)\n",
"plt.plot(x, label='reward')\n",
"plt.plot(y, label='discounted reward')\n",
"plt.title('When we get a reward we also reward previous actions a bit')\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:24.759248Z",
"start_time": "2017-07-13T19:16:24.755556+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"def prepro(I):\n",
" \"\"\" prepro 210x160x3 uint8 frame into 6400 (80x80) 1D float vector \"\"\"\n",
" I = I[35:195] # crop\n",
" I = I[::2,::2,0] # downsample by factor of 2\n",
" I[I == 144] = 0 # erase background (background type 1)\n",
" I[I == 109] = 0 # erase background (background type 2)\n",
" I[I != 0] = 1 # everything else (paddles, ball) just set to 1\n",
" return I.astype(np.float).ravel() # make it 1D"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:26.393597Z",
"start_time": "2017-07-13T19:16:24.910815+08:00"
},
"scrolled": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[2017-07-13 19:16:24,920] Making new env: Pong-v0\n"
]
},
{
"data": {
"image/png": "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\nmuMAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd4705210>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd4577750>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd4845390>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bb7f0a990>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f2bd43a6190>]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f2bd47a6a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# get test data\n",
"env = gym.make(\"Pong-v0\")\n",
"I = env.reset()\n",
"\n",
"plt.title('video game screenshot')\n",
"plt.imshow(I)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"I = I[35:195] # crop\n",
"plt.title('crop')\n",
"plt.imshow(I)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"I = I[::2,::2,0] # downsample by factor of 2\n",
"plt.title('downsample')\n",
"plt.imshow(I)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"I[I == 144] = 0 # erase background (background type 1)\n",
"I[I == 109] = 0 # erase background (background type 2)\n",
"I[I != 0] = 1 # everything else (paddles, ball) just set to 1\n",
"plt.title('erase')\n",
"plt.imshow(I)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"\n",
"I=I.astype(np.float).ravel()\n",
"plt.title('Flatten to 1D (for input to dense layers)')\n",
"plt.plot(I)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-12T23:48:36.445956Z",
"start_time": "2017-07-13T07:48:36.442517+08:00"
}
},
"source": [
"# Environments\n",
"\n",
"\n",
"```python\n",
"class Environment\n",
" def step (self, action='move_left'):\n",
" ...\n",
" return observation # e.g. screenshot\n",
" \n",
"env = Environment()\n",
"env.reset()\n",
"screenshot = env.step('left')\n",
"```\n",
"\n",
"We use the populat OpenAI Gym\n",
"- prototype: https://github.com/openai/gym/blob/master/gym/core.py#L13\n",
"- docs: https://gym.openai.com/docs#Environments"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:26.591428Z",
"start_time": "2017-07-13T19:16:26.395136+08:00"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[2017-07-13 19:16:26,396] Making new env: Pong-v0\n"
]
}
],
"source": [
"env = gym.make(\"Pong-v0\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-12T23:30:51.976941Z",
"start_time": "2017-07-13T07:30:51.974816+08:00"
}
},
"source": [
"# Train <80 lines of code"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:42.276129Z",
"start_time": "2017-07-13T19:16:42.273962+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"render = True"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-13T11:16:42.493307Z",
"start_time": "2017-07-13T19:16:42.490068+08:00"
},
"collapsed": true
},
"outputs": [],
"source": [
"prev_x = None # used in computing the difference frame\n",
"xs,hs,dlogps,drs = [],[],[],[]\n",
"running_reward = None\n",
"reward_sum = 0\n",
"episode_number = 0"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"start_time": "2017-07-13T11:16:42.670Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"ep 0: game finished, reward: -1.000000\n",
"resetting env. episode 1 reward total was -21.000000. running mean: -21.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"ep 1: game finished, reward: -1.000000\n",
"resetting env. episode 2 reward total was -19.000000. running mean: -20.980000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"ep 2: game finished, reward: -1.000000\n",
"resetting env. episode 3 reward total was -19.000000. running mean: -20.960200\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"ep 3: game finished, reward: -1.000000\n",
"resetting env. episode 4 reward total was -19.000000. running mean: -20.940598\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"ep 4: game finished, reward: -1.000000\n",
"resetting env. episode 5 reward total was -21.000000. running mean: -20.941192\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"ep 5: game finished, reward: -1.000000\n",
"resetting env. episode 6 reward total was -21.000000. running mean: -20.941780\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: -1.000000\n",
"ep 6: game finished, reward: 1.000000 !!!!!!!!\n",
"resetting env. episode 7 reward total was -19.000000. running mean: -20.922362\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: -1.000000\n",
"ep 7: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 7: game finished, reward: -1.000000\n",
"resetting env. episode 8 reward total was -19.000000. running mean: -20.903139\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"ep 8: game finished, reward: -1.000000\n",
"resetting env. episode 9 reward total was -20.000000. running mean: -20.894107\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"ep 9: game finished, reward: -1.000000\n",
"resetting env. episode 10 reward total was -21.000000. running mean: -20.895166\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"ep 10: game finished, reward: -1.000000\n",
"resetting env. episode 11 reward total was -20.000000. running mean: -20.886215\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"ep 11: game finished, reward: -1.000000\n",
"resetting env. episode 12 reward total was -20.000000. running mean: -20.877352\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"ep 12: game finished, reward: -1.000000\n",
"resetting env. episode 13 reward total was -21.000000. running mean: -20.878579\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"ep 13: game finished, reward: -1.000000\n",
"resetting env. episode 14 reward total was -21.000000. running mean: -20.879793\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"ep 14: game finished, reward: -1.000000\n",
"resetting env. episode 15 reward total was -21.000000. running mean: -20.880995\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"ep 15: game finished, reward: -1.000000\n",
"resetting env. episode 16 reward total was -20.000000. running mean: -20.872185\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: -1.000000\n",
"ep 16: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 16: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 16: game finished, reward: -1.000000\n",
"resetting env. episode 17 reward total was -17.000000. running mean: -20.833463\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"ep 17: game finished, reward: -1.000000\n",
"resetting env. episode 18 reward total was -21.000000. running mean: -20.835129\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"ep 18: game finished, reward: -1.000000\n",
"resetting env. episode 19 reward total was -21.000000. running mean: -20.836777\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: -1.000000\n",
"ep 19: game finished, reward: 1.000000 !!!!!!!!\n",
"resetting env. episode 20 reward total was -20.000000. running mean: -20.828410\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"ep 20: game finished, reward: -1.000000\n",
"resetting env. episode 21 reward total was -21.000000. running mean: -20.830126\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"ep 21: game finished, reward: -1.000000\n",
"resetting env. episode 22 reward total was -19.000000. running mean: -20.811824\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"ep 22: game finished, reward: -1.000000\n",
"resetting env. episode 23 reward total was -20.000000. running mean: -20.803706\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 23: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"ep 23: game finished, reward: -1.000000\n",
"resetting env. episode 24 reward total was -19.000000. running mean: -20.785669\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"ep 24: game finished, reward: -1.000000\n",
"resetting env. episode 25 reward total was -20.000000. running mean: -20.777812\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"ep 25: game finished, reward: -1.000000\n",
"resetting env. episode 26 reward total was -21.000000. running mean: -20.780034\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"ep 26: game finished, reward: -1.000000\n",
"resetting env. episode 27 reward total was -21.000000. running mean: -20.782234\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: -1.000000\n",
"ep 27: game finished, reward: 1.000000 !!!!!!!!\n",
"resetting env. episode 28 reward total was -20.000000. running mean: -20.774412\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"ep 28: game finished, reward: -1.000000\n",
"resetting env. episode 29 reward total was -21.000000. running mean: -20.776667\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"ep 29: game finished, reward: -1.000000\n",
"resetting env. episode 30 reward total was -20.000000. running mean: -20.768901\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"ep 30: game finished, reward: -1.000000\n",
"resetting env. episode 31 reward total was -20.000000. running mean: -20.761212\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"ep 31: game finished, reward: -1.000000\n",
"resetting env. episode 32 reward total was -21.000000. running mean: -20.763600\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"ep 32: game finished, reward: -1.000000\n",
"resetting env. episode 33 reward total was -21.000000. running mean: -20.765964\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: -1.000000\n",
"ep 33: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 33: game finished, reward: -1.000000\n",
"resetting env. episode 34 reward total was -19.000000. running mean: -20.748304\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"ep 34: game finished, reward: -1.000000\n",
"resetting env. episode 35 reward total was -21.000000. running mean: -20.750821\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"ep 35: game finished, reward: -1.000000\n",
"resetting env. episode 36 reward total was -21.000000. running mean: -20.753313\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"ep 36: game finished, reward: -1.000000\n",
"resetting env. episode 37 reward total was -21.000000. running mean: -20.755780\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"ep 37: game finished, reward: -1.000000\n",
"resetting env. episode 38 reward total was -20.000000. running mean: -20.748222\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: -1.000000\n",
"ep 38: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 38: game finished, reward: -1.000000\n",
"resetting env. episode 39 reward total was -17.000000. running mean: -20.710740\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"ep 39: game finished, reward: -1.000000\n",
"resetting env. episode 40 reward total was -20.000000. running mean: -20.703632\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"ep 40: game finished, reward: -1.000000\n",
"resetting env. episode 41 reward total was -18.000000. running mean: -20.676596\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"ep 41: game finished, reward: -1.000000\n",
"resetting env. episode 42 reward total was -20.000000. running mean: -20.669830\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: 1.000000 !!!!!!!!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"ep 42: game finished, reward: -1.000000\n",
"resetting env. episode 43 reward total was -19.000000. running mean: -20.653132\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: -1.000000\n",
"ep 43: game finished, reward: 1.000000 !!!!!!!!\n",
"resetting env. episode 44 reward total was -20.000000. running mean: -20.646600\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"ep 44: game finished, reward: -1.000000\n",
"resetting env. episode 45 reward total was -19.000000. running mean: -20.630134\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 45: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"ep 45: game finished, reward: -1.000000\n",
"resetting env. episode 46 reward total was -19.000000. running mean: -20.613833\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"ep 46: game finished, reward: -1.000000\n",
"resetting env. episode 47 reward total was -20.000000. running mean: -20.607695\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"ep 47: game finished, reward: -1.000000\n",
"resetting env. episode 48 reward total was -20.000000. running mean: -20.601618\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"ep 48: game finished, reward: -1.000000\n",
"resetting env. episode 49 reward total was -18.000000. running mean: -20.575601\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"ep 49: game finished, reward: -1.000000\n",
"resetting env. episode 50 reward total was -18.000000. running mean: -20.549845\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"ep 50: game finished, reward: -1.000000\n",
"resetting env. episode 51 reward total was -21.000000. running mean: -20.554347\n",
"ep 51: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"ep 51: game finished, reward: -1.000000\n",
"resetting env. episode 52 reward total was -20.000000. running mean: -20.548804\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"ep 52: game finished, reward: -1.000000\n",
"resetting env. episode 53 reward total was -20.000000. running mean: -20.543316\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"ep 53: game finished, reward: -1.000000\n",
"resetting env. episode 54 reward total was -21.000000. running mean: -20.547882\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"ep 54: game finished, reward: -1.000000\n",
"resetting env. episode 55 reward total was -20.000000. running mean: -20.542404\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 55: game finished, reward: -1.000000\n",
"ep 55: game finished, reward: -1.000000\n",
"resetting env. episode 56 reward total was -20.000000. running mean: -20.536980\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"ep 56: game finished, reward: -1.000000\n",
"resetting env. episode 57 reward total was -20.000000. running mean: -20.531610\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"ep 57: game finished, reward: -1.000000\n",
"resetting env. episode 58 reward total was -20.000000. running mean: -20.526294\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 58: game finished, reward: -1.000000\n",
"ep 58: game finished, reward: -1.000000\n",
"resetting env. episode 59 reward total was -20.000000. running mean: -20.521031\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"ep 59: game finished, reward: -1.000000\n",
"resetting env. episode 60 reward total was -21.000000. running mean: -20.525820\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"ep 60: game finished, reward: -1.000000\n",
"resetting env. episode 61 reward total was -21.000000. running mean: -20.530562\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"ep 61: game finished, reward: -1.000000\n",
"resetting env. episode 62 reward total was -20.000000. running mean: -20.525257\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"ep 62: game finished, reward: -1.000000\n",
"resetting env. episode 63 reward total was -20.000000. running mean: -20.520004\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"ep 63: game finished, reward: -1.000000\n",
"resetting env. episode 64 reward total was -19.000000. running mean: -20.504804\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"ep 64: game finished, reward: -1.000000\n",
"resetting env. episode 65 reward total was -20.000000. running mean: -20.499756\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"ep 65: game finished, reward: -1.000000\n",
"resetting env. episode 66 reward total was -21.000000. running mean: -20.504758\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 66: game finished, reward: -1.000000\n",
"ep 66: game finished, reward: -1.000000\n",
"resetting env. episode 67 reward total was -19.000000. running mean: -20.489711\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"ep 67: game finished, reward: -1.000000\n",
"resetting env. episode 68 reward total was -20.000000. running mean: -20.484814\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"ep 68: game finished, reward: -1.000000\n",
"resetting env. episode 69 reward total was -21.000000. running mean: -20.489966\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"ep 69: game finished, reward: -1.000000\n",
"resetting env. episode 70 reward total was -21.000000. running mean: -20.495066\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: -1.000000\n",
"ep 70: game finished, reward: 1.000000 !!!!!!!!\n",
"resetting env. episode 71 reward total was -19.000000. running mean: -20.480115\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"ep 71: game finished, reward: -1.000000\n",
"resetting env. episode 72 reward total was -21.000000. running mean: -20.485314\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"ep 72: game finished, reward: -1.000000\n",
"resetting env. episode 73 reward total was -17.000000. running mean: -20.450461\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 73: game finished, reward: -1.000000\n",
"ep 73: game finished, reward: -1.000000\n",
"resetting env. episode 74 reward total was -19.000000. running mean: -20.435956\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"ep 74: game finished, reward: -1.000000\n",
"resetting env. episode 75 reward total was -21.000000. running mean: -20.441597\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"ep 75: game finished, reward: -1.000000\n",
"resetting env. episode 76 reward total was -20.000000. running mean: -20.437181\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"ep 76: game finished, reward: -1.000000\n",
"resetting env. episode 77 reward total was -21.000000. running mean: -20.442809\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"ep 77: game finished, reward: -1.000000\n",
"resetting env. episode 78 reward total was -21.000000. running mean: -20.448381\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"ep 78: game finished, reward: -1.000000\n",
"resetting env. episode 79 reward total was -20.000000. running mean: -20.443897\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"ep 79: game finished, reward: -1.000000\n",
"resetting env. episode 80 reward total was -21.000000. running mean: -20.449458\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"ep 80: game finished, reward: -1.000000\n",
"resetting env. episode 81 reward total was -19.000000. running mean: -20.434964\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"ep 81: game finished, reward: -1.000000\n",
"resetting env. episode 82 reward total was -21.000000. running mean: -20.440614\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: -1.000000\n",
"ep 82: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 82: game finished, reward: -1.000000\n",
"resetting env. episode 83 reward total was -18.000000. running mean: -20.416208\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"ep 83: game finished, reward: -1.000000\n",
"resetting env. episode 84 reward total was -20.000000. running mean: -20.412046\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"ep 84: game finished, reward: -1.000000\n",
"resetting env. episode 85 reward total was -21.000000. running mean: -20.417925\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"ep 85: game finished, reward: -1.000000\n",
"resetting env. episode 86 reward total was -18.000000. running mean: -20.393746\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 86: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"ep 86: game finished, reward: -1.000000\n",
"resetting env. episode 87 reward total was -17.000000. running mean: -20.359808\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"ep 87: game finished, reward: -1.000000\n",
"resetting env. episode 88 reward total was -21.000000. running mean: -20.366210\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"ep 88: game finished, reward: -1.000000\n",
"resetting env. episode 89 reward total was -21.000000. running mean: -20.372548\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"ep 89: game finished, reward: -1.000000\n",
"resetting env. episode 90 reward total was -19.000000. running mean: -20.358823\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"ep 90: game finished, reward: -1.000000\n",
"resetting env. episode 91 reward total was -20.000000. running mean: -20.355235\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"ep 91: game finished, reward: -1.000000\n",
"resetting env. episode 92 reward total was -21.000000. running mean: -20.361682\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: -1.000000\n",
"ep 92: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 92: game finished, reward: -1.000000\n",
"resetting env. episode 93 reward total was -20.000000. running mean: -20.358065\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"ep 93: game finished, reward: -1.000000\n",
"resetting env. episode 94 reward total was -21.000000. running mean: -20.364485\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"ep 94: game finished, reward: -1.000000\n",
"resetting env. episode 95 reward total was -20.000000. running mean: -20.360840\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"ep 95: game finished, reward: -1.000000\n",
"resetting env. episode 96 reward total was -21.000000. running mean: -20.367232\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"ep 96: game finished, reward: -1.000000\n",
"resetting env. episode 97 reward total was -20.000000. running mean: -20.363559\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"ep 97: game finished, reward: -1.000000\n",
"resetting env. episode 98 reward total was -21.000000. running mean: -20.369924\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"ep 98: game finished, reward: -1.000000\n",
"resetting env. episode 99 reward total was -20.000000. running mean: -20.366224\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"ep 99: game finished, reward: -1.000000\n",
"resetting env. episode 100 reward total was -19.000000. running mean: -20.352562\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"ep 100: game finished, reward: -1.000000\n",
"resetting env. episode 101 reward total was -21.000000. running mean: -20.359037\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"ep 101: game finished, reward: -1.000000\n",
"resetting env. episode 102 reward total was -21.000000. running mean: -20.365446\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"ep 102: game finished, reward: -1.000000\n",
"resetting env. episode 103 reward total was -21.000000. running mean: -20.371792\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"ep 103: game finished, reward: -1.000000\n",
"resetting env. episode 104 reward total was -20.000000. running mean: -20.368074\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"ep 104: game finished, reward: -1.000000\n",
"resetting env. episode 105 reward total was -20.000000. running mean: -20.364393\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"ep 105: game finished, reward: -1.000000\n",
"resetting env. episode 106 reward total was -21.000000. running mean: -20.370749\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"ep 106: game finished, reward: -1.000000\n",
"resetting env. episode 107 reward total was -21.000000. running mean: -20.377042\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"ep 107: game finished, reward: -1.000000\n",
"resetting env. episode 108 reward total was -21.000000. running mean: -20.383271\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: -1.000000\n",
"ep 108: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 108: game finished, reward: -1.000000\n",
"resetting env. episode 109 reward total was -20.000000. running mean: -20.379438\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"ep 109: game finished, reward: -1.000000\n",
"resetting env. episode 110 reward total was -20.000000. running mean: -20.375644\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"ep 110: game finished, reward: -1.000000\n",
"resetting env. episode 111 reward total was -19.000000. running mean: -20.361888\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"ep 111: game finished, reward: -1.000000\n",
"resetting env. episode 112 reward total was -20.000000. running mean: -20.358269\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"ep 112: game finished, reward: -1.000000\n",
"resetting env. episode 113 reward total was -20.000000. running mean: -20.354686\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: 1.000000 !!!!!!!!\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"ep 113: game finished, reward: -1.000000\n",
"resetting env. episode 114 reward total was -20.000000. running mean: -20.351139\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n",
"ep 114: game finished, reward: -1.000000\n"
]
}
],
"source": [
"observation = env.reset()\n",
"while True:\n",
" if render: env.render()\n",
"\n",
" # preprocess the observation, set input to network to be difference image\n",
" cur_x = prepro(observation)\n",
" x = cur_x - prev_x if prev_x is not None else np.zeros(D)\n",
" prev_x = cur_x\n",
"\n",
" # forward the policy network and sample an action from the returned probability\n",
" aprob, h = policy_forward(x)\n",
" action = 2 if np.random.uniform() < aprob else 3 # roll the dice!\n",
"\n",
" # record various intermediates (needed later for backprop)\n",
" xs.append(x) # observation\n",
" hs.append(h) # hidden state\n",
" y = 1 if action == 2 else 0 # a \"fake label\"\n",
" dlogps.append(y - aprob) # grad that encourages the action that was taken to be taken (see http://cs231n.github.io/neural-networks-2/#losses if confused)\n",
"\n",
" # step the environment and get new measurements\n",
" observation, reward, done, info = env.step(action)\n",
" reward_sum += reward\n",
"\n",
" drs.append(reward) # record reward (has to be done after we call step() to get reward for previous action)\n",
"\n",
" if done: # an episode finished\n",
" episode_number += 1\n",
"\n",
" # stack together all inputs, hidden states, action gradients, and rewards for this episode\n",
" epx = np.vstack(xs)\n",
" eph = np.vstack(hs)\n",
" epdlogp = np.vstack(dlogps)\n",
" epr = np.vstack(drs)\n",
" xs,hs,dlogps,drs = [],[],[],[] # reset array memory\n",
"\n",
" # compute the discounted reward backwards through time\n",
" discounted_epr = discount_rewards(epr)\n",
" # standardize the rewards to be unit normal (helps control the gradient estimator variance)\n",
" discounted_epr -= np.mean(discounted_epr)\n",
" discounted_epr /= np.std(discounted_epr)\n",
"\n",
" epdlogp *= discounted_epr # modulate the gradient with advantage (PG magic happens right here.)\n",
" grad = policy_backward(eph, epdlogp)\n",
" for k in model: grad_buffer[k] += grad[k] # accumulate grad over batch\n",
"\n",
" # perform rmsprop parameter update every batch_size episodes\n",
" if episode_number % batch_size == 0:\n",
" for k,v in model.iteritems():\n",
" g = grad_buffer[k] # gradient\n",
" rmsprop_cache[k] = decay_rate * rmsprop_cache[k] + (1 - decay_rate) * g**2\n",
" model[k] += learning_rate * g / (np.sqrt(rmsprop_cache[k]) + 1e-5)\n",
" grad_buffer[k] = np.zeros_like(v) # reset batch gradient buffer\n",
"\n",
" # boring book-keeping\n",
" running_reward = reward_sum if running_reward is None else running_reward * 0.99 + reward_sum * 0.01\n",
"# if episode_number % 10 == 0: \n",
" print 'resetting env. episode %s reward total was %f. running mean: %f' % (episode_number, reward_sum, running_reward)\n",
" if episode_number % 100 == 0: pickle.dump(model, open('save.p', 'wb'))\n",
" reward_sum = 0\n",
" observation = env.reset() # reset env\n",
" prev_x = None\n",
"\n",
" if reward != 0: # Pong has either +1 or -1 reward exactly when game ends.\n",
" print ('ep %d: game finished, reward: %f' % (episode_number, reward)) + ('' if reward == -1 else ' !!!!!!!!')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2017-07-12T23:26:12.816089Z",
"start_time": "2017-07-13T07:26:07.602092+08:00"
},
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "ipython2",
"language": "python",
"name": "ipython2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment