tried video support (not working)
This commit is contained in:
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
video/
|
||||
BIN
Taxi-v3.dat
BIN
Taxi-v3.dat
Binary file not shown.
@@ -8,7 +8,11 @@ import os
|
||||
from .settings import *
|
||||
|
||||
env = gym.make(gym_name).env
|
||||
if use_video:
|
||||
env = gym.wrappers.Monitor(env, './video/',video_callable=lambda episode_id: True,force=True)
|
||||
|
||||
from .train import *
|
||||
from .play import *
|
||||
from .review import *
|
||||
|
||||
frames = []
|
||||
@@ -26,6 +26,8 @@ def play(player_episodes=1):
|
||||
done = True
|
||||
|
||||
ftext = ""
|
||||
if use_video:
|
||||
env.render(mode="ansi")
|
||||
if use_ansi:
|
||||
ftext = env.render(mode="ansi")
|
||||
else:
|
||||
|
||||
23
ql/review.py
23
ql/review.py
@@ -6,14 +6,15 @@ def review(frames):
|
||||
rew = 0
|
||||
cnt = 1
|
||||
|
||||
try:
|
||||
for i, frame in enumerate(frames):
|
||||
print (u"{}[2J{}[;H".format(chr(27), chr(27)))
|
||||
print(f"Session: {frame['session']}")
|
||||
print(frame['frame'])
|
||||
print(f"Timestep: {i + 1}")
|
||||
print(f"State: {frame['state']}")
|
||||
print(f"Action: {frame['action']}")
|
||||
print(f"Reward: {frame['reward']}")
|
||||
out = u"{}[2J{}[;H".format(chr(27), chr(27))
|
||||
out += f"Session: {frame['session']}\n"
|
||||
out += frame['frame']
|
||||
out += f"Timestep: {i + 1}\n"
|
||||
out += f"State: {frame['state']}\n"
|
||||
out += f"Action: {frame['action']}\n"
|
||||
out += f"Reward: {frame['reward']}\n"
|
||||
|
||||
sess = frame['session']
|
||||
if sess != prevSess:
|
||||
@@ -22,11 +23,15 @@ def review(frames):
|
||||
sleep(1)
|
||||
elif rew < 0:
|
||||
sucs += "-"
|
||||
else:
|
||||
elif prevSess >= 0:
|
||||
sucs += "."
|
||||
prevSess = frame['session']
|
||||
cnt += 1
|
||||
rew = frame['reward']
|
||||
|
||||
print(f"\nSuccesses: [{sucs}]")
|
||||
out += f"\nSuccesses: [{sucs}]\n"
|
||||
print(out)
|
||||
sleep(.1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
return()
|
||||
|
||||
@@ -15,3 +15,4 @@ max_iterations = 1000
|
||||
# Render settings
|
||||
|
||||
use_ansi = True
|
||||
use_video = False
|
||||
|
||||
11
ql/train.py
11
ql/train.py
@@ -1,6 +1,9 @@
|
||||
from . import *
|
||||
|
||||
def train(training_episodes=10000, resume=True):
|
||||
global frames
|
||||
frames = []
|
||||
|
||||
if resume and os.path.exists(gym_name+".dat"):
|
||||
q_table = pickle.load( open( gym_name+".dat", "rb" ))
|
||||
else:
|
||||
@@ -9,10 +12,12 @@ def train(training_episodes=10000, resume=True):
|
||||
episodes = training_episodes
|
||||
percentage = episodes / 100
|
||||
|
||||
frames = []
|
||||
suc_cnt = 0
|
||||
|
||||
try:
|
||||
print (u"{}[2J{}[;H".format(chr(27), chr(27)))
|
||||
print("Training: 0%")
|
||||
print("Successes so far: 0")
|
||||
for i in range(1, episodes + 1):
|
||||
state = env.reset()
|
||||
|
||||
@@ -41,6 +46,8 @@ def train(training_episodes=10000, resume=True):
|
||||
|
||||
if i % percentage == 0:
|
||||
ftext = ""
|
||||
if use_video:
|
||||
env.render(mode="ansi")
|
||||
if use_ansi:
|
||||
ftext = env.render(mode="ansi")
|
||||
else:
|
||||
@@ -73,5 +80,3 @@ def train(training_episodes=10000, resume=True):
|
||||
pickle.dump(q_table , open( gym_name+".dat", "wb" ) )
|
||||
print(f"Q-table saved: {gym_name}_stopped.dat")
|
||||
exit()
|
||||
|
||||
return frames
|
||||
Reference in New Issue
Block a user