N-Step Q-Learning and One-Step Sarsa

This commit is contained in:
Shangtong Zhang
2017-05-11 23:50:41 -06:00
parent 73dfc5a7e4
commit b55e190512
4 changed files with 78 additions and 24 deletions
+20 -16
View File
@@ -7,6 +7,9 @@ def async_cart_pole():
config['optimizer_fn'] = lambda params: torch.optim.SGD(params, 0.001)
config['network_fn'] = lambda: FullyConnectedNet([4, 50, 200, 2])
config['policy_fn'] = lambda: GreedyPolicy(epsilon=1.0, end_episode=500, min_epsilon=0.1)
# config['bootstrap_fn'] = OneStepQLearning
# config['bootstrap_fn'] = NStepQLearning
config['bootstrap_fn'] = OneStepSarsa
config['discount'] = 0.99
config['target_network_update_freq'] = 200
config['step_limit'] = 300
@@ -17,6 +20,23 @@ def async_cart_pole():
agent = AsyncAgent(**config)
agent.run()
def async_lunar_lander():
config = dict()
config['task_fn'] = lambda: LunarLander()
config['optimizer_fn'] = lambda params: torch.optim.Adam(params, 0.001)
config['network_fn'] = lambda: FullyConnectedNet([8, 50, 200, 4])
config['policy_fn'] = lambda: GreedyPolicy(epsilon=1.0, end_episode=2000, min_epsilon=0.05)
config['bootstrap_fn'] = OneStepQLearning
config['discount'] = 0.99
config['target_network_update_freq'] = 200
config['step_limit'] = 5000
config['n_workers'] = 8
config['batch_size'] = 10
config['test_interval'] = 1000
config['test_repeats'] = 5
agent = AsyncAgent(**config)
agent.run()
# Mountain Car is fairly unstable
def dqn_mountain_car():
config = dict()
@@ -31,22 +51,6 @@ def dqn_mountain_car():
agent = DQNAgent(**config)
agent.run()
def async_lunar_lander():
config = dict()
config['task_fn'] = lambda: LunarLander()
config['optimizer_fn'] = lambda params: torch.optim.Adam(params, 0.001)
config['network_fn'] = lambda: FullyConnectedNet([8, 50, 200, 4])
config['policy_fn'] = lambda: GreedyPolicy(epsilon=1.0, end_episode=2000, min_epsilon=0.05)
config['discount'] = 0.99
config['target_network_update_freq'] = 200
config['step_limit'] = 5000
config['n_workers'] = 8
config['batch_size'] = 10
config['test_interval'] = 1000
config['test_repeats'] = 5
agent = AsyncAgent(**config)
agent.run()
def dqn_cart_pole():
config = dict()
config['task_fn'] = lambda: CartPole()