From 1290414e85934f96dd73c9a88bcd5ed85ba378f8 Mon Sep 17 00:00:00 2001 From: HokageM Date: Sun, 5 Nov 2023 21:00:20 +0100 Subject: [PATCH 1/2] refactor structure --- src/irlwpytorch/MountainCar.py | 82 ++++++++++++++-- .../learning_curves/maxent_test_30000.png | Bin 20265 -> 22485 bytes src/irlwpytorch/main.py | 88 +++--------------- 3 files changed, 84 insertions(+), 86 deletions(-) diff --git a/src/irlwpytorch/MountainCar.py b/src/irlwpytorch/MountainCar.py index 3e63af0..4f2e944 100644 --- a/src/irlwpytorch/MountainCar.py +++ b/src/irlwpytorch/MountainCar.py @@ -1,9 +1,10 @@ import gym import numpy as np +import matplotlib.pyplot as plt class MountainCar: - def __init__(self, animation, feature_matrix, one_feature, q_learning_rate, gamma): + def __init__(self, animation, feature_matrix, one_feature, q_learning_rate, gamma, n_states, trainer): if animation: self.env = gym.make('MountainCar-v0', render_mode="human") else: @@ -13,6 +14,8 @@ def __init__(self, animation, feature_matrix, one_feature, q_learning_rate, gamm self.q_table = None self.q_learning_rate = q_learning_rate self.gamma = gamma + self.n_states = n_states + self.trainer = trainer def __enter__(self): return self @@ -42,15 +45,6 @@ def idx_demo(self, one_feature): return demonstrations - def idx_state(self, state): - env_low = self.env.observation_space.low - env_high = self.env.observation_space.high - env_distance = (env_high - env_low) / self.one_feature - position_idx = int((state[0] - env_low[0]) / env_distance[0]) - velocity_idx = int((state[1] - env_low[1]) / env_distance[1]) - state_idx = position_idx + velocity_idx * self.one_feature - return state_idx - def idx_to_state(self, state): """ Convert pos and vel about mounting car environment to the integer value""" env_low = self.env.observation_space.low @@ -74,3 +68,71 @@ def env_reset(self): def env_step(self, action): return self.env.step(action) + + def train(self, theta_learning_rate): + demonstrations = self.idx_demo(self.one_feature) + + expert = self.trainer.expert_feature_expectations(demonstrations) + learner_feature_expectations = np.zeros(self.n_states) + episodes, scores = [], [] + + for episode in range(30000): + state = self.env_reset() + score = 0 + + if (episode != 0 and episode == 10000) or (episode > 10000 and episode % 5000 == 0): + learner = learner_feature_expectations / episode + self.trainer.maxent_irl(expert, learner, theta_learning_rate) + + state = state[0] + while True: + state_idx = self.idx_to_state(state) + action = np.argmax(self.q_table[state_idx]) + next_state, reward, done, _, _ = self.env_step(action) + + irl_reward = self.trainer.get_reward(self.n_states, state_idx) + next_state_idx = self.idx_to_state(next_state) + self.update_q_table(state_idx, action, irl_reward, next_state_idx) + + learner_feature_expectations += self.trainer.get_feature_matrix()[int(state_idx)] + + score += reward + state = next_state + if done: + scores.append(score) + episodes.append(episode) + break + + if episode % 100 == 0: + score_avg = np.mean(scores) + print('{} episode score is {:.2f}'.format(episode, score_avg)) + plt.plot(episodes, scores, 'b') + plt.savefig("./learning_curves/maxent_30000.png") + np.save("./results/maxent_30000_table", arr=self.q_table) + + def test(self): + episodes, scores = [], [] + + for episode in range(10): + state = self.env_reset() + score = 0 + + state = state[0] + while True: + self.env_render() + state_idx = self.idx_to_state(state) + action = np.argmax(self.q_table[state_idx]) + next_state, reward, done, _, _ = self.env_step(action) + + score += reward + state = next_state + + if done: + scores.append(score) + episodes.append(episode) + plt.plot(episodes, scores, 'b') + plt.savefig("./learning_curves/maxent_test_30000.png") + break + + if episode % 1 == 0: + print('{} episode score is {:.2f}'.format(episode, score)) diff --git a/src/irlwpytorch/learning_curves/maxent_test_30000.png b/src/irlwpytorch/learning_curves/maxent_test_30000.png index 8bee37a4160b91b33daf3f60b8603cd8db3d32ac..93ece5798621f8f85ff6fe2a5e397d872c8c6c06 100644 GIT binary patch literal 22485 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 eh_W;P*^~QR)Bk+g`3hKYGkCiCxvXn>zRa diff --git a/src/irlwpytorch/main.py b/src/irlwpytorch/main.py index 4ef4a14..0b90746 100644 --- a/src/irlwpytorch/main.py +++ b/src/irlwpytorch/main.py @@ -21,14 +21,12 @@ """ import argparse -import gym -import matplotlib.pyplot as plt import logging import numpy as np import sys -from .MountainCar import MountainCar -from .MaxEntropyIRL import MaxEntropyIRL +from MountainCar import MountainCar +from MaxEntropyIRL import MaxEntropyIRL # from irlwpytorch import __version__ @@ -92,94 +90,32 @@ def main(args): n_states = 400 # position - 20, velocity - 20 n_actions = 3 one_feature = 20 # number of state per one feature - feature_matrix = np.eye((n_states)) # (400, 400) + feature_matrix = np.eye(n_states) # (400, 400) gamma = 0.99 q_learning_rate = 0.03 theta_learning_rate = 0.05 + theta = -(np.random.uniform(size=(n_states,))) + trainer = MaxEntropyIRL(feature_matrix, theta) + car = None if args.render: - car = MountainCar(True, feature_matrix, one_feature, q_learning_rate, gamma) + car = MountainCar(True, feature_matrix, one_feature, q_learning_rate, gamma, n_states, trainer) else: - car = MountainCar(False, feature_matrix, one_feature, q_learning_rate, gamma) - - theta = -(np.random.uniform(size=(n_states,))) - trainer = MaxEntropyIRL(feature_matrix, theta) + car = MountainCar(False, feature_matrix, one_feature, q_learning_rate, gamma, n_states, trainer) if args.training: - q_table = np.zeros((n_states, n_actions)) # (400, 3) + q_table = np.zeros((n_states, n_actions)) car.set_q_table(q_table) - demonstrations = car.idx_demo(one_feature) - - expert = trainer.expert_feature_expectations(demonstrations) - learner_feature_expectations = np.zeros(n_states) - episodes, scores = [], [] - - for episode in range(30000): - state = car.env_reset() - score = 0 - - if (episode != 0 and episode == 10000) or (episode > 10000 and episode % 5000 == 0): - learner = learner_feature_expectations / episode - trainer.maxent_irl(expert, learner, theta_learning_rate) - - state = state[0] - while True: - state_idx = car.idx_state(state) - action = np.argmax(q_table[state_idx]) - next_state, reward, done, _, _ = car.env_step(action) - - irl_reward = trainer.get_reward(n_states, state_idx) - next_state_idx = car.idx_state(next_state) - car.update_q_table(state_idx, action, irl_reward, next_state_idx) - - learner_feature_expectations += trainer.get_feature_matrix()[int(state_idx)] - - score += reward - state = next_state - if done: - scores.append(score) - episodes.append(episode) - break - - if episode % 100 == 0: - score_avg = np.mean(scores) - print('{} episode score is {:.2f}'.format(episode, score_avg)) - plt.plot(episodes, scores, 'b') - plt.savefig("./learning_curves/maxent_30000.png") - np.save("./results/maxent_30000_table", arr=q_table) + car.train(theta_learning_rate) if args.testing: - q_table = np.load(file="results/maxent_q_table.npy") # (400, 3) + q_table = np.load(file="./results/maxent_q_table.npy") # (400, 3) car.set_q_table(q_table) - episodes, scores = [], [] - - for episode in range(10): - state = car.env_reset() - score = 0 - - state = state[0] - while True: - car.env_render() - state_idx = car.idx_to_state(state) - action = np.argmax(q_table[state_idx]) - next_state, reward, done, _, _ = car.env_step(action) - - score += reward - state = next_state - - if done: - scores.append(score) - episodes.append(episode) - plt.plot(episodes, scores, 'b') - plt.savefig("./learning_curves/maxent_test_30000.png") - break - - if episode % 1 == 0: - print('{} episode score is {:.2f}'.format(episode, score)) + car.test() _logger.info("Script ends here") From ac0916f6f88bde27260e182ab054dd2974286d88 Mon Sep 17 00:00:00 2001 From: HokageM Date: Mon, 6 Nov 2023 18:41:15 +0100 Subject: [PATCH 2/2] refactoring --- src/irlwpytorch/MountainCar.py | 1 + .../learning_curves/maxent_30000.png | Bin 11276 -> 12344 bytes .../learning_curves/maxent_test_30000.png | Bin 22485 -> 16988 bytes src/irlwpytorch/main.py | 31 ++---------------- .../results/maxent_30000_table.npy | Bin 9728 -> 9728 bytes 5 files changed, 3 insertions(+), 29 deletions(-) diff --git a/src/irlwpytorch/MountainCar.py b/src/irlwpytorch/MountainCar.py index 4f2e944..0cdcd8f 100644 --- a/src/irlwpytorch/MountainCar.py +++ b/src/irlwpytorch/MountainCar.py @@ -2,6 +2,7 @@ import numpy as np import matplotlib.pyplot as plt + class MountainCar: def __init__(self, animation, feature_matrix, one_feature, q_learning_rate, gamma, n_states, trainer): diff --git a/src/irlwpytorch/learning_curves/maxent_30000.png b/src/irlwpytorch/learning_curves/maxent_30000.png index b7b84f998b64d0668d2ccab2ad512b10cb35dfa0..31485da79431a8d1af7718e52dc51beaaaad50ec 100644 GIT binary patch literal 12344 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 literal 11276 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 GhyMmBXmuh0 diff --git a/src/irlwpytorch/learning_curves/maxent_test_30000.png b/src/irlwpytorch/learning_curves/maxent_test_30000.png index 93ece5798621f8f85ff6fe2a5e397d872c8c6c06..a361f55e6c9d4dcb3e5d5a5701267fc6d3f30f67 100644 GIT binary patch literal 16988 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 C#Pk&a