From 63e85d2a603a4fd267b768f0c1973b986ab71041 Mon Sep 17 00:00:00 2001 From: Bart Moyaers Date: Mon, 24 Feb 2020 16:08:44 +0100 Subject: [PATCH] finish exercise 2.5 --- exercise_2-5.png | Bin 0 -> 59968 bytes exercise_2-5.py => exercise_2_5.py | 49 ++++++++++++++++++++++------- exercises.md | 1 + 3 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 exercise_2-5.png rename exercise_2-5.py => exercise_2_5.py (76%) diff --git a/exercise_2-5.png b/exercise_2-5.png new file mode 100644 index 0000000000000000000000000000000000000000..7df47f3ddc0edd6dbf898db349da29d983a0e7c9 GIT binary patch literal 59968 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 self.steps or step < 0: ValueError("Step {} out of bounds. Current steps: {}".format(step, self.steps)) - return self.rewards[action][step] + if self.random_walk: + # Slightly move all the averages + moves = np.random.normal(loc=0.0, scale=0.01, size=self.arms) + self.average_rewards = np.array(self.average_rewards) + moves + + return np.random.normal(loc=self.average_rewards[action], scale=1, size=1) + # return self.rewards[action][step] def get_max_reward_action(self): return (max(self.average_rewards), np.argmax(self.average_rewards)) @@ -82,10 +90,15 @@ class Average: self.count += 1 class Plotter: - def __init__(self, karmedbandit: KArmedBandit, epsilongreedy: EpsilonGreedy, steps: int): + def __init__(self, + karmedbandit: KArmedBandit, + epsilongreedy: EpsilonGreedy, + steps: int, + alpha: bool = True): self.karmedbandit = karmedbandit self.agent = epsilongreedy self.steps = steps + self.alpha = alpha self.reset() def reset(self): @@ -111,8 +124,8 @@ class Plotter: self.optimal_action_fraction[step].update(self.optimal_action_counter / (step+1)) def run(self, runs=1): - for i in range(runs): - self.karmedbandit.generate_rewards() + for i in tqdm(range(runs), desc="Runs"): + self.karmedbandit.generate_average_rewards() # optimal_action = self.karmedbandit.get_max_reward_action()[1] self.agent.reset() self.actions_counter = [0] * self.karmedbandit.arms @@ -121,8 +134,11 @@ class Plotter: optimal_action = self.karmedbandit.get_max_reward_action()[1] action = self.agent.choose_action() reward = self.karmedbandit.get_reward(action, step) - # self.agent.update(action, reward, 1/(self.actions_counter[action]+1)) - self.agent.update(action, reward, 0.1) + + if self.alpha: + self.agent.update(action, reward, 0.1) + else: + self.agent.update(action, reward, 1/(self.actions_counter[action]+1)) self.average_rewards[step].update(reward) self.count_action(action) if action == optimal_action: @@ -138,27 +154,38 @@ class Plotter: violin_data = self.karmedbandit.sample_rewards(steps=10000) bp = ax1.violinplot(violin_data, showmeans=True, showmedians=False, showextrema=False) - ax1.set_ylim([-4,4]) + ax1.set_ylabel("Reward distribution", rotation='vertical') + # ax1.set_xlabel("Actions", rotation='horizontal') ax2.plot(range(self.steps), [x.value for x in self.average_rewards]) - ylabel = "Average reward. Max average reward: {}".format(self.karmedbandit.get_max_reward_action()[0]) + # ylabel = "Average reward. Max average reward: {}".format(self.karmedbandit.get_max_reward_action()[0]) + ylabel = "Average reward." ax2.set(ylabel=ylabel, title='') + ax2.set_ylabel(ylabel, rotation='vertical') + # ax2.set_xlabel("Steps", rotation='horizontal') ax3.plot(range(self.steps), [x.value for x in self.optimal_action_fraction]) ax3.set_ylim([0,1]) + ax3.set_ylabel("Optimal action", rotation='vertical') + # ax3.set_xlabel("Steps", rotation='horizontal') plt.xlabel("Steps") + fig.set_figheight(8) + fig.set_figwidth(8) + # make_axes_area_auto_adjustable(ax1) + # make_axes_area_auto_adjustable(ax2) + # make_axes_area_auto_adjustable(ax3) fig.savefig("exercise_2-5.png") plt.show() if __name__ == "__main__": arms = 10 - steps = 1000 - armedbandit = KArmedBandit(arms=arms, steps=steps, random_walk=False) + steps = 10000 + armedbandit = KArmedBandit(arms=arms, steps=steps, random_walk=True) greedy = EpsilonGreedy(0.1, arms) plotter = Plotter(armedbandit, greedy, steps) - plotter.run(runs=100) + plotter.run(runs=1000) plotter.plot() \ No newline at end of file diff --git a/exercises.md b/exercises.md index 0304ddf..784e580 100644 --- a/exercises.md +++ b/exercises.md @@ -142,4 +142,5 @@ Q_{n+1} = & \; Q_n + \alpha_n \left[R_n - Q_n\right] \\ # Exercise 2.5 See [exercise_2-5.py](./exercise_2-5.py) for code. +![](./exercise_2-5.png)