{"cells":[{"cell_type":"code","source":["!pip install gymnasium"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"oAEX-YEnP-Hw","executionInfo":{"status":"ok","timestamp":1708676632723,"user_tz":-60,"elapsed":6549,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}},"outputId":"86a3214f-eee1-4ac3-9d1e-6067b669afec"},"execution_count":36,"outputs":[{"output_type":"stream","name":"stdout","text":["Requirement already satisfied: gymnasium in /usr/local/lib/python3.10/dist-packages (0.29.1)\n","Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from gymnasium) (1.25.2)\n","Requirement already satisfied: cloudpickle>=1.2.0 in /usr/local/lib/python3.10/dist-packages (from gymnasium) (2.2.1)\n","Requirement already satisfied: typing-extensions>=4.3.0 in /usr/local/lib/python3.10/dist-packages (from gymnasium) (4.9.0)\n","Requirement already satisfied: farama-notifications>=0.0.1 in /usr/local/lib/python3.10/dist-packages (from gymnasium) (0.0.4)\n"]}]},{"cell_type":"markdown","source":["Some imports just to render the results in colab"],"metadata":{"id":"QrGss3mXkKwp"}},{"cell_type":"code","source":["from gymnasium.wrappers import RecordVideo\n","import glob\n","import io\n","import base64\n","from IPython.display import HTML\n","from IPython import display\n","\n","\"\"\"\n","Utility functions to enable video recording of gym environment\n","and displaying it.\n","To enable video, just do \"env = wrap_env(env)\"\"\n","\"\"\"\n","\n","def show_video():\n"," mp4list = glob.glob('video/*.mp4')\n"," if len(mp4list) > 0:\n"," mp4 = mp4list[0]\n"," video = io.open(mp4, 'r+b').read()\n"," encoded = base64.b64encode(video)\n"," display.display(HTML(data=''''''.format(encoded.decode('ascii'))))\n"," else:\n"," print(\"Could not find video\")"],"metadata":{"id":"c-7LPa4mkG82","executionInfo":{"status":"ok","timestamp":1708676632724,"user_tz":-60,"elapsed":23,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"execution_count":37,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_fy9ZPCK2YK4"},"source":["# Introduction to OpenGym using the CartPole problem\n","\n","OpenGym is an standard testbed for RL algorithms.\n","\n","https://www.gymlibrary.dev/environments/classic_control/\n","\n","In this notebook we test our own implementation of Q-learning (see slides of Lecture 2) with OpenGym in the CartPole environment (see slides of Lecture 1)."]},{"cell_type":"code","execution_count":38,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"d84lUhRu2YK9","outputId":"e62a59fe-4009-42b6-9590-c39b25c3cc8a","executionInfo":{"status":"ok","timestamp":1708676632724,"user_tz":-60,"elapsed":21,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"execute_result","data":{"text/plain":["(array([-0.03392565, -0.03400117, 0.0182687 , -0.03486967], dtype=float32),\n"," {})"]},"metadata":{},"execution_count":38}],"source":["import numpy as np\n","import math\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","from collections import deque\n","import pandas as pd\n","\n","import gymnasium as gym\n","\n","## This line changes in colab\n","env = gym.make('CartPole-v1')\n","\n","env.reset()"]},{"cell_type":"code","source":["import warnings\n","warnings.filterwarnings(\"ignore\", category=DeprecationWarning)"],"metadata":{"id":"xucUR_ZFFVRi","executionInfo":{"status":"ok","timestamp":1708676632724,"user_tz":-60,"elapsed":16,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"execution_count":39,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"OkooFPFc2YLB"},"source":["## Description of the environment\n","\n","OpenGym has not very good documentation. Usually you have to go to code to understand the details of the environment you want to use.\n","\n","In the case of the CartPole, go to:\n","\n","https://www.gymlibrary.dev/environments/classic_control/cart_pole/\n","\n","Fortunately, there are some functions implemented that show the minimum necessary information to run the RL algorithms."]},{"cell_type":"code","execution_count":40,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"DSxBc0vC2YLC","outputId":"8eb6d86a-cacf-477a-d8cb-859636afdeff","executionInfo":{"status":"ok","timestamp":1708676632724,"user_tz":-60,"elapsed":16,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Discrete(2)\n"]}],"source":["# Two discrete actions in the environment (push towards each direction)\n","print(env.action_space)"]},{"cell_type":"markdown","metadata":{"id":"bhU_iziF2YLC"},"source":["Means 2 discrete possible actions. In this case:\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n"," \n","
NumAction
0Push cart to the left
1Push cart to the right
\n"," \n","Not because I found this information in documentation of the environment but in the code of the environment (https://github.com/openai/gym/blob/master/gym/envs/classic_control/cartpole.py#L13)"]},{"cell_type":"code","execution_count":41,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"njdFiaqV2YLD","outputId":"76c485bb-e3f8-4f27-b4b4-1349c4568e75","executionInfo":{"status":"ok","timestamp":1708676632725,"user_tz":-60,"elapsed":14,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Box([-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38], (4,), float32)\n"]}],"source":["# Four dimensional space.\n","print(env.observation_space)"]},{"cell_type":"markdown","metadata":{"id":"WHlaS1OL2YLD"},"source":["That means *4 variables \"Continuous with Bounds\"* (box).\n","\n","There also exist **Discrete** observations.\n","\n","They can be organized as:\n","\n","- **Dictionary**, fi. Dict({\"position\": Discrete(5), \"velocity\": Box(low=np.array([0,0]),high=np.array([1,5]))}),\n","- **Tuples** , fi. Tuple([Discrete(5), Box(low=np.array([0,0]),high=np.array([1,5]))]),\n","- **Multidiscrete**, fi. MultiDiscrete([ 2, 2, 100]),"]},{"cell_type":"code","execution_count":42,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H49n5SMx2YLD","outputId":"dd097abe-5d6b-4de6-e9d5-71ac09daf17e","executionInfo":{"status":"ok","timestamp":1708676632725,"user_tz":-60,"elapsed":12,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]\n","[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]\n"]}],"source":["# Show the limits of each variable\n","\n","print(env.observation_space.high)\n","print(env.observation_space.low)"]},{"cell_type":"markdown","metadata":{"id":"-OEp7mUe2YLE"},"source":["\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n",""]},{"cell_type":"markdown","metadata":{"id":"EEaxiOaN2YLE"},"source":["## Acting in the environment\n","\n","The *step* method of the environment returns information after execution of an action (passed as parameter) in the *current* state of the environment. In fact, *step* method returns four values:\n","\n","- **observation** (*object*): an environment-specific object representing your observation of the environment after the action has been executed. Examples of observations are: pixels from a game screen, joint angles and joint velocities of a robot, or the board state in a board game.\n"," \n","- **reward** (*float*): immediate reward obtained after action execution. The scale depends on the environment, but the goal is always to increase your total reward.\n","\n","- **truncated** (*boolean*): Most (but not all) tasks are divided up into well-defined episodes, and *truncated* being True indicates the episode has been ended for exceeding the time limit.\n","\n","- **terminated** (*boolean*): If trial has ended or note (terminal state). When True, it’s time to reset the environment again.\n"," \n","- **info** (*dict*): diagnostic information useful for debugging. It can sometimes be useful for learning (for example, it might contain the raw probabilities behind the environment’s last state change). However, official evaluations of your agent are not allowed to use this info for learning.\n"]},{"cell_type":"code","execution_count":43,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Kk2bqwEM2YLF","outputId":"9fa1bf55-ccb6-41ac-c993-701e114eb808","executionInfo":{"status":"ok","timestamp":1708676632725,"user_tz":-60,"elapsed":10,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["s = (array([ 0.01659724, -0.03460403, 0.04632453, -0.00703877], dtype=float32), {})\n","a = 0\n","r = 1.0\n","s'= [ 0.01590516 -0.23035868 0.04618375 0.29989272]\n","False\n"]}],"source":["obs1 = env.reset() # Starting state\n","action = env.action_space.sample() # take a random action\n","obs2, reward, terminated, truncated, info = env.step(action) # take the action and observe results\n","print('s =',obs1)\n","print('a =',action)\n","print('r =',reward)\n","print(\"s'=\",obs2)\n","print(truncated or terminated)"]},{"cell_type":"markdown","metadata":{"id":"PhsjPn7x2YLF"},"source":["That's all the information we need in model-free RL algorithms!\n","\n","Let's execute now a sequence of random actions. Method *env.render* will show us a visualization of the environment."]},{"cell_type":"code","execution_count":44,"metadata":{"id":"SfeIVaqr2YLG","colab":{"base_uri":"https://localhost:8080/","height":562},"outputId":"34e782d1-cd72-4dbc-f051-71b6fc7dc84a","executionInfo":{"status":"ok","timestamp":1708676633230,"user_tz":-60,"elapsed":512,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.10/dist-packages/gymnasium/wrappers/record_video.py:94: UserWarning: \u001b[33mWARN: Overwriting existing videos at /content/video folder (try specifying a different `video_folder` for the `RecordVideo` wrapper if this is not desired)\u001b[0m\n"," logger.warn(\n"]},{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[" "]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"stream","name":"stderr","text":["\r"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}}],"source":["# Generate one random trial\n","env.close()\n","env = RecordVideo(gym.make('CartPole-v1',render_mode='rgb_array'),video_folder='video')\n","obs1 = env.reset()\n","done= False\n","while not done:\n"," env.render()\n"," observation, reward, terminated, truncated, info = env.step(env.action_space.sample()) # take a random action\n"," done = truncated or terminated\n","env.close()\n","show_video()"]},{"cell_type":"code","execution_count":45,"metadata":{"id":"AbJEQcIU2YLG","colab":{"base_uri":"https://localhost:8080/","height":1000},"outputId":"0d4fa8bb-23de-4525-9072-d2a666980236","executionInfo":{"status":"ok","timestamp":1708676635053,"user_tz":-60,"elapsed":1826,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[" "]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"stream","name":"stderr","text":["\r"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Average reward 5.2\n","Average time steps before ending episode 5.2\n"]}],"source":["# Let's compute the average return for 10 random trials and the number of timesteps\n","t=0\n","tsteps=0\n","treward=0\n","for nexps in range(3): # Let's do 3 trials\n"," done= False\n"," env = RecordVideo(gym.make('CartPole-v1',render_mode='rgb_array'),video_folder='video')\n"," env.reset()\n"," while not done:\n"," env.render()\n"," observation, reward, terminated, truncated, info = env.step(env.action_space.sample()) # take a random action\n"," done = truncated or terminated\n"," treward = treward + reward\n"," tsteps = tsteps + 1\n"," env.close()\n"," show_video()\n","print('Average reward',treward/10)\n","print('Average time steps before ending episode',tsteps/10)\n"]},{"cell_type":"markdown","metadata":{"id":"K1Nbcflf2YLH"},"source":["Trying to apply Q-learning, we have to define the table that will store the Q-value function. But we have a problem here, because our **states are defined by continuous variables**.\n","\n","One solution could be to discretize values by bining them.\n","\n","## Discretization of the state\n","\n","First we have to declare how many \"discrete\" states I will allow per variable, and later define the discretization procedure"]},{"cell_type":"code","source":["env = gym.make('CartPole-v1')"],"metadata":{"id":"U37fKJwGrZVw","executionInfo":{"status":"ok","timestamp":1708676635053,"user_tz":-60,"elapsed":6,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"execution_count":46,"outputs":[]},{"cell_type":"code","execution_count":47,"metadata":{"id":"KUkXAgKD2YLH","executionInfo":{"status":"ok","timestamp":1708676635053,"user_tz":-60,"elapsed":5,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[],"source":["discr_vector = (1,3,10,20,) # Resolution degrees: How many discrete states per variable. Play with this parameter!\n","\n","class Discretizer ():\n"," \"\"\" mins: vector with minimim values allowed for each variable\n"," maxs: vector with maximum values allowed for each variable\n"," \"\"\"\n"," def __init__(self, vector_discr, mins, maxs):\n"," self.mins=mins\n"," self.maxs=maxs\n","\n"," def Discretize(self, obs):\n"," ratios = [(obs[i] + abs(self.mins[i])) / (self.maxs[i] - self.mins[i]) for i in range(len(obs))]\n"," new_obs = [int(round((discr_vector[i] - 1) * ratios[i])) for i in range(len(obs))]\n"," new_obs = [min(discr_vector[i] - 1, max(0, new_obs[i])) for i in range(len(obs))]\n"," return tuple(new_obs)\n","\n","# Create the discretizer with maxs and mins from the enviroment\n","d = Discretizer(discr_vector, env.observation_space.low, env.observation_space.high)\n","\n","# It will not work because limits for two varaibles are almost infinite (in other case could work)"]},{"cell_type":"code","execution_count":48,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xes7l8np2YLI","outputId":"73fc6bf8-a6a4-4002-ad2a-cd02b261c121","executionInfo":{"status":"ok","timestamp":1708676635054,"user_tz":-60,"elapsed":6,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["[-0.04140465 -0.02969787 -0.0168459 0.01875045]\n"]},{"output_type":"stream","name":"stderr","text":[":12: RuntimeWarning: overflow encountered in scalar subtract\n"," ratios = [(obs[i] + abs(self.mins[i])) / (self.maxs[i] - self.mins[i]) for i in range(len(obs))]\n"]},{"output_type":"execute_result","data":{"text/plain":["(0, 0, 4, 0)"]},"metadata":{},"execution_count":48}],"source":["obs1,_ = env.reset()\n","print(obs1)\n","d.Discretize(obs1)"]},{"cell_type":"code","execution_count":49,"metadata":{"id":"lJ09GD_Y2YLI","executionInfo":{"status":"ok","timestamp":1708676644199,"user_tz":-60,"elapsed":9150,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[],"source":["# Another approach. Try a lot of random actions and find maximum and minimum for each variable empirically\n","# This approach also has some problems, because some states are found with very low probability.\n","t=0\n","tsteps=0\n","treward=0\n","lO=np.zeros((100000,4))\n","for nexp in range(10000): # Let's do 10 trials\n"," done= False\n"," env.reset()\n"," while not done:\n"," observation, reward, terminated, truncated, info = env.step(env.action_space.sample()) # take a random action\n"," done = truncated or terminated\n"," treward = treward + reward\n"," tsteps = tsteps + 1\n"," lO[nexp]=np.array(observation)\n","\n","maxv=[np.max(lO[:,i]) for i in range(lO.shape[1])]\n","minv=[np.min(lO[:,i]) for i in range(lO.shape[1])]\n","\n","# Now we have a better discretization based on common values\n","d = Discretizer(discr_vector, minv, maxv)\n","\n","# or even better\n","minv = [env.observation_space.low[0], minv[1], env.observation_space.low[2], minv[3]]\n","maxv = [env.observation_space.high[0], maxv[1], env.observation_space.high[2], maxv[3]]\n","d = Discretizer(discr_vector, minv, maxv)"]},{"cell_type":"markdown","metadata":{"id":"MeNIbGLZ2YLI"},"source":["## Q-learning implementation\n","\n","#### Define epsilon-greedy procedure"]},{"cell_type":"code","execution_count":50,"metadata":{"id":"aBKogUg42YLI","executionInfo":{"status":"ok","timestamp":1708676644200,"user_tz":-60,"elapsed":15,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[],"source":["def choose_action(state, epsilon):\n"," return env.action_space.sample() if (np.random.random() <= epsilon) else np.argmax(Q[state])\n"]},{"cell_type":"markdown","metadata":{"id":"42NTdU6Y2YLJ"},"source":["#### Implementation of Q-learning"]},{"cell_type":"code","execution_count":51,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"98hAkMbq2YLJ","outputId":"7341206b-356f-4384-9059-c63332a51ed1","executionInfo":{"status":"ok","timestamp":1708676655020,"user_tz":-60,"elapsed":10828,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Episode 100 Total Reward: 10.0 Average Reward: 10.12\n","Episode 200 Total Reward: 13.0 Average Reward: 14.54\n","Episode 300 Total Reward: 111.0 Average Reward: 28.47\n","Episode 400 Total Reward: 40.0 Average Reward: 105.21\n","Episode 500 Total Reward: 156.0 Average Reward: 113.19\n","Episode 600 Total Reward: 33.0 Average Reward: 104.65\n","Episode 700 Total Reward: 73.0 Average Reward: 107.68\n","Episode 800 Total Reward: 142.0 Average Reward: 107.1\n","Episode 900 Total Reward: 500.0 Average Reward: 228.17\n","Ran 907 episodes. Solved after 807 trials ✔\n"]}],"source":["# Set parameters for learning\n","alpha = 0.2\n","epsilon = 0.1\n","gamma = 1\n","\n","# Create and initialize Q-value table to 0\n","Q = np.zeros(discr_vector + (env.action_space.n,))\n","\n","# Just to store the long-term-reward of the last 100 experiments\n","scores = deque(maxlen=100)\n","lrews = []\n","lr = []\n","\n","for episode in range(1,10001):\n"," done = False\n"," R, reward = 0,0\n"," state = d.Discretize(env.reset()[0])\n"," while done != True:\n"," action = choose_action(state, epsilon)\n"," obs, reward, terminated, truncated, info = env.step(action)\n"," done = truncated or terminated\n"," new_state = d.Discretize(obs)\n"," Q[state][action] += alpha * (reward + (1-terminated) * gamma * np.max(Q[new_state]) - Q[state][action]) #3\n"," R = gamma * R + reward\n"," state = new_state\n"," lr.append(R)\n"," scores.append(R)\n"," mean_score = np.mean(scores)\n"," lrews.append(np.mean(scores))\n"," if mean_score >= 250 and episode >= 100:\n"," print('Ran {} episodes. Solved after {} trials ✔'.format(episode, episode - 100))\n"," break\n"," if episode % 100 == 0:\n"," print('Episode {} Total Reward: {} Average Reward: {}'.format(episode,R,np.mean(scores)))\n"]},{"cell_type":"markdown","metadata":{"id":"eKVCVy2g2YLJ"},"source":["This is how long term reward increses with episodes. Remember that long-term-reward represents the number of time steps before failure. We decided the task was learnt when the average long-term-reward of the last 100 experiences is higher than 200."]},{"cell_type":"code","execution_count":52,"metadata":{"id":"wlSS0sum2YLK","outputId":"2b54a065-9971-44af-b1b6-001d5061c171","colab":{"base_uri":"https://localhost:8080/","height":430},"executionInfo":{"status":"ok","timestamp":1708676655534,"user_tz":-60,"elapsed":522,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}],"source":["plt.plot(lrews)\n","plt.show()\n"]},{"cell_type":"markdown","metadata":{"id":"5vwjVNmT2YLK"},"source":["Notice that, being results shown are average of last 100 experiments, there is a \"delay\" of 100 episodes in detecting that desired behavior has been learnt. We could plot the actual reward for each episode, but is too varaible to see anything. It is better to average returns."]},{"cell_type":"code","execution_count":53,"metadata":{"id":"cS7L826w2YLK","outputId":"38de90c5-f924-4505-a09a-a0202cb982d5","colab":{"base_uri":"https://localhost:8080/","height":430},"executionInfo":{"status":"ok","timestamp":1708676655870,"user_tz":-60,"elapsed":349,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}],"source":["plt.plot(lr)\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"wfjvzG8R2YLK"},"source":["Why so many peaks? Remember! We take random actions with probability $\\epsilon$. Notice difference in performance when we set epsilon to zero. That's because we use an off-policy method."]},{"cell_type":"code","execution_count":54,"metadata":{"id":"au0W7ZRE2YLK","outputId":"06b93d46-4a86-4ee0-8ab1-beff69f88c7a","colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"status":"ok","timestamp":1708676665427,"user_tz":-60,"elapsed":9563,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Average reward for epsilon 0.1 : 125.9\n","Average reward for epsilon 0: 133.0\n"]}],"source":["def rollout(epsilon, render=True, envname='CartPole-v1'):\n"," if render:\n"," env = RecordVideo(gym.make('CartPole-v1',render_mode='rgb_array'),video_folder='video')\n"," else:\n"," env = gym.make(envname)\n"," done = False\n"," R, reward = 0,0\n"," state = d.Discretize(env.reset()[0])\n"," while done != True:\n"," if render:\n"," env.render()\n"," action = choose_action(state, epsilon)\n"," obs, reward, terminated, truncated, info = env.step(action)\n"," done = truncated or terminated\n"," R = gamma * R + reward\n"," state = d.Discretize(obs)\n"," env.close()\n"," if render:\n"," show_video()\n"," return R\n","\n","\n","rollout(epsilon)\n","rollout(0)\n","\n","print('Average reward for epsilon',epsilon,':', np.mean([rollout(epsilon, render=False) for _ in range(20)]))\n","print('Average reward for epsilon 0:', np.mean([rollout(0,render=False) for _ in range(20)]))"]},{"cell_type":"code","source":["\n","env = gym.make('CartPole-v1')"],"metadata":{"id":"hou9zsCduRpB","executionInfo":{"status":"ok","timestamp":1708676665427,"user_tz":-60,"elapsed":13,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"execution_count":55,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"4vEMk4t-2YLL"},"source":["But instead of stopping after return in last 100 experiments is higher than 200, let's iterate a fixed number of experiences"]},{"cell_type":"code","execution_count":56,"metadata":{"id":"2Z0_ejRW2YLL","colab":{"base_uri":"https://localhost:8080/","height":430},"outputId":"3e9a7335-38ea-4f6a-dbf2-54db202f32d5","executionInfo":{"status":"ok","timestamp":1708676698309,"user_tz":-60,"elapsed":32891,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}],"source":["# Set parameters for learning\n","alpha = 0.2\n","epsilon = 0.1\n","gamma = 1\n","\n","# Create and initialize Q-value table to 0\n","Q = np.zeros(discr_vector + (env.action_space.n,))\n","\n","# Just to store the long-term-reward of the last 100 experiments\n","scores = deque(maxlen=100)\n","lrews = []\n","\n","for episode in range(1,1001):\n"," done = False\n"," R, reward = 0,0\n"," state = d.Discretize(env.reset()[0])\n"," while done != True:\n"," action = choose_action(state, epsilon)\n"," obs, reward, terminated, truncated, info = env.step(action)\n"," done = truncated or terminated\n"," new_state = d.Discretize(obs)\n"," Q[state][action] += alpha * (reward + gamma * np.max(Q[new_state]) - Q[state][action]) #3\n"," R = gamma * R + reward\n"," state = new_state\n"," scores.append(R)\n"," mean_score = np.mean(scores)\n"," lrews.append(np.mean(scores))\n","\n","plt.plot(lrews)\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"m4pqsjG62YLM"},"source":["Inestability can be produced because we had not good enough discretization and/or large alpha values and/or large epsilon values.\n"]},{"cell_type":"markdown","metadata":{"id":"papdRItX2YLM"},"source":["Not bad. However, in RL results depend a lot on randomization, so it's a good thing repeat several times the same procedure"]},{"cell_type":"code","execution_count":57,"metadata":{"id":"yXwo7-8z2YLM","colab":{"base_uri":"https://localhost:8080/"},"outputId":"b72d4a8f-a957-45b2-af97-7727643500d6","executionInfo":{"status":"ok","timestamp":1708676778674,"user_tz":-60,"elapsed":80370,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["*** New experiment!\n","*** New experiment!\n","*** New experiment!\n","*** New experiment!\n","*** New experiment!\n"]}],"source":["l100rew=[]\n","for _ in range(5):\n"," print('*** New experiment!')\n"," # Create and initialize Q-value table to 0\n"," Q = np.zeros(discr_vector + (env.action_space.n,))\n","\n"," # Just to store the long-term-reward of the last 100 experiments\n"," scores = deque(maxlen=100)\n"," lrews = []\n","\n"," for episode in range(1,1001):\n"," done = False\n"," R, reward = 0,0\n"," state = d.Discretize(env.reset()[0])\n"," while done != True:\n"," action = choose_action(state, epsilon)\n"," obs, reward, terminated, truncated, info = env.step(action)\n"," done = truncated or terminated\n"," new_state = d.Discretize(obs)\n"," Q[state][action] += alpha * (reward + gamma * np.max(Q[new_state]) - Q[state][action]) #3\n","\n"," R = gamma * R + reward\n"," state = new_state\n"," scores.append(R)\n"," mean_score = np.mean(scores)\n"," lrews.append(np.mean(scores))\n"," #if mean_score >= 195 and episode >= 100:\n"," # print('Ran {} episodes. Solved after {} trials ✔'.format(episode, episode - 100))\n"," # break\n"," #if episode % 100 == 0:\n"," # print('Episode {} Total Reward: {} Average Reward: {}'.format(episode,G,np.mean(scores)))\n"," l100rew.append(lrews)\n","\n"]},{"cell_type":"code","source":["def tsplot(data,**kw):\n"," x = np.arange(data.shape[1])\n"," est = np.mean(data, axis=0)\n"," sd = np.std(data, axis=0)\n"," cis = (est - sd, est + sd)\n"," plt.fill_between(x,cis[0],cis[1],alpha=0.2, **kw)\n"," plt.plot(x,est,**kw)\n"," plt.margins(x=0)"],"metadata":{"id":"L75TWD4WOhgv","executionInfo":{"status":"ok","timestamp":1708676778675,"user_tz":-60,"elapsed":14,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"execution_count":58,"outputs":[]},{"cell_type":"code","execution_count":59,"metadata":{"id":"45ARIvHB2YLM","colab":{"base_uri":"https://localhost:8080/","height":430},"executionInfo":{"status":"ok","timestamp":1708676778675,"user_tz":-60,"elapsed":11,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}},"outputId":"5679caf6-bbca-4b82-df6d-814055d23fb2"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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cNpl9poQEVFBYkCZothjQkREhYwfn4mIiKjgMKAQERFRwWFAISIiooLDgEJEREQFhwGFiIiICg4DChERERUcBhQiIiIqOAwoREREVHAYUIiIiKjgMKAQERFRwWFAISIiooLDgEJEREQFhwGFiIiICg4DChERERUce74bMBFCCABAOBzOc0uIiIhorIau20PX8VMpyoDS19cHAGhqaspzS4iIiGi8IpEIAoHAKY8pyoBSVVUFAGhtbT3tC6TsCofDaGpqQltbG/x+f76bM+XxfBQOnovCwXNROIQQiEQiaGxsPO2xRRlQZDk5dSYQCPCPrUD4/X6eiwLC81E4eC4KB89FYRhrxwInyRIREVHBYUAhIiKiglOUAcXlcuGb3/wmXC5Xvpsy5fFcFBaej8LBc1E4eC6KkyTGstaHiIiIKIeKsgeFiIiIShsDChERERUcBhQiIiIqOAwoREREVHCKMqD89Kc/xaxZs+B2u7FixQps3bo1300qKevXr8f555+P8vJy1NXV4ZprrsH+/fvTjlEUBevWrUN1dTXKysqwZs0adHV1pR3T2tqK1atXw+v1oq6uDrfffjsMw8jlSyk59957LyRJwi233JK6jecit06cOIGPf/zjqK6uhsfjwdKlS/H666+n7hdC4O6778a0adPg8XiwcuVKHDhwIO0x+vv7cf3118Pv96OiogKf+cxnEI1Gc/1SipppmvjGN76B2bNnw+PxYO7cufjXf/3XtD1eeC6KnCgyjzzyiHA6neLnP/+52L17t/jsZz8rKioqRFdXV76bVjJWrVolfvGLX4hdu3aJHTt2iCuvvFI0NzeLaDSaOubzn/+8aGpqEps2bRKvv/66uPDCC8VFF12Uut8wDLFkyRKxcuVK8cYbb4inn35a1NTUiDvvvDMfL6kkbN26VcyaNUucddZZ4otf/GLqdp6L3Onv7xczZ84Un/zkJ8WWLVvE4cOHxbPPPisOHjyYOubee+8VgUBAPPbYY+LNN98UH/7wh8Xs2bNFIpFIHfPBD35QLFu2TLz66qvir3/9q5g3b5742Mc+lo+XVLTuueceUV1dLZ588klx5MgR8eijj4qysjLxwx/+MHUMz0VxK7qAcsEFF4h169alvjdNUzQ2Nor169fnsVWlrbu7WwAQL7zwghBCiGAwKBwOh3j00UdTx+zdu1cAEJs3bxZCCPH0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\n"},"metadata":{}}],"source":["tsplot(data=np.array(l100rew)) #, err_style=\"unit_traces\")\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Q6-LtNap2YLN"},"source":["Not very smooth and somewhat slow in learning. We could do better setting a variable alpha and epsilon (why?)\n","\n","$$ \\epsilon = \\max \\left( \\epsilon_{min}, 1- \\log \\frac{t+1}{tau} \\right) $$\n","$$ \\alpha = \\max \\left( \\alpha_{min}, 1- \\log \\frac{t+1}{tau} \\right) $$"]},{"cell_type":"code","execution_count":60,"metadata":{"id":"xbP8CR7S2YLN","colab":{"base_uri":"https://localhost:8080/","height":430},"executionInfo":{"status":"ok","timestamp":1708676779080,"user_tz":-60,"elapsed":412,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}},"outputId":"c5e315a9-676f-4a36-c434-4d24203678cb"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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VsGhvQJHWwWOtgocbRW4SGirqJjACgAAYldc94wAAADrEUYAAIClCCMAAMBShBEAAGCpuA4ja9asUUlJiZKTk1VaWqotW7ZYXdKQ+v73vy+bzeb3mDRpku/5trY2LVmyRCNGjFBaWpq+8pWvqK6uzu81ampqdOuttyo1NVV5eXl64IEH1NnZOdQfJSzeeustzZ07V0VFRbLZbHrppZf8njfGaMWKFSosLFRKSorKy8v10Ucf+Z1z5swZzZ8/XxkZGcrKytI3vvENNTc3+52zc+dOXXfddUpOTlZxcbF+/OMfh/ujhVx/bfWP//iPF33Xbr75Zr9z4qGtVq1apauuukrp6enKy8vTbbfdpr179/qdE6qfu82bN+vKK6+U0+nU+PHj9cwzz4T744VcIO01e/bsi75b99xzj9858dBeTz31lKZOnerbuKysrEx/+MMffM9H/PfKxKn169cbh8Nh1q1bZ95//32zaNEik5WVZerq6qwubcisXLnSXHHFFebEiRO+x6lTp3zP33PPPaa4uNhUVlaarVu3mk996lPm05/+tO/5zs5OM3nyZFNeXm527NhhXn31VZOTk2OWLVtmxccJuVdffdU8/PDD5oUXXjCSzIsvvuj3/GOPPWYyMzPNSy+9ZN59913zhS98wYwdO9acO3fOd87NN99spk2bZv72t7+ZP//5z2b8+PHm9ttv9z3f2Nho8vPzzfz5882uXbvMb3/7W5OSkmL+8z//c6g+Zkj011Z33XWXufnmm/2+a2fOnPE7Jx7aas6cOeaXv/yl2bVrl6murjaf+9znzOjRo01zc7PvnFD83B04cMCkpqaaiooK88EHH5if/vSnJiEhwWzcuHFIP+9gBdJe//AP/2AWLVrk991qbGz0PR8v7fXKK6+YDRs2mA8//NDs3bvXPPTQQyYpKcns2rXLGBP536u4DSNXX321WbJkie/vXV1dpqioyKxatcrCqobWypUrzbRp03p8rqGhwSQlJZnf/e53vmO7d+82kkxVVZUxxvMLyG63m9raWt85Tz31lMnIyDDt7e1hrX2offIXrNvtNgUFBebf/u3ffMcaGhqM0+k0v/3tb40xxnzwwQdGkvn73//uO+cPf/iDsdls5tixY8YYY5588kmTnZ3t114PPvigmThxYpg/Ufj0Fka++MUv9npNvLbVyZMnjSTz5ptvGmNC93P33e9+11xxxRV+7zVv3jwzZ86ccH+ksPpkexnjCSP33ntvr9fEc3tlZ2ebn//851HxvYrLYZqOjg5t27ZN5eXlvmN2u13l5eWqqqqysLKh99FHH6moqEjjxo3T/PnzVVNTI0natm2bzp8/79dGkyZN0ujRo31tVFVVpSlTpig/P993zpw5c+RyufT+++8P7QcZYgcPHlRtba1f+2RmZqq0tNSvfbKysjRr1izfOeXl5bLb7XrnnXd851x//fVyOBy+c+bMmaO9e/fq7NmzQ/RphsbmzZuVl5eniRMnavHixTp9+rTvuXhtq8bGRknS8OHDJYXu566qqsrvNbznRPu/b59sL69f//rXysnJ0eTJk7Vs2TK1trb6novH9urq6tL69evV0tKisrKyqPheRcWN8kKtvr5eXV1dfo0uSfn5+dqzZ49FVQ290tJSPfPMM5o4caJOnDihRx55RNddd5127dql2tpaORwOZWVl+V2Tn5+v2tpaSVJtbW2Pbeh9LpZ5P19Pn//j7ZOXl+f3fGJiooYPH+53ztixYy96De9z2dnZYal/qN1888368pe/rLFjx2r//v166KGHdMstt6iqqkoJCQlx2VZut1v33XefrrnmGk2ePFmSQvZz19s5LpdL586dU0pKSjg+Ulj11F6SdMcdd2jMmDEqKirSzp079eCDD2rv3r164YUXJMVXe7333nsqKytTW1ub0tLS9OKLL+ryyy9XdXV1xH+v4jKMwOOWW27x/Xnq1KkqLS3VmDFj9Nxzz0XNDx+iw9e+9jXfn6dMmaKpU6fqkksu0ebNm3XjjTdaWJl1lixZol27duntt9+2upSo0Ft73X333b4/T5kyRYWFhbrxxhu1f/9+XXLJJUNdpqUmTpyo6upqNTY26vnnn9ddd92lN9980+qyAhKXwzQ5OTlKSEi4aCZxXV2dCgoKLKrKellZWbr00ku1b98+FRQUqKOjQw0NDX7nfLyNCgoKemxD73OxzPv5+voOFRQU6OTJk37Pd3Z26syZM3HfhuPGjVNOTo727dsnKf7a6lvf+pZ+//vf64033tCoUaN8x0P1c9fbORkZGVH5H43e2qsnpaWlkuT33YqX9nI4HBo/frxmzpypVatWadq0afqP//iPqPhexWUYcTgcmjlzpiorK33H3G63KisrVVZWZmFl1mpubtb+/ftVWFiomTNnKikpya+N9u7dq5qaGl8blZWV6b333vP7JbJp0yZlZGTo8ssvH/L6h9LYsWNVUFDg1z4ul0vvvPOOX/s0NDRo27ZtvnNef/11ud1u3z+YZWVleuutt3T+/HnfOZs2bdLEiROjbtghGEePHtXp06dVWFgoKX7ayhijb33rW3rxxRf1+uuvXzTsFKqfu7KyMr/X8J4Tbf++9ddePamurpYkv+9WvLTXJ7ndbrW3t0fH92rQU2Cj1Pr1643T6TTPPPOM+eCDD8zdd99tsrKy/GYSx7pvf/vbZvPmzebgwYPmL3/5iykvLzc5OTnm5MmTxhjPUrDRo0eb119/3WzdutWUlZWZsrIy3/XepWA33XSTqa6uNhs3bjS5ubkxs7S3qanJ7Nixw+zYscNIMqtXrzY7duwwhw8fNsZ4lvZmZWWZl19+2ezcudN88Ytf7HFp74wZM8w777xj3n77bTNhwgS/5aoNDQ0mPz/f3HnnnWbXrl1m/fr1JjU1NaqWqxrTd1s1NTWZ73znO6aqqsocPHjQ/OlPfzJXXnmlmTBhgmlra/O9Rjy01eLFi01mZqbZvHmz31LU1tZW3zmh+LnzLsF84IEHzO7du82aNWuibqmqMf231759+8wPfvADs3XrVnPw4EHz8ssvm3Hjxpnrr7/e9xrx0l5Lly41b775pjl48KDZuXOnWbp0qbHZbOa1114zxkT+9ypuw4gxxvz0pz81o0ePNg6Hw1x99dXmb3/7m9UlDal58+aZwsJC43A4zMiRI828efPMvn37fM+fO3fO/NM//ZPJzs42qamp5ktf+pI5ceKE32scOnTI3HLLLSYlJcXk5OSYb3/72+b8+fND/VHC4o033jCSLnrcddddxhjP8t7ly5eb/Px843Q6zY033mj27t3r9xqnT582t99+u0lLSzMZGRlm4cKFpqmpye+cd99911x77bXG6XSakSNHmscee2yoPmLI9NVWra2t5qabbjK5ubkmKSnJjBkzxixatOii4B8PbdVTG0kyv/zlL33nhOrn7o033jDTp083DofDjBs3zu89okV/7VVTU2Ouv/56M3z4cON0Os348ePNAw884LfPiDHx0V5f//rXzZgxY4zD4TC5ubnmxhtv9AURYyL/e2UzxpjB968AAAAMTFzOGQEAAJGDMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAAS/1/yl6eLAHib4QAAAAASUVORK5CYII=\n"},"metadata":{}}],"source":["min_alpha=0.05\n","min_epsilon = 0.01\n","tau = 50\n","\n","def set_epsilon(t, tau):\n"," return max(min_epsilon, min(1, 1.0 - math.log10((t + 1) / tau)))\n","\n","def set_alpha(t, tau):\n"," return max(min_alpha, min(1.0, 1.0 - math.log10((t + 1) / tau)))\n","\n","plt.plot([set_alpha(i, tau) for i in range(1001)])\n","plt.show()"]},{"cell_type":"code","execution_count":61,"metadata":{"id":"SAHNC8Kg2YLN","colab":{"base_uri":"https://localhost:8080/","height":517},"executionInfo":{"status":"ok","timestamp":1708676927275,"user_tz":-60,"elapsed":148202,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}},"outputId":"3b32f738-fc9a-4c20-fa55-2e828401e197"},"outputs":[{"output_type":"stream","name":"stdout","text":["*** New experiment!\n","*** New experiment!\n","*** New experiment!\n","*** New experiment!\n","*** New experiment!\n"]},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQ30lEQVR4nO3deXhc5WH3/e+ZfUbSjKzdsi3veAMDMYsFIRsGhzo0CaZNUkqcNMsTatIACUnpk5CtCbykbZr0DaHNAnneQGl42iyQsBgTzGY2E4MX8IKNLVuWZK2j0ezn3O8fY489lmwsW8tI+n2uay4859wzcw9HmvnpXi1jjEFERESkiLhGuwIiIiIix1JAERERkaKjgCIiIiJFRwFFREREio4CioiIiBQdBRQREREpOgooIiIiUnQUUERERKToeEa7AqfCcRyam5spKyvDsqzRro6IiIicBGMMvb291NfX43KduI1kTAaU5uZmpk2bNtrVEBERkVPQ1NTE1KlTT1hmTAaUsrIyIPcGw+HwKNdGRERETkY0GmXatGn57/ETGZMB5XC3TjgcVkAREREZY05meIYGyYqIiEjRUUARERGRoqOAIiIiIkVHAUVERESKjgKKiIiIFB0FFBERESk6CigiIiJSdBRQREREpOgooIiIiEjRUUARERGRoqOAIiIiIkVHAUVERESKzqACyje+8Q0syyq4zZ8/P38+mUyyevVqKisrKS0tZeXKlbS2thY8x969e1mxYgWhUIiamhpuvvlmstns0LwbERERGRcGvZvxokWLePzxx488gefIU9x44438/ve/54EHHiASiXD99ddz1VVX8eyzzwJg2zYrVqygrq6O5557jgMHDvDxj38cr9fLd7/73SF4OyIyEaSzDom0jddjEfS6SWUdAl73aFdLRIbQoAOKx+Ohrq6u3/Genh5+9rOfcd999/G+970PgLvvvpsFCxbw/PPPs3TpUh577DG2bt3K448/Tm1tLeeccw7f/va3+cpXvsI3vvENfD7f6b8jERm3epMZMrahuTuBMbljXo9FJmsIBz2U+D14XBaRoPektnMXkeI16DEoO3bsoL6+nlmzZnHNNdewd+9eADZs2EAmk2HZsmX5svPnz6ehoYH169cDsH79es466yxqa2vzZZYvX040GmXLli3Hfc1UKkU0Gi24icjE4TiG1miSt9rj7O86Ek4AMtncnWgiy4HuJE2dCXa0xeiJZ4ins8TTWWzHHOeZRaRYDaoF5cILL+See+5h3rx5HDhwgG9+85tccsklbN68mZaWFnw+H+Xl5QWPqa2tpaWlBYCWlpaCcHL4/OFzx3PbbbfxzW9+czBVFZFxwHYMTZ1xepODG6eWyjjs7Yzn77tdFlMrgoQD3kG/vjEGj3vgv+Ucx5C2HRxjsLBwuyw8LgvLIh+KXFbu/oladDK2wwu7OujoS+M69Dwuy8LlhhKfh3c0TCLoO34XVjSZoSOWJmM7uWCWsSk5VN45lOaqSv24LAuvO/f8fo8Lt8uFz23h97rHbIuT4xgMcLj2R/+/NsaQzDhYFnjdLlxvcx0OPyb3PMcvZzuG7niaihJfvlzWdkjbDqmMQyrrkMrapLMOHreLSNCLMYZI0Et7LM2bB2PYjsExhlTGIZHJMnVSiEX1YXxuF263C2PMcevQEUvRk8hQHvKRzNiHfk5z19qQ+69z6PnbY2k6Y2kMuXOprIPLglK/h5pwgI7eFJ3xDFnHwTrq/6c59G/n0PNmbIe+lE3GdkhmbbK2yb9OacCL1+2iuTvBluYeMrbB53FR4nMTDnop9edaNyNBLxF35qSv7aACyhVXXJH/9+LFi7nwwguZPn06v/rVrwgGg4N5qkG55ZZbuOmmm/L3o9Eo06ZNG7bXE5HRl0jbNHXFSWWc034u2zHsaY9TWeqjstSHy7LY3trLtpZeKkt8JNIOWIYSn4cdB2Nsa+mlL5WluTtJ1sm9vsvKhY+6SOBQCLFo6orTEUtjAR63RanfQzjoxX3MF4sh96ViAI/LIhzwkso6JDM2Kdth98E+Ehn7uPX3uC3K/B4sy8p/yR79Cu2xFKfTSOSyckHI53GRPfTF5vO4CHjceN0WadshnXXI2Cb/Be73uomnszgDXJ6ygIcZVSV4XBa2k/uitR2H1miKUn/udZIZm3g694UX8rkpC3gJ+dyUHDofTWSIpbL4PW5CPncuXFq5Zv+M7WCbXChIZGySGZuMbUhlHaKJDKls7ks7YxtiqSPhNuBx0VAZwudxUeb34nVb2Cb3JYwBgyFrHwmWLtfh/99gYbGno4++tE08nSWZcQh63YAhnc3VZ6h4XBZetwuv2yLoc+NxucjYDlknFxQGG9iLiZOKv32hQwY9BuVo5eXlnHHGGezcuZPLLruMdDpNd3d3QStKa2trfsxKXV0dL774YsFzHJ7lM9C4lsP8fj9+v/90qioiY4QxuS+atzr68l8WQ6UjlubZHe18+/dbiRbZh3wk6KW+PIDjgG0MtpO7RRMZuhMZuuIn/ssz6HXj97jwelz43C760tlc6w2QzNr0pWwscmHpWI6B3lQWUoOo8An+/yUyNm29g3mykZHMOmxvjQ3Z8x0vVLpduZYqn8dFOuuQPCZkT44ECHjdWIDLZeEYw56OeL7VLesYso5NIsOAP6cWEPS5iadtPC4Lj9vC4nBLHUf+Te7nqrLUj8si38piWbmWlO54Bo/bYkp5EHc+kFm4XIcC2qFQfjiAGyx87tzAdI/LlS8XT+cCodtlccHMCuoiAZIZm95khnjaJpbM0pfK0p3I0NzWyb+f5P/f0woosViMN998k2uvvZYlS5bg9XpZu3YtK1euBGDbtm3s3buXxsZGABobG/nOd75DW1sbNTU1AKxZs4ZwOMzChQtPpyoiMsYlM3b+r+a+1PFbE05HIm3zz2u2E01mKfG5KQ956U1mmVSSa1Vpj6WYWh5kcnmAyhI/0ytDlPg9WIc+3GPJLG29KcyhpvSKEh/TK0I4JvdXfVc8Q3c8jWPIf0EcbiqfHAkQ8rnJOIbOvjSRoBe/x4XP4+KM2jLOnlqOy9W/ST9rO2xv7aUvbYMxBH1ujLFI2XY+bZQHvcypLSt43NFdBMbkgo7HbWE7ufdyuGUgfaglpyOexrZzz++yLFJZm95kllQ211IQ8LoPncs9fyxl51pDjun+Mhg6+tK81d6HMbkvtoO9KbriaebXhelLZfF7XAR87lyo8roOfYHlrn/uNW0qS31Egj760lliySwHYyl2HeyjpsyP123lWzhydXNR4vPg97qoLQtQFvTi81h4XS4aKkpwuSBrGw72ptjW2kvGdmiPpcnaTr5LyCL3ZXu46wXA53Ed9f8Tqkp9zKsL43Vb1IQDHOxN4nPn3sPha+lzu/p1CSYzNi7LojeZwe2yKA/1nxCSTNv0pbOkD3UPZexc99ThMVRetyvfbVIbCVAW8JLM2Pg9rjHVPReNRvn3T59cWcsYc9J/onzpS1/iyiuvZPr06TQ3N/P1r3+djRs3snXrVqqrq7nuuuv4wx/+wD333EM4HObzn/88AM899xyQm2Z8zjnnUF9fzx133EFLSwvXXnstn/70pwc1zTgajRKJROjp6SEcDp/040Sk+MRSWVqjSeLDFEqOdueTO3l4cwt14QCP3fQuwgHvCfv6RWRoDeb7e1AtKPv27eNjH/sYHR0dVFdX8853vpPnn3+e6upqAL7//e/jcrlYuXIlqVSK5cuXc+edd+Yf73a7eeihh7juuutobGykpKSEVatW8a1vfesU3qaIjAfN3YkhGWfydtZsbeHhzbnB+N+7enF+wKzCiUhxGlQLSrFQC4rI+NDUGaf7bcZWDIUHX23mP57eBcDVS6byT39x9rC/poj0N2wtKCIip+vw9MdYKjvs4SRjO/zzmu08u7MdgA+eXc+Ny+YO62uKyNBQQBGRYXV4dP+BngS2Y0ikbVJZh+Fuu01mbL77h9f5U1M3Lgs+en4DHz1/2oADFEWk+CigiMiw2NkWI5mxMQYCXle/qZbDadfBGD98YgdvHuzD73HxtRULOXtaOR63RYlfH3siY4F+U0VkyLX0JEmkj8zKGalwYjuGe1/Yw3+/sg/H5FbL/NoHFrJwcq6vOxwc3EqyIjJ6FFBEZEhlbYf22Mgv0pXM2Hz/8e0892YHABfNruR/vWs2FSVHunTKFVBExgwFFBEZMom0zYGexLCPLzmW7Ri+8eAWtjRH8bgsbrrsDC6ZW11QxutR947IWKLfVhEZMns746SzIzfWBHKrpP7k6V1saY4S8ObGmyyeWt6vXGWJtssQGUsUUERkSPSlsiMaThxjWLf9IGtfb+XVfT1YwBcuPWPAcGJZFHT1iEjxU0ARkSHREUuP2GsZY/jPF/dy/0tN+WP/612zeOecqgHLlwU8uAfY50ZEipcCioicFscxtPWm6EkM/4qwjjE8tqWVh15rZk9nbtv2oNfNX13YwIrF9QM+xrJgciQ47HUTkaGlgCIip6U9luJg7/DP2jnYm+KHT+xgY1M3kNtpdlXjDK5cPPmE++lUl/kLdqUVkbFBAUVETtlI7KXTEUvxx20H+b8bmuhL2/g8Lq5+x1QuX1hLZemJB766XFD1NmVEpDgpoIjIKemJZ4Y1nOzrivPTZ3azYU9X/ti82jJuXHYGUyadXJdNZYlfY09ExigFFBE5JZ3x4RkUa4zht68284vn3iLr5BZUmVdbxvJFtbxvfu1JB46A10V1mVpPRMYqBRQRGTTHMfSlskP7nMbw7M52Ht7cwqb9PQCcP2MSn37nLOrLBz/IdcqkoFpPRMYwBRQRGbTeVHbIVou1HcOBngQ/Xvcmr+3LBROv2+KvLpjO1UumntJzBn0uQj59vImMZfoNFpFBSWZs9nclhuS53jwY4zt/eD0/C8jncXHZglo+fO4UasOBU35eTSsWGfsUUETkpDmOoakzju2cfvPJno4+vv3QVjr6cmNZFk4O83fvm3vSA2CPpyzg0Z47IuOAfotF5KQkMzZ7O+OkMqe3nL0xhq54hn/8/et09KWpjwS44+qziQzRTsM1YQ2MFRkPFFBE5G0ZY2juTpx2OGnpSfKva7ezpTkK5BZRu33l4iELJ2UBj8aeiIwT+k0WkbfV0ZemL2Wf8uNTWZvfv3aAe1/cm99QMBL08uXL5zEpNHSb+J3KbB8RKU4KKCJyQrZjaI+d+lL2XX1pvvvw67zR0gvA9IoQNyw7g5lVJUM6DTjgdWlJe5FxRAFFRE6ouTtBJjv4QbGv7O3iyW1tPL+rk0TGxu2y+PjS6Vx5dj1e99AHibLA0HQTiUhxUEARkX4ytoMx0BVPn9Jy9ve+sIf7X2rK32+oCLH6vXNYODk8lNUsUBbQx5nIeKLfaBEpkMra7GiNnfJCbI9sbsmHk8ZZlVx5dj0LJ4eHdVVXt8vS1GKRcUa/0SJSoC2aOqVwsrczzi+f38PzuzoA+Mh50/jrpdOHuHYDqy8/9UXdRKQ4KaCISF4yY9OTGHyXjjGGH6zdzvbWGADLF9VxzYUNQ129fkJ+N7XhAKVqPREZd/RbLSJ5B3tPrfXkmZ3t+XDyxcvO4N1nVGNZw79RX0XIp3AiMk7pN1tEgNzA2FNpPUllbX769G4A/vrCBt4zr2aoqzaggNdFeUgzd0TGKwUUEQFyY0gG23oSS2b5/P1/ojOepqLExwfPmTI8lTuKZUHI56a6zD8irTQiMjoUUESEnniG+CBXim2LJrnj0W35Rdw+e8ksAl73cFQvz+WCM2rLhmUdFREpLgooIhNceyzFge7koB4TT2f5xoNbaOpK4Pe4+O6Hz+KM2rJhqmGO12MxdVJI4URkglBAEZnA0lln0OEE4Fcv76OpK0FFiY9vf/BMGipCw1C7XCgJeNxEgl4mlQzdnj0iUvwUUEQmsFMZFGs7hj9uawNy3TrDEU78Xhd1kQBhLV8vMmEpoIhMYPF0dtCP+ekzu+jsS1Pm93DBzIohrY/bZVEW8FAXCagrR2SCU0ARmaAcx9D3NgNjtzT3kEjbzK0tI5rMsK8rwUOvHQDgXWdUD2mI8HlcTK8MDftAWxEZGxRQRCagvlSWaDKD7fSfV7x+Vwc/fXoXbb2p4z6+POjl2iFaxt7nceHzuKgs9SmciEieAorIBBNLZdl9sG/Ac63RJN979A0y9okXRPnGny867c35LAtqyvxaz0REBqSAIjKBGGPY0zFwODHG8L1Ht5GxDfPryvi7980lHPQS8rnJ2oamrjjP7Gzn/OmTmF1detp1KQ95qQlrkz8RGZgCisgE0pe2cZyBz73e0su21l58HhdfvGwedZEj4cHrzi2QNhRrnXg9FrOrSzUIVkROSAFFZIJwHMP+rsRxz//+8ODXuVUF4WQoBX0uZlSW4FE4EZG3oU8JkQmiO5EhnR24+eSRzS08teMgAMsX1g3L63s9FlPKQwonInJS1IIiMgHE09n8njnH6oil+OkzuwC46twpzJ8cHvLX93osZlSWaJaOiJw0BRSRca49luJgb4rsADNzntnZzp1P7iSVdZhbU8onLpoxLHVQOBGRwVJAERnHjDG0xwYOJx2xFP/82DayjmF6RYgblp0x5NN9vR6LyeGgwomIDJoCisg41dWXJuM4ZLIDr2nym43NZB3DgroybrtqMW7X0IaT0oCHKeVBfB6NORGRwVNAERmHmrsTdMTSA57b3R5jW0uM329qBuAvz582pOHEsqAs4KGhIqQF2ETklCmgiIwzHbHUccNJMmPzv3+9md5UbpPAWVUlLGmYNCSv63ZZzKwqwe9x4Rri1hgRmXgUUETGmY6+gcMJwP0v7c2HE5cFn75k1pC1ckytCBL0aayJiAwNBRSRccR2DKnMwGud/O7VZv77lf0AfOqdM7lwZgWTI8EheV2/10U44B2S5xIRAQUUkXElkbEHPN7UFefnz+4G4Nxp5XzonCknfJ5JJV4iQS+2YzjYmyJ5nNADUOJ3U18+NEFHROQwBRSRcSSR7h9Q1u/q4J8f24btGKpKfdx02RknfI6ygIepk0L5+xnb0NKTPEHZoFaHFZEhp4AiMo4kj2lB+f2mA9y17k0AwgEP//jBsygP+Y77eI/bYkZVScGxihIfB3tT2E7hdOXykJdpFSFERIaDAorIOHJ0QOmIpfjFc28BuQ0AP/uu2USCJx4nEh7gvNtlMTkSYN9RGw1aFtSGh2dDQRER0GaBIuOG7ZiCsSL/86f9JDI282rL+OLl8942nHg9FhXHaV2ZVOIj4M19XFgW1JT5tQCbiAwrfcKIjBN96Wz+38mMzeOvtwLwVxc04HqbqcSWBTOrSk44TXhWdSk+j4sSv4catZ6IyDBTF4/IOJE8aoDs87s6iKdtasr8nNNQfsLHBX0uqkr9+D0nXsPE7bIoC3go8eljQ0SG32m1oNx+++1YlsUNN9yQP5ZMJlm9ejWVlZWUlpaycuVKWltbCx63d+9eVqxYQSgUoqamhptvvplsNouInLqjpxivfaMNgEvn15yw9aQ04GFOTdkJB84ebXIkQCSk9U5EZPidckB56aWX+Pd//3cWL15ccPzGG2/kwQcf5IEHHmDdunU0Nzdz1VVX5c/bts2KFStIp9M899xz/OIXv+Cee+7h1ltvPfV3ITLBJdI2vclcyD/Ym+LVpm4A3je/dsDyAa+LkN/NzGNm7Lwd7a0jIiPllAJKLBbjmmuu4Sc/+QmTJh3Zx6Onp4ef/exn/Mu//Avve9/7WLJkCXfffTfPPfcczz//PACPPfYYW7du5Ze//CXnnHMOV1xxBd/+9rf50Y9+RDp9/CW6ReT4ehIZzKFZwE9ua8MAi+rD1EX6jxUp8buZXV3KFC2uJiJF7JQCyurVq1mxYgXLli0rOL5hwwYymUzB8fnz59PQ0MD69esBWL9+PWeddRa1tUf+slu+fDnRaJQtW7YM+HqpVIpoNFpwE5EcYwzRZCb/78PdO8uOaT1xuyzKQ17qy4O4XBYBr/bNEZHiNejRbvfffz+vvPIKL730Ur9zLS0t+Hw+ysvLC47X1tbS0tKSL3N0ODl8/vC5gdx2221885vfHGxVRSaEg72p/P4721p62d+dwO9xcdGcynyZoM/F5EiQEr8GuIrI2DCoFpSmpia+8IUvcO+99xIIjNw0w1tuuYWenp78rampacReW6TYdcaPdI0+fqj15KLZlYQOzbapiwSYU1OmcCIiY8qgAsqGDRtoa2vjHe94Bx6PB4/Hw7p16/jhD3+Ix+OhtraWdDpNd3d3weNaW1upq6sDoK6urt+snsP3D5c5lt/vJxwOF9xEJLfeSSabG3xijOHF3R0AvHdeDZDb9K+6zD9q9RMROVWDCiiXXnopmzZtYuPGjfnbeeedxzXXXJP/t9frZe3atfnHbNu2jb1799LY2AhAY2MjmzZtoq2tLV9mzZo1hMNhFi5cOERvS2RiaOqM5//d1puiK57B7bJYWJ8L8W+3eqyISLEaVJtvWVkZZ555ZsGxkpISKisr88c/9alPcdNNN1FRUUE4HObzn/88jY2NLF26FIDLL7+chQsXcu2113LHHXfQ0tLCV7/6VVavXo3fr7/0RE7Wwd5UwdL2Ww/kBo/PrCrB73FjWWhRNREZs4b80+v73/8+LpeLlStXkkqlWL58OXfeeWf+vNvt5qGHHuK6666jsbGRkpISVq1axbe+9a2hrorIuGWMoa03WXDslb1dAJw9tRwAv8eFy6V1S0RkbLKMMebtixWXaDRKJBKhp6dH41FkQoqlsuw+2Fdw/2/ueYlExua7Hz6Ls6ZEKA95mVYRGsVaiogUGsz3t9p/RcaYPR19pLJOwbGndxwkkbFpqAix6ND4k9AJNv4TESl2CigiY0hfKks0UbhvVTJj87tXmwF4z7zq/N47J9qZWESk2J3WZoEiMrIOrxh7tIdeO8C+rgQ+t4tL5lbnjwfeZndiEZFipoAiMkb0JjN09hXuV7W3M84DG3ILF376kpnUhXMLKPq9GiArImObAorIGNGXsnEKh57wr49vJ562WVQf5rIFR7aQUOuJiIx1CigiY0TvMd07uw7G2NEWw+Oy+Mr75+NxH/l1Dvj0qy0iY5s+xUTGgLbeZMGibAA/e2Y3AEtnVTIp5Cs4p52KRWSsU0ARKXKOYzjYmyo4tml/D6/t78HtsvjkxTMKzmkFWREZDxRQRIpcNJkpGHvS2Zfme4++AcCl82uoKSvcWTzoc+PWAFkRGeMUUESK3NEzd1qiSf7+f16jK55hekWIz1wyq1/5soBaT0Rk7FNAESlixhjiaTt//9/W7uBAT5LKEh//8GcLBhxrUubXDsYiMvYpoIgUsWTG4fBuWR2xFK/t7wHgux8+i/ryYL/yLpdWkBWR8UEBRaSIdcWPdO+s234QgPl1ZQOGE1DriYiMHwooIkWsN5nbd8cYw6NbWgC4bGHtgGXDQQ+TywMDnhMRGWs0mk6kSNmOIX1o1+I3Wnpp7kkS9Lq5ZE51v7J1kQCVJT4tby8i44YCikiRiqeP7Fq89UAUgHMbygvGmFgWTK8MURZQ146IjC/q4hEpUomjZu9sa+kFYF5tWUGZ8pBX4URExiUFFJEi1ZvKtaBkbIfX9nUDsGByuKBMZYl/pKslIjIi1MUjUoQ6YiniqVwLyqtN3fSlbSpCPubV5VpQXK7ccvaaUiwi45UCikgRajtq751n32wHoHF2JS7LwrJgdnWpNgQUkXFNXTwiRSaZscnaudXZsrbDC7s6Abh4diUAk0p8CiciMu4poIgUEWMMrdFk/v6m/T30prJEgl4W1kcAKA9qUKyIjH8KKCJFpDueIZo4Mr342Tc7AGicVYnbZeF2WZT41TMrIuOfAopIETl6aXvbMTy/KxdQLp5TBUBFiW9U6iUiMtIUUESKhO0U7ly8pbmHnkSGsoCHM+tz04vLQ+reEZGJQQFFZBQZY+g+1GoSS2XzOxfDke6dpbMq8bhduFxocKyITBgKKCKjqCeRYV9XgqztEEtlC85t2t8DwIUzKwAI+TT2REQmDgUUkVHUHc9gDHTFM/QmM/njyYzN/q44AHNrcouzBdV6IiITiP4kExklxph8q8nB3hS2c6R/Z09HHMfkxpwcHhirgCIiE4laUERGSTRxZMzJ0eEEYFd7DIBZVSX5YyG/AoqITBwKKCKjIJW12d+dOO75XQf7AJhVVQqA12PhdevXVUQmDn3iiYyCtmiqX6vJ0bYeiAIwuyYXUEo0QFZEJhgFFJERZowhetSA2GM1dcXZ2xnH47I4Z1o5gHYtFpEJRwFFZIT1JDI4zvHPP3do/ZPFU8spPbSsfamWtxeRCUYBRWQE2Y7hQE/yuOcdY/jjG20AXDwnt3ux12NpgTYRmXAUUERGUDSRIWsff+zJK3u62N+doMTn5pI51QCEA1reXkQmHgUUkRHUnTj+2BOA377aDMDli+ry407KAureEZGJRwFFZIQk0jaxZPa455s642xs6sZlwQfOmgyAx21RphYUEZmAFFBERkhzz/HXPQH447bc2JPzZ1RQEw4AEA4qnIjIxKSAIjIC4uks8ZR93PPGGJ7acRCAd59RnT+u2TsiMlEpoIiMgGN3Kj7WttZeWqMpAl4X58+oyB8PePUrKiITkz79RIZZ1nboiKVPWGbd9lzrydKZlfkpxZYFfo+mF4vIxKT2Y5Fh1pvMHndqsWMMG5u6Wft6bvzJe+bV5M+p9UREJjIFFJFh1nOCqcW/fH4PD2zYB8C0SUHObSjPn1PriYhMZAooIsMonXXoPc7U4ozt8IdNBwA4Z1o5q987B5dl5c9r9VgRmcgUUESGUe8JNgXc2NRNX9qmIuTjm3++qCCcgDYIFJGJTZ3cIsPoRCvHPnlo3ZOLZlf2CyeWBSG1oIjIBKaAIjJMkhn7uGufvHkwxtM72gG4dEFtv/MBrwuXy+p3XERkolBAERkmfcdZ+8QYw8+e2Y0B3jW3mjk1pf3KaPyJiEx0GoMiMkwG6t5JZmwe2LCPTft78LldfLxx+oCPVUARkYlOAUVkGLTHUv26d2KpLDf9aiMHepIA/MV5U6k9tOfOsbTEvYhMdOriERkG3fH+rSePb23Nh5Npk4Jcde7UAR87qcSrFhQRmfD0Z5rIEMvYDslMYetJOuvwm437AfirCxr44Dn1+DwD/31QXeYf9jqKiBQ7BRSRIXagO4k5ZmX7R7a00NGXpqrUz9VLpuJ1DxxOfB6XVpAVEUFdPCJDynYM0QEWZ3v89VaAE4YTgPKQd9jqJiIyliigiAyhzr50v9aTAz0Jdrf34bLgkjlVJ3y8AoqISI4CisgQMcbQHkv1O77+zQ4AzpwSIRw8fgAp8bvVvSMicogCisgQ6UvbZO3C5hNjDE9uPwjARbMqT/j4muNMORYRmYgGFVB+/OMfs3jxYsLhMOFwmMbGRh5++OH8+WQyyerVq6msrKS0tJSVK1fS2tpa8Bx79+5lxYoVhEIhampquPnmm8lmB15xU2QsiQ2wa/GOthi72/vwui3edUb1cR9bGvBo7RMRkaMMKqBMnTqV22+/nQ0bNvDyyy/zvve9jw9+8INs2bIFgBtvvJEHH3yQBx54gHXr1tHc3MxVV12Vf7xt26xYsYJ0Os1zzz3HL37xC+655x5uvfXWoX1XIiMsYzt09PXv3nlsSwsAF82uoixw4u4dERE5wjLm2CF9g1NRUcH3vvc9rr76aqqrq7nvvvu4+uqrAXjjjTdYsGAB69evZ+nSpTz88MN84AMfoLm5mdra3AZpd911F1/5ylc4ePAgPp/vpF4zGo0SiUTo6ekhHA6fTvVFhsS+rjhdfYWzdxJpm1V3v0giY/PdD53JWVPLj/v4ubWlWpxNRMa9wXx/n/IYFNu2uf/+++nr66OxsZENGzaQyWRYtmxZvsz8+fNpaGhg/fr1AKxfv56zzjorH04Ali9fTjQazbfCDCSVShGNRgtuIsUknu6/a/ETb7SSyNhMKQ9y5pTIcR8b9LkUTkREjjHogLJp0yZKS0vx+/187nOf49e//jULFy6kpaUFn89HeXl5Qfna2lpaWnLN3C0tLQXh5PD5w+eO57bbbiMSieRv06ZNG2y1RYZN1nZIZZyCY44xPPjaAQA+sHgylmUd9/EVJVo5VkTkWIMOKPPmzWPjxo288MILXHfddaxatYqtW7cOR93ybrnlFnp6evK3pqamYX09kcHoHWBw7JttMfZ3Jwh63bxvfs0JH6/BsSIi/Q36k9Hn8zFnzhwAlixZwksvvcQPfvADPvKRj5BOp+nu7i5oRWltbaWurg6Auro6XnzxxYLnOzzL53CZgfj9fvx+/ZUpxWmgwbGbm3sAWFQfJuQ7/q+Z12Mdd08eEZGJ7LQ/GR3HIZVKsWTJErxeL2vXrs2f27ZtG3v37qWxsRGAxsZGNm3aRFtbW77MmjVrCIfDLFy48HSrIjLi+lJZEunC7p2M7fCHTbkuy8VTjz/2BNR6IiJyPIP6dLzlllu44ooraGhooLe3l/vuu48nn3ySRx99lEgkwqc+9SluuukmKioqCIfDfP7zn6exsZGlS5cCcPnll7Nw4UKuvfZa7rjjDlpaWvjqV7/K6tWr1UIiY9JA3Tvr3+ygJZpkUsjL5QuP3zLo87ioKDm5mWsiIhPNoAJKW1sbH//4xzlw4ACRSITFixfz6KOPctlllwHw/e9/H5fLxcqVK0mlUixfvpw777wz/3i3281DDz3EddddR2NjIyUlJaxatYpvfetbQ/uuREZILNV/Y8B1h1aOvXxRHSXHtJAEfS7AIpG2mVweOGH3j4jIRHba66CMBq2DIsXAdgyvH4gWbA6YsR3+6qfPk8w4/OAj5zCrurTgMTOrS8hkHTr60sypKUVEZCIZzPe3/nwTOUWxZLbfzsXP7GwnmXGoKvUzs6qk4FyJ302p34PtNQR9WvdEROREFFBETlF3Il1w3xjD715tBuCKM+v6rX1SXZYbZ+V2WbhdCigiIiei+Y0ipyCRtokmCgfIbmvtZWdbDK/bYvmiwsGxlgUlGm8iInLSFFBETkFXvH/ryf/3/B4A3jW3mkiwcGPAkM+Ny3X81WRFRKSQAorIKYgmC2fvbGvt5bV9PfjcLv7yvP5bMRwbWERE5MQUUEQGqS+VJZM9Mjo2Yzv8x1O7AGicXUl9ebCgvGUpoIiIDJYCisggHdu98+s/7WdHW4yg182HzpnSr3xZwIPHrV81EZHB0KemyCDFUoWDY588tDDbpy+ZOeDaJuUhrRYrIjJYmlYgcpJsxxBPF3bvrN/VQVNnHLfL4qJZVf0e43JBmfbbEREZNH1yipykaCLD/u5E/n5fKsu/PbEDgA+eXU9poP+vU104oNk7IiKnQF08Iiepoy9dsHLso1ta6E1mmTopyF8vnd6vvNtlaTNAEZFTpIAichKSGZtE2s7fz9oOD76WWzX2w+dOwTvAINhSv6ffarIiInJy1MUj8jbi6Syt0VTBsad2HKQ9lqY85OU9Z9QM+LiBunxEROTkqAVF5G2096aJJY/M3NnXFednz+wG4M8X1+Pz9P818nosJoW09omIyKlSQBF5G8dOK7772beIJrPMqS7lQ+f2X/cEoCzgVfeOiMhpUEAROYFE2sZ2joyMbetN8vKeTgBuuuyMAceeQG5xNhEROXUKKCIncOyeO2tfb8MxsHhKhGkVoQEfY1la+0RE5HQpoIicwLHL2r+6rxuAd51RfdzHlGj2jojIaVNAETmOZMbutyng9tZeABbVh4/7uBK/e9jrJiIy3imgiBxH/Kh1TwB2tMXI2IbyoJcpx+xYfJjP46KqxD8S1RMRGdcUUESOI5o4Mv7EMYZ/emwbAAsmh4/bhVMb9mtpexGRIaCRfCIDyNpOwfTi1w9EOdibW6ztkrn9NwW0LCgPebVzsYjIEFFAERlAdyJTsO/OMzvaAbhodiWXzO0/QLa6zE9tODBS1RMRGffUxSMygL6jWk8cY3j2zVxAWbagtl/Z6jI/VaUadyIiMpTUgiIygL7UkQGyb7X30RXPEPS6OWdaeUG52oifmjK1nIiIDDUFFJFjxFLZgtVjNzZ1A7CwPpxfObYs4KGqzE+pFmQTERkW+nQVOcRxDAdjqYLZOzvbYtz34l4Azp8+CQC/18WMqpJRqaOIyEShgCJySF86S1s0VXDsVy83kco6TCkPcvmiOgAiQe1SLCIy3DRIVoRc60lPonDfnWTGZsPeLgC+eNTGgCGfVooVERluakERAfZ1JfptDPjqvm7SWYfqMj9zakrzx0M+/dqIiAw3taDIhJfOOkSTheueADy/qwOApTMr8ivHej0Wbq0UKyIy7BRQZMJrjSb7hRPbMby4uxOApbMq88cDHnXviIiMBAUUmdCauxP9xp4AvNESJZrMUur3sKg+kj8e8CqgiIiMBAUUmdB6k9l+rSdwpHvnghkVBV065SHN4BERGQkKKDJhpbMO6azT77gxhud35bp3LpxVkT8e9LnUgiIiMkIUUGTCSqTtAY/v6YjTEk3ic7t4R8Ok/PGygFpPRERGigKKTFjtfakBjz+/O9e9c8608oIWk7ACiojIiFFAkQkpkbaJpwZuQclPLz6qe8ftsghqgTYRkRGjFadkQmqNJvsdS6Rt7n9pL28e7MNlwfkzjh5/onAiIjKSFFBkwulNZuhNZguObWnu4Z8e2057LNftc8ncaspDvvx5LW8vIjKyFFBkwmk9ZkPAJ95o5fuP7wCgzO9hxeLJfGBxfUGZEr9+VURERpI+dWVC6UtlC2bvJDM2v3huDwCzqkpY/d45nFFbVvCYkN9NSNOLRURGlAKKTChd8XTB/bVvtNEZT1NT5uef/uLs/I7Fh1kWNFSEcGn/HRGREaVZPDKhRBOFY09efiu3INuKsyb3CycAAa9rwOMiIjK89MkrE0bWdrCdI+vaH+hJsLGpG4BzG8oHfIzGnoiIjA4FFJkwUscsa//w5hayjmFRfZgZlSUDPibkU0ARERkNCigyYfSlCrt3XtvXDcD7F9VhWQOPMdH0YhGR0aGAIhNCXypLW++R6cW9yQy7DvYBsHhq+YCPqSj1afyJiMgo0aevTAgHepKYI8NP2NwcxQBTJwWpKPEN+JhIUHvviIiMFgUUGfdix6x9AvDMjoNAbkPAgVgWlKh7R0Rk1CigyLjXk8gU3G/pSfLsm7kNAZctqB3wMWUBz3HHpYiIyPBTQJFxrzdZGFB+sHY7tmM4Z1o5s6tLB3xMZal/JKomIiLHoTmUMq4l0jaZ7JHBJ3s6+tjcHMXjsrju3bPzx/1eF26XhTEQDngo1fonIiKjSp/CMq4d272zbntu7Mk7GiZRXx4Ejixnb0zu3wHtuyMiMuoUUGTciaWyuKzcImtHBxTbMax9ow2A982vyR8vD3kVSkREiowCiow7rdEkWdvg97hIH7V67J+auujsS1MW8HDBzIr88RKtFisiUnT0ySzjSiprE0/lphSnj1na/vGtrQC8d15NwQJsQU0nFhEpOoOaxXPbbbdx/vnnU1ZWRk1NDR/60IfYtm1bQZlkMsnq1auprKyktLSUlStX0traWlBm7969rFixglAoRE1NDTfffDPZbOEy5CKnorMvPeDxdNbhxUM7F196VPeOywV+jyaziYgUm0F9Mq9bt47Vq1fz/PPPs2bNGjKZDJdffjl9fX35MjfeeCMPPvggDzzwAOvWraO5uZmrrroqf962bVasWEE6nea5557jF7/4Bffccw+33nrr0L0rmZDi6SwdsYEDyrbWXjK2YVLIy8yqIxsDlvm9Wu9ERKQIWcYcvQD44Bw8eJCamhrWrVvHu971Lnp6eqiurua+++7j6quvBuCNN95gwYIFrF+/nqVLl/Lwww/zgQ98gObmZmprc4tk3XXXXXzlK1/h4MGD+HwDLzt+tGg0SiQSoaenh3A4fKrVl3HmrfY+epP9W+KMMXz9d1v4U1M37z6jmi9dPi9/bsoJlroXEZGhNZjv79Nq2+7p6QGgoiI34HDDhg1kMhmWLVuWLzN//nwaGhpYv349AOvXr+ess87KhxOA5cuXE41G2bJly4Cvk0qliEajBTeRo/WlsgOGE4CHXjvAn5q68bldfOS8aQXntFuxiEhxOuWA4jgON9xwAxdffDFnnnkmAC0tLfh8PsrLywvK1tbW0tLSki9zdDg5fP7wuYHcdtttRCKR/G3atGkDlpOJqys+cNfOszvb+cnTuwD4xEUzmFYRyp/zeixNLxYRKVKnHFBWr17N5s2buf/++4eyPgO65ZZb6Onpyd+ampqG/TVl7DDGEE30bz1JZW3ufHInBrhsYS0rFk8uOK/VYkVEitcpfUJff/31PPTQQzz11FNMnTo1f7yuro50Ok13d3dBK0prayt1dXX5Mi+++GLB8x2e5XO4zLH8fj9+v/ZGkYH1prLYTv+hVH984yDRZJaaMj9/++7ZuI4ZDBsOekeqiiIiMkiDakExxnD99dfz61//mieeeIKZM2cWnF+yZAler5e1a9fmj23bto29e/fS2NgIQGNjI5s2baKtrS1fZs2aNYTDYRYuXHg670UmqM6jZu509aW55X9e48r/9xl+9OROAK48ux6Pu/BHPehzU6YWFBGRojWoT+jVq1dz33338dvf/paysrL8mJFIJEIwGCQSifCpT32Km266iYqKCsLhMJ///OdpbGxk6dKlAFx++eUsXLiQa6+9ljvuuIOWlha++tWvsnr1arWSyKAZY4iljnTv3P9yE5ubjwyiri7zc9mCwjFPlgXTK0OaXiwiUsQGFVB+/OMfA/Ce97yn4Pjdd9/NJz7xCQC+//3v43K5WLlyJalUiuXLl3PnnXfmy7rdbh566CGuu+46GhsbKSkpYdWqVXzrW986vXciE1Iq63B4onwyY/PktlzL3ORIgPNnVHDVuVMoOaalJOB1F6wkKyIixee01kEZLVoHRQ7riKVo7k4C8NjWFv7tiZ1MjgS466+X9Btzclh1mZ+6SGAkqykiIozgOigio+1w947tGH7/2gEA3r+o7rjhBKDEr6nFIiLFTgFFxizbMfnF2R7b2sKu9j5CPjeXHjPm5Ggul3YvFhEZCxRQZMzqiqcxBnoSGf7P+j0AXHPhdCInmD48KeTD5dLgWBGRYqeAImNWeywFwC+ee4tYKsusqhJWnDX5uOUtKzf+REREip8CioxJXX1pMllDV1+aJw7N3Pncu2fjPkHrSHWZX7N3RETGCHXGy5gTS2XZ15UA4PHXW7Edw/y6MhZMHnhEuGWBx21RXarWExGRsUIBRcactmhuWrFjDI9uzS0W+P5FA2+TUFXmo7LEj2OMxp6IiIwhCigyptiOIZ62AXhtXw+t0RQlPjcXz6kqKBf0uZlWEcTjcp2w20dERIqTAoqMKd2HZu4AvPRWJwAXzaki4D2ytkltxE9NmRZiExEZyzRiUMYMxzEc6Ml17xhj2LCnC4AlDZPyZSwLyoO+UamfiIgMHQUUGTO6jmo92dkWY393Aq/b4pxp5fkykaAXn0c/1iIiY50+yWXMaI+lAUhnHX74xA4Als6qLNgMsKJErSciIuOBAoqMCamsTTrrAPCL9W/xVkecSNDLp985K18m6HP327lYRETGJgUUKXrGmPyOxX2pLA9vzm0KeMOlc/MtJpYFUycFR62OIiIytBRQpOh19KWJHdoU8Jmd7WRsw7SKEEum5wbHWhbMri4tmMkjIiJjmwKKFLVkxs7vuQOw9vVWAC6dX4Nl5dY3iQS9BH0KJyIi44kCihS1jkN77gDs64rzeksvLgveO68GAK/H0gaAIiLjkAKKFK2s7dAdT+fvr309tyngOxom5ceeVJb41bUjIjIOKaBI0epOZHByE3ewHZPftXjZgtp8mbKAZu2IiIxHCihStHoPDYwF2NjUTWdfmjK/hwtmVgDg87jUeiIiMk7pz08pSsmMnZ+5A/D4ocGx755XjdftIhz0UBfRfjsiIuOVWlCkKB3ecwegLZrk+V0dwJHuncpSP36PWk9ERMYrBRQpOon0kdYTYwz/9Ng2so5hVlUJs6pKsCwo0bRiEZFxTQFFik534sjMnWd2tvN6Sy8el8UNy+ZiWRYlfk9+DRQRERmfFFCk6HTHMwB09aX50R93AnDl2fXMrCoFoMSv1hMRkfFOAUWKSk8iQ9Y2GGO466k36UvbzKkuZVXjjHyZMr939CooIiIjQgFFikY667CvKw7Ac2928NybHbhdFqvfOwe3S8vai4hMJAooUjS642kcJzfF+N4X9wKw8h1TmVNTmi8TCar1RERkIlBAkaIRPTRz5w+bDtDUGWdSyMufn11fUEbjT0REJgYFFCkKqaxNIm1zoCfBvS/kWk8+vnRGQYtJwOvC49aPrIjIRKBPeykKPYdm7jy9o5207TCvtoz3zq8pKKPuHRGRiUMBRUadMYbOeBpjDM/ubAfg0gU1+YGxAF6Pld/BWERExj8FFBl1XfEMmazhpbe62NXeh8/j4qLZVQVlZleXqntHRGQC0Se+jCpjDB2xFBnb4WfP7ALgysWTC7pzJpV48SqciIhMKNrNWEaN4xi2tfaStXNdO809ScpDXv7yvGn5MgGvi6mTQqNYSxERGQ0KKDJqOvrSZG0DwNo32gD4szMnE/LlfizLQ16mlAdHrX4iIjJ6FFBkVKSyNm29SQBao0lebeoGyM/cqSj1KZyIiExg6tiXUdEWTeVXjf1/HnkDA5wzrZy6cICA10V1qX+0qygiIqNIAUVGXMZ26Enk1j15ePMBdrTFCPncfPZds4Dceic+j340RUQmMn0LyIjK2A57OvowBt5q7+O+Q3vu/M3FM5k2KYRlQVgLsomITHgagyIjpi+VZXd7LpwYY/jXtdtJZhzOnhph2YJaACpKfAS82m9HRGSiUwuKjAjbMezpiGNyk3Z48a1O3jzYR9Dr5kuXz8uvGltZqtViRUREAUVGSE8ig+3k0kk8neWnT+8G4AOLJ1MeyoWS8pAXv0etJyIiooAiIyBjO3TEUvn7v93YTEs0SXWZn6vOnZo/Xl2mmTsiIpKjMSgyrBzHsLczTjLjALmw8odNBwD4ROMMSgMefB4Xk0JejT0REZE8BRQZVns748RTdv7+w5sP0J3IMCnk5aLZlVgWTJkUpNSvH0URETlCXTwybBzHEEtl8/dtx/DrP+0H4GMXNOBxuygPeRVORESkHwUUGTaxdDY/awfgP1/cS3ssTYnfzaXzc9OKq7RirIiIDEABRYZFMmPT3ntkYOyT29r4r5ebAPj0O2fh87gIBz0adyIiIgNS27oMi6ajBsamsw4/fSY3rfhdc6tYtqAWy4K6SGA0qygiIkVMLSgy5NpjqXw4AXh6x0F6EhmqSn3cdNk8AGrK/FrzREREjksBRYZUNJnhQHcyfz+WzPLLF3L77aw4qx63y8Kyckvai4iIHI8Cigypo8edGGO4c91O2mMpJkcCrDhrMpDbrdjj1o+eiIgcn74lZMgk0jZ9R615svVAlKd3tOOy4EuXzyPoy3XpqPVERETejgKKDJmeRKbg/iNbWgC4dEEtZ9SWAWBZEPJp7ImIiJyYAooMmVjqSEDpTWZ4dmc7AO9fVJc/Xur3YFnWiNdNRETGFgUUGRK2Y0ikj8zceWRzCxnbMLOqhLk1pfnj2hBQREROxqADylNPPcWVV15JfX09lmXxm9/8puC8MYZbb72VyZMnEwwGWbZsGTt27Cgo09nZyTXXXEM4HKa8vJxPfepTxGKx03ojMrqO3q34jZYov3xhDwBXnFmXbzGpDfsp0bL2IiJyEgYdUPr6+jj77LP50Y9+NOD5O+64gx/+8IfcddddvPDCC5SUlLB8+XKSySNTT6+55hq2bNnCmjVreOihh3jqqaf47Gc/e+rvQkZVZ1+atkOzd6KJDP/6+A4cAxfNruTyhbnuHa/HUuuJiIicNMuYo3dLGeSDLYtf//rXfOhDHwJyrSf19fV88Ytf5Etf+hIAPT091NbWcs899/DRj36U119/nYULF/LSSy9x3nnnAfDII4/wZ3/2Z+zbt4/6+vq3fd1oNEokEqGnp4dwOHyq1ZchkLEdtrX0Ygy0RpN8/Xdb2N+doCLk40d/9Q5KA7kWkymTgpq9IyIywQ3m+3tIx6Ds3r2blpYWli1blj8WiUS48MILWb9+PQDr16+nvLw8H04Ali1bhsvl4oUXXhjK6sgwM8awpyOOMbm9d772283s705QVernWx9clA8nLheUB72jXFsRERlLhnRAQEtLblppbW1twfHa2tr8uZaWFmpqagor4fFQUVGRL3OsVCpFKnVkjEM0Gh3Kassp2tsZJ5HOrXvy9I6DHOhJUlHi45+uXkzlUbsUT50UwuXSzB0RETl5Y2IWz2233UYkEsnfpk2bNtpVmvCMMcRS2fz9R7e0AnDl4vqCcBL0uYmo9URERAZpSANKXV1uQGRra2vB8dbW1vy5uro62traCs5ns1k6OzvzZY51yy230NPTk781NTUNZbVlkGzH0BJN4hyaVbyno49trb24XRaXLihsHVM4ERGRUzGkAWXmzJnU1dWxdu3a/LFoNMoLL7xAY2MjAI2NjXR3d7Nhw4Z8mSeeeALHcbjwwgsHfF6/3084HC64yeg52JuivTedv//bjc0AXDCjgkmhIwNhLQvKQwooIiIyeIMegxKLxdi5c2f+/u7du9m4cSMVFRU0NDRwww038I//+I/MnTuXmTNn8rWvfY36+vr8TJ8FCxbw/ve/n8985jPcddddZDIZrr/+ej760Y+e1AweGX1d8SPh5JU9Xax5Pddi9sFzCq9fJOjFq00BRUTkFAw6oLz88su8973vzd+/6aabAFi1ahX33HMPX/7yl+nr6+Ozn/0s3d3dvPOd7+SRRx4hEAjkH3Pvvfdy/fXXc+mll+JyuVi5ciU//OEPh+DtyHDriWfI2rmZ6bFklh88kVuE7wOLJ7OoPpIvZ1laNVZERE7daa2DMlq0DsroyNgOO1pj2E7uR+afHtvGuu0HmVIe5F8/cg4B75FNACtKfUwpD45WVUVEpAgN5vtb647LSWuNJvPh5Nmd7azbfhCXBTcuOyMfTiwrtyFgfSRwoqcSERE5IQUUOSnJjE13PLdbcUcsxS/WvwXAyndMZV5dGZBrNakt8+N2WdqxWERETosCirytRNpmd3sfxkBTZ5yv/Pdr9KayhAMerl4yFQCfx0V9JKBgIiIiQ0IBRU7IGMP+7ni+a+f/PP8WvaksMypDfPGyeYR8uR+hcNCjcCIiIkNGc0DlhPZ1JUikcyuytcdSvPxWFwA3XXYGM6pK8uWOXv9ERETkdCmgyHF19aXz404cY/j+49vJOob5dWXMqDwSTiJBb8EMHhERkdOlgCIDiqezHOhJ5u//bmMzr+3rwe9xccOlZ+S7cywL6jRjR0REhpjGoEg/jmPY3d6X32tne2tvftbOp985iymTjqxvUhsO4PMo54qIyNDSN4v0k8za+XDSEUvxtd9uJusYLphRwfJFtflyIb9bq8WKiMiwUAuK9JNI2/l//5/1e4inbWZWlXDDsrn5rp3SgEfhREREho0CivTTncgNjN3e2ssT29oAuP69cygL5HYmri7za9yJiIgMK3XxSIHm7gTxlE1TZ5x//P1WAN4zr5ozanOrxVoWVJVqSrGIiAwvtaBI3oGeBB2xNK/s6eKOx96gL2UzozLEZ945K1+mosSHx61cKyIiw0sBRQDY2xGnJ5Ehns7y/zz6BvG0zZyaUr555SLCwVzXjt/rojasrh0RERl+CigTnOMY3urooy+VGxj7alM38bRNdZmfO1YuxnuotaQs4GF6ZUjL2YuIyIhQQJnAsrbD7vY+kpncnGJjDA++dgCAxlmV+XDi87hoqFA4ERGRkaOAMoG1RJP5cJK1Hf77lX1s2t+Dz+PiyrPr8+Wqy/y4XAonIiIychRQJiBjDK3RFF19uenEezr6uP2RN9jXlQDgry5ooO7QWBOvx2JSyDtqdRURkYlJAWUCautNcbA3BeTCyp1Pvsm+rgRBr5uPXTCND50zBQCXC+rCAXXtiIjIiFNAmWAcx9Aey4WTjO3w70/tYuuBKB6Xxb/85dlMnRQCcoNi68uD2mdHRERGhQLKBBNNZnCc3JiTr/12M1uao1jA6vfOyYeT0oCHGVUlo1tRERGZ0BRQJpBkxmZfVwJjDHc/9xZbmqMEvW6+vHwe582oAHIrxU49ardiERGR0aCAMkEYY9jfnSBrG/79qTd5eHMLAF+4dG4+nABMKvHlpxeLiIiMFgWUCaK5J0k8ZfPfr+zj4c0tWMDn3j2bi+dUAVBZ6qOixEfA6x7dioqIiKCAMiHEUlk6Y2m64mn+74Z9APzte+bw/jPrgFy3TnWZXy0nIiJSNBRQxrnueJp9XQmytsO/rNlOImMzt6aU5Ytq82WqShVORESkuCigjGOJtE1TZ25Q7D+t2c7Gpm4CXhfXv3cOlmVhWVBfHqSixDfaVRURESmgP5vHsZZoEoBf/2k/z+5sx+Oy+Mr75zOrulThREREippaUMahjO2wtzNOPGXzP6/s4+7n3gLg2qXTOW96bsaOwomIiBQztaCMQ/u6EsRTNr/fdCAfTq65sIEPn5tbwr6+PKBwIiIiRU0BZZxJpG1iySwvv9XJXeveBODKxZP5yHnTsCyL2rCfylL/KNdSRETkxNTFM05kbYeOvjQdsTRPvNHKj/6YCydXnFnHZy6ZhWVZ1EUCVJcpnIiISPFTQBknmroSxJJZ1mxt4YdP7ATgHQ2T+Mwls3C5LMpDXoUTEREZMxRQxris7XCgJ0ksmWVnW4yfPL0bgA+fO4VPXDQDl2Uxo6qEUr8utYiIjB361hrD0lmHtzr66Etm+fmzu3notQMYYH5dGasaZ+B2WdSU+RVORERkzNE31xjVl8rS1BVne0uM/3jqTTY3RwG4ZG4Vn7lkFn6vi4aKECUKJyIiMgbp22sM6klk2NvRx5PbDvKDtTvIOoaA18WXLp/HhTMr8+FEG/+JiMhYpYAyhnTEUnT2pWnrTfH9Ndt5eU8XAIvqw/yvd81mZlUJfq+LGZUl+DyaQS4iImOXAsoY0R5LsftgH8+92c7dz75FdyKDx2WxcslUPnZ+A26XxaQSL3XhAB5t/CciImOcAkqRM8bQGk1y28NvsGZrK/G0DUBdOMBXVyxgemUJkaCXSMhLJOgd5dqKiIgMDQWUIhZNZPjDpgP84rm3eL2lF4CKkI9zG8r57LtmUR7yURv2Ux7SsvUiIjK+KKAUoW0tvfzfDU3810tNRJNZAEp8bla/dw4Xza4i4HNRWxZgkvbTERGRcUoBpUh09aX447aD/Gbjfp7a3p4/Hgl6uXhOFVcvmcrs6hJK/B7Kg16NMxERkXFtTAcUY8xoV+GkGWPY15VgT0ecpq44TZ1x9nTE2dPZR1Nngp5EpqD85EiAv146nQ+eU08k6KUsoPElIiIycYzpgNIWTRGJjHYtjnAcQ3ssxab9PTR3J0lksjR3J/ndq81EExmyzokDVV04wEWzK/mrpQ2cPbUcr1pJRERkghrTAaUnmR7y5zTG5MZ9GNjR1ssjm1vojKfxuV0EfW78HhfJjM2OthhdfRl6kxl6U1liySyOMZwog3hcFg0VIerLg0wpD9JQGWJyJEBDRYhZ1SVMCvmwLGvI35OIiMhYM6YDytPb28EToqk7zgcW1+N1u+hJZGjvTfHolhZaepKUBj00TApRFwnQFk0xKeSlvMSH3+OirTdJazTFW+199CazNHXG2XkwRms0dcp1cllQFwkwt6aMsoCHipCPi+ZUsag+TE3Yj9+j1V1FRETejmXG0kCOQ6LRKJFIhGk3/AqXPwRAedDL5PIAbxzoZajeUDjoYenMSmbXlJLOOKRth3TWxuVyMbe2lPpIgMpSP+GAl7KAB5dlUVXq0wBWERGRARz+/u7p6SEcDp+w7JhuQTladyJD96GBpkGvm/ryALOqS4kls+ztjNPZl6Y27CdjG7KOgzHgdlnUhgPUhQNUlvqYX1fG7OpSFk2J4Pe4tJeNiIjIKBnTAeUvlkwlZrx8efk8NjVHae5O8O651SyaEsEcGg+SsXNhJJW1CXjd+NwuXC6N8xARESlmYzqgXL1kKgtn1BEJepldU1ZwzrIs3Ba4XblWkKBPrSEiIiJjxZgeLDFlUpAy/5jOWCIiIjKAMR1QykM+ddeIiIiMQ2M6oIiIiMj4pIAiIiIiRUcBRURERIqOAoqIiIgUHQUUERERKTqjGlB+9KMfMWPGDAKBABdeeCEvvvjiaFZHREREisSoBZT/+q//4qabbuLrX/86r7zyCmeffTbLly+nra1ttKokIiIiRWLUAsq//Mu/8JnPfIZPfvKTLFy4kLvuuotQKMTPf/7z0aqSiIiIFIlRCSjpdJoNGzawbNmyIxVxuVi2bBnr16/vVz6VShGNRgtuIiIiMn6NSkBpb2/Htm1qa2sLjtfW1tLS0tKv/G233UYkEsnfpk2bNlJVFRERkVEwJmbx3HLLLfT09ORvTU1No10lERERGUajstNeVVUVbreb1tbWguOtra3U1dX1K+/3+/H7/SNVPRERERllo9KC4vP5WLJkCWvXrs0fcxyHtWvX0tjYOBpVEhERkSIyKi0oADfddBOrVq3ivPPO44ILLuBf//Vf6evr45Of/ORoVUlERESKxKgFlI985CMcPHiQW2+9lZaWFs455xweeeSRfgNnRUREZOKxjDFmtCsxWNFolEgkQk9PD+FweLSrIyIiIidhMN/fo9aCcjoOZyqthyIiIjJ2HP7ePpm2kTEZUDo6OgC0HoqIiMgY1NvbSyQSOWGZMRlQKioqANi7d+/bvkEZXtFolGnTptHU1KTutiKg61E8dC2Kh65F8TDG0NvbS319/duWHZMBxeXKzY6ORCL6YSsS4XBY16KI6HoUD12L4qFrURxOtmFhTKwkKyIiIhOLAoqIiIgUnTEZUPx+P1//+te1/H0R0LUoLroexUPXonjoWoxNY3IdFBERERnfxmQLioiIiIxvCigiIiJSdBRQREREpOgooIiIiEjRGZMB5Uc/+hEzZswgEAhw4YUX8uKLL452lcaV2267jfPPP5+ysjJqamr40Ic+xLZt2wrKJJNJVq9eTWVlJaWlpaxcuZLW1taCMnv37mXFihWEQiFqamq4+eabyWazI/lWxp3bb78dy7K44YYb8sd0LUbW/v37+eu//msqKysJBoOcddZZvPzyy/nzxhhuvfVWJk+eTDAYZNmyZezYsaPgOTo7O7nmmmsIh8OUl5fzqU99ilgsNtJvZUyzbZuvfe1rzJw5k2AwyOzZs/n2t79dsMeLrsUYZ8aY+++/3/h8PvPzn//cbNmyxXzmM58x5eXlprW1dbSrNm4sX77c3H333Wbz5s1m48aN5s/+7M9MQ0ODicVi+TKf+9znzLRp08zatWvNyy+/bJYuXWouuuii/PlsNmvOPPNMs2zZMvOnP/3J/OEPfzBVVVXmlltuGY23NC68+OKLZsaMGWbx4sXmC1/4Qv64rsXI6ezsNNOnTzef+MQnzAsvvGB27dplHn30UbNz5858mdtvv91EIhHzm9/8xrz66qvmz//8z83MmTNNIpHIl3n/+99vzj77bPP888+bp59+2syZM8d87GMfG423NGZ95zvfMZWVleahhx4yu3fvNg888IApLS01P/jBD/JldC3GtjEXUC644AKzevXq/H3btk19fb257bbbRrFW41tbW5sBzLp164wxxnR3dxuv12seeOCBfJnXX3/dAGb9+vXGGGP+8Ic/GJfLZVpaWvJlfvzjH5twOGxSqdTIvoFxoLe318ydO9esWbPGvPvd784HFF2LkfWVr3zFvPOd7zzuecdxTF1dnfne976XP9bd3W38fr/5z//8T2OMMVu3bjWAeemll/JlHn74YWNZltm/f//wVX6cWbFihfmbv/mbgmNXXXWVueaaa4wxuhbjwZjq4kmn02zYsIFly5blj7lcLpYtW8b69etHsWbjW09PD3Bkk8YNGzaQyWQKrsP8+fNpaGjIX4f169dz1llnUVtbmy+zfPlyotEoW7ZsGcHajw+rV69mxYoVBf/PQddipP3ud7/jvPPO4y/+4i+oqanh3HPP5Sc/+Un+/O7du2lpaSm4HpFIhAsvvLDgepSXl3PeeeflyyxbtgyXy8ULL7wwcm9mjLvoootYu3Yt27dvB+DVV1/lmWee4YorrgB0LcaDMbVZYHt7O7ZtF3zQAtTW1vLGG2+MUq3GN8dxuOGGG7j44os588wzAWhpacHn81FeXl5Qtra2lpaWlnyZga7T4XNy8u6//35eeeUVXnrppX7ndC1G1q5du/jxj3/MTTfdxD/8wz/w0ksv8Xd/93f4fD5WrVqV//850P/vo69HTU1NwXmPx0NFRYWuxyD8/d//PdFolPnz5+N2u7Ftm+985ztcc801ALoW48CYCigy8lavXs3mzZt55plnRrsqE1JTUxNf+MIXWLNmDYFAYLSrM+E5jsN5553Hd7/7XQDOPfdcNm/ezF133cWqVatGuXYTy69+9Svuvfde7rvvPhYtWsTGjRu54YYbqK+v17UYJ8ZUF09VVRVut7vfDIXW1lbq6upGqVbj1/XXX89DDz3EH//4R6ZOnZo/XldXRzqdpru7u6D80dehrq5uwOt0+JycnA0bNtDW1sY73vEOPB4PHo+HdevW8cMf/hCPx0Ntba2uxQiaPHkyCxcuLDi2YMEC9u7dCxz5/3miz6i6ujra2toKzmezWTo7O3U9BuHmm2/m7//+7/noRz/KWWedxbXXXsuNN97IbbfdBuhajAdjKqD4fD6WLFnC2rVr88ccx2Ht2rU0NjaOYs3GF2MM119/Pb/+9a954oknmDlzZsH5JUuW4PV6C67Dtm3b2Lt3b/46NDY2smnTpoJf/jVr1hAOh/t9wMvxXXrppWzatImNGzfmb+eddx7XXHNN/t+6FiPn4osv7jflfvv27UyfPh2AmTNnUldXV3A9otEoL7zwQsH16O7uZsOGDfkyTzzxBI7jcOGFF47Auxgf4vE4LlfhV5jb7cZxHEDXYlwY7VG6g3X//fcbv99v7rnnHrN161bz2c9+1pSXlxfMUJDTc91115lIJGKefPJJc+DAgfwtHo/ny3zuc58zDQ0N5oknnjAvv/yyaWxsNI2Njfnzh6e2Xn755Wbjxo3mkUceMdXV1ZraOgSOnsVjjK7FSHrxxReNx+Mx3/nOd8yOHTvMvffea0KhkPnlL3+ZL3P77beb8vJy89vf/ta89tpr5oMf/OCAU1vPPfdc88ILL5hnnnnGzJ07V1NbB2nVqlVmypQp+WnG//M//2OqqqrMl7/85XwZXYuxbcwFFGOM+bd/+zfT0NBgfD6fueCCC8zzzz8/2lUaV4ABb3fffXe+TCKRMH/7t39rJk2aZEKhkPnwhz9sDhw4UPA8b731lrniiitMMBg0VVVV5otf/KLJZDIj/G7Gn2MDiq7FyHrwwQfNmWeeafx+v5k/f775j//4j4LzjuOYr33ta6a2ttb4/X5z6aWXmm3bthWU6ejoMB/72MdMaWmpCYfD5pOf/KTp7e0dybcx5kWjUfOFL3zBNDQ0mEAgYGbNmmX+9//+3wVT53UtxjbLmKOW3RMREREpAmNqDIqIiIhMDAooIiIiUnQUUERERKToKKCIiIhI0VFAERERkaKjgCIiIiJFRwFFREREio4CioiIiBQdBRQREREpOgooIiIiUnQUUERERKToKKCIiIhI0fn/AUbyItmQ9K2BAAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["l100rew=[]\n","for _ in range(5):\n"," print('*** New experiment!')\n"," # Create and initialize Q-value table to 0\n"," Q = np.zeros(discr_vector + (env.action_space.n,))\n","\n"," # Just to store the long-term-reward of the last 100 experiments\n"," scores = deque(maxlen=100)\n"," lrews = []\n","\n"," for episode in range(1,1001):\n"," done = False\n"," e = set_epsilon(episode, tau)\n"," a = set_alpha(episode, tau)\n"," R, reward = 0,0\n"," state = d.Discretize(env.reset()[0])\n"," while done != True:\n"," action = choose_action(state, e)\n"," obs, reward, terminated, truncated, info = env.step(action)\n"," done = truncated or terminated\n"," new_state = d.Discretize(obs)\n"," Q[state][action] += alpha * (reward + gamma * np.max(Q[new_state]) - Q[state][action]) #3\n","\n"," R = gamma * R + reward\n"," state = new_state\n"," scores.append(R)\n"," mean_score = np.mean(scores)\n"," lrews.append(np.mean(scores))\n"," l100rew.append(lrews)\n","\n","tsplot(data=np.array(l100rew)) #, err_style=\"unit_traces\")\n","plt.show()"]},{"cell_type":"code","execution_count":62,"metadata":{"id":"ymWyy4r42YLO","colab":{"base_uri":"https://localhost:8080/","height":542},"executionInfo":{"status":"ok","timestamp":1708676935212,"user_tz":-60,"elapsed":7940,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}},"outputId":"ba7e0f36-e108-4612-de68-b494d5caecab"},"outputs":[{"output_type":"stream","name":"stdout","text":["Average reward for epsilon 0: 497.89\n","Moviepy - Building video /content/video/rl-video-episode-0.mp4.\n","Moviepy - Writing video /content/video/rl-video-episode-0.mp4\n","\n"]},{"output_type":"stream","name":"stderr","text":[" "]},{"output_type":"stream","name":"stdout","text":["Moviepy - Done !\n","Moviepy - video ready /content/video/rl-video-episode-0.mp4\n"]},{"output_type":"stream","name":"stderr","text":["\r"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":[""]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["500.0"]},"metadata":{},"execution_count":62}],"source":["print('Average reward for epsilon 0:', np.mean([rollout(0,render=False) for _ in range(100)]))\n","rollout(0)"]},{"cell_type":"markdown","metadata":{"id":"3LIOfNPc2YLO"},"source":["## Exercises\n","\n","1. Play with parameters for discretization and see how they affect performance and convergence\n","2. Try other methods to decrese $\\alpha$ and $\\epsilon$\n","3. Try Boltzman exploration instead of $\\epsilon$ greedy\n","4. Obtain Q-values for starting state. Is that strange? Can you explain/solve the problem using gamma different to 1? Try with gamma 0.99 for example.\n","5. **Implement Monte-Carlo for this problem and compare performance and variance with Q-learning**\n","6. **Implement n-steps Q-learning for this problem and compare performance with Q-learning**\n","7. **Implement Sarsa on this problem**\n","8. **Adapt everything has been done here to another Gym problem, f.i. Acrobot-v1 or MountainCar-v0**"]},{"cell_type":"code","execution_count":63,"metadata":{"id":"xIAxETqQ2YLO","executionInfo":{"status":"ok","timestamp":1708676935213,"user_tz":-60,"elapsed":8,"user":{"displayName":"Mario Martin Muñoz","userId":"05475823111747744959"}}},"outputs":[],"source":["env.close()"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.8"},"toc":{"base_numbering":1,"nav_menu":{},"number_sections":true,"sideBar":true,"skip_h1_title":false,"title_cell":"Table of Contents","title_sidebar":"Contents","toc_cell":false,"toc_position":{},"toc_section_display":true,"toc_window_display":false},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":0}
NumObservationMinMax
0Cart Position-4.84.8
1Cart Velocity-∞
2Pole Angle rads-0.420.42
3Pole Velocity At Tip-∞