ml-finance-python
python scripts for finance machine learning
git clone https://9o.is/git/ml-finance-python.git
03_lunar_lander_deep_q_learning.ipynb
(183393B)
1 {
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Double Deep Q-Learning"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "## The Open AI Lunar Lander environment "
15 ]
16 },
17 {
18 "cell_type": "markdown",
19 "metadata": {},
20 "source": [
21 "The [OpenAI Gym](https://gym.openai.com/) is a RL platform that provides standardized environments to test and benchmark RL algorithms using Python. It is also possible to extend the platform and register custom environments.\n",
22 "\n",
23 "The [Lunar Lander](https://gym.openai.com/envs/LunarLander-v2) (LL) environment requires the agent to control its motion in two dimensions, based on a discrete action space and low-dimensional state observations that include position, orientation, and velocity. At each time step, the environment provides an observation of the new state and a positive or negative reward. Each episode consists of up to 1,000 time steps. The following diagram shows selected frames from a successful landing after 250 episodes by the agent we will train:"
24 ]
25 },
26 {
27 "cell_type": "markdown",
28 "metadata": {},
29 "source": [
30 "<img src=\"img/lunar_lander.png\" width=\"700\">"
31 ]
32 },
33 {
34 "cell_type": "markdown",
35 "metadata": {},
36 "source": [
37 "More specifically, the agent observes eight aspects of the state, including six continuous and two discrete elements. Based on the observed elements, the agent knows its location, direction, speed of movement, and whether it has (partially) landed. However, it does not know where it should be moving using its available actions or observe the inner state of the environment in the sense of understanding the rules that govern its motion.\n",
38 "\n",
39 "At each time step, the agent controls its motion using one of four discrete actions. It can do nothing (and continue on its current path), fire its main engine (to reduce downward motion), or steer to the left or right using the respective orientation engines. There are no fuel limitations.\n",
40 "\n",
41 "The goal is to land the agent between two flags on a landing pad at coordinates (0, 0), but landing outside of the pad is possible. The agent accumulates rewards in the range of 100-140 for moving toward the pad, depending on the exact landing spot. However, moving away from the target negates the reward the agent would have gained by moving toward the pad. Ground contact by each leg adds ten points, and using the main engine costs -0.3 points.\n",
42 "\n",
43 "An episode terminates if the agent lands or crashes, adding or subtracting 100 points, respectively, or after 1,000 time steps. Solving LL requires achieving a cumulative reward of at least 200 on average over 100 consecutive episodes."
44 ]
45 },
46 {
47 "cell_type": "markdown",
48 "metadata": {},
49 "source": [
50 "## Deep Q-Learning"
51 ]
52 },
53 {
54 "cell_type": "markdown",
55 "metadata": {},
56 "source": [
57 "Deep Q learning estimates the value of the available actions for a given state using a deep neural network. It was introduced by Deep Mind's [Playing Atari with Deep Reinforcement Learning](https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf) (2013), where RL agents learned to play games solely from pixel input.\n",
58 "\n",
59 "The Deep Q-Learning algorithm approximates the action-value function q by learning a set of weights of a multi-layered Deep Q Network (DQN) that maps states to actions so that $$q(s,a,\\theta)\\approx q^*(s,a)$$\n",
60 "\n",
61 "The algorithm applies gradient descent to a loss function defined as the squared difference between the DQN's estimate of the target \n",
62 "$$y_i=\\mathbb{E}[r+\\gamma\\max_{a^\\prime}Q(s^\\prime, a^\\prime; \\theta_{i−1}\\mid s,a)]$$ \n",
63 "and its estimate of the action-value of the current state-action pair to learn the network parameters:\n",
64 "\n",
65 "$$L_i(\\theta_i)=\\mathbb{E}\\left[\\left(\\overbrace{\\underbrace{y_i}_{\\text{Q Target}}−\\underbrace{Q(s, a; \\theta)}_{\\text{Current Prediction}}}^{\\text{TD Error}}\\right)^2 \\right]$$\n",
66 "\n",
67 "Both the target and the current estimate depend on the set of weights, underlining the distinction from supervised learning where targets are fixed prior to training. "
68 ]
69 },
70 {
71 "cell_type": "markdown",
72 "metadata": {},
73 "source": [
74 "### Extensions"
75 ]
76 },
77 {
78 "cell_type": "markdown",
79 "metadata": {},
80 "source": [
81 "Several innovations have improved the accuracy and convergence speed of deep Q-Learning, namely:\n",
82 "- **Experience replay** stores a history of state, action, reward, and next state transitions and randomly samples mini-batches from this experience to update the network weights at each time step before the agent selects an ε-greedy action. It increases sample efficiency, reduces the autocorrelation of samples, and limits the feedback due to the current weights producing training samples that can lead to local minima or divergence.\n",
83 "- **Slowly-changing target network** weakens the feedback loop from the current network parameters on the neural network weight updates. Also invented by by Deep Mind in [Human-level control through deep reinforcement learning](https://web.stanford.edu/class/psych209/Readings/MnihEtAlHassibis15NatureControlDeepRL.pdf) (2015), it use a slowly-changing target network that has the same architecture as the Q-network, but its weights are only updated periodically. The target network generates the predictions of the next state value used to update the Q-Networks estimate of the current state's value.\n",
84 "- **Double deep Q-learning** addresses the bias of deep Q-Learning to overestimate action values because it purposely samples the highest action value. This bias can negatively affect the learning process and the resulting policy if it does not apply uniformly , as shown by Hado van Hasselt in [Deep Reinforcement Learning with Double Q-learning](https://arxiv.org/abs/1509.06461) (2015). To decouple the estimation of action values from the selection of actions, Double Deep Q-Learning (DDQN) uses the weights, of one network to select the best action given the next state, and the weights of another network to provide the corresponding action value estimate.\n"
85 ]
86 },
87 {
88 "cell_type": "markdown",
89 "metadata": {},
90 "source": [
91 "## Imports & Settings"
92 ]
93 },
94 {
95 "cell_type": "code",
96 "execution_count": 1,
97 "metadata": {},
98 "outputs": [],
99 "source": [
100 "%matplotlib inline\n",
101 "from pathlib import Path\n",
102 "from collections import deque, namedtuple\n",
103 "from time import time\n",
104 "from random import sample\n",
105 "import numpy as np\n",
106 "from numpy.random import random, randint, seed\n",
107 "import pandas as pd\n",
108 "\n",
109 "import matplotlib.pyplot as plt\n",
110 "import seaborn as sns\n",
111 "\n",
112 "import tensorflow as tf\n",
113 "\n",
114 "import gym\n",
115 "from gym import wrappers"
116 ]
117 },
118 {
119 "cell_type": "code",
120 "execution_count": 2,
121 "metadata": {},
122 "outputs": [],
123 "source": [
124 "sns.set_style('darkgrid', {'axes.grid' : False})"
125 ]
126 },
127 {
128 "cell_type": "markdown",
129 "metadata": {},
130 "source": [
131 "### Result display helper functions"
132 ]
133 },
134 {
135 "cell_type": "code",
136 "execution_count": 3,
137 "metadata": {},
138 "outputs": [],
139 "source": [
140 "def format_time(t):\n",
141 " m_, s = divmod(t, 60)\n",
142 " h, m = divmod(m_, 60)\n",
143 " return '{:02.0f}:{:05.2f}'.format(m, s)"
144 ]
145 },
146 {
147 "cell_type": "code",
148 "execution_count": 4,
149 "metadata": {},
150 "outputs": [],
151 "source": [
152 "def track_results(episode, episode_reward,\n",
153 " rewards_ma, rewards_std,\n",
154 " episode_steps, episode_time,\n",
155 " epsilon):\n",
156 " time_ma = np.mean([episode_time[-100:]])\n",
157 " T = np.sum(episode_time)\n",
158 "\n",
159 " print('{:>4d} | Reward: {:>5.0f} | MA: {:>5.0f} | '\n",
160 " 'Steps: {:>4d} Time: {:>5.2f} | MA: {:>5.2f} | Total: {} | '\n",
161 " 'eps: {:>6.3f}'.format(episode,\n",
162 " episode_reward,\n",
163 " rewards_ma,\n",
164 " episode_steps[-1],\n",
165 " episode_time[-1],\n",
166 " time_ma,\n",
167 " format_time(T),\n",
168 " epsilon))"
169 ]
170 },
171 {
172 "cell_type": "markdown",
173 "metadata": {},
174 "source": [
175 "### Enable virtual display to run from docker container"
176 ]
177 },
178 {
179 "cell_type": "markdown",
180 "metadata": {},
181 "source": [
182 "This is only required if you run this on server that does not have a display."
183 ]
184 },
185 {
186 "cell_type": "code",
187 "execution_count": 4,
188 "metadata": {},
189 "outputs": [
190 {
191 "data": {
192 "text/plain": [
193 "<Display cmd_param=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '1400x900x24', ':1017'] cmd=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '1400x900x24', ':1017'] oserror=None return_code=None stdout=\"None\" stderr=\"None\" timeout_happened=False>"
194 ]
195 },
196 "execution_count": 4,
197 "metadata": {},
198 "output_type": "execute_result"
199 }
200 ],
201 "source": [
202 "from pyvirtualdisplay import Display\n",
203 "virtual_display = Display(visible=0, size=(1400, 900))\n",
204 "virtual_display.start()"
205 ]
206 },
207 {
208 "cell_type": "markdown",
209 "metadata": {},
210 "source": [
211 "## Set up Gym Environment"
212 ]
213 },
214 {
215 "cell_type": "markdown",
216 "metadata": {},
217 "source": [
218 "We will begin by instantiating and extracting key parameters from the LL environment:"
219 ]
220 },
221 {
222 "cell_type": "code",
223 "execution_count": 5,
224 "metadata": {},
225 "outputs": [
226 {
227 "data": {
228 "text/plain": [
229 "[42]"
230 ]
231 },
232 "execution_count": 5,
233 "metadata": {},
234 "output_type": "execute_result"
235 }
236 ],
237 "source": [
238 "env = gym.make('LunarLander-v2')\n",
239 "state_dim = env.observation_space.shape[0] # number of dimensions in state\n",
240 "n_actions = env.action_space.n # number of actions\n",
241 "max_episode_steps = env.spec.max_episode_steps # max number of steps per episode\n",
242 "env.seed(42)"
243 ]
244 },
245 {
246 "cell_type": "markdown",
247 "metadata": {},
248 "source": [
249 "### Define hyperparameters"
250 ]
251 },
252 {
253 "cell_type": "markdown",
254 "metadata": {},
255 "source": [
256 "The agent's performance is quite sensitive to several hyperparameters. We will start with the discount and learning rates:"
257 ]
258 },
259 {
260 "cell_type": "code",
261 "execution_count": null,
262 "metadata": {},
263 "outputs": [],
264 "source": [
265 "gamma=.99, # discount factor\n",
266 "learning_rate=5e-5 # learning rate"
267 ]
268 },
269 {
270 "cell_type": "markdown",
271 "metadata": {},
272 "source": [
273 "We will update the target network every 100 time steps, store up to 1 m past episodes in the replay memory, and sample mini-batches of 1,024 from memory to train the agent:"
274 ]
275 },
276 {
277 "cell_type": "code",
278 "execution_count": 14,
279 "metadata": {},
280 "outputs": [],
281 "source": [
282 "tau=100 # target network update frequency\n",
283 "replay_capacity=int(1e6)\n",
284 "minibatch_size=1024"
285 ]
286 },
287 {
288 "cell_type": "markdown",
289 "metadata": {},
290 "source": [
291 "The ε-greedy policy starts with pure exploration at ε=1, linear decay to 0.05 over 20,000 time steps, and exponential decay thereafter:"
292 ]
293 },
294 {
295 "cell_type": "code",
296 "execution_count": null,
297 "metadata": {},
298 "outputs": [],
299 "source": [
300 "epsilon_start=1.0\n",
301 "epsilon_end=0.05\n",
302 "epsilon_linear_steps=2e4\n",
303 "epsilon_exp_decay=0.99"
304 ]
305 },
306 {
307 "cell_type": "code",
308 "execution_count": 6,
309 "metadata": {},
310 "outputs": [],
311 "source": [
312 "\n",
313 "layers=(256,) * 3 # units per layer\n",
314 "\n",
315 "l2_reg=1e-6 # L2 regularization\n",
316 "\n",
317 "\n",
318 "\n",
319 "video_freq=50"
320 ]
321 },
322 {
323 "cell_type": "markdown",
324 "metadata": {},
325 "source": [
326 "## Create Neural Network"
327 ]
328 },
329 {
330 "cell_type": "markdown",
331 "metadata": {},
332 "source": [
333 "We will use [TensorFlow](https://www.tensorflow.org/) to create our Double Deep Q-Network ."
334 ]
335 },
336 {
337 "cell_type": "code",
338 "execution_count": null,
339 "metadata": {},
340 "outputs": [],
341 "source": [
342 "tf.reset_default_graph()"
343 ]
344 },
345 {
346 "cell_type": "markdown",
347 "metadata": {},
348 "source": [
349 "### Dense Layers"
350 ]
351 },
352 {
353 "cell_type": "markdown",
354 "metadata": {},
355 "source": [
356 "The `create_network` function generates the three dense layers that can be trained and/or reused as required by the Q network and its slower-moving target network:"
357 ]
358 },
359 {
360 "cell_type": "code",
361 "execution_count": 7,
362 "metadata": {},
363 "outputs": [],
364 "source": [
365 "def create_network(s, layers, trainable, reuse, n_actions=4):\n",
366 " \"\"\"Generate Q and target network with same structure\"\"\"\n",
367 " for layer, units in enumerate(layers):\n",
368 " x = tf.layers.dense(inputs=s if layer == 0 else x,\n",
369 " units=units,\n",
370 " activation=tf.nn.relu,\n",
371 " trainable=trainable,\n",
372 " reuse=reuse,\n",
373 " name='dense_{}'.format(layer))\n",
374 " return tf.squeeze(tf.layers.dense(inputs=x,\n",
375 " units=n_actions,\n",
376 " trainable=trainable,\n",
377 " reuse=reuse,\n",
378 " name='output'))"
379 ]
380 },
381 {
382 "cell_type": "markdown",
383 "metadata": {},
384 "source": [
385 "### Placeholders"
386 ]
387 },
388 {
389 "cell_type": "markdown",
390 "metadata": {},
391 "source": [
392 "Key elements of the DDQN's computational graph include placeholder variables for the state, action, and reward sequences:"
393 ]
394 },
395 {
396 "cell_type": "code",
397 "execution_count": 8,
398 "metadata": {},
399 "outputs": [],
400 "source": [
401 "state = tf.placeholder(dtype=tf.float32, shape=[None, state_dim]) # input to Q network\n",
402 "next_state = tf.placeholder(dtype=tf.float32, shape=[None, state_dim]) # input to target network\n",
403 "action = tf.placeholder(dtype=tf.int32, shape=[None]) # action indices (indices of Q network output)\n",
404 "reward = tf.placeholder(dtype=tf.float32, shape=[None]) # rewards for target computation\n",
405 "not_done = tf.placeholder(dtype=tf.float32, shape=[None]) # indicators for target computation"
406 ]
407 },
408 {
409 "cell_type": "markdown",
410 "metadata": {},
411 "source": [
412 "### Episode Counter"
413 ]
414 },
415 {
416 "cell_type": "markdown",
417 "metadata": {},
418 "source": [
419 "We add a variable to keep track of episodes:"
420 ]
421 },
422 {
423 "cell_type": "code",
424 "execution_count": null,
425 "metadata": {},
426 "outputs": [],
427 "source": [
428 "episode_count = tf.Variable(0.0, trainable=False, name='episode_count')\n",
429 "add_episode = episode_count.assign_add(1)"
430 ]
431 },
432 {
433 "cell_type": "markdown",
434 "metadata": {},
435 "source": [
436 "### Deep Q Networks"
437 ]
438 },
439 {
440 "cell_type": "markdown",
441 "metadata": {},
442 "source": [
443 "We will create two DQNs to predict q values for the current and next state, where we hold the weights for the second network that's fixed when predicting the next state:"
444 ]
445 },
446 {
447 "cell_type": "code",
448 "execution_count": null,
449 "metadata": {},
450 "outputs": [],
451 "source": [
452 "with tf.variable_scope('Q_Network'):\n",
453 " # Q network applied to current observation\n",
454 " q_action_values = create_network(state,\n",
455 " layers=layers,\n",
456 " trainable=True,\n",
457 " reuse=False)\n",
458 "\n",
459 " # Q network applied to next_observation\n",
460 " next_q_action_values = tf.stop_gradient(create_network(next_state,\n",
461 " layers=layers,\n",
462 " trainable=False,\n",
463 " reuse=True))"
464 ]
465 },
466 {
467 "cell_type": "markdown",
468 "metadata": {},
469 "source": [
470 "### Slow-Moving Target Network"
471 ]
472 },
473 {
474 "cell_type": "markdown",
475 "metadata": {},
476 "source": [
477 "In addition, we will create the target network that we update every tau periods:"
478 ]
479 },
480 {
481 "cell_type": "code",
482 "execution_count": null,
483 "metadata": {},
484 "outputs": [],
485 "source": [
486 "with tf.variable_scope('Target_Network', reuse=False):\n",
487 " target_action_values = tf.stop_gradient(create_network(next_state,\n",
488 " layers=layers,\n",
489 " trainable=False,\n",
490 " reuse=False))"
491 ]
492 },
493 {
494 "cell_type": "markdown",
495 "metadata": {},
496 "source": [
497 "### Collect Variables and Operations"
498 ]
499 },
500 {
501 "cell_type": "markdown",
502 "metadata": {},
503 "source": [
504 "To build TensorFlow's computational graph, we need to collect the relevant variables and operations:"
505 ]
506 },
507 {
508 "cell_type": "code",
509 "execution_count": null,
510 "metadata": {},
511 "outputs": [],
512 "source": [
513 "q_network_variables = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='Q_Network')\n",
514 "target_network_variables = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='Target_Network')\n",
515 "\n",
516 "# update target network weights\n",
517 "update_target_ops = []\n",
518 "for i, target_variable in enumerate(target_network_variables):\n",
519 " update_target_op = target_variable.assign(q_network_variables[i])\n",
520 " update_target_ops.append(update_target_op)\n",
521 "update_target_op = tf.group(*update_target_ops, name='update_target')"
522 ]
523 },
524 {
525 "cell_type": "markdown",
526 "metadata": {},
527 "source": [
528 "### Compute Q-Learning updates"
529 ]
530 },
531 {
532 "cell_type": "markdown",
533 "metadata": {},
534 "source": [
535 "The target, yi, and the predicted q value is computed as follows:"
536 ]
537 },
538 {
539 "cell_type": "code",
540 "execution_count": null,
541 "metadata": {},
542 "outputs": [],
543 "source": [
544 "# Q target calculation \n",
545 "targets = reward + not_done * gamma * tf.gather_nd(target_action_values, tf.stack(\n",
546 " (tf.range(minibatch_size), tf.cast(tf.argmax(next_q_action_values, axis=1), tf.int32)), axis=1))\n",
547 "\n",
548 "\n",
549 "# Estimated Q values for (s,a) from experience replay\n",
550 "predicted_q_value = tf.gather_nd(q_action_values,\n",
551 " tf.stack((tf.range(minibatch_size),\n",
552 " action), axis=1))"
553 ]
554 },
555 {
556 "cell_type": "markdown",
557 "metadata": {},
558 "source": [
559 "### Compute Loss Function"
560 ]
561 },
562 {
563 "cell_type": "markdown",
564 "metadata": {},
565 "source": [
566 "Finally, the TD loss function that's used for stochastic gradient descent is the mean squared error (MSE) between the target and prediction:"
567 ]
568 },
569 {
570 "cell_type": "code",
571 "execution_count": null,
572 "metadata": {},
573 "outputs": [],
574 "source": [
575 "losses = tf.squared_difference(targets, predicted_q_value)\n",
576 "loss = tf.reduce_mean(losses)\n",
577 "loss += tf.add_n([tf.nn.l2_loss(var) for var in q_network_variables if 'bias' not in var.name]) * l2_reg * 0.5"
578 ]
579 },
580 {
581 "cell_type": "markdown",
582 "metadata": {},
583 "source": [
584 "### Tensorboard summaries"
585 ]
586 },
587 {
588 "cell_type": "markdown",
589 "metadata": {},
590 "source": [
591 "To view results in [tensorboard](https://www.tensorflow.org/guide/summaries_and_tensorboard), we need to define summaries:"
592 ]
593 },
594 {
595 "cell_type": "code",
596 "execution_count": null,
597 "metadata": {},
598 "outputs": [],
599 "source": [
600 "summaries = tf.summary.merge([\n",
601 " tf.summary.scalar('episode', episode_count),\n",
602 " tf.summary.scalar('loss', loss),\n",
603 " tf.summary.scalar('max_q_value', tf.reduce_max(predicted_q_value)),\n",
604 " tf.summary.histogram('loss_hist', losses),\n",
605 " tf.summary.histogram('q_values', predicted_q_value)])"
606 ]
607 },
608 {
609 "cell_type": "markdown",
610 "metadata": {},
611 "source": [
612 "### Set optimizer"
613 ]
614 },
615 {
616 "cell_type": "markdown",
617 "metadata": {},
618 "source": [
619 "We'll use the [AdamOptimizer](https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer):"
620 ]
621 },
622 {
623 "cell_type": "code",
624 "execution_count": null,
625 "metadata": {},
626 "outputs": [],
627 "source": [
628 "train_op = tf.train.AdamOptimizer(learning_rate).minimize(loss,\n",
629 " global_step=tf.train.create_global_step())"
630 ]
631 },
632 {
633 "cell_type": "markdown",
634 "metadata": {},
635 "source": [
636 "### Initialize TensorFlow session"
637 ]
638 },
639 {
640 "cell_type": "code",
641 "execution_count": 9,
642 "metadata": {},
643 "outputs": [
644 {
645 "name": "stdout",
646 "output_type": "stream",
647 "text": [
648 "WARNING:tensorflow:From /home/stefan/.pyenv/versions/miniconda3-latest/envs/ml4t/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
649 "Instructions for updating:\n",
650 "Colocations handled automatically by placer.\n",
651 "WARNING:tensorflow:From <ipython-input-7-178a7f73e60f>:9: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
652 "Instructions for updating:\n",
653 "Use keras.layers.dense instead.\n",
654 "WARNING:tensorflow:From /home/stefan/.pyenv/versions/miniconda3-latest/envs/ml4t/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
655 "Instructions for updating:\n",
656 "Use tf.cast instead.\n"
657 ]
658 }
659 ],
660 "source": [
661 "sess = tf.Session()\n",
662 "sess.run(tf.global_variables_initializer())"
663 ]
664 },
665 {
666 "cell_type": "markdown",
667 "metadata": {},
668 "source": [
669 "## Run Experiment"
670 ]
671 },
672 {
673 "cell_type": "markdown",
674 "metadata": {},
675 "source": [
676 "### Set parameters"
677 ]
678 },
679 {
680 "cell_type": "code",
681 "execution_count": 10,
682 "metadata": {},
683 "outputs": [],
684 "source": [
685 "experiment = 1\n",
686 "train = True\n",
687 "total_steps, max_episodes = 0, 1000"
688 ]
689 },
690 {
691 "cell_type": "markdown",
692 "metadata": {},
693 "source": [
694 "### Initialize variables"
695 ]
696 },
697 {
698 "cell_type": "code",
699 "execution_count": 16,
700 "metadata": {},
701 "outputs": [],
702 "source": [
703 "experience = deque(maxlen=replay_capacity)\n",
704 "episode_time, episode_steps, episode_rewards, episode_eps = [], [], [], []"
705 ]
706 },
707 {
708 "cell_type": "code",
709 "execution_count": 14,
710 "metadata": {},
711 "outputs": [],
712 "source": [
713 "epsilon = epsilon_start\n",
714 "epsilon_linear_step = (epsilon_start - epsilon_end) / epsilon_linear_steps"
715 ]
716 },
717 {
718 "cell_type": "markdown",
719 "metadata": {},
720 "source": [
721 "### Set up directories"
722 ]
723 },
724 {
725 "cell_type": "code",
726 "execution_count": 17,
727 "metadata": {},
728 "outputs": [],
729 "source": [
730 "experiment_dir = Path('results')\n",
731 "monitor_path = experiment_dir / 'monitor'\n",
732 "checkpoint_dir = experiment_dir / 'checkpoints'\n",
733 "checkpoint_path = checkpoint_dir / 'model'\n",
734 "\n",
735 "for path in [checkpoint_path, monitor_path]:\n",
736 " if not path.exists():\n",
737 " path.mkdir(exist_ok=True, parents=True)"
738 ]
739 },
740 {
741 "cell_type": "markdown",
742 "metadata": {},
743 "source": [
744 "### Set up Tensorflow Logging"
745 ]
746 },
747 {
748 "cell_type": "code",
749 "execution_count": 12,
750 "metadata": {},
751 "outputs": [],
752 "source": [
753 "log_path = experiment_dir / 'tensorboard'\n",
754 "summary_writer = tf.summary.FileWriter(logdir=log_path / 'experiment_{}'.format(experiment))\n",
755 "\n",
756 "saver = tf.train.Saver()\n",
757 "if not train:\n",
758 " latest_checkpoint = tf.train.latest_checkpoint(checkpoint_dir.as_posix())\n",
759 " if latest_checkpoint:\n",
760 " saver.restore(sess, latest_checkpoint)"
761 ]
762 },
763 {
764 "cell_type": "markdown",
765 "metadata": {},
766 "source": [
767 "### Set up Gym Monitoring"
768 ]
769 },
770 {
771 "cell_type": "markdown",
772 "metadata": {},
773 "source": [
774 "We will also use the built-in wrappers that permit the periodic storing of videos that display the agent's performance:"
775 ]
776 },
777 {
778 "cell_type": "code",
779 "execution_count": null,
780 "metadata": {},
781 "outputs": [],
782 "source": [
783 "env = wrappers.Monitor(env,\n",
784 " directory=monitor_path.as_posix(),\n",
785 " video_callable=lambda count: count % video_freq == 0,\n",
786 " force=True)"
787 ]
788 },
789 {
790 "cell_type": "markdown",
791 "metadata": {},
792 "source": [
793 "### Run Training Loop"
794 ]
795 },
796 {
797 "cell_type": "code",
798 "execution_count": 15,
799 "metadata": {
800 "scrolled": false
801 },
802 "outputs": [
803 {
804 "name": "stderr",
805 "output_type": "stream",
806 "text": [
807 "/usr/local/lib/python3.5/dist-packages/numpy/core/fromnumeric.py:3118: RuntimeWarning: Mean of empty slice.\n",
808 " out=out, **kwargs)\n",
809 "/usr/local/lib/python3.5/dist-packages/numpy/core/_methods.py:85: RuntimeWarning: invalid value encountered in double_scalars\n",
810 " ret = ret.dtype.type(ret / rcount)\n"
811 ]
812 },
813 {
814 "name": "stdout",
815 "output_type": "stream",
816 "text": [
817 " 0 | Reward: -192 | MA: -192 | Steps: 106 Time: 1.28 | MA: 1.28 | Total: 00:01.28 | eps: 0.995\n",
818 " 1 | Reward: -194 | MA: -193 | Steps: 92 Time: 0.03 | MA: 0.65 | Total: 00:01.31 | eps: 0.991\n",
819 " 2 | Reward: -163 | MA: -183 | Steps: 121 Time: 0.13 | MA: 0.48 | Total: 00:01.44 | eps: 0.985\n",
820 " 3 | Reward: -126 | MA: -169 | Steps: 92 Time: 0.01 | MA: 0.36 | Total: 00:01.45 | eps: 0.980\n",
821 " 4 | Reward: -176 | MA: -170 | Steps: 100 Time: 0.01 | MA: 0.29 | Total: 00:01.46 | eps: 0.975\n",
822 " 5 | Reward: -208 | MA: -176 | Steps: 87 Time: 0.01 | MA: 0.25 | Total: 00:01.47 | eps: 0.971\n",
823 " 6 | Reward: -295 | MA: -193 | Steps: 119 Time: 0.02 | MA: 0.21 | Total: 00:01.49 | eps: 0.966\n",
824 " 7 | Reward: -140 | MA: -187 | Steps: 94 Time: 0.01 | MA: 0.19 | Total: 00:01.50 | eps: 0.961\n",
825 " 8 | Reward: -112 | MA: -178 | Steps: 70 Time: 0.01 | MA: 0.17 | Total: 00:01.51 | eps: 0.958\n",
826 " 9 | Reward: -395 | MA: -200 | Steps: 122 Time: 0.02 | MA: 0.15 | Total: 00:01.53 | eps: 0.952\n",
827 " 10 | Reward: -116 | MA: -192 | Steps: 63 Time: 0.25 | MA: 0.16 | Total: 00:01.78 | eps: 0.949\n",
828 " 11 | Reward: -63 | MA: -181 | Steps: 73 Time: 0.26 | MA: 0.17 | Total: 00:02.04 | eps: 0.945\n",
829 " 12 | Reward: -256 | MA: -187 | Steps: 142 Time: 0.39 | MA: 0.19 | Total: 00:02.43 | eps: 0.939\n",
830 " 13 | Reward: -372 | MA: -200 | Steps: 89 Time: 0.24 | MA: 0.19 | Total: 00:02.67 | eps: 0.934\n",
831 " 14 | Reward: -163 | MA: -198 | Steps: 87 Time: 0.29 | MA: 0.20 | Total: 00:02.96 | eps: 0.930\n",
832 " 15 | Reward: -224 | MA: -200 | Steps: 104 Time: 0.29 | MA: 0.20 | Total: 00:03.25 | eps: 0.925\n",
833 " 16 | Reward: -195 | MA: -199 | Steps: 130 Time: 0.37 | MA: 0.21 | Total: 00:03.62 | eps: 0.919\n",
834 " 17 | Reward: -239 | MA: -202 | Steps: 101 Time: 0.28 | MA: 0.22 | Total: 00:03.90 | eps: 0.914\n",
835 " 18 | Reward: -197 | MA: -201 | Steps: 82 Time: 0.27 | MA: 0.22 | Total: 00:04.17 | eps: 0.910\n",
836 " 19 | Reward: -283 | MA: -205 | Steps: 89 Time: 0.25 | MA: 0.22 | Total: 00:04.42 | eps: 0.906\n",
837 " 20 | Reward: -137 | MA: -202 | Steps: 84 Time: 0.23 | MA: 0.22 | Total: 00:04.65 | eps: 0.902\n",
838 " 21 | Reward: -71 | MA: -196 | Steps: 135 Time: 0.37 | MA: 0.23 | Total: 00:05.03 | eps: 0.895\n",
839 " 22 | Reward: -137 | MA: -194 | Steps: 94 Time: 0.31 | MA: 0.23 | Total: 00:05.34 | eps: 0.891\n",
840 " 23 | Reward: 20 | MA: -185 | Steps: 121 Time: 0.37 | MA: 0.24 | Total: 00:05.71 | eps: 0.885\n",
841 " 24 | Reward: -108 | MA: -182 | Steps: 75 Time: 0.25 | MA: 0.24 | Total: 00:05.96 | eps: 0.881\n",
842 " 25 | Reward: -325 | MA: -187 | Steps: 72 Time: 0.20 | MA: 0.24 | Total: 00:06.16 | eps: 0.878\n",
843 " 26 | Reward: -45 | MA: -182 | Steps: 68 Time: 0.19 | MA: 0.24 | Total: 00:06.35 | eps: 0.875\n",
844 " 27 | Reward: -305 | MA: -186 | Steps: 105 Time: 0.34 | MA: 0.24 | Total: 00:06.69 | eps: 0.870\n",
845 " 28 | Reward: -170 | MA: -186 | Steps: 123 Time: 0.35 | MA: 0.24 | Total: 00:07.04 | eps: 0.864\n",
846 " 29 | Reward: -137 | MA: -184 | Steps: 78 Time: 0.22 | MA: 0.24 | Total: 00:07.26 | eps: 0.860\n",
847 " 30 | Reward: -107 | MA: -182 | Steps: 111 Time: 0.36 | MA: 0.25 | Total: 00:07.62 | eps: 0.855\n",
848 " 31 | Reward: -312 | MA: -186 | Steps: 92 Time: 0.26 | MA: 0.25 | Total: 00:07.88 | eps: 0.850\n",
849 " 32 | Reward: -121 | MA: -184 | Steps: 77 Time: 0.22 | MA: 0.25 | Total: 00:08.10 | eps: 0.847\n",
850 " 33 | Reward: -147 | MA: -183 | Steps: 75 Time: 0.22 | MA: 0.24 | Total: 00:08.32 | eps: 0.843\n",
851 " 34 | Reward: -25 | MA: -178 | Steps: 77 Time: 0.22 | MA: 0.24 | Total: 00:08.54 | eps: 0.839\n",
852 " 35 | Reward: -83 | MA: -175 | Steps: 87 Time: 0.30 | MA: 0.25 | Total: 00:08.84 | eps: 0.835\n",
853 " 36 | Reward: -138 | MA: -174 | Steps: 86 Time: 0.25 | MA: 0.25 | Total: 00:09.09 | eps: 0.831\n",
854 " 37 | Reward: -135 | MA: -173 | Steps: 107 Time: 0.30 | MA: 0.25 | Total: 00:09.39 | eps: 0.826\n",
855 " 38 | Reward: -222 | MA: -175 | Steps: 112 Time: 0.32 | MA: 0.25 | Total: 00:09.71 | eps: 0.820\n",
856 " 39 | Reward: -136 | MA: -174 | Steps: 108 Time: 0.35 | MA: 0.25 | Total: 00:10.06 | eps: 0.815\n",
857 " 40 | Reward: -109 | MA: -172 | Steps: 64 Time: 0.18 | MA: 0.25 | Total: 00:10.24 | eps: 0.812\n",
858 " 41 | Reward: -113 | MA: -171 | Steps: 78 Time: 0.22 | MA: 0.25 | Total: 00:10.46 | eps: 0.808\n",
859 " 42 | Reward: -151 | MA: -170 | Steps: 112 Time: 0.33 | MA: 0.25 | Total: 00:10.79 | eps: 0.803\n",
860 " 43 | Reward: -62 | MA: -168 | Steps: 100 Time: 0.35 | MA: 0.25 | Total: 00:11.14 | eps: 0.798\n",
861 " 44 | Reward: -186 | MA: -168 | Steps: 108 Time: 0.33 | MA: 0.25 | Total: 00:11.47 | eps: 0.793\n",
862 " 45 | Reward: -83 | MA: -166 | Steps: 115 Time: 0.35 | MA: 0.26 | Total: 00:11.83 | eps: 0.788\n",
863 " 46 | Reward: -178 | MA: -167 | Steps: 118 Time: 0.36 | MA: 0.26 | Total: 00:12.19 | eps: 0.782\n",
864 " 47 | Reward: -103 | MA: -165 | Steps: 111 Time: 0.38 | MA: 0.26 | Total: 00:12.57 | eps: 0.777\n",
865 " 48 | Reward: -62 | MA: -163 | Steps: 78 Time: 0.24 | MA: 0.26 | Total: 00:12.81 | eps: 0.773\n",
866 " 49 | Reward: -6 | MA: -160 | Steps: 159 Time: 0.49 | MA: 0.27 | Total: 00:13.30 | eps: 0.765\n",
867 " 50 | Reward: -44 | MA: -158 | Steps: 109 Time: 1.19 | MA: 0.28 | Total: 00:14.49 | eps: 0.760\n",
868 " 51 | Reward: -44 | MA: -156 | Steps: 79 Time: 0.27 | MA: 0.28 | Total: 00:14.76 | eps: 0.756\n",
869 " 52 | Reward: -64 | MA: -154 | Steps: 60 Time: 0.18 | MA: 0.28 | Total: 00:14.94 | eps: 0.753\n",
870 " 53 | Reward: -62 | MA: -152 | Steps: 110 Time: 0.34 | MA: 0.28 | Total: 00:15.28 | eps: 0.748\n",
871 " 54 | Reward: -89 | MA: -151 | Steps: 135 Time: 0.46 | MA: 0.29 | Total: 00:15.74 | eps: 0.742\n",
872 " 55 | Reward: -160 | MA: -151 | Steps: 90 Time: 0.28 | MA: 0.29 | Total: 00:16.01 | eps: 0.737\n",
873 " 56 | Reward: -72 | MA: -150 | Steps: 140 Time: 0.43 | MA: 0.29 | Total: 00:16.44 | eps: 0.731\n",
874 " 57 | Reward: -88 | MA: -149 | Steps: 88 Time: 0.27 | MA: 0.29 | Total: 00:16.71 | eps: 0.726\n",
875 " 58 | Reward: -41 | MA: -147 | Steps: 94 Time: 0.34 | MA: 0.29 | Total: 00:17.05 | eps: 0.722\n",
876 " 59 | Reward: -55 | MA: -145 | Steps: 70 Time: 0.22 | MA: 0.29 | Total: 00:17.27 | eps: 0.718\n",
877 " 60 | Reward: -85 | MA: -144 | Steps: 110 Time: 0.34 | MA: 0.29 | Total: 00:17.61 | eps: 0.713\n",
878 " 61 | Reward: -54 | MA: -143 | Steps: 81 Time: 0.25 | MA: 0.29 | Total: 00:17.86 | eps: 0.709\n",
879 " 62 | Reward: 16 | MA: -140 | Steps: 158 Time: 0.54 | MA: 0.29 | Total: 00:18.40 | eps: 0.702\n",
880 " 63 | Reward: -113 | MA: -140 | Steps: 92 Time: 0.28 | MA: 0.29 | Total: 00:18.68 | eps: 0.697\n",
881 " 64 | Reward: -114 | MA: -140 | Steps: 102 Time: 0.32 | MA: 0.29 | Total: 00:19.00 | eps: 0.692\n",
882 " 65 | Reward: -216 | MA: -141 | Steps: 101 Time: 0.32 | MA: 0.29 | Total: 00:19.32 | eps: 0.688\n",
883 " 66 | Reward: -42 | MA: -139 | Steps: 87 Time: 0.32 | MA: 0.29 | Total: 00:19.64 | eps: 0.683\n",
884 " 67 | Reward: -55 | MA: -138 | Steps: 92 Time: 0.28 | MA: 0.29 | Total: 00:19.92 | eps: 0.679\n",
885 " 68 | Reward: -196 | MA: -139 | Steps: 123 Time: 0.38 | MA: 0.29 | Total: 00:20.30 | eps: 0.673\n",
886 " 69 | Reward: -24 | MA: -137 | Steps: 142 Time: 0.49 | MA: 0.30 | Total: 00:20.79 | eps: 0.666\n",
887 " 70 | Reward: -31 | MA: -136 | Steps: 125 Time: 0.39 | MA: 0.30 | Total: 00:21.17 | eps: 0.660\n",
888 " 71 | Reward: 21 | MA: -134 | Steps: 169 Time: 0.52 | MA: 0.30 | Total: 00:21.70 | eps: 0.652\n",
889 " 72 | Reward: -71 | MA: -133 | Steps: 99 Time: 0.36 | MA: 0.30 | Total: 00:22.06 | eps: 0.647\n",
890 " 73 | Reward: -24 | MA: -131 | Steps: 66 Time: 0.20 | MA: 0.30 | Total: 00:22.26 | eps: 0.644\n",
891 " 74 | Reward: -15 | MA: -130 | Steps: 144 Time: 0.45 | MA: 0.30 | Total: 00:22.71 | eps: 0.637\n",
892 " 75 | Reward: -12 | MA: -128 | Steps: 144 Time: 0.45 | MA: 0.30 | Total: 00:23.15 | eps: 0.630\n",
893 " 76 | Reward: -117 | MA: -128 | Steps: 167 Time: 0.58 | MA: 0.31 | Total: 00:23.73 | eps: 0.623\n",
894 " 77 | Reward: -31 | MA: -127 | Steps: 99 Time: 0.31 | MA: 0.31 | Total: 00:24.04 | eps: 0.618\n",
895 " 78 | Reward: -191 | MA: -128 | Steps: 203 Time: 0.69 | MA: 0.31 | Total: 00:24.73 | eps: 0.608\n",
896 " 79 | Reward: -44 | MA: -126 | Steps: 120 Time: 0.38 | MA: 0.31 | Total: 00:25.11 | eps: 0.602\n"
897 ]
898 },
899 {
900 "name": "stdout",
901 "output_type": "stream",
902 "text": [
903 " 80 | Reward: -75 | MA: -126 | Steps: 138 Time: 0.45 | MA: 0.32 | Total: 00:25.56 | eps: 0.596\n",
904 " 81 | Reward: -51 | MA: -125 | Steps: 133 Time: 0.48 | MA: 0.32 | Total: 00:26.04 | eps: 0.589\n",
905 " 82 | Reward: -55 | MA: -124 | Steps: 106 Time: 0.34 | MA: 0.32 | Total: 00:26.38 | eps: 0.584\n",
906 " 83 | Reward: -20 | MA: -123 | Steps: 103 Time: 0.34 | MA: 0.32 | Total: 00:26.72 | eps: 0.579\n",
907 " 84 | Reward: -113 | MA: -123 | Steps: 156 Time: 0.55 | MA: 0.32 | Total: 00:27.28 | eps: 0.572\n",
908 " 85 | Reward: -36 | MA: -122 | Steps: 122 Time: 0.40 | MA: 0.32 | Total: 00:27.68 | eps: 0.566\n",
909 " 86 | Reward: -4 | MA: -120 | Steps: 155 Time: 0.51 | MA: 0.32 | Total: 00:28.19 | eps: 0.559\n",
910 " 87 | Reward: -40 | MA: -119 | Steps: 111 Time: 0.41 | MA: 0.33 | Total: 00:28.60 | eps: 0.553\n",
911 " 88 | Reward: -40 | MA: -119 | Steps: 162 Time: 0.54 | MA: 0.33 | Total: 00:29.14 | eps: 0.546\n",
912 " 89 | Reward: -10 | MA: -117 | Steps: 176 Time: 0.58 | MA: 0.33 | Total: 00:29.72 | eps: 0.537\n",
913 " 90 | Reward: -5 | MA: -116 | Steps: 188 Time: 0.67 | MA: 0.33 | Total: 00:30.39 | eps: 0.528\n",
914 " 91 | Reward: -70 | MA: -116 | Steps: 141 Time: 0.46 | MA: 0.34 | Total: 00:30.85 | eps: 0.521\n",
915 " 92 | Reward: -30 | MA: -115 | Steps: 295 Time: 1.07 | MA: 0.34 | Total: 00:31.92 | eps: 0.507\n",
916 " 93 | Reward: -175 | MA: -115 | Steps: 199 Time: 0.67 | MA: 0.35 | Total: 00:32.59 | eps: 0.498\n",
917 " 94 | Reward: -127 | MA: -115 | Steps: 181 Time: 0.66 | MA: 0.35 | Total: 00:33.25 | eps: 0.489\n",
918 " 95 | Reward: 13 | MA: -114 | Steps: 146 Time: 0.49 | MA: 0.35 | Total: 00:33.75 | eps: 0.482\n",
919 " 96 | Reward: 3 | MA: -113 | Steps: 142 Time: 0.52 | MA: 0.35 | Total: 00:34.27 | eps: 0.475\n",
920 " 97 | Reward: -60 | MA: -112 | Steps: 144 Time: 0.49 | MA: 0.35 | Total: 00:34.76 | eps: 0.469\n",
921 " 98 | Reward: -20 | MA: -111 | Steps: 128 Time: 0.43 | MA: 0.36 | Total: 00:35.19 | eps: 0.462\n",
922 " 99 | Reward: -71 | MA: -111 | Steps: 309 Time: 1.12 | MA: 0.36 | Total: 00:36.31 | eps: 0.448\n",
923 " 100 | Reward: 31 | MA: -109 | Steps: 188 Time: 1.94 | MA: 0.37 | Total: 00:38.25 | eps: 0.439\n",
924 " 101 | Reward: -189 | MA: -109 | Steps: 195 Time: 0.69 | MA: 0.38 | Total: 00:38.94 | eps: 0.429\n",
925 " 102 | Reward: -15 | MA: -107 | Steps: 96 Time: 0.33 | MA: 0.38 | Total: 00:39.27 | eps: 0.425\n",
926 " 103 | Reward: -12 | MA: -106 | Steps: 116 Time: 0.45 | MA: 0.38 | Total: 00:39.73 | eps: 0.419\n",
927 " 104 | Reward: -183 | MA: -106 | Steps: 253 Time: 0.88 | MA: 0.39 | Total: 00:40.60 | eps: 0.407\n",
928 " 105 | Reward: 19 | MA: -104 | Steps: 999 Time: 4.12 | MA: 0.43 | Total: 00:44.72 | eps: 0.360\n",
929 " 106 | Reward: -81 | MA: -102 | Steps: 178 Time: 0.63 | MA: 0.44 | Total: 00:45.35 | eps: 0.351\n",
930 " 107 | Reward: -116 | MA: -102 | Steps: 453 Time: 1.81 | MA: 0.46 | Total: 00:47.16 | eps: 0.330\n",
931 " 108 | Reward: 129 | MA: -99 | Steps: 999 Time: 4.19 | MA: 0.50 | Total: 00:51.35 | eps: 0.282\n",
932 " 109 | Reward: -105 | MA: -96 | Steps: 282 Time: 1.03 | MA: 0.51 | Total: 00:52.37 | eps: 0.269\n",
933 " 110 | Reward: -181 | MA: -97 | Steps: 612 Time: 2.42 | MA: 0.53 | Total: 00:54.80 | eps: 0.240\n",
934 " 111 | Reward: 177 | MA: -95 | Steps: 320 Time: 1.23 | MA: 0.54 | Total: 00:56.03 | eps: 0.224\n",
935 " 112 | Reward: -79 | MA: -93 | Steps: 999 Time: 4.16 | MA: 0.58 | Total: 01:00.19 | eps: 0.177\n",
936 " 113 | Reward: -99 | MA: -90 | Steps: 999 Time: 4.40 | MA: 0.62 | Total: 01:04.58 | eps: 0.129\n",
937 " 114 | Reward: -43 | MA: -89 | Steps: 999 Time: 4.33 | MA: 0.66 | Total: 01:08.91 | eps: 0.082\n",
938 " 115 | Reward: -35 | MA: -87 | Steps: 999 Time: 4.63 | MA: 0.70 | Total: 01:13.54 | eps: 0.050\n",
939 " 116 | Reward: -23 | MA: -85 | Steps: 999 Time: 4.64 | MA: 0.75 | Total: 01:18.18 | eps: 0.049\n",
940 " 117 | Reward: -41 | MA: -83 | Steps: 999 Time: 4.72 | MA: 0.79 | Total: 01:22.90 | eps: 0.049\n",
941 " 118 | Reward: -75 | MA: -82 | Steps: 999 Time: 4.66 | MA: 0.83 | Total: 01:27.56 | eps: 0.048\n",
942 " 119 | Reward: -25 | MA: -79 | Steps: 999 Time: 4.82 | MA: 0.88 | Total: 01:32.38 | eps: 0.048\n",
943 " 120 | Reward: -44 | MA: -79 | Steps: 999 Time: 5.12 | MA: 0.93 | Total: 01:37.51 | eps: 0.047\n",
944 " 121 | Reward: -37 | MA: -78 | Steps: 999 Time: 5.00 | MA: 0.97 | Total: 01:42.51 | eps: 0.047\n",
945 " 122 | Reward: -0 | MA: -77 | Steps: 278 Time: 1.15 | MA: 0.98 | Total: 01:43.66 | eps: 0.046\n",
946 " 123 | Reward: 89 | MA: -76 | Steps: 999 Time: 5.00 | MA: 1.03 | Total: 01:48.66 | eps: 0.046\n",
947 " 124 | Reward: -17 | MA: -75 | Steps: 269 Time: 1.06 | MA: 1.04 | Total: 01:49.72 | eps: 0.045\n",
948 " 125 | Reward: 161 | MA: -70 | Steps: 999 Time: 4.44 | MA: 1.08 | Total: 01:54.16 | eps: 0.045\n",
949 " 126 | Reward: -9 | MA: -70 | Steps: 341 Time: 1.43 | MA: 1.09 | Total: 01:55.58 | eps: 0.044\n",
950 " 127 | Reward: 138 | MA: -66 | Steps: 999 Time: 4.63 | MA: 1.14 | Total: 02:00.22 | eps: 0.044\n",
951 " 128 | Reward: 113 | MA: -63 | Steps: 999 Time: 4.63 | MA: 1.18 | Total: 02:04.85 | eps: 0.043\n",
952 " 129 | Reward: 224 | MA: -59 | Steps: 385 Time: 1.67 | MA: 1.19 | Total: 02:06.52 | eps: 0.043\n",
953 " 130 | Reward: -20 | MA: -58 | Steps: 462 Time: 2.00 | MA: 1.21 | Total: 02:08.52 | eps: 0.043\n",
954 " 131 | Reward: 205 | MA: -53 | Steps: 389 Time: 1.64 | MA: 1.22 | Total: 02:10.16 | eps: 0.042\n",
955 " 132 | Reward: 223 | MA: -50 | Steps: 640 Time: 2.91 | MA: 1.25 | Total: 02:13.06 | eps: 0.042\n",
956 " 133 | Reward: -73 | MA: -49 | Steps: 999 Time: 4.68 | MA: 1.29 | Total: 02:17.75 | eps: 0.041\n",
957 " 134 | Reward: -21 | MA: -49 | Steps: 534 Time: 2.40 | MA: 1.32 | Total: 02:20.14 | eps: 0.041\n",
958 " 135 | Reward: -57 | MA: -49 | Steps: 999 Time: 4.86 | MA: 1.36 | Total: 02:25.00 | eps: 0.041\n",
959 " 136 | Reward: 225 | MA: -45 | Steps: 581 Time: 3.02 | MA: 1.39 | Total: 02:28.02 | eps: 0.040\n",
960 " 137 | Reward: -61 | MA: -44 | Steps: 999 Time: 4.84 | MA: 1.43 | Total: 02:32.87 | eps: 0.040\n",
961 " 138 | Reward: -79 | MA: -43 | Steps: 999 Time: 5.56 | MA: 1.49 | Total: 02:38.42 | eps: 0.039\n",
962 " 139 | Reward: -20 | MA: -42 | Steps: 999 Time: 5.32 | MA: 1.54 | Total: 02:43.75 | eps: 0.039\n",
963 " 140 | Reward: -26 | MA: -41 | Steps: 999 Time: 4.98 | MA: 1.58 | Total: 02:48.73 | eps: 0.039\n",
964 " 141 | Reward: 1 | MA: -40 | Steps: 999 Time: 5.53 | MA: 1.64 | Total: 02:54.26 | eps: 0.038\n",
965 " 142 | Reward: 223 | MA: -36 | Steps: 471 Time: 2.24 | MA: 1.66 | Total: 02:56.50 | eps: 0.038\n",
966 " 143 | Reward: 141 | MA: -34 | Steps: 994 Time: 4.73 | MA: 1.70 | Total: 03:01.23 | eps: 0.037\n",
967 " 144 | Reward: 125 | MA: -31 | Steps: 999 Time: 4.96 | MA: 1.75 | Total: 03:06.19 | eps: 0.037\n",
968 " 145 | Reward: 26 | MA: -30 | Steps: 999 Time: 5.35 | MA: 1.80 | Total: 03:11.54 | eps: 0.037\n",
969 " 146 | Reward: 53 | MA: -27 | Steps: 999 Time: 5.34 | MA: 1.85 | Total: 03:16.88 | eps: 0.036\n",
970 " 147 | Reward: 158 | MA: -25 | Steps: 889 Time: 4.50 | MA: 1.89 | Total: 03:21.38 | eps: 0.036\n",
971 " 148 | Reward: 122 | MA: -23 | Steps: 999 Time: 5.68 | MA: 1.94 | Total: 03:27.06 | eps: 0.036\n",
972 " 149 | Reward: -109 | MA: -24 | Steps: 342 Time: 1.67 | MA: 1.95 | Total: 03:28.73 | eps: 0.035\n",
973 " 150 | Reward: 208 | MA: -21 | Steps: 852 Time: 9.43 | MA: 2.04 | Total: 03:38.16 | eps: 0.035\n",
974 " 151 | Reward: 139 | MA: -20 | Steps: 777 Time: 4.48 | MA: 2.08 | Total: 03:42.64 | eps: 0.035\n",
975 " 152 | Reward: 60 | MA: -18 | Steps: 999 Time: 5.82 | MA: 2.14 | Total: 03:48.46 | eps: 0.034\n",
976 " 153 | Reward: 61 | MA: -17 | Steps: 999 Time: 6.37 | MA: 2.20 | Total: 03:54.83 | eps: 0.034\n",
977 " 154 | Reward: -44 | MA: -17 | Steps: 702 Time: 3.80 | MA: 2.23 | Total: 03:58.63 | eps: 0.033\n",
978 " 155 | Reward: 178 | MA: -13 | Steps: 641 Time: 3.74 | MA: 2.26 | Total: 04:02.37 | eps: 0.033\n",
979 " 156 | Reward: -63 | MA: -13 | Steps: 421 Time: 2.27 | MA: 2.28 | Total: 04:04.64 | eps: 0.033\n",
980 " 157 | Reward: 228 | MA: -10 | Steps: 352 Time: 1.75 | MA: 2.30 | Total: 04:06.38 | eps: 0.032\n",
981 " 158 | Reward: -67 | MA: -10 | Steps: 432 Time: 2.17 | MA: 2.32 | Total: 04:08.56 | eps: 0.032\n",
982 " 159 | Reward: -68 | MA: -10 | Steps: 739 Time: 3.70 | MA: 2.35 | Total: 04:12.25 | eps: 0.032\n"
983 ]
984 },
985 {
986 "name": "stdout",
987 "output_type": "stream",
988 "text": [
989 " 160 | Reward: 186 | MA: -8 | Steps: 600 Time: 3.30 | MA: 2.38 | Total: 04:15.56 | eps: 0.032\n",
990 " 161 | Reward: 76 | MA: -6 | Steps: 999 Time: 5.44 | MA: 2.43 | Total: 04:21.00 | eps: 0.031\n",
991 " 162 | Reward: 43 | MA: -6 | Steps: 999 Time: 5.56 | MA: 2.48 | Total: 04:26.56 | eps: 0.031\n",
992 " 163 | Reward: 174 | MA: -3 | Steps: 593 Time: 2.95 | MA: 2.51 | Total: 04:29.51 | eps: 0.031\n",
993 " 164 | Reward: 41 | MA: -2 | Steps: 999 Time: 5.64 | MA: 2.56 | Total: 04:35.14 | eps: 0.030\n",
994 " 165 | Reward: 169 | MA: 2 | Steps: 648 Time: 3.37 | MA: 2.59 | Total: 04:38.51 | eps: 0.030\n",
995 " 166 | Reward: 9 | MA: 3 | Steps: 999 Time: 5.37 | MA: 2.64 | Total: 04:43.88 | eps: 0.030\n",
996 " 167 | Reward: 94 | MA: 4 | Steps: 999 Time: 6.05 | MA: 2.70 | Total: 04:49.93 | eps: 0.029\n",
997 " 168 | Reward: -20 | MA: 6 | Steps: 999 Time: 5.13 | MA: 2.75 | Total: 04:55.05 | eps: 0.029\n",
998 " 169 | Reward: -68 | MA: 5 | Steps: 999 Time: 5.15 | MA: 2.79 | Total: 05:00.20 | eps: 0.029\n",
999 " 170 | Reward: -25 | MA: 6 | Steps: 999 Time: 5.51 | MA: 2.85 | Total: 05:05.71 | eps: 0.029\n",
1000 " 171 | Reward: 24 | MA: 6 | Steps: 999 Time: 5.30 | MA: 2.89 | Total: 05:11.01 | eps: 0.028\n",
1001 " 172 | Reward: 275 | MA: 9 | Steps: 327 Time: 1.73 | MA: 2.91 | Total: 05:12.74 | eps: 0.028\n",
1002 " 173 | Reward: 228 | MA: 12 | Steps: 761 Time: 4.40 | MA: 2.95 | Total: 05:17.14 | eps: 0.028\n",
1003 " 174 | Reward: 149 | MA: 13 | Steps: 999 Time: 5.41 | MA: 3.00 | Total: 05:22.56 | eps: 0.027\n",
1004 " 175 | Reward: 28 | MA: 14 | Steps: 999 Time: 5.56 | MA: 3.05 | Total: 05:28.11 | eps: 0.027\n",
1005 " 176 | Reward: 110 | MA: 16 | Steps: 999 Time: 5.50 | MA: 3.10 | Total: 05:33.62 | eps: 0.027\n",
1006 " 177 | Reward: 128 | MA: 17 | Steps: 999 Time: 5.79 | MA: 3.15 | Total: 05:39.41 | eps: 0.027\n",
1007 " 178 | Reward: 141 | MA: 21 | Steps: 842 Time: 4.96 | MA: 3.20 | Total: 05:44.37 | eps: 0.026\n",
1008 " 179 | Reward: 121 | MA: 22 | Steps: 999 Time: 5.98 | MA: 3.25 | Total: 05:50.36 | eps: 0.026\n",
1009 " 180 | Reward: 152 | MA: 25 | Steps: 999 Time: 5.65 | MA: 3.30 | Total: 05:56.00 | eps: 0.026\n",
1010 " 181 | Reward: 245 | MA: 28 | Steps: 613 Time: 3.42 | MA: 3.33 | Total: 05:59.42 | eps: 0.026\n",
1011 " 182 | Reward: 142 | MA: 30 | Steps: 999 Time: 5.74 | MA: 3.39 | Total: 06:05.16 | eps: 0.025\n",
1012 " 183 | Reward: 199 | MA: 32 | Steps: 450 Time: 2.48 | MA: 3.41 | Total: 06:07.64 | eps: 0.025\n",
1013 " 184 | Reward: 106 | MA: 34 | Steps: 999 Time: 6.00 | MA: 3.46 | Total: 06:13.64 | eps: 0.025\n",
1014 " 185 | Reward: 118 | MA: 36 | Steps: 999 Time: 5.92 | MA: 3.52 | Total: 06:19.55 | eps: 0.025\n",
1015 " 186 | Reward: 75 | MA: 36 | Steps: 999 Time: 5.86 | MA: 3.57 | Total: 06:25.41 | eps: 0.024\n",
1016 " 187 | Reward: 91 | MA: 38 | Steps: 999 Time: 6.49 | MA: 3.63 | Total: 06:31.90 | eps: 0.024\n",
1017 " 188 | Reward: 239 | MA: 40 | Steps: 552 Time: 3.31 | MA: 3.66 | Total: 06:35.21 | eps: 0.024\n",
1018 " 189 | Reward: 151 | MA: 42 | Steps: 999 Time: 6.20 | MA: 3.72 | Total: 06:41.41 | eps: 0.024\n",
1019 " 190 | Reward: 128 | MA: 43 | Steps: 999 Time: 6.52 | MA: 3.78 | Total: 06:47.92 | eps: 0.023\n",
1020 " 191 | Reward: 142 | MA: 45 | Steps: 999 Time: 6.88 | MA: 3.84 | Total: 06:54.81 | eps: 0.023\n",
1021 " 192 | Reward: 135 | MA: 47 | Steps: 999 Time: 6.44 | MA: 3.89 | Total: 07:01.25 | eps: 0.023\n",
1022 " 193 | Reward: 157 | MA: 50 | Steps: 999 Time: 6.55 | MA: 3.95 | Total: 07:07.80 | eps: 0.023\n",
1023 " 194 | Reward: 100 | MA: 53 | Steps: 999 Time: 6.26 | MA: 4.01 | Total: 07:14.07 | eps: 0.022\n",
1024 " 195 | Reward: 125 | MA: 54 | Steps: 999 Time: 6.77 | MA: 4.07 | Total: 07:20.84 | eps: 0.022\n",
1025 " 196 | Reward: 109 | MA: 55 | Steps: 999 Time: 6.97 | MA: 4.14 | Total: 07:27.81 | eps: 0.022\n",
1026 " 197 | Reward: 122 | MA: 57 | Steps: 999 Time: 6.83 | MA: 4.20 | Total: 07:34.64 | eps: 0.022\n",
1027 " 198 | Reward: 219 | MA: 59 | Steps: 825 Time: 5.48 | MA: 4.25 | Total: 07:40.12 | eps: 0.022\n",
1028 " 199 | Reward: 165 | MA: 61 | Steps: 999 Time: 6.45 | MA: 4.30 | Total: 07:46.57 | eps: 0.021\n",
1029 " 200 | Reward: 118 | MA: 62 | Steps: 999 Time: 12.55 | MA: 4.41 | Total: 07:59.13 | eps: 0.021\n",
1030 " 201 | Reward: 148 | MA: 66 | Steps: 999 Time: 6.87 | MA: 4.47 | Total: 08:05.99 | eps: 0.021\n",
1031 " 202 | Reward: 127 | MA: 67 | Steps: 999 Time: 6.80 | MA: 4.54 | Total: 08:12.80 | eps: 0.021\n",
1032 " 203 | Reward: 126 | MA: 68 | Steps: 999 Time: 6.96 | MA: 4.60 | Total: 08:19.76 | eps: 0.020\n",
1033 " 204 | Reward: 162 | MA: 72 | Steps: 999 Time: 6.60 | MA: 4.66 | Total: 08:26.36 | eps: 0.020\n",
1034 " 205 | Reward: 83 | MA: 73 | Steps: 999 Time: 6.62 | MA: 4.68 | Total: 08:32.98 | eps: 0.020\n",
1035 " 206 | Reward: 231 | MA: 76 | Steps: 706 Time: 5.00 | MA: 4.73 | Total: 08:37.98 | eps: 0.020\n",
1036 " 207 | Reward: 252 | MA: 79 | Steps: 355 Time: 2.34 | MA: 4.73 | Total: 08:40.33 | eps: 0.020\n",
1037 " 208 | Reward: 72 | MA: 79 | Steps: 999 Time: 6.71 | MA: 4.76 | Total: 08:47.04 | eps: 0.019\n",
1038 " 209 | Reward: 182 | MA: 82 | Steps: 999 Time: 7.10 | MA: 4.82 | Total: 08:54.14 | eps: 0.019\n",
1039 " 210 | Reward: -23 | MA: 83 | Steps: 438 Time: 3.00 | MA: 4.82 | Total: 08:57.14 | eps: 0.019\n",
1040 " 211 | Reward: 133 | MA: 83 | Steps: 999 Time: 7.23 | MA: 4.88 | Total: 09:04.36 | eps: 0.019\n",
1041 " 212 | Reward: 140 | MA: 85 | Steps: 999 Time: 7.24 | MA: 4.91 | Total: 09:11.61 | eps: 0.019\n",
1042 " 213 | Reward: 139 | MA: 87 | Steps: 999 Time: 6.78 | MA: 4.94 | Total: 09:18.39 | eps: 0.019\n",
1043 " 214 | Reward: 125 | MA: 89 | Steps: 999 Time: 7.19 | MA: 4.97 | Total: 09:25.57 | eps: 0.018\n",
1044 " 215 | Reward: 174 | MA: 91 | Steps: 999 Time: 7.59 | MA: 5.00 | Total: 09:33.16 | eps: 0.018\n",
1045 " 216 | Reward: 132 | MA: 93 | Steps: 999 Time: 7.09 | MA: 5.02 | Total: 09:40.25 | eps: 0.018\n",
1046 " 217 | Reward: 125 | MA: 94 | Steps: 999 Time: 7.25 | MA: 5.05 | Total: 09:47.50 | eps: 0.018\n",
1047 " 218 | Reward: 134 | MA: 96 | Steps: 999 Time: 7.59 | MA: 5.08 | Total: 09:55.09 | eps: 0.018\n",
1048 " 219 | Reward: 102 | MA: 98 | Steps: 999 Time: 6.82 | MA: 5.10 | Total: 10:01.91 | eps: 0.017\n",
1049 " 220 | Reward: 128 | MA: 99 | Steps: 999 Time: 6.95 | MA: 5.11 | Total: 10:08.86 | eps: 0.017\n",
1050 " 221 | Reward: 118 | MA: 101 | Steps: 999 Time: 6.92 | MA: 5.13 | Total: 10:15.78 | eps: 0.017\n",
1051 " 222 | Reward: 130 | MA: 102 | Steps: 999 Time: 7.08 | MA: 5.19 | Total: 10:22.86 | eps: 0.017\n",
1052 " 223 | Reward: 118 | MA: 103 | Steps: 999 Time: 7.07 | MA: 5.21 | Total: 10:29.94 | eps: 0.017\n",
1053 " 224 | Reward: 156 | MA: 104 | Steps: 999 Time: 6.99 | MA: 5.27 | Total: 10:36.93 | eps: 0.017\n",
1054 " 225 | Reward: 232 | MA: 105 | Steps: 857 Time: 6.28 | MA: 5.29 | Total: 10:43.21 | eps: 0.016\n",
1055 " 226 | Reward: 147 | MA: 107 | Steps: 999 Time: 7.17 | MA: 5.35 | Total: 10:50.38 | eps: 0.016\n",
1056 " 227 | Reward: 152 | MA: 107 | Steps: 999 Time: 7.50 | MA: 5.38 | Total: 10:57.87 | eps: 0.016\n",
1057 " 228 | Reward: 113 | MA: 107 | Steps: 999 Time: 7.07 | MA: 5.40 | Total: 11:04.94 | eps: 0.016\n",
1058 " 229 | Reward: 233 | MA: 107 | Steps: 952 Time: 6.45 | MA: 5.45 | Total: 11:11.40 | eps: 0.016\n",
1059 " 230 | Reward: 233 | MA: 109 | Steps: 323 Time: 2.12 | MA: 5.45 | Total: 11:13.51 | eps: 0.016\n",
1060 " 231 | Reward: 172 | MA: 109 | Steps: 999 Time: 6.97 | MA: 5.50 | Total: 11:20.48 | eps: 0.015\n",
1061 " 232 | Reward: 110 | MA: 108 | Steps: 999 Time: 7.27 | MA: 5.55 | Total: 11:27.75 | eps: 0.015\n",
1062 " 233 | Reward: 173 | MA: 110 | Steps: 999 Time: 7.01 | MA: 5.57 | Total: 11:34.76 | eps: 0.015\n",
1063 " 234 | Reward: 143 | MA: 112 | Steps: 999 Time: 7.21 | MA: 5.62 | Total: 11:41.97 | eps: 0.015\n",
1064 " 235 | Reward: 239 | MA: 115 | Steps: 419 Time: 2.81 | MA: 5.60 | Total: 11:44.78 | eps: 0.015\n",
1065 " 236 | Reward: 225 | MA: 115 | Steps: 517 Time: 3.53 | MA: 5.60 | Total: 11:48.32 | eps: 0.015\n",
1066 " 237 | Reward: 224 | MA: 118 | Steps: 530 Time: 3.96 | MA: 5.59 | Total: 11:52.28 | eps: 0.015\n",
1067 " 238 | Reward: 158 | MA: 120 | Steps: 999 Time: 7.45 | MA: 5.61 | Total: 11:59.73 | eps: 0.014\n",
1068 " 239 | Reward: 296 | MA: 123 | Steps: 435 Time: 3.04 | MA: 5.59 | Total: 12:02.77 | eps: 0.014\n"
1069 ]
1070 },
1071 {
1072 "name": "stdout",
1073 "output_type": "stream",
1074 "text": [
1075 " 240 | Reward: 222 | MA: 126 | Steps: 344 Time: 2.33 | MA: 5.56 | Total: 12:05.10 | eps: 0.014\n",
1076 " 241 | Reward: 268 | MA: 128 | Steps: 290 Time: 1.98 | MA: 5.53 | Total: 12:07.09 | eps: 0.014\n",
1077 " 242 | Reward: 247 | MA: 129 | Steps: 455 Time: 3.13 | MA: 5.54 | Total: 12:10.22 | eps: 0.014\n",
1078 " 243 | Reward: 241 | MA: 130 | Steps: 368 Time: 2.53 | MA: 5.52 | Total: 12:12.74 | eps: 0.014\n",
1079 " 244 | Reward: 268 | MA: 131 | Steps: 351 Time: 2.40 | MA: 5.49 | Total: 12:15.14 | eps: 0.014\n",
1080 " 245 | Reward: 285 | MA: 134 | Steps: 542 Time: 3.88 | MA: 5.47 | Total: 12:19.02 | eps: 0.013\n",
1081 " 246 | Reward: -64 | MA: 133 | Steps: 379 Time: 2.62 | MA: 5.45 | Total: 12:21.64 | eps: 0.013\n",
1082 " 247 | Reward: 228 | MA: 133 | Steps: 464 Time: 3.32 | MA: 5.44 | Total: 12:24.96 | eps: 0.013\n",
1083 " 248 | Reward: 237 | MA: 134 | Steps: 346 Time: 2.38 | MA: 5.40 | Total: 12:27.34 | eps: 0.013\n",
1084 " 249 | Reward: 275 | MA: 138 | Steps: 493 Time: 3.44 | MA: 5.42 | Total: 12:30.78 | eps: 0.013\n",
1085 " 250 | Reward: 206 | MA: 138 | Steps: 311 Time: 4.14 | MA: 5.37 | Total: 12:34.92 | eps: 0.013\n",
1086 " 251 | Reward: 167 | MA: 138 | Steps: 999 Time: 7.45 | MA: 5.40 | Total: 12:42.37 | eps: 0.013\n",
1087 " 252 | Reward: 268 | MA: 141 | Steps: 259 Time: 1.84 | MA: 5.36 | Total: 12:44.20 | eps: 0.013\n",
1088 " 253 | Reward: 242 | MA: 142 | Steps: 553 Time: 4.13 | MA: 5.34 | Total: 12:48.34 | eps: 0.012\n",
1089 " 254 | Reward: 286 | MA: 146 | Steps: 243 Time: 1.75 | MA: 5.31 | Total: 12:50.08 | eps: 0.012\n",
1090 " 255 | Reward: 256 | MA: 146 | Steps: 499 Time: 3.67 | MA: 5.31 | Total: 12:53.75 | eps: 0.012\n",
1091 " 256 | Reward: 260 | MA: 150 | Steps: 327 Time: 2.57 | MA: 5.32 | Total: 12:56.32 | eps: 0.012\n",
1092 " 257 | Reward: 276 | MA: 150 | Steps: 371 Time: 2.96 | MA: 5.33 | Total: 12:59.28 | eps: 0.012\n",
1093 " 258 | Reward: 257 | MA: 153 | Steps: 368 Time: 2.84 | MA: 5.34 | Total: 13:02.13 | eps: 0.012\n",
1094 " 259 | Reward: 244 | MA: 157 | Steps: 329 Time: 2.43 | MA: 5.32 | Total: 13:04.56 | eps: 0.012\n",
1095 " 260 | Reward: 281 | MA: 157 | Steps: 291 Time: 2.06 | MA: 5.31 | Total: 13:06.62 | eps: 0.012\n",
1096 " 261 | Reward: 254 | MA: 159 | Steps: 342 Time: 2.51 | MA: 5.28 | Total: 13:09.13 | eps: 0.011\n",
1097 " 262 | Reward: 223 | MA: 161 | Steps: 306 Time: 2.20 | MA: 5.25 | Total: 13:11.34 | eps: 0.011\n",
1098 " 263 | Reward: 270 | MA: 162 | Steps: 298 Time: 2.17 | MA: 5.24 | Total: 13:13.50 | eps: 0.011\n",
1099 " 264 | Reward: 235 | MA: 164 | Steps: 302 Time: 2.18 | MA: 5.21 | Total: 13:15.68 | eps: 0.011\n",
1100 " 265 | Reward: 276 | MA: 165 | Steps: 244 Time: 1.79 | MA: 5.19 | Total: 13:17.47 | eps: 0.011\n",
1101 " 266 | Reward: 246 | MA: 167 | Steps: 495 Time: 3.64 | MA: 5.17 | Total: 13:21.11 | eps: 0.011\n",
1102 " 267 | Reward: 251 | MA: 169 | Steps: 299 Time: 2.21 | MA: 5.13 | Total: 13:23.32 | eps: 0.011\n",
1103 " 268 | Reward: 278 | MA: 172 | Steps: 347 Time: 2.56 | MA: 5.11 | Total: 13:25.87 | eps: 0.011\n",
1104 " 269 | Reward: 294 | MA: 176 | Steps: 272 Time: 1.97 | MA: 5.08 | Total: 13:27.85 | eps: 0.011\n",
1105 " 270 | Reward: 246 | MA: 178 | Steps: 374 Time: 2.86 | MA: 5.05 | Total: 13:30.71 | eps: 0.010\n",
1106 " 271 | Reward: 227 | MA: 180 | Steps: 298 Time: 2.23 | MA: 5.02 | Total: 13:32.94 | eps: 0.010\n",
1107 " 272 | Reward: 254 | MA: 180 | Steps: 411 Time: 3.11 | MA: 5.03 | Total: 13:36.05 | eps: 0.010\n",
1108 " 273 | Reward: 229 | MA: 180 | Steps: 297 Time: 2.25 | MA: 5.01 | Total: 13:38.30 | eps: 0.010\n",
1109 " 274 | Reward: 225 | MA: 181 | Steps: 463 Time: 3.53 | MA: 4.99 | Total: 13:41.83 | eps: 0.010\n",
1110 " 275 | Reward: 282 | MA: 183 | Steps: 350 Time: 2.57 | MA: 4.96 | Total: 13:44.39 | eps: 0.010\n",
1111 " 276 | Reward: 254 | MA: 185 | Steps: 379 Time: 2.89 | MA: 4.94 | Total: 13:47.28 | eps: 0.010\n",
1112 " 277 | Reward: 235 | MA: 186 | Steps: 361 Time: 2.77 | MA: 4.91 | Total: 13:50.05 | eps: 0.010\n",
1113 " 278 | Reward: 244 | MA: 187 | Steps: 387 Time: 2.97 | MA: 4.89 | Total: 13:53.02 | eps: 0.010\n",
1114 " 279 | Reward: 284 | MA: 189 | Steps: 321 Time: 2.39 | MA: 4.85 | Total: 13:55.41 | eps: 0.010\n",
1115 " 280 | Reward: 207 | MA: 189 | Steps: 583 Time: 4.52 | MA: 4.84 | Total: 13:59.93 | eps: 0.009\n",
1116 " 281 | Reward: 248 | MA: 189 | Steps: 442 Time: 3.51 | MA: 4.84 | Total: 14:03.44 | eps: 0.009\n",
1117 " 282 | Reward: 262 | MA: 190 | Steps: 311 Time: 2.48 | MA: 4.81 | Total: 14:05.92 | eps: 0.009\n",
1118 " 283 | Reward: 266 | MA: 191 | Steps: 408 Time: 3.13 | MA: 4.81 | Total: 14:09.05 | eps: 0.009\n",
1119 " 284 | Reward: 247 | MA: 192 | Steps: 377 Time: 2.99 | MA: 4.78 | Total: 14:12.03 | eps: 0.009\n",
1120 " 285 | Reward: 230 | MA: 194 | Steps: 315 Time: 2.38 | MA: 4.75 | Total: 14:14.42 | eps: 0.009\n",
1121 " 286 | Reward: 269 | MA: 195 | Steps: 370 Time: 3.28 | MA: 4.72 | Total: 14:17.70 | eps: 0.009\n",
1122 " 287 | Reward: 302 | MA: 198 | Steps: 350 Time: 2.64 | MA: 4.68 | Total: 14:20.33 | eps: 0.009\n",
1123 " 288 | Reward: 275 | MA: 198 | Steps: 424 Time: 3.28 | MA: 4.68 | Total: 14:23.61 | eps: 0.009\n",
1124 " 289 | Reward: 231 | MA: 199 | Steps: 324 Time: 2.49 | MA: 4.65 | Total: 14:26.10 | eps: 0.009\n",
1125 " 290 | Reward: 278 | MA: 200 | Steps: 262 Time: 2.01 | MA: 4.60 | Total: 14:28.11 | eps: 0.009\n"
1126 ]
1127 }
1128 ],
1129 "source": [
1130 "for episode in range(max_episodes):\n",
1131 " episode_start = time()\n",
1132 " episode_reward = 0\n",
1133 " episode_eps.append(epsilon)\n",
1134 "\n",
1135 " # Initial state\n",
1136 " this_observation = env.reset()\n",
1137 " for episode_step in range(max_episode_steps):\n",
1138 "\n",
1139 " # choose action according to epsilon-greedy policy wrt Q\n",
1140 " if train:\n",
1141 " if random() < epsilon:\n",
1142 " selected_action = randint(n_actions)\n",
1143 " else:\n",
1144 " q_s = sess.run(q_action_values,\n",
1145 " feed_dict={state: this_observation[None]})\n",
1146 " selected_action = np.argmax(q_s)\n",
1147 " else:\n",
1148 " q_s = sess.run(q_action_values,\n",
1149 " feed_dict={state: this_observation[None]})\n",
1150 " selected_action = np.argmax(q_s)\n",
1151 "\n",
1152 " next_observation, step_reward, done, _ = env.step(selected_action)\n",
1153 " episode_reward += step_reward\n",
1154 "\n",
1155 " if train:\n",
1156 " # add to replay buffer\n",
1157 " experience.append((this_observation,\n",
1158 " selected_action,\n",
1159 " step_reward,\n",
1160 " next_observation,\n",
1161 " 0.0 if done else 1.0))\n",
1162 "\n",
1163 " # update the target weights\n",
1164 " if total_steps % tau == 0:\n",
1165 " _ = sess.run(update_target_op)\n",
1166 "\n",
1167 " # update weights using minibatch of (s,a,r,s') samples from experience\n",
1168 " if len(experience) >= minibatch_size:\n",
1169 " minibatch = map(np.array, zip(*sample(experience, minibatch_size)))\n",
1170 " states_batch, action_batch, reward_batch, next_states_batch, done_batch = minibatch\n",
1171 "\n",
1172 " # do a train_op with required inputs\n",
1173 " feed_dict = {\n",
1174 " state : states_batch,\n",
1175 " action : action_batch,\n",
1176 " reward : reward_batch,\n",
1177 " next_state: next_states_batch,\n",
1178 " not_done : done_batch}\n",
1179 " if total_steps % 100 == 0:\n",
1180 " summary, global_step, _ = sess.run([summaries, tf.train.get_global_step(), train_op],\n",
1181 " feed_dict=feed_dict)\n",
1182 " summary_writer.add_summary(summary, global_step)\n",
1183 " else:\n",
1184 " _ = sess.run([train_op],\n",
1185 " feed_dict=feed_dict)\n",
1186 "\n",
1187 " this_observation = next_observation\n",
1188 " total_steps += 1\n",
1189 "\n",
1190 " # linearly decay epsilon from epsilon_start to epsilon_end for epsilon_linear_steps\n",
1191 " if total_steps < epsilon_linear_steps:\n",
1192 " epsilon -= epsilon_linear_step\n",
1193 " # then exponentially decay every episode\n",
1194 " elif done:\n",
1195 " epsilon *= epsilon_exp_decay\n",
1196 "\n",
1197 " if done:\n",
1198 " # Increment episode counter\n",
1199 " episode_, _ = sess.run([episode_count, add_episode])\n",
1200 " if train:\n",
1201 " episode_summary = tf.Summary()\n",
1202 " episode_summary.value.add(simple_value=episode_reward,\n",
1203 " node_name='episode_reward',\n",
1204 " tag='episode_reward')\n",
1205 " episode_summary.value.add(simple_value=np.mean(episode_rewards[-100:]),\n",
1206 " node_name='episode_reward_mavg',\n",
1207 " tag='episode_reward_mavg')\n",
1208 " episode_summary.value.add(simple_value=episode_step,\n",
1209 " node_name='episode_steps',\n",
1210 " tag='episode_steps')\n",
1211 " episode_summary.value.add(simple_value=time() - episode_start,\n",
1212 " node_name='episode_duration',\n",
1213 " tag='episode_duration')\n",
1214 " summary_writer.add_summary(episode_summary, episode_)\n",
1215 " summary_writer.flush()\n",
1216 " break\n",
1217 "\n",
1218 " episode_time.append(time() - episode_start)\n",
1219 " episode_steps.append(episode_step)\n",
1220 " episode_rewards.append(episode_reward)\n",
1221 " rewards_ma = np.mean([episode_rewards[-100:]])\n",
1222 " rewards_std = np.std([episode_rewards[-100:]])\n",
1223 "\n",
1224 " track_results(episode, episode_reward,\n",
1225 " rewards_ma, rewards_std,\n",
1226 " episode_steps, episode_time,\n",
1227 " epsilon)\n",
1228 "\n",
1229 " if rewards_ma > 200:\n",
1230 " saver.save(sess, checkpoint_path.as_posix())\n",
1231 " break\n",
1232 "\n",
1233 "env.close()"
1234 ]
1235 },
1236 {
1237 "cell_type": "markdown",
1238 "metadata": {},
1239 "source": [
1240 "### Store Results"
1241 ]
1242 },
1243 {
1244 "cell_type": "code",
1245 "execution_count": 17,
1246 "metadata": {},
1247 "outputs": [],
1248 "source": [
1249 "results = pd.DataFrame({'episode': list(range(1, len(episode_steps) + 1)),\n",
1250 " 'steps' : episode_steps,\n",
1251 " 'rewards': episode_rewards,\n",
1252 " 'time' : episode_time,\n",
1253 " 'epsilon': episode_eps})\n",
1254 "\n",
1255 "fn = 'results.csv' if train else 'performance.csv'\n",
1256 "results.to_csv(experiment_dir / fn, index=False)"
1257 ]
1258 },
1259 {
1260 "cell_type": "code",
1261 "execution_count": null,
1262 "metadata": {},
1263 "outputs": [],
1264 "source": [
1265 "params = dict(gamma=gamma, layers=layers, learning_rate=learning_rate, l2_reg=l2_reg,\n",
1266 " tau=tau, replay_capacity=replay_capacity, minibatch_size=minibatch_size,\n",
1267 " epsilon_start=epsilon_start, epsilon_end=epsilon_end, epsilon_linear_steps=epsilon_linear_steps,\n",
1268 " epsilon_exp_decay=epsilon_exp_decay)\n",
1269 "\n",
1270 "parameters = pd.Series(params).to_frame().reset_index()\n",
1271 "parameters.columns = ['parameter', 'value']\n",
1272 "parameters.to_csv(experiment_dir / 'parameters.csv', index=False)"
1273 ]
1274 },
1275 {
1276 "cell_type": "markdown",
1277 "metadata": {},
1278 "source": [
1279 "### Plot Results"
1280 ]
1281 },
1282 {
1283 "cell_type": "code",
1284 "execution_count": 7,
1285 "metadata": {},
1286 "outputs": [],
1287 "source": [
1288 "results = pd.read_csv(experiment_dir / 'results.csv').rename(columns=str.capitalize)\n",
1289 "results = results.set_index('Episode')\n",
1290 "results['MA100'] = results.rolling(window=100, min_periods=25).Rewards.mean()"
1291 ]
1292 },
1293 {
1294 "cell_type": "code",
1295 "execution_count": 8,
1296 "metadata": {},
1297 "outputs": [
1298 {
1299 "name": "stdout",
1300 "output_type": "stream",
1301 "text": [
1302 "<class 'pandas.core.frame.DataFrame'>\n",
1303 "Int64Index: 291 entries, 1 to 291\n",
1304 "Data columns (total 5 columns):\n",
1305 "Epsilon 291 non-null float64\n",
1306 "Rewards 291 non-null float64\n",
1307 "Steps 291 non-null int64\n",
1308 "Time 291 non-null float64\n",
1309 "MA100 267 non-null float64\n",
1310 "dtypes: float64(4), int64(1)\n",
1311 "memory usage: 13.6 KB\n"
1312 ]
1313 }
1314 ],
1315 "source": [
1316 "results.info()"
1317 ]
1318 },
1319 {
1320 "cell_type": "code",
1321 "execution_count": 9,
1322 "metadata": {},
1323 "outputs": [
1324 {
1325 "data": {
1326 "image/png": "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\n",
1327 "text/plain": [
1328 "<Figure size 1008x288 with 3 Axes>"
1329 ]
1330 },
1331 "metadata": {},
1332 "output_type": "display_data"
1333 }
1334 ],
1335 "source": [
1336 "fig, axes = plt.subplots(ncols=2, figsize=(14, 4))\n",
1337 "results[['Rewards', 'MA100']].plot(ax=axes[0])\n",
1338 "axes[0].set_ylabel('Rewards')\n",
1339 "results[['Steps', 'Epsilon']].plot(secondary_y='Epsilon', ax=axes[1]);\n",
1340 "fig.suptitle('Double Deep Q-Network Agent | Lunar Lander', fontsize=16)\n",
1341 "fig.tight_layout()\n",
1342 "fig.subplots_adjust(top=.9)\n",
1343 "fig.savefig('figures/ddqn_lunarlander', dpi=300)"
1344 ]
1345 }
1346 ],
1347 "metadata": {
1348 "kernelspec": {
1349 "display_name": "Python 3",
1350 "language": "python",
1351 "name": "python3"
1352 },
1353 "language_info": {
1354 "codemirror_mode": {
1355 "name": "ipython",
1356 "version": 3
1357 },
1358 "file_extension": ".py",
1359 "mimetype": "text/x-python",
1360 "name": "python",
1361 "nbconvert_exporter": "python",
1362 "pygments_lexer": "ipython3",
1363 "version": "3.6.8"
1364 },
1365 "toc": {
1366 "base_numbering": 1,
1367 "nav_menu": {},
1368 "number_sections": true,
1369 "sideBar": true,
1370 "skip_h1_title": true,
1371 "title_cell": "Table of Contents",
1372 "title_sidebar": "Contents",
1373 "toc_cell": false,
1374 "toc_position": {},
1375 "toc_section_display": true,
1376 "toc_window_display": true
1377 }
1378 },
1379 "nbformat": 4,
1380 "nbformat_minor": 2
1381 }