From 485c94fbfd8487dab9fe9bbccb1818cfc531769b Mon Sep 17 00:00:00 2001 From: Aman Deep Singh Date: Mon, 12 Feb 2018 15:20:49 +0530 Subject: [PATCH 1/6] Added GridMDP editor to create and solve grid-world problems (Closes #713) (#719) * Added GridMDP editor to create and solve grid-world problems * Added reference to grid_mdp.py in mdp.ipynb * Replacing %psource with psource function * Print matrix to console as well --- gui/grid_mdp.py | 629 ++++++++++++++++++++++++++++++++++++++++++++++++ mdp.ipynb | 310 +++++++++++++++++++++++- 2 files changed, 927 insertions(+), 12 deletions(-) create mode 100644 gui/grid_mdp.py diff --git a/gui/grid_mdp.py b/gui/grid_mdp.py new file mode 100644 index 000000000..fd5aeb8ae --- /dev/null +++ b/gui/grid_mdp.py @@ -0,0 +1,629 @@ +# author: ad71 +import tkinter as tk +import tkinter.messagebox +from tkinter import ttk + +from functools import partial + +import sys +import os.path +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +from mdp import * +import utils +import numpy as np +import time + +import matplotlib +import matplotlib.animation as animation +from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg +from matplotlib.ticker import MaxNLocator +from matplotlib.figure import Figure +from matplotlib import style +from matplotlib import pyplot as plt +matplotlib.use('TkAgg') +style.use('ggplot') + +fig = Figure(figsize=(20, 15)) +sub = fig.add_subplot(111) +plt.rcParams['axes.grid'] = False + +WALL_VALUE = -99999.0 +TERM_VALUE = -999999.0 + +black = '#000' +white = '#fff' +gray2 = '#222' +gray9 = '#999' +grayd = '#ddd' +grayef = '#efefef' +pblue = '#000040' +green8 = '#008080' +green4 = '#004040' + + +def extents(f): + ''' adjusts axis markers for heatmap ''' + + delta = f[1] - f[0] + return [f[0] - delta/2, f[-1] + delta/2] + +def display(gridmdp, _height, _width): + ''' displays matrix ''' + + dialog = tk.Toplevel() + dialog.wm_title('Values') + + container = tk.Frame(dialog) + container.pack(side=tk.TOP, fill=tk.BOTH, expand=True) + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + label = ttk.Label(container, text=f'{gridmdp[_height - i - 1][j]:.3f}', font=('Helvetica', 12)) + label.grid(row=i + 1, column=j + 1, padx=3, pady=3) + + dialog.mainloop() + +def initialize_dialogbox(_width, _height, gridmdp, terminals, buttons): + ''' creates dialogbox for initialization ''' + + dialog = tk.Toplevel() + dialog.wm_title('Initialize') + + container = tk.Frame(dialog) + container.pack(side=tk.TOP, fill=tk.BOTH, expand=True) + container.grid_rowconfigure(0, weight=1) + container.grid_columnconfigure(0, weight=1) + + wall = tk.IntVar() + wall.set(0) + term = tk.IntVar() + term.set(0) + reward = tk.DoubleVar() + reward.set(0.0) + + label = ttk.Label(container, text='Initialize', font=('Helvetica', 12), anchor=tk.N) + label.grid(row=0, column=0, columnspan=3, sticky='new', pady=15, padx=5) + label_reward = ttk.Label(container, text='Reward', font=('Helvetica', 10), anchor=tk.N) + label_reward.grid(row=1, column=0, columnspan=3, sticky='new', pady=1, padx=5) + entry_reward = ttk.Entry(container, font=('Helvetica', 10), justify=tk.CENTER, exportselection=0, textvariable=reward) + entry_reward.grid(row=2, column=0, columnspan=3, sticky='new', pady=5, padx=50) + + rbtn_term = ttk.Radiobutton(container, text='Terminal', variable=term, value=TERM_VALUE) + rbtn_term.grid(row=3, column=0, columnspan=3, sticky='nsew', padx=160, pady=5) + rbtn_wall = ttk.Radiobutton(container, text='Wall', variable=wall, value=WALL_VALUE) + rbtn_wall.grid(row=4, column=0, columnspan=3, sticky='nsew', padx=172, pady=5) + + initialize_widget_disability_checks(_width, _height, gridmdp, terminals, label_reward, entry_reward, rbtn_wall, rbtn_term) + + btn_apply = ttk.Button(container, text='Apply', command=partial(initialize_update_table, _width, _height, gridmdp, terminals, buttons, reward, term, wall, label_reward, entry_reward, rbtn_term, rbtn_wall)) + btn_apply.grid(row=5, column=0, sticky='nsew', pady=5, padx=5) + btn_reset = ttk.Button(container, text='Reset', command=partial(initialize_reset_all, _width, _height, gridmdp, terminals, buttons, label_reward, entry_reward, rbtn_wall, rbtn_term)) + btn_reset.grid(row=5, column=1, sticky='nsew', pady=5, padx=5) + btn_ok = ttk.Button(container, text='Ok', command=dialog.destroy) + btn_ok.grid(row=5, column=2, sticky='nsew', pady=5, padx=5) + + dialog.geometry('400x200') + dialog.mainloop() + +def update_table(i, j, gridmdp, terminals, buttons, reward, term, wall, label_reward, entry_reward, rbtn_term, rbtn_wall): + ''' functionality for 'apply' button ''' + + if wall.get() == WALL_VALUE: + buttons[i][j].configure(style='wall.TButton') + buttons[i][j].config(text='Wall') + label_reward.config(foreground='#999') + entry_reward.config(state=tk.DISABLED) + rbtn_term.state(['!focus', '!selected']) + rbtn_term.config(state=tk.DISABLED) + gridmdp[i][j] = WALL_VALUE + + elif wall.get() != WALL_VALUE: + if reward.get() != 0.0: + gridmdp[i][j] = reward.get() + buttons[i][j].configure(style='reward.TButton') + buttons[i][j].config(text=f'R = {reward.get()}') + + if term.get() == TERM_VALUE: + if (i, j) not in terminals: + terminals.append((i, j)) + rbtn_wall.state(['!focus', '!selected']) + rbtn_wall.config(state=tk.DISABLED) + + if gridmdp[i][j] < 0: + buttons[i][j].configure(style='-term.TButton') + + elif gridmdp[i][j] > 0: + buttons[i][j].configure(style='+term.TButton') + + elif gridmdp[i][j] == 0.0: + buttons[i][j].configure(style='=term.TButton') + +def initialize_update_table(_width, _height, gridmdp, terminals, buttons, reward, term, wall, label_reward, entry_reward, rbtn_term, rbtn_wall): + ''' runs update_table for all cells ''' + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + update_table(i, j, gridmdp, terminals, buttons, reward, term, wall, label_reward, entry_reward, rbtn_term, rbtn_wall) + +def reset_all(_height, i, j, gridmdp, terminals, buttons, label_reward, entry_reward, rbtn_wall, rbtn_term): + ''' functionality for reset button ''' + + gridmdp[i][j] = 0.0 + buttons[i][j].configure(style='TButton') + buttons[i][j].config(text=f'({_height - i - 1}, {j})') + + if (i, j) in terminals: + terminals.remove((i, j)) + + label_reward.config(foreground='#000') + entry_reward.config(state=tk.NORMAL) + rbtn_term.config(state=tk.NORMAL) + rbtn_wall.config(state=tk.NORMAL) + rbtn_wall.state(['!focus', '!selected']) + rbtn_term.state(['!focus', '!selected']) + +def initialize_reset_all(_width, _height, gridmdp, terminals, buttons, label_reward, entry_reward, rbtn_wall, rbtn_term): + ''' runs reset_all for all cells ''' + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + reset_all(_height, i, j, gridmdp, terminals, buttons, label_reward, entry_reward, rbtn_wall, rbtn_term) + +def external_reset(_width, _height, gridmdp, terminals, buttons): + ''' reset from edit menu ''' + + terminals = [] + for i in range(max(1, _height)): + for j in range(max(1, _width)): + gridmdp[i][j] = 0.0 + buttons[i][j].configure(style='TButton') + buttons[i][j].config(text=f'({_height - i - 1}, {j})') + +def widget_disability_checks(i, j, gridmdp, terminals, label_reward, entry_reward, rbtn_wall, rbtn_term): + ''' checks for required state of widgets in dialogboxes ''' + + if gridmdp[i][j] == WALL_VALUE: + label_reward.config(foreground='#999') + entry_reward.config(state=tk.DISABLED) + rbtn_term.config(state=tk.DISABLED) + rbtn_wall.state(['!focus', 'selected']) + rbtn_term.state(['!focus', '!selected']) + + if (i, j) in terminals: + rbtn_wall.config(state=tk.DISABLED) + rbtn_wall.state(['!focus', '!selected']) + +def flatten_list(_list): + ''' returns a flattened list ''' + + return sum(_list, []) + +def initialize_widget_disability_checks(_width, _height, gridmdp, terminals, label_reward, entry_reward, rbtn_wall, rbtn_term): + ''' checks for required state of widgets when cells are initialized ''' + + bool_walls = [['False']*max(1, _width) for _ in range(max(1, _height))] + bool_terms = [['False']*max(1, _width) for _ in range(max(1, _height))] + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + if gridmdp[i][j] == WALL_VALUE: + bool_walls[i][j] = 'True' + + if (i, j) in terminals: + bool_terms[i][j] = 'True' + + bool_walls_fl = flatten_list(bool_walls) + bool_terms_fl = flatten_list(bool_terms) + + if bool_walls_fl.count('True') == len(bool_walls_fl): + print('`') + label_reward.config(foreground='#999') + entry_reward.config(state=tk.DISABLED) + rbtn_term.config(state=tk.DISABLED) + rbtn_wall.state(['!focus', 'selected']) + rbtn_term.state(['!focus', '!selected']) + + if bool_terms_fl.count('True') == len(bool_terms_fl): + rbtn_wall.config(state=tk.DISABLED) + rbtn_wall.state(['!focus', '!selected']) + rbtn_term.state(['!focus', 'selected']) + +def dialogbox(i, j, gridmdp, terminals, buttons, _height): + ''' creates dialogbox for each cell ''' + + dialog = tk.Toplevel() + dialog.wm_title(f'{_height - i - 1}, {j}') + + container = tk.Frame(dialog) + container.pack(side=tk.TOP, fill=tk.BOTH, expand=True) + container.grid_rowconfigure(0, weight=1) + container.grid_columnconfigure(0, weight=1) + + wall = tk.IntVar() + wall.set(gridmdp[i][j]) + term = tk.IntVar() + term.set(TERM_VALUE if (i, j) in terminals else 0.0) + reward = tk.DoubleVar() + reward.set(gridmdp[i][j] if gridmdp[i][j] != WALL_VALUE else 0.0) + + label = ttk.Label(container, text=f'Configure cell {_height - i - 1}, {j}', font=('Helvetica', 12), anchor=tk.N) + label.grid(row=0, column=0, columnspan=3, sticky='new', pady=15, padx=5) + label_reward = ttk.Label(container, text='Reward', font=('Helvetica', 10), anchor=tk.N) + label_reward.grid(row=1, column=0, columnspan=3, sticky='new', pady=1, padx=5) + entry_reward = ttk.Entry(container, font=('Helvetica', 10), justify=tk.CENTER, exportselection=0, textvariable=reward) + entry_reward.grid(row=2, column=0, columnspan=3, sticky='new', pady=5, padx=50) + + rbtn_term = ttk.Radiobutton(container, text='Terminal', variable=term, value=TERM_VALUE) + rbtn_term.grid(row=3, column=0, columnspan=3, sticky='nsew', padx=160, pady=5) + rbtn_wall = ttk.Radiobutton(container, text='Wall', variable=wall, value=WALL_VALUE) + rbtn_wall.grid(row=4, column=0, columnspan=3, sticky='nsew', padx=172, pady=5) + + widget_disability_checks(i, j, gridmdp, terminals, label_reward, entry_reward, rbtn_wall, rbtn_term) + + btn_apply = ttk.Button(container, text='Apply', command=partial(update_table, i, j, gridmdp, terminals, buttons, reward, term, wall, label_reward, entry_reward, rbtn_term, rbtn_wall)) + btn_apply.grid(row=5, column=0, sticky='nsew', pady=5, padx=5) + btn_reset = ttk.Button(container, text='Reset', command=partial(reset_all, _height, i, j, gridmdp, terminals, buttons, label_reward, entry_reward, rbtn_wall, rbtn_term)) + btn_reset.grid(row=5, column=1, sticky='nsew', pady=5, padx=5) + btn_ok = ttk.Button(container, text='Ok', command=dialog.destroy) + btn_ok.grid(row=5, column=2, sticky='nsew', pady=5, padx=5) + + dialog.geometry('400x200') + dialog.mainloop() + + +class MDPapp(tk.Tk): + + def __init__(self, *args, **kwargs): + + tk.Tk.__init__(self, *args, **kwargs) + tk.Tk.wm_title(self, 'Grid MDP') + self.shared_data = { + 'height': tk.IntVar(), + 'width': tk.IntVar() + } + self.shared_data['height'].set(1) + self.shared_data['width'].set(1) + self.container = tk.Frame(self) + self.container.pack(side='top', fill='both', expand=True) + self.container.grid_rowconfigure(0, weight=1) + self.container.grid_columnconfigure(0, weight=1) + + self.frames = {} + + self.menu_bar = tk.Menu(self.container) + self.file_menu = tk.Menu(self.menu_bar, tearoff=0) + self.file_menu.add_command(label='Exit', command=self.exit) + self.menu_bar.add_cascade(label='File', menu=self.file_menu) + + self.edit_menu = tk.Menu(self.menu_bar, tearoff=1) + self.edit_menu.add_command(label='Reset', command=self.master_reset) + self.edit_menu.add_command(label='Initialize', command=self.initialize) + self.edit_menu.add_separator() + self.edit_menu.add_command(label='View matrix', command=self.view_matrix) + self.edit_menu.add_command(label='View terminals', command=self.view_terminals) + self.menu_bar.add_cascade(label='Edit', menu=self.edit_menu) + self.menu_bar.entryconfig('Edit', state=tk.DISABLED) + + self.build_menu = tk.Menu(self.menu_bar, tearoff=1) + self.build_menu.add_command(label='Build and Run', command=self.build) + self.menu_bar.add_cascade(label='Build', menu=self.build_menu) + self.menu_bar.entryconfig('Build', state=tk.DISABLED) + tk.Tk.config(self, menu=self.menu_bar) + + for F in (HomePage, BuildMDP, SolveMDP): + frame = F(self.container, self) + self.frames[F] = frame + frame.grid(row=0, column=0, sticky='nsew') + + self.show_frame(HomePage) + + def placeholder_function(self): + ''' placeholder function ''' + + print('Not supported yet!') + + def exit(self): + ''' function to exit ''' + + if tkinter.messagebox.askokcancel('Exit?', 'All changes will be lost'): + quit() + + def new(self): + ''' function to create new GridMDP ''' + + self.master_reset() + build_page = self.get_page(BuildMDP) + build_page.gridmdp = None + build_page.terminals = None + build_page.buttons = None + self.show_frame(HomePage) + + def get_page(self, page_class): + ''' returns pages from stored frames ''' + + return self.frames[page_class] + + def view_matrix(self): + ''' prints current matrix to console ''' + + build_page = self.get_page(BuildMDP) + _height = self.shared_data['height'].get() + _width = self.shared_data['width'].get() + print(build_page.gridmdp) + display(build_page.gridmdp, _height, _width) + + def view_terminals(self): + ''' prints current terminals to console ''' + + build_page = self.get_page(BuildMDP) + print('Terminals', build_page.terminals) + + def initialize(self): + ''' calls initialize from BuildMDP ''' + + build_page = self.get_page(BuildMDP) + build_page.initialize() + + def master_reset(self): + ''' calls master_reset from BuildMDP ''' + + build_page = self.get_page(BuildMDP) + build_page.master_reset() + + def build(self): + ''' runs specified mdp solving algorithm ''' + + frame = SolveMDP(self.container, self) + self.frames[SolveMDP] = frame + frame.grid(row=0, column=0, sticky='nsew') + self.show_frame(SolveMDP) + build_page = self.get_page(BuildMDP) + gridmdp = build_page.gridmdp + terminals = build_page.terminals + solve_page = self.get_page(SolveMDP) + _height = self.shared_data['height'].get() + _width = self.shared_data['width'].get() + solve_page.create_graph(gridmdp, terminals, _height, _width) + + def show_frame(self, controller, cb=False): + ''' shows specified frame and optionally runs create_buttons ''' + + if cb: + build_page = self.get_page(BuildMDP) + build_page.create_buttons() + frame = self.frames[controller] + frame.tkraise() + + +class HomePage(tk.Frame): + + def __init__(self, parent, controller): + ''' HomePage constructor ''' + + tk.Frame.__init__(self, parent) + self.controller = controller + frame1 = tk.Frame(self) + frame1.pack(side=tk.TOP) + frame3 = tk.Frame(self) + frame3.pack(side=tk.TOP) + frame4 = tk.Frame(self) + frame4.pack(side=tk.TOP) + frame2 = tk.Frame(self) + frame2.pack(side=tk.TOP) + + s = ttk.Style() + s.theme_use('clam') + s.configure('TButton', background=grayd, padding=0) + s.configure('wall.TButton', background=gray2, foreground=white) + s.configure('reward.TButton', background=gray9) + s.configure('+term.TButton', background=green8) + s.configure('-term.TButton', background=pblue, foreground=white) + s.configure('=term.TButton', background=green4) + + label = ttk.Label(frame1, text='GridMDP builder', font=('Helvetica', 18, 'bold'), background=grayef) + label.pack(pady=75, padx=50, side=tk.TOP) + + ec_btn = ttk.Button(frame3, text='Empty cells', width=20) + ec_btn.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + ec_btn.configure(style='TButton') + + w_btn = ttk.Button(frame3, text='Walls', width=20) + w_btn.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + w_btn.configure(style='wall.TButton') + + r_btn = ttk.Button(frame3, text='Rewards', width=20) + r_btn.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + r_btn.configure(style='reward.TButton') + + term_p = ttk.Button(frame3, text='Positive terminals', width=20) + term_p.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + term_p.configure(style='+term.TButton') + + term_z = ttk.Button(frame3, text='Neutral terminals', width=20) + term_z.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + term_z.configure(style='=term.TButton') + + term_n = ttk.Button(frame3, text='Negative terminals', width=20) + term_n.pack(pady=0, padx=0, side=tk.LEFT, ipady=10) + term_n.configure(style='-term.TButton') + + label = ttk.Label(frame4, text='Dimensions', font=('Verdana', 14), background=grayef) + label.pack(pady=15, padx=10, side=tk.TOP) + entry_h = tk.Entry(frame2, textvariable=self.controller.shared_data['height'], font=('Verdana', 10), width=3, justify=tk.CENTER) + entry_h.pack(pady=10, padx=10, side=tk.LEFT) + label_x = ttk.Label(frame2, text='X', font=('Verdana', 10), background=grayef) + label_x.pack(pady=10, padx=4, side=tk.LEFT) + entry_w = tk.Entry(frame2, textvariable=self.controller.shared_data['width'], font=('Verdana', 10), width=3, justify=tk.CENTER) + entry_w.pack(pady=10, padx=10, side=tk.LEFT) + button = ttk.Button(self, text='Build a GridMDP', command=lambda: controller.show_frame(BuildMDP, cb=True)) + button.pack(pady=10, padx=10, side=tk.TOP, ipadx=20, ipady=10) + button.configure(style='reward.TButton') + + +class BuildMDP(tk.Frame): + + def __init__(self, parent, controller): + + tk.Frame.__init__(self, parent) + self.grid_rowconfigure(0, weight=1) + self.grid_columnconfigure(0, weight=1) + self.frame = tk.Frame(self) + self.frame.pack() + self.controller = controller + + def create_buttons(self): + ''' creates interactive cells to build MDP ''' + + _height = self.controller.shared_data['height'].get() + _width = self.controller.shared_data['width'].get() + self.controller.menu_bar.entryconfig('Edit', state=tk.NORMAL) + self.controller.menu_bar.entryconfig('Build', state=tk.NORMAL) + self.gridmdp = [[0.0]*max(1, _width) for _ in range(max(1, _height))] + self.buttons = [[None]*max(1, _width) for _ in range(max(1, _height))] + self.terminals = [] + + s = ttk.Style() + s.theme_use('clam') + s.configure('TButton', background=grayd, padding=0) + s.configure('wall.TButton', background=gray2, foreground=white) + s.configure('reward.TButton', background=gray9) + s.configure('+term.TButton', background=green8) + s.configure('-term.TButton', background=pblue, foreground=white) + s.configure('=term.TButton', background=green4) + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + self.buttons[i][j] = ttk.Button(self.frame, text=f'({_height - i - 1}, {j})', width=int(196/max(1, _width)), command=partial(dialogbox, i, j, self.gridmdp, self.terminals, self.buttons, _height)) + self.buttons[i][j].grid(row=i, column=j, ipady=int(336/max(1, _height)) - 12) + + def initialize(self): + ''' runs initialize_dialogbox ''' + + _height = self.controller.shared_data['height'].get() + _width = self.controller.shared_data['width'].get() + initialize_dialogbox(_width, _height, self.gridmdp, self.terminals, self.buttons) + + def master_reset(self): + ''' runs external reset ''' + + _height = self.controller.shared_data['height'].get() + _width = self.controller.shared_data['width'].get() + if tkinter.messagebox.askokcancel('Reset', 'Are you sure you want to reset all cells?'): + external_reset(_width, _height, self.gridmdp, self.terminals, self.buttons) + + +class SolveMDP(tk.Frame): + + def __init__(self, parent, controller): + + tk.Frame.__init__(self, parent) + self.grid_rowconfigure(0, weight=1) + self.grid_columnconfigure(0, weight=1) + self.frame = tk.Frame(self) + self.frame.pack() + self.controller = controller + self.terminated = False + self.iterations = 0 + self.epsilon = 0.001 + self.delta = 0 + + def process_data(self, terminals, _height, _width, gridmdp): + ''' preprocess variables ''' + + flipped_terminals = [] + + for terminal in terminals: + flipped_terminals.append((terminal[1], _height - terminal[0] - 1)) + + grid_to_solve = [[0.0]*max(1, _width) for _ in range(max(1, _height))] + grid_to_show = [[0.0]*max(1, _width) for _ in range(max(1, _height))] + + for i in range(max(1, _height)): + for j in range(max(1, _width)): + if gridmdp[i][j] == WALL_VALUE: + grid_to_show[i][j] = 0.0 + grid_to_solve[i][j] = None + + else: + grid_to_show[i][j] = grid_to_solve[i][j] = gridmdp[i][j] + + return flipped_terminals, grid_to_solve, np.flipud(grid_to_show) + + def create_graph(self, gridmdp, terminals, _height, _width): + ''' creates canvas and initializes value_iteration_paramteres ''' + + self._height = _height + self._width = _width + self.controller.menu_bar.entryconfig('Edit', state=tk.DISABLED) + self.controller.menu_bar.entryconfig('Build', state=tk.DISABLED) + + self.terminals, self.gridmdp, self.grid_to_show = self.process_data(terminals, _height, _width, gridmdp) + self.sequential_decision_environment = GridMDP(self.gridmdp, terminals=self.terminals) + + self.initialize_value_iteration_parameters(self.sequential_decision_environment) + + self.canvas = FigureCanvasTkAgg(fig, self.frame) + self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True) + self.anim = animation.FuncAnimation(fig, self.animate_graph, interval=50) + self.canvas.show() + + def animate_graph(self, i): + ''' performs value iteration and animates graph ''' + + # cmaps to use: bone_r, Oranges, inferno, BrBG, copper + self.iterations += 1 + x_interval = max(2, len(self.gridmdp[0])) + y_interval = max(2, len(self.gridmdp)) + x = np.linspace(0, len(self.gridmdp[0]) - 1, x_interval) + y = np.linspace(0, len(self.gridmdp) - 1, y_interval) + + sub.clear() + sub.imshow(self.grid_to_show, cmap='BrBG', aspect='auto', interpolation='none', extent=extents(x) + extents(y), origin='lower') + fig.tight_layout() + + U = self.U1.copy() + + for s in self.sequential_decision_environment.states: + self.U1[s] = self.R(s) + self.gamma * max([sum([p * U[s1] for (p, s1) in self.T(s, a)]) for a in self.sequential_decision_environment.actions(s)]) + self.delta = max(self.delta, abs(self.U1[s] - U[s])) + + self.grid_to_show = grid_to_show = [[0.0]*max(1, self._width) for _ in range(max(1, self._height))] + for k, v in U.items(): + self.grid_to_show[k[1]][k[0]] = v + + if (self.delta < self.epsilon * (1 - self.gamma) / self.gamma) or (self.iterations > 60) and self.terminated == False: + self.terminated = True + display(self.grid_to_show, self._height, self._width) + + ax = fig.gca() + ax.xaxis.set_major_locator(MaxNLocator(integer=True)) + ax.yaxis.set_major_locator(MaxNLocator(integer=True)) + + def initialize_value_iteration_parameters(self, mdp): + ''' initializes value_iteration parameters ''' + + self.U1 = {s: 0 for s in mdp.states} + self.R, self.T, self.gamma = mdp.R, mdp.T, mdp.gamma + + def value_iteration_metastep(self, mdp, iterations=20): + ''' runs value_iteration ''' + + U_over_time = [] + U1 = {s: 0 for s in mdp.states} + R, T, gamma = mdp.R, mdp.T, mdp.gamma + + for _ in range(iterations): + U = U1.copy() + + for s in mdp.states: + U1[s] = R(s) + gamma * max([sum([p * U[s1] for (p, s1) in T(s, a)]) for a in mdp.actions(s)]) + + U_over_time.append(U) + return U_over_time + + +if __name__ == '__main__': + app = MDPapp() + app.geometry('1280x720') + app.mainloop() \ No newline at end of file diff --git a/mdp.ipynb b/mdp.ipynb index e288d1b49..af46f948c 100644 --- a/mdp.ipynb +++ b/mdp.ipynb @@ -65,12 +65,156 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + " Codestin Search App\n", + " \n", + " \n", + "\n", + "\n", + "

\n", + "\n", + "
class MDP:\n",
+       "\n",
+       "    """A Markov Decision Process, defined by an initial state, transition model,\n",
+       "    and reward function. We also keep track of a gamma value, for use by\n",
+       "    algorithms. The transition model is represented somewhat differently from\n",
+       "    the text. Instead of P(s' | s, a) being a probability number for each\n",
+       "    state/state/action triplet, we instead have T(s, a) return a\n",
+       "    list of (p, s') pairs. We also keep track of the possible states,\n",
+       "    terminal states, and actions for each state. [page 646]"""\n",
+       "\n",
+       "    def __init__(self, init, actlist, terminals, transitions={}, states=None, gamma=.9):\n",
+       "        if not (0 < gamma <= 1):\n",
+       "            raise ValueError("An MDP must have 0 < gamma <= 1")\n",
+       "\n",
+       "        if states:\n",
+       "            self.states = states\n",
+       "        else:\n",
+       "            self.states = set()\n",
+       "        self.init = init\n",
+       "        self.actlist = actlist\n",
+       "        self.terminals = terminals\n",
+       "        self.transitions = transitions\n",
+       "        self.gamma = gamma\n",
+       "        self.reward = {}\n",
+       "\n",
+       "    def R(self, state):\n",
+       "        """Return a numeric reward for this state."""\n",
+       "        return self.reward[state]\n",
+       "\n",
+       "    def T(self, state, action):\n",
+       "        """Transition model. From a state and an action, return a list\n",
+       "        of (probability, result-state) pairs."""\n",
+       "        if(self.transitions == {}):\n",
+       "            raise ValueError("Transition model is missing")\n",
+       "        else:\n",
+       "            return self.transitions[state][action]\n",
+       "\n",
+       "    def actions(self, state):\n",
+       "        """Set of actions that can be performed in this state. By default, a\n",
+       "        fixed list of actions, except for terminal states. Override this\n",
+       "        method if you need to specialize by state."""\n",
+       "        if state in self.terminals:\n",
+       "            return [None]\n",
+       "        else:\n",
+       "            return self.actlist\n",
+       "
\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "%psource MDP" + "psource(MDP)" ] }, { @@ -198,12 +342,154 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + " Codestin Search App\n", + " \n", + " \n", + "\n", + "\n", + "

\n", + "\n", + "
class GridMDP(MDP):\n",
+       "\n",
+       "    """A two-dimensional grid MDP, as in [Figure 17.1]. All you have to do is\n",
+       "    specify the grid as a list of lists of rewards; use None for an obstacle\n",
+       "    (unreachable state). Also, you should specify the terminal states.\n",
+       "    An action is an (x, y) unit vector; e.g. (1, 0) means move east."""\n",
+       "\n",
+       "    def __init__(self, grid, terminals, init=(0, 0), gamma=.9):\n",
+       "        grid.reverse()  # because we want row 0 on bottom, not on top\n",
+       "        MDP.__init__(self, init, actlist=orientations,\n",
+       "                     terminals=terminals, gamma=gamma)\n",
+       "        self.grid = grid\n",
+       "        self.rows = len(grid)\n",
+       "        self.cols = len(grid[0])\n",
+       "        for x in range(self.cols):\n",
+       "            for y in range(self.rows):\n",
+       "                self.reward[x, y] = grid[y][x]\n",
+       "                if grid[y][x] is not None:\n",
+       "                    self.states.add((x, y))\n",
+       "\n",
+       "    def T(self, state, action):\n",
+       "        if action is None:\n",
+       "            return [(0.0, state)]\n",
+       "        else:\n",
+       "            return [(0.8, self.go(state, action)),\n",
+       "                    (0.1, self.go(state, turn_right(action))),\n",
+       "                    (0.1, self.go(state, turn_left(action)))]\n",
+       "\n",
+       "    def go(self, state, direction):\n",
+       "        """Return the state that results from going in this direction."""\n",
+       "        state1 = vector_add(state, direction)\n",
+       "        return state1 if state1 in self.states else state\n",
+       "\n",
+       "    def to_grid(self, mapping):\n",
+       "        """Convert a mapping from (x, y) to v into a [[..., v, ...]] grid."""\n",
+       "        return list(reversed([[mapping.get((x, y), None)\n",
+       "                               for x in range(self.cols)]\n",
+       "                              for y in range(self.rows)]))\n",
+       "\n",
+       "    def to_arrows(self, policy):\n",
+       "        chars = {\n",
+       "            (1, 0): '>', (0, 1): '^', (-1, 0): '<', (0, -1): 'v', None: '.'}\n",
+       "        return self.to_grid({s: chars[a] for (s, a) in policy.items()})\n",
+       "
\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "%psource GridMDP" + "psource(GridMDP)" ] }, { @@ -478,7 +764,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Move the slider above to observe how the utility changes across iterations. It is also possible to move the slider using arrow keys or to jump to the value by directly editing the number with a double click. The **Visualize Button** will automatically animate the slider for you. The **Extra Delay Box** allows you to set time delay in seconds upto one second for each time step." + "Move the slider above to observe how the utility changes across iterations. It is also possible to move the slider using arrow keys or to jump to the value by directly editing the number with a double click. The **Visualize Button** will automatically animate the slider for you. The **Extra Delay Box** allows you to set time delay in seconds upto one second for each time step. There is also an interactive editor for grid-world problems `grid_mdp.py` in the gui folder for you to play around with." ] } ], @@ -2990,4 +3276,4 @@ }, "nbformat": 4, "nbformat_minor": 1 -} +} \ No newline at end of file From beaea67b6736cd339a9d78dee5d98441fb01a76f Mon Sep 17 00:00:00 2001 From: Vinay Varma Date: Mon, 12 Feb 2018 15:21:39 +0530 Subject: [PATCH 2/6] modify AC3 algorithm (#717) * added submodule * fixed ac3 in csp.py * added a test to verify the modified ac3 algorithm in csp.py * Update .gitmodules --- csp.py | 2 +- tests/test_csp.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/csp.py b/csp.py index 9e933c266..62772c322 100644 --- a/csp.py +++ b/csp.py @@ -168,7 +168,7 @@ def AC3(csp, queue=None, removals=None): if not csp.curr_domains[Xi]: return False for Xk in csp.neighbors[Xi]: - if Xk != Xi: + if Xk != Xj: queue.append((Xk, Xi)) return True diff --git a/tests/test_csp.py b/tests/test_csp.py index 4e2c4f119..f63e657aa 100644 --- a/tests/test_csp.py +++ b/tests/test_csp.py @@ -210,6 +210,13 @@ def test_AC3(): assert AC3(csp, removals=removals) is True assert (removals == [('A', 1), ('A', 3), ('B', 1), ('B', 3)] or removals == [('B', 1), ('B', 3), ('A', 1), ('A', 3)]) + + domains = {'A': [ 2, 4], 'B': [ 3, 5]} + constraints = lambda X, x, Y, y: int(x) > int (y) + removals=[] + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) + + assert AC3(csp, removals=removals) def test_first_unassigned_variable(): From 504c34ee94819a6274178d7befd7460019ecf4f0 Mon Sep 17 00:00:00 2001 From: Apurv Bajaj Date: Mon, 12 Feb 2018 15:22:11 +0530 Subject: [PATCH 3/6] Add vacuum_world.ipynb (#721) * Added vacuum_world.ipynb * Add psource for environment --- README.md | 14 +- images/model_based_reflex_agent.jpg | Bin 0 -> 57354 bytes images/model_goal_based_agent.jpg | Bin 0 -> 61937 bytes images/model_utility_based_agent.jpg | Bin 0 -> 69438 bytes images/simple_reflex_agent.jpg | Bin 0 -> 40659 bytes vacuum_world.ipynb | 563 +++++++++++++++++++++++++++ 6 files changed, 570 insertions(+), 7 deletions(-) create mode 100644 images/model_based_reflex_agent.jpg create mode 100644 images/model_goal_based_agent.jpg create mode 100644 images/model_utility_based_agent.jpg create mode 100644 images/simple_reflex_agent.jpg create mode 100644 vacuum_world.ipynb diff --git a/README.md b/README.md index dd8c0b38a..99b19c773 100644 --- a/README.md +++ b/README.md @@ -30,15 +30,15 @@ Here is a table of algorithms, the figure, name of the algorithm in the book and | **Figure** | **Name (in 3rd edition)** | **Name (in repository)** | **File** | **Tests** | **Notebook** |:-------|:----------------------------------|:------------------------------|:--------------------------------|:-----|:---------| -| 2 | Random-Vacuum-Agent | `RandomVacuumAgent` | [`agents.py`][agents] | Done | | -| 2 | Model-Based-Vacuum-Agent | `ModelBasedVacuumAgent` | [`agents.py`][agents] | Done | | +| 2 | Random-Vacuum-Agent | `RandomVacuumAgent` | [`agents.py`][agents] | Done | Included | +| 2 | Model-Based-Vacuum-Agent | `ModelBasedVacuumAgent` | [`agents.py`][agents] | Done | Included | | 2.1 | Environment | `Environment` | [`agents.py`][agents] | Done | Included | | 2.1 | Agent | `Agent` | [`agents.py`][agents] | Done | Included | -| 2.3 | Table-Driven-Vacuum-Agent | `TableDrivenVacuumAgent` | [`agents.py`][agents] | | | -| 2.7 | Table-Driven-Agent | `TableDrivenAgent` | [`agents.py`][agents] | | | -| 2.8 | Reflex-Vacuum-Agent | `ReflexVacuumAgent` | [`agents.py`][agents] | Done | | -| 2.10 | Simple-Reflex-Agent | `SimpleReflexAgent` | [`agents.py`][agents] | | | -| 2.12 | Model-Based-Reflex-Agent | `ReflexAgentWithState` | [`agents.py`][agents] | | | +| 2.3 | Table-Driven-Vacuum-Agent | `TableDrivenVacuumAgent` | [`agents.py`][agents] | | Included | +| 2.7 | Table-Driven-Agent | `TableDrivenAgent` | [`agents.py`][agents] | | Included | +| 2.8 | Reflex-Vacuum-Agent | `ReflexVacuumAgent` | [`agents.py`][agents] | Done | Included | +| 2.10 | Simple-Reflex-Agent | `SimpleReflexAgent` | [`agents.py`][agents] | | Included | +| 2.12 | Model-Based-Reflex-Agent | `ReflexAgentWithState` | [`agents.py`][agents] | | Included | | 3 | Problem | `Problem` | [`search.py`][search] | Done | | | 3 | Node | `Node` | [`search.py`][search] | Done | | | 3 | Queue | `Queue` | [`utils.py`][utils] | Done | | diff --git a/images/model_based_reflex_agent.jpg b/images/model_based_reflex_agent.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6c12ed099011b9cca7411c10d71bbd3bb10fb0a GIT binary patch literal 57354 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 literal 0 HcmV?d00001 diff --git a/images/model_goal_based_agent.jpg b/images/model_goal_based_agent.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93d6182b4b884fc446709229801225fb7ca0d846 GIT binary patch literal 61937 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 R!fx{;e`_oxI|`f9xz0!Wn}Tzn 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.ipynb](https://github.com/aimacode/aima-python/blob/master/agents.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Agent Programs\n", + "\n", + "An agent program takes the current percept as input from the sensors and return an action to the actuators. There is a difference between an agent program and an agent function: an agent program takes the current percept as input whereas an agent function takes the entire percept history. \n", + "The agent program takes just the current percept as input because nothing more is available from the environment; if the agent's actions need to depend on the entire percept sequence, the agent will have to remember the percept. \n", + "\n", + "We'll discuss the following agent programs here with the help of the vacuum world example:\n", + "\n", + "* Random Agent Program\n", + "* Table Driven Agent Program\n", + "* Simple Reflex Agent Program\n", + "* Model-Based Reflex Agent Program\n", + "* Goal-Based Agent Program\n", + "* Utility-Based Agent Program" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random Agent Program\n", + "\n", + "A random agent program, as the name suggests, choses an action at random, without taking into account the percepts. \n", + "Here, we will demonstrate a random vacuum agent for a trivial vacuum environment, that is, the two-state environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's begin by importing all the functions from the agents module:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0magents\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnotebook\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpsource\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/aima-python/notebook.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgames\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mTicTacToe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malphabeta_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mFig52Extended\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minfinity\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mlogic\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mparse_definite_clause\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstandardize_variables\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0munify\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubst\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mlearning\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataSet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mHTML\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcollections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCounter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdefaultdict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1106\u001b[0m orings = DataSet(name='orings', target='Distressed',\n\u001b[0;32m-> 1107\u001b[0;31m attrnames=\"Rings Distressed Temp Pressure Flightnum\")\n\u001b[0m\u001b[1;32m 1108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1109\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, examples, attrs, attrnames, target, inputs, values, distance, name, source, exclude)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexamples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mexamples\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopen_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexamples\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/utils.py\u001b[0m in \u001b[0;36mopen_data\u001b[0;34m(name, mode)\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0maima_file\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_root\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'aima-data'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 416\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 417\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 418\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'" + ] + } + ], + "source": [ + "from agents import *\n", + "from notebook import psource" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first see how we define the TrivialVacuumEnvironment. Run the next cell to see how abstract class TrivialVacuumEnvironment is defined in agents module:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%psource TrivialVacuumEnvironment" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Dirty'}.\n" + ] + } + ], + "source": [ + "# These are the two locations for the two-state environment.\n", + "loc_A, loc_B = (0, 0), (1, 0)\n", + "\n", + "# Initialise the two-state environment.\n", + "trivial_vacuum_env = TrivialVacuumEnvironment()\n", + "\n", + "# Check the intial state of the environment.\n", + "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create our agent now. This agent will chose any of the actions from 'Right', 'Left', 'Suck' and 'NoOp' (No Operation) randomly. " + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create the random agent.\n", + "random_agent = Agent(program=RandomAgentProgram(['Right', 'Left', 'Suck', 'NoOp']))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now add our agent to the environment." + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RandomVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# Add agent to the environment.\n", + "trivial_vacuum_env.add_thing(random_agent)\n", + "\n", + "print(\"RandomVacuumAgent is located at {}.\".format(random_agent.location))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's run our environment now." + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Dirty'}.\n", + "RandomVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# Running the environment.\n", + "trivial_vacuum_env.step()\n", + "\n", + "# Check the current state of the environment.\n", + "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", + "\n", + "print(\"RandomVacuumAgent is located at {}.\".format(random_agent.location))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Table Driven Agent Program\n", + "\n", + "A table driven agent program keeps track of the percept sequence and then uses it to index into a table of actions to decide what to do. The table represents eplicitly the agent function that the agent program embodies. \n", + "In the two-state vacuum world, the table would consist of all the possible states of the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "table = {((loc_A, 'Clean'),): 'Right',\n", + " ((loc_A, 'Dirty'),): 'Suck',\n", + " ((loc_B, 'Clean'),): 'Left',\n", + " ((loc_B, 'Dirty'),): 'Suck',\n", + " ((loc_A, 'Clean'), (loc_A, 'Clean')): 'Right',\n", + " ((loc_A, 'Clean'), (loc_A, 'Dirty')): 'Suck',\n", + " ((loc_A, 'Clean'), (loc_A, 'Clean'), (loc_A, 'Clean')): 'Right',\n", + " ((loc_A, 'Clean'), (loc_A, 'Clean'), (loc_A, 'Dirty')): 'Suck',\n", + " }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now create a table driven agent program for our two-state environment." + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create a table driven agent.\n", + "table_driven_agent = Agent(program=TableDrivenAgentProgram(table=table))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we are using the same environment, let us remove the previously added random agent from the environment to avoid confusion." + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "trivial_vacuum_env.delete_thing(random_agent)" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TableDrivenVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# Add the table driven agent to the environment\n", + "trivial_vacuum_env.add_thing(table_driven_agent)\n", + "\n", + "print(\"TableDrivenVacuumAgent is located at {}.\".format(table_driven_agent.location))" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "TableDrivenVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# Run the environment.\n", + "trivial_vacuum_env.step()\n", + "\n", + "# Check the current state of the environment.\n", + "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", + "\n", + "print(\"TableDrivenVacuumAgent is located at {}.\".format(table_driven_agent.location))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Reflex Agent Program\n", + "\n", + "A simple reflex agent program selects actions on the basis of the current percept, ignoring the rest of the percept history. These agents work on a **condition-action rule** (also called **situation-action rule**, **production** or **if-then rule**), which tell the agent the action to trigger when a particular situtation is encountered. \n", + "\n", + "The schematic diagram shown in **Figure 2.9** of the book will make this more clear:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us now create a simple reflex agent for the environment." + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Delete the previously added table driven agent.\n", + "trivial_vacuum_env.delete_thing(table_driven_agent)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create our agent, we need two functions: INTERPRET-INPUT function, which generates an abstracted description of the current state from the percerpt and the RULE-MATCH function, which returns the first rule in the set of rules that matches the given state description." + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# TODO: Implement these functions for two-dimensional environment.\n", + "# Interpret-input function for the two-state environment.\n", + "def interpret_input(percept):\n", + " pass\n", + "\n", + "rules = None\n", + "\n", + "# Rule-match function for the two-state environment.\n", + "def rule_match(state, rule):\n", + " for rule in rules:\n", + " if rule.matches(state):\n", + " return rule \n", + " \n", + "# Create a simple reflex agent the two-state environment.\n", + "simple_reflex_agent = ReflexVacuumAgent()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now add the agent to the environment:" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SimpleReflexVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "trivial_vacuum_env.add_thing(simple_reflex_agent)\n", + "\n", + "print(\"SimpleReflexVacuumAgent is located at {}.\".format(simple_reflex_agent.location))" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "SimpleReflexVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# Run the environment.\n", + "trivial_vacuum_env.step()\n", + "\n", + "# Check the current state of the environment.\n", + "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", + "\n", + "print(\"SimpleReflexVacuumAgent is located at {}.\".format(simple_reflex_agent.location))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model-Based Reflex Agent Program\n", + "\n", + "A model-based reflex agent maintains some sort of internal state that depends on the percept history and thereby reflects at least some of the unobserved aspects of the current state. In additon to this, it also requires a model of the world, that is, knowledge about \"how the world works\". \n", + "\n", + "The schematic diagram shown in figure 2.11 of the book will make this more clear:\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now create a model-based reflex agent for the environment:" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list.remove(x): x not in list\n", + " in Environment delete_thing\n", + " Thing to be removed: at (0, 0)\n", + " from list: []\n" + ] + } + ], + "source": [ + "# Delete the previously added simple reflex agent.\n", + "trivial_vacuum_env.delete_thing(simple_reflex_agent)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need a another function UPDATE-STATE which will be reponsible for creating a new state description." + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ModelBasedVacuumAgent is located at (0, 0).\n" + ] + } + ], + "source": [ + "# TODO: Implement this function for the two-dimensional environment.\n", + "def update_state(state, action, percept, model):\n", + " pass\n", + "\n", + "# Create a model-based reflex agent.\n", + "model_based_reflex_agent = ModelBasedVacuumAgent()\n", + "\n", + "# Add the agent to the environment.\n", + "trivial_vacuum_env.add_thing(model_based_reflex_agent)\n", + "\n", + "print(\"ModelBasedVacuumAgent is located at {}.\".format(model_based_reflex_agent.location))" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "ModelBasedVacuumAgent is located at (1, 0).\n" + ] + } + ], + "source": [ + "# Run the environment.\n", + "trivial_vacuum_env.step()\n", + "\n", + "# Check the current state of the environment.\n", + "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", + "\n", + "print(\"ModelBasedVacuumAgent is located at {}.\".format(model_based_reflex_agent.location))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Goal-Based Agent Program \n", + "\n", + "A goal-based agent needs some sort of goal information that describes situations that are desirable, apart from the current state description. \n", + "Figure 2.13 of the book shows a model-based, goal-based agent: \n", + "\n", + "\n", + "Search (Chapters 3 to 5) and Planning (Chapters 10 to 11) are the subfields of AI devoted to finding action sequences that achieve the agent's goals.\n", + "\n", + "## Utility-Based Agent Program\n", + "\n", + "A utility-based agent maximizes its utility using the agent's utility function, which is essentially an internalization of the agent's performance measure. \n", + "Figure 2.14 of the book shows a model-based, utility-based agent:\n", + "\n" + ] + } + ], + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 74dff567e460af7ef5eb75f6091172b7812652e9 Mon Sep 17 00:00:00 2001 From: Apurv Bajaj Date: Mon, 12 Feb 2018 15:23:00 +0530 Subject: [PATCH 4/6] Add explanation for Simple Problem Solving Agent (#724) * Add SimpleProblemSolvingAgent * Fix typo in search.py --- README.md | 2 +- search.ipynb | 133 +++++++++++++++++++++++++++++++++++---------------- search.py | 2 +- 3 files changed, 94 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 99b19c773..91ce5b37e 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Here is a table of algorithms, the figure, name of the algorithm in the book and | 3 | Problem | `Problem` | [`search.py`][search] | Done | | | 3 | Node | `Node` | [`search.py`][search] | Done | | | 3 | Queue | `Queue` | [`utils.py`][utils] | Done | | -| 3.1 | Simple-Problem-Solving-Agent | `SimpleProblemSolvingAgent` | [`search.py`][search] | | | +| 3.1 | Simple-Problem-Solving-Agent | `SimpleProblemSolvingAgent` | [`search.py`][search] | | Included | | 3.2 | Romania | `romania` | [`search.py`][search] | Done | Included | | 3.7 | Tree-Search | `tree_search` | [`search.py`][search] | Done | | | 3.7 | Graph-Search | `graph_search` | [`search.py`][search] | Done | | diff --git a/search.ipynb b/search.ipynb index 5415dd89a..6da1d0ef5 100644 --- a/search.ipynb +++ b/search.ipynb @@ -15,10 +15,25 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true, "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msearch\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnotebook\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpsource\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Needed to hide warnings in the matplotlib sections\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwarnings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/notebook.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgames\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mTicTacToe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malphabeta_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mFig52Extended\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minfinity\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mlogic\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mparse_definite_clause\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstandardize_variables\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0munify\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubst\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mlearning\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataSet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mHTML\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcollections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCounter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdefaultdict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1106\u001b[0m orings = DataSet(name='orings', target='Distressed',\n\u001b[0;32m-> 1107\u001b[0;31m attrnames=\"Rings Distressed Temp Pressure Flightnum\")\n\u001b[0m\u001b[1;32m 1108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1109\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, examples, attrs, attrnames, target, inputs, values, distance, name, source, exclude)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexamples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mexamples\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopen_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexamples\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/aima-python/utils.py\u001b[0m in \u001b[0;36mopen_data\u001b[0;34m(name, mode)\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0maima_file\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_root\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'aima-data'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 416\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 417\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 418\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'" + ] + } + ], "source": [ "from search import *\n", "from notebook import psource\n", @@ -83,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "collapsed": true }, @@ -125,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "collapsed": true }, @@ -143,7 +158,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "collapsed": true }, @@ -190,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "collapsed": true }, @@ -217,17 +232,11 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Oradea': (131, 571), 'Eforie': (562, 293), 'Timisoara': (94, 410), 'Hirsova': (534, 350), 'Bucharest': (400, 327), 'Rimnicu': (233, 410), 'Fagaras': (305, 449), 'Lugoj': (165, 379), 'Giurgiu': (375, 270), 'Mehadia': (168, 339), 'Pitesti': (320, 368), 'Drobeta': (165, 299), 'Craiova': (253, 288), 'Sibiu': (207, 457), 'Iasi': (473, 506), 'Urziceni': (456, 350), 'Vaslui': (509, 444), 'Neamt': (406, 537), 'Zerind': (108, 531), 'Arad': (91, 492)}\n" - ] - } - ], + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ "romania_locations = romania_map.locations\n", "print(romania_locations)" @@ -242,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "collapsed": true }, @@ -268,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "collapsed": true }, @@ -314,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "collapsed": true }, @@ -367,7 +376,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "collapsed": true }, @@ -410,22 +419,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { + "collapsed": true, "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "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\nTpyoCxcuWDsOAAAAAFtjGJnX6Lx6NXf7Xb2auZ9h5EusmTNnqmTJknrllVdyfL1q1ary9fWVJEVF\nReVYVoaGhqpSpUrm57/++qtMJpP+85//aPTo0SpbtqycnJx08eJFxcbGymQyKT4+Xt27d5e7u7sa\nN25s3vfTTz9Vq1at5ObmJhcXFwUGBurbb7+1OF9AQICaNWumuLg4NWzYUM7Ozqpbt642bNhgkWn5\n8uU6deqUeUn5PzP+U3h4uEqXLq3U1FSL7UlJSXJzc9PYsWNv+RneiWXLlmVb1p6enq4WLVqoatWq\nunz5sqT/fcZHjhxRy5Yt5ezsLG9vb02aNEkZGRm3PIdhGJo7d65q1qwpR0dHeXt7a/DgweZjZzGZ\nTBo/frxmzJihypUry9HRUUeOHMlxGfudfNZZ3nnnHdWqVUtFixZVvXr19MEHHyggIEABAQF3/8HZ\nAMpOFDqXL1/W7NmzFRkZae0ohV6DBg307LPPatKkSdaOAgAAYDUP6rX5gAIvISHzZkR348yZzP3z\nWHp6unbt2qW2bduqaNGieX78qVOn6scff9SSJUu0YcMGi3OEhISocuXKWrdunWbMmCFJ2rp1q1q1\naiVXV1etWrVKq1evVlJSkpo3b64TJ05YHPv48eMaOnSoIiIitH79enl7e6t79+766aefJEkTJ05U\n+/btVapUKSUkJCghISHHgk6SBg4cqLNnz2Z7ffXq1UpOTs5xefqNDMNQWlpatkeWsLAwde/eXX37\n9tWpU6ckSZMnT9bnn3+u1atXq3jx4hbHe/rpp9W6dWtt3LhRwcHBmjx5sl5++eVbZhg/frwiIiLU\npk0bbd68WaNHj1ZsbKw6dOiQrSiNjY3V1q1bNWvWLG3dulVly5a96XFv91lL0o4dOxQSEqJatWpp\n/fr1GjlypIYNG6Yff/zxtp+drWMZOwqd+fPnq23btvLx8bF2FCjzD5vatWurX79+ql+/vrXjAAAA\n3HdpaWnq06ePIiIi1LBhQ2vHAR4Mw4ZJX3996zEnT+Z+VmeWq1el556Type/+ZgGDaSYmFwd9ty5\nc7p27ZoqVqx4d7luo3Tp0tqwYUOOs0G7deuWbTbp0KFD1aJFC23atMm8rWXLlqpSpYpmz56tmH+8\nv3Pnzik+Pl7Vq1eXlHm9SW9vb7333nsaN26cqlatqlKlSsnR0fG2S7Nr166tFi1aaPHixQoKCjJv\nX7x4sdq2bavKlSvf9r1OmzZN06ZNy7b9zz//lKenpyRpyZIlql+/vnr37q3IyEhNmTJFkydPtpjZ\nmqVfv37mGaVt27Y1T5QaNmyY3N3ds42/cOGCZs+erT59+mjhwoWSpMDAQJUqVUq9e/fWli1b1Llz\nZ/N4wzC0fft2FStWzLwtMTExx/d2u89akiIjI1W7dm2LX++6devKz89PNWrUuO3nZ8uY2YlC5eLF\ni5o3bx6zOgsQDw8PRUdHKzw8XEY+LRMBAAAoyOzt7dW0aVN17NhR3bt3v+lffgHkUnr63S9FN4zM\n/R8wTz/9dI5FpyR17drV4vmxY8d0/PhxhYSEWMyMdHZ2VtOmTRUfH28xvnr16ubyTZK8vLzk5eWl\n33///a6yvvjii9q1a5eOHTsmSdq/f7+++uqrO5rVKUkvvPCC9u/fn+3xz2LS3d1dq1evVnx8vAID\nA/XEE09ozJgxOR7vn6WrJPXo0UNXrlzJtqQ/y759+5SSkqJevXpl28/e3l6ffvqpxfannnrKoui8\nldt91unp6Tpw4ICeffZZi1/vRx999I6KYlvHzE4UKjExMerYsaPFbxqwvn79+mnJkiVas2aNevbs\nae04AAAA91WRIkU0aNAgPf/881q4cKFatGihDh06KDIy8qbXuwMKvTuZURkTI40ZI6Wk5P74Tk6Z\ns0eHDs39vrfg4eGhYsWK6bfffsvT42bx9va+49fO/v8S/7CwMIWFhWUbX6FCBYvnJUuWzDbGyclJ\nf//9991EVdeuXVWmTBktXrxYs2bN0uuvv66yZcuqU6dOd7S/t7e3/Pz8bjuuSZMmqlmzpo4ePaoh\nQ4bIzi7neX+lS5fO8XnWEvgbZd174sbP1d7eXh4eHtnuTXGrX5sb3e6zPnfunFJTU+Xl5ZVt3I3v\nozBiZicKjZSUFB06dEgTJ060dhTcoEiRIlqwYIFGjRqlK1euWDsOAACAVTg7O2v06NE6duyYHn74\nYT366KMaPHiwTp8+be1owIPJ319ycLi7fe3tpUaN8jaPMouwgIAA7dixQ9fv4A7xWdfcTLmhsD1/\n/nyO4282qzOn1zw8PCRJ06dPz3GG5ObNm2+b7144ODiob9++io2N1dmzZ7VmzRqFhYXJ3j5v5+VF\nR0fr2LFj8vX11fDhw3Xp0qUcx505cybH5+XKlctxfFYh+ccff1hsT0tL0/nz57MVlrf6tcktT09P\nOTg4mAvrf7rxfRRGlJ0oNOzt7fXee++pSpUq1o6CHDz++ONq2bKlpk6dau0oAAAAVlWiRAm9/PLL\nSkxMlKOjo+rWrauxY8dmmyUE4DaaNpVymPl2R0qXztw/H4wdO1bnz5/X6NGjc3z9l19+0TfffCNJ\n5mt7/nMp9cWLF/X555/fc46aNWuqUqVK+u677+Tn55ftkXVH+NxwcnLStWvX7nj8gAEDdPHiRXXv\n3l3Xr19Xv379cn3OW9mzZ4+mTp2qqVOnavPmzbp48aIGDhyY49j33nvP4vmaNWvk6uqqevXq5Ti+\nSZMmcnR01Jo1ayy2v/vuu0pLS8vXO6IXKVJEfn5+ev/99y0uB3fw4EH98ssv+XbeBwXL2FFo2NnZ\n5cvd7pB3XnnlFdWrV08vvPAClxoAAACFnpeXl+bMmaOIiAhNnjxZNWrU0LBhwzR06FC5ublZOx5Q\n8JlM0ujR0ogRubtRkbNz5n55OBPvn5544gnzd/vo0aMKDQ1VhQoV9Ndff2nnzp1aunSpVq9eLV9f\nX7Vr104lSpRQv379FB0drevXr+uVV16Rq6vrPecwmUx67bXX1KVLF6WkpCgoKEienp46c+aMPv/8\nc1WoUEERERG5Ombt2rV14cIFLVq0SH5+fipatOhNy0Ipc9Zk586dtWHDBnXq1EkPP/zwHZ/r1KlT\n2rdvX7btFStWlLe3t/766y+FhISoVatWGjlypEwmk5YsWaKgoCAFBgaqT58+Fvu98cYbysjIUKNG\njfTxxx9r6dKlioqKUokSJXI8f8mSJTVixAhNnz5dLi4uat++vRITEzVhwgQ1a9ZMHTp0uOP3cjei\no6PVtm1bde3aVf3799e5c+cUFRWlMmXK3HSpfmFRuN89gALF29tbY8aM0bBhw6wdBQAAoMAoX768\nFi9erISEBCUmJqp69eqKiYm56+vkAYVKWJjUsGHmNTjvhJOT9Oij0gsv5GusYcOG6bPPPpO7u7tG\njhypJ598UqGhoUpMTNTixYvN1610d3fXli1bZGdnp6CgIL300ksKDw9Xy5Yt8yRH+/btFR8fr+Tk\nZPXt21eBgYEaPXq0/vjjDzW9i5mtffv2VY8ePTRu3Dj5+/vf0fU3u3fvLkl3fGOiLLGxsWratGm2\nx9tvvy1J6t+/v65du6bly5ebl5B3795dYWFhGjx4sH766SeL423atEk7duxQ586dtWrVKk2YMOG2\n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\npKdgwkRKegrJqcmcunGKN2LeoPni5iSlJOVonoULF2YuvvXXxzfffAPAN998g4WFBXFxcTmWo3v3\n7nh6ev7rfhcvXiQ8PBwvLy8cHBxwcXGhVq1aDBo0iNTU1Ee65smTJ7GwsODzzz9/5LxbtmwhMjIy\nW88pBZOFSX8VRES4e/cudnZ2RscQERERkf9ZunQpbm5uNGzYEOCBHZ0mk4n33nuP0qVL06VLF43q\nKYCOHz+Oj4/PYx2bmp5K4OJA9ibu5W763X/d387Kjjrl6hDbIzbHOjwXLlxIr169WL58Oa6urlle\nq1q1KoULF+b333/n2LFj+Pr6Zlm4Nzt1796d7777jpMnTz5wnxs3buDv74+trS0RERFUqVKFa9eu\nER8fz5IlSzhy5AhOTk4Pfc2TJ09SuXJlPvvsM7p37/5IeceMGcOUKVPu+3Lj7t27xMfH4+npiYuL\nyyOd05w9ye9VXqdh7CJi1jIyMti6dSsHDhygR48elCpVyuhIIiIiIgJ06dIly/MHDV23sLCgdu3a\nvPnmm0ydOpXJkyfTvn17je4RAObFz+PAhQMPVegEuJt+l/0X9jM/fj79a/fP0Ww1atR4YGdl4cKF\nqVevXo5e/2EsW7aMs2fPcvToUXx9fTO3v/jii0yaNClP/J7Z2dnlifdK8g4NYxcRs2ZpacmtW7fY\ntm0bgwYNMjqOiIiIiDyGpk2bEhcXxzvvvENkZCR169Zl8+bNGt5u5kwmE+9++y63Um890nG3Um/x\n7rfvGvrz83fD2Bs1akTTpk2JiYkhICAAR0dH/Pz8WLNmTZZjExIS6N69OxUqVMDBwYFKlSrx2muv\ncePGjUfOce3aNQBKly5932t/LXSmpKQwevRo3N3dsbW1pUKFCowbN+5fh7o3atSIZ5999r7trq6u\nvPzyy8D/7+q8d10LCwusrf/o33vQMPZFixbh7++PnZ0dTz31FD179uTSpUv3XSMsLIwlS5bg7e1N\noUKFePrpp9m1a9c/Zpa8TcVOETFbKSkpAAQFBfHiiy+ybNkyNm/ebHAqEREREXkcFhYWtG3blgMH\nDhAREcHAgQMJDAxU0cKM7T63m8vJlx/r2EvJl9h9bnc2J8oqPT2dtLS0zEd6evq/HpOQkMDQoUOJ\niIhgxYoVlCpVihdffJFTp05l7pOYmIi7uzsffvghmzZt4s0332TTpk08//zzj5yxTp06AHTu3JmY\nmBiSk5MfuG/37t2ZNm0avXr1Yt26dfTo0YO33nqLPn36PPJ1/+qVV14hLCwMgN27d7N7926+/fbb\nB+7/8ccfExYWRrVq1Vi1ahVTpkxh/fr1NG3alFu3sha/t27dykcffcSUKVOIiooiJSWF559/nt9/\n//2Jc4sxNIxdRMxOWloa1tbW2NrakpaWxogRI5g3bx4NGzZ85Am2RURERCRvsbS0pHPnznTs2JHF\nixfTpUsX/P39mTx5MtWrVzc6nmSTwRsHc/DiwX/c59zv5x65q/OeW6m36LGyB66FXR+4T43SNZjR\nesZjnR/A29s7y/OGDRv+64JEv/76K3FxcXh4eABQvXp1ypYty/Llyxk+fDgAzZo1o1mzZpnHNGjQ\nAA8PD5o1a8aRI0eoVq3aQ2cMDAxk3LhxvPXWW2zZsgUrKysCAgIICgpi8ODBFC5cGICDBw+yfPly\nJk2axJgxYwBo2bIllpaWTJgwgZEjR1K1atWHvu5fubq6Uq5cOYB/HbKelpbG+PHjad68OUuWLMnc\n7uXlRbNmzVi4cCEDBgzI3J6UlERMTAxFihQB4KmnnqJ+/fps3LiRzp07P3ZmMY46O0XELPz888/8\n9NNPAJnDHRYtWoS7uzurVq1i7NixzJ8/n9atWxsZU0RERESyibW1Nb179yYhIYEWLVrQqlUrunTp\nQkJCgtHRJJekZ6Rj4vGGopswkZ7x752WT2LlypXs3bs38zFv3rx/Pcbb2zuz0AlQpkwZXFxcOHPm\nTOa2u3fvMnnyZLy9vXFwcMDGxiaz+Pnjjz8+cs4JEybwyy+/8N///pfu3btz5coVxo8fj5+fH1eu\nXAFgx44dAPctOnTv+fbt2x/5uo/r2LFj/Prrr/dladq0KeXKlbsvS8OGDTMLnUBmMfjP76nkL+rs\nFBGzsGTJEpYuXcrx48eJj48nPDyco0eP0rVrV3r27En16tWxt7c3OqaIiIiIZDM7Oztef/11evfu\nzUcffUTDhg3p0KED48aNo3z58kbHk8f0MB2VM76bwYhvRpCSnvLI57ezsmNwvcEMqpdz8/r7+fk9\ncIGiBylevPh92+zs7Lhz507m8+HDh/PJJ58QGRlJvXr1cHZ25pdffiE4ODjLfo+ibNmyvPzyy5lz\naH744YcMHjyY9957j6lTp2bO7VmmTJksx92b6/Pe67nhQVnu5flrlr++p3Z2dgCP/V6J8dTZKXme\nyWTit99+MzqG5HOjRo3i/Pnz1KpVi2eeeQYnJycWL17M5MmTqVu3bpZC540bN3L1m0cRERERyXlO\nTk6MHj2ahIQESpYsSY0aNRg8eDCXLz/enI6S99UpVwcbS5vHOtba0pqnyz2dzYlyR1RUFL1792b0\n6NEEBgby9NNPZ+lczA6DBg3C2dmZY8eOAf+/YHjx4sUs+917/ndF2nvs7e0z11O4x2Qycf369cfK\n9qAs97b9UxYpGFTslDzPwsIicx4QkcdlY2PDxx9/THx8PCNGjGDOnDm0a9fuvj90GzduZMiQIXTs\n2JHY2FiD0oqIiIhITilWrBhTpkzh2LFjmEwmfHx8GDNmzGOtVC15W33X+pQsVPKxji3lVIr6rvWz\nOVHuuH37NjY2WYu8CxYseKxzXbp06W9XpT937hxJSUmZ3ZPPPPMM8Eeh9c/uzZl57/W/4+7uzo8/\n/khaWlrmtq1bt963kNC9jsvbt2//Y+aqVavi4uJyX5bt27eTmJhI06ZN//F4yf9U7JR8wcLCwugI\nUgB069aNqlWrkpCQgLu7O0DmH+6LFy8yceJE3nzzTa5evYqfnx89evQwMq6IiIiI5KBSpUrx4Ycf\ncuDAAS5cuEDlypWZOnXqP642LfmLhYUFwxsOx9HG8ZGOc7RxZHiD4fn2/6GtWrVi/vz5fPLJJ8TE\nxNC3b1++//77xzrXggUL8PHxYeLEiWzYsIFt27bx6aefEhgYiL29feZCP9WrVyc4OJixY8cyadIk\nNm/eTGRkJJMnT+all176x8WJQkNDuXz5Mr179+abb75hzpw5DBw4EGdn5yz73TvH9OnT2bNnD/v3\n7//b81lbWzNhwgQ2btxIz5492bhxI3PnziU4OBhvb2969uz5WO+F5B8qdoqIWZk/fz6HDx8mMTER\n+P+F9IyMDNLT00lISGDKlCls374dJycnIiMjDUwrIiIiIjnN3d2defPmERcXR3x8PJ6ensycOZO7\nd+8aHU2yQZ+APtQsUxM7K7uH2t/Oyo5aZWrRO6B3DifLOR9//DFt27Zl1KhRhISEcOfOnSyrkj+K\noKAgWrduzYoVK+jWrRstWrQgMjKSGjVqsGvXLqpXr5657+eff05ERARz586lTZs2LFy4kFGjRv3r\nwkstWrRg9uzZ7Nq1i6CgID777DOWLFly3wjP9u3b079/fz766CPq169P3bp1H3jOAQMGsHDhQuLj\n42nfvj0jR47kueeeY9u2bTg6PlrxW/IfC9Pf9SOLiBRgP//8MyVLliQ+Pp4mTZpkbr9y5QohISE0\naNCAyZMns3btWjp27Mjly5cpVqyYgYlFREREJLfEx8czduxYjh49yvjx43nppZewttbavkY6fvw4\nPj4+j318UkoSbZa0Yf+F/dxKvfXA/RxtHKlVphZfd/saJ1unx76eSH7wpL9XeZk6O0XE7Hh4eDB4\n8GDmz59PWlpa5lD2p556in79+rFp0yauXLlCUFAQ4eHhDxweISIiIiIFT0BAAOvWrWPJkiUsXLgQ\nPz8/li9fTkZGhtHR5DE52ToR2yOW91u+j0dRDwrZFMLOyg4LLLCzsqOQTSE8innwfsv3ie0Rq0Kn\nSD6nzk7JE+79GObXOVEk//nkk0+YOXMmBw4cwN7envT0dKysrPjoo49YvHgxO3fuxMHBAZPJpJ9L\nERERETNlMpnYvHkzo0ePJiMjgylTptC6dWt9Psxl2dmBZjKZ2H1uN3sT93Iz5SbOts7UKVeHeq71\n9O8qZqUgd3aq2Cl50r0CkwpNkpM8PT3p0aMHAwcOpHjx4iQmJhIUFETx4sXZuHGjhiuJiIiICPDH\n/09WrlzJ2LFjKV68OFOmTMkyHZLkrIJclBExSkH+vdIwdjHc22+/zYgRI7Jsu1fgVKFTctLChQv5\n8ssvadu2LZ07d6ZBgwbY2dkxe/bsLIXO9PR0du7cSUJCgoFpRURERMQoFhYWdOzYkcOHD9OvXz/C\nwsJo3bq1pjsSEcmDVOwUw82aNQtPT8/M5+vXr+eTTz7hgw8+YOvWraSlpRmYTgqyRo0aMXfuXOrX\nr8+VK1fo1asX77//Pl5eXvy56f3UqVMsWbKEkSNHkpKSYmBiERERETGSlZUVL730EidOnKB9+/a0\na9eOTp06cezYMaOjiYjI/2gYuxhq9+7dNG/enGvXrmFtbU1ERASLFy/GwcEBFxcXrK2tGT9+PO3a\ntTM6qpiBjIwMLC3//jugbdu2MXToUGrXrs2nn36ay8lEREREJC+6desWs2fPZtq0abRp04bx48dT\nsWJFo2MVOMePH8fb21sj/0Syiclk4sSJExrGLpITpk2bRmhoKPb29kRHR7N161Zmz55NYmIiS5Ys\noXLlynTr1o2LFy8aHVUKsHsra94rdP71O6D09HQuXrzIqVOnWLt2Lb///nuuZxQRERGRvMfR0ZFh\nw4bx008/4e7uTu3atXnttde4cOGC0dEKFBsbG27fvm10DJEC4/bt29jY2BgdI8eo2CmG2rVrF4cO\nHWLNmjXMnDmTHj160KVLFwD8/PyYOnUqFStW5MCBAwYnlYLsXpHz0qVLQNa5Yvfv309QUBDdunUj\nJCSEffv2UbhwYUNyioiIiEjeVKRIESZMmMCJEydwcHDAz8+PESNGcPXqVaOjFQglS5YkMTGRW7du\n3deYICIPz2QycevWLRITEylZsqTRcXKMlhoWwyQlJTF06FAOHjzI8OHDuXr1KjVq1Mh8PT09ndKl\nS2Npaal5OyXHnT59mjfeeIOpU6dSuXJlEhMTef/995k9eza1atUiLi6O+vXrGx1TRERERPKwp556\niunTpzN48GAmT55MlSpVGDRoEIMHD8bZ2dnoePnWvWaD8+fPk5qaanAakfzNxsaGUqVKFegmHs3Z\nKYY5duwYVatW5dy5c+zdu5fTp0/TokUL/Pz8MvfZsWMHbdq0ISkpycCkYi7q1KmDi4sLnTp1IjIy\nktTUVCZPnkyfPn2MjiYiIiIi+dDJkyeJjIxk8+bNjBgxgldffRUHBwejY4mIFGgqdoohzp49y9NP\nP83MmTMJDg4GyPyG7t68EQcPHiQyMpKiRYuycOFCo6KKGTl58iReXl4ADB06lDFjxlC0aFGDU4mI\niIhIfnf06FHGjh3Lvn37GDt2LL169SrQ8+WJiBhJc3aKIaZNm8bly5cJCwtj8uTJ3Lx5Exsbmywr\nYZ84cQILCwtGjRplYFIxJ56enowePRo3NzfeeustFTpFREREJFv4+fmxcuVKvvzyS5YvX46Pjw9f\nfPFF5kKZIiKSfdTZKYZwdnZmzZo17Nu3j5kzZzJy5EgGDBhw334ZGRlZCqAiucHa2pr//Oc/vPzy\ny0ZHEREREZECaMuWLbz55pskJyczefJkgoKCsiySKSIij09VJMl1K1asoFChQjRr1ow+ffrQuXNn\nwsPD6d+/P5cvXwYgLS2N9PR0FTrFENu2baNixYpa6VFEREREckRgYCC7du3irbfeYuzYsdSvX58t\nW7YYHUtEpEBQZ6fkukaNGtGoUSOmTp2auW3OnDm8/fbbBAcHM23aNAPTiYiIiIiI5J6MjAyWLVvG\n2LFjcXNzY8qUKdSrV8/oWCIi+ZaKnZKrfv/9d4oVK8ZPP/2Eh4cH6enpWFlZkZaWxqeffkpERATN\nmzdn5syZVKhQwei4IiIiIiIiuSI1NZVFixYxYcIEatasyaRJk/D39zc6lohIvqMxwpKrChcuzJUr\nV/Dw8ADAysoK+GOOxAEDBrB48WJ++OEHBg0axK1bt4yMKpKFyWQiPT3d6BgiIiIiUkDZ2Njw8ssv\n89NPP9GsWTNatmxJt27dOHnypNHRRETyFRU7JdcVL178ga916tSJ9957jytXruDo6JiLqUT+WXJy\nMuXLl+f8+fNGRxERERGRAsze3p7Bgwdz8uRJqlatSr169di2bZvmkxcReUgaxi550vXr1ylWrJjR\nMUSyGD16NGfOnOHzzz83OoqIiIiImIlr167h5OSEra2t0VFERPIFFTvFMCaTCQsLC6NjiDy0pKQk\nfHx8WLp0KY0aNTI6joiIiIiIiIj8hYaxi2FOnz5NWlqa0TFEHpqTkxPTpk0jPDxc83eKiIiIiIiI\n5EEqdophunTpwsaNG42OIfJIQkJCKFKkCJ9++qnRUURERERERETkLzSMXQzxww8/0LJlS3755Res\nra2NjiPySA4fPsyzzz7L8ePHKVGihNFxREREREREROR/1Nkphpg/fz49e/ZUoVPyJX9/f0JCQhgz\nZozRUURERERERETkT9TZKbkuJSUFV1dXdu3ahaenp9FxRB7L9evX8fHxYcOGDQQEBBgdR0RERERE\nRERQZ6cYYO3atfj4+KjQKflasWLFmDRpEuHh4eg7IxEREREREZG8QcVOyXXz58+nT58+RscQeWK9\ne/fmzp07LFmyxOgoIiIiIiIiIoKGsUsuS0xMpFq1apw7dw5HR0ej44g8se+++44XX3yREydO4Ozs\nbHQcEREREREREbOmzk7JVQsXLiQ4OFiFTikw6tWrR4sWLZg0aZLRUURERERERETMnjo7JddkZGRQ\nuXJlli5dSp06dYyOI5JtLl68iJ+fH99++y1VqlQxOo6IiIiImLH09HTS0tKws7MzOoqIiCHU2Sm5\nZseOHTg6OvL0008bHUUkW5UuXZrRo0czaNAgLVYkIiIiIoZr06YNO3bsMDqGiIghVOyUXDNv3jz6\n9OmDhYWF0VFEsl14eDhnzpxhzZo1RkcRERERETNmZWVFjx49GDNmjL6IFxGzpGHskitu3LhBhQoV\nOHnyJC4uLkbHEckR33zzDf369eOHH37AwcHB6DgiIiIiYqbS0tLw9fVl1qxZtGjRwug4IiK5Sp2d\n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\ndWw2m2w2m9zd3U1HAYC7UOzM4Gw2m5YuXfpY55g9e7a8vb3tlCjlXL16Vf7+/nrvvfd08eJF03EA\nGFSgQAGNHz/e4ddx9P3y1VdfZeV2wE5atWql0qVLa8iQIaajAECqxUgSAKkRxc506s4nbfd7dOjQ\nQZIUGRmphg0bPta1WrZsqWPHjtkhdcr67LPPtHv3bkVFRalYsWJ69913df78edOxANhZhw4dku59\nLi4uevLJJ/XWW2/pjz/+SNpn27Zt6tGjh8OzpMT90tXVVd27d9fhw4fl7++vgIAAvfvuu7py5YpD\nrwukNzabTZ988omWLFmidevWmY4DAACAB0SxM52KjIxMekybNu2ubR999JEkKXfu3I899MDT01M5\nc+Z87MyPIy4u7pGOy58/v6ZMmaK9e/fq9u3bKlGihPr27atz587ZOSEAk2rWrKnIyEidOHFC06dP\nV3h4eLLipp+fnzJlyuTwHCl5v/T29tbw4cO1f/9+RUdHq1ixYnr//fcZkgs8hOzZs2vatGnq0KGD\n/vzzT9NxAAAA8AAodqZTuXPnTnpkyZLlrm2ZM2eWlHwY+4kTJ2Sz2bRw4UJVrVpVnp6eKlu2rPbs\n2aN9+/apSpUq8vLy0gsvvJBsWOT/Dss8ffq0GjdurGzZsilTpkwqVqyYFi5cmPT63r17VbNmTXl6\neipbtmx3/QGxbds21a5dWzly5JCvr69eeOEF/frrr8nen81m05QpU9S0aVN5eXlpyJAhSkhIUOfO\nnVWwYEF5enqqSJEiev/995WYmPivP687c3Pt379fTk5OKlmypHr27KkzZ848wk8fQGrj7u6u3Llz\nK1++fKpdu7ZatmypH374Ien1/x3GbrPZ9Omnn6px48bKlCmT/P39tW7dOp05c0Z16tSRl5eXypQp\nk2xezDv3wrVr16pkyZLy8vJStWrV/vF+KUkrVqxQxYoV5enpqezZs6thw4aKiYm5Zy5Jevnll9Wz\nZ88Hfu+5c+fWp59+qg0bNmjz5s0qWrSo5syZw8rtwAOqV6+e6tevrz59+piOAgBGsKYxgLSGYifu\nMnz4cA0cOFA7d+5UlixZ9Prrr6tXr14KCwvT1q1bFRMTo969e9/3+B49eig6Olrr1q3T/v379eGH\nHyYVXKOiolSnTh15e3tr69atWr58uTZt2qROnTolHX/jxg21bdtWv/zyi7Zu3aoyZcqofv36dw3B\nDAkJUf369bV37169/fbbSkxMVN68ebV48WJFREQoLCxMo0aN0qxZsx74vefJk0cTJkxQRESEPD09\nVbp0ab311ls6efLkQ/4UAaRWx44d06pVq+Tq6vqP+4WGhqpVq1bavXu3AgIC1KpVK3Xu3Fk9evTQ\nzp079cQTTyRNCXJHbGysRo8erZkzZ+rXX3/VtWvX1L179/teY9WqVWrUqJFq1aql3377TevWrVPV\nqlUf6EOah1W0aFEtW7ZMCxYs0Oeff65y5cpp9erV/AEDPIBx48Zpw4YNWr58uekoAJAi/v77wZ15\nOR3x+wkAOISFdG/JkiXW/f6nlmQtWbLEsizLOn78uCXJ+uyzz5JeDw8PtyRZX331VdK2WbNmWV5e\nXvd9XqpUKSs4OPie15s6darl6+trXb9+PWnbunXrLEnW4cOH73lMYmKilTt3bmvu3LnJcvfs2fOf\n3rZlWZY1cOBAq0aNGv+63/1cvHjRGjRokJUtWzarS5cu1rFjxx75XADMaN++veXs7Gx5eXlZHh4e\nliRLkjVhwoSkfZ566ilr3LhxSc8lWYMGDUp6vnfvXkuS9cEHHyRtu3PvunTpkmVZf90LJVkHDx5M\n2mfevHmWm5ublZiYmLTP3++XVapUsVq2bHnf7P+by7Isq2rVqtbbb7/9sD+GZBITE61ly5ZZ/v7+\nVo0aNazffvvtsc4HZAQbN260cuXKZZ0/f950FABwuJiYGOuXX36x3nzzTWvo0KFWdHS06UgA8MDo\n7MRdSpcunfR9rly5JEmlSpVKti0qKkrR0dH3PL5Pnz4KDQ1V5cqVNXToUP32229Jr0VERKh06dLy\n8fFJ2lalShU5OTnpwIEDkqSLFy+qW7du8vf3V+bMmeXj46OLFy/q1KlTya4TEBBw17U/++wzBQQE\nyM/PT97e3po4ceJdxz0MPz8/jR49WocOHVLOnDkVEBCgzp076+jRo498TgAp76WXXtKuXbu0detW\n9erVS/Xr1//HDnXpwe6F0l/3rDvc3d1VtGjRpOdPPPGE4uLiki2G9Hc7d+5UjRo1Hv4NPSabzXbX\nyu1t2rTRiRMnUjwLkFZUqVJFnTp1UpcuXeiIBpDuhYWFqUePHtq7d6/mz5+vokWLJvu7DgBSM4qd\nuMvfh3beGbJwr233G8bQuXNnHT9+XB07dtShQ4dUpUoVBQcH/+t175y3ffv22rZtmyZOnKhNmzZp\n165dypcv312LEHl5eSV7vmjRIvXt21cdOnTQ6tWrtWvXLvXo0eORFy/6u+zZsys0NFRHjhxR/vz5\nVbFiRbVv316HDh167HMDcLxMmTKpcOHCKlWqlD7++GNFR0dr5MiR/3jMo9wLXVxckp3jcYd9OTk5\n3VVUiY+Pf6Rz3cudldsPHTqkwoUL67nnntO7776rq1ev2u0aQHoSHBysU6dOPdQUOQCQ1kRGRmrC\nhAmaOHGiVq9erU2bNil//vxasGCBJOn27duSmMsTQOpFsRMOkS9fPnXt2lWLFy/WiBEjNHXqVElS\n8eLFtXfvXt24cSNp302bNikxMVHFixeXJG3YsEG9evVSgwYN9Mwzz8jHx0eRkZH/es0NGzaoYsWK\n6tmzp8qVK6fChQvbvQMza9asCg4O1pEjR1S4cGE9//zzatOmjSIiIux6HQCONXz4cI0dO1bnzp0z\nmqNs2bJau3btfV/38/NLdv+LiYnRwYMH7Z7Dx8dHwcHBSSu3Fy1aVOPGjUtaKAnAX9zc3DR37lwN\nHDgw2eJjAJCeTJw4UTVq1FCNGjWUOXNm5cqVSwMGDNDSpUt148aNpA93P//8c+3Zs8dwWgC4G8VO\n2F2fPn20atUqHTt2TLt27dKqVatUokQJSdIbb7yhTJkyqV27dtq7d69+/vlndevWTU2bNlXhwoUl\nSf7+/po3b54OHDigbdu2qVWrVnJzc/vX6/r7+2vHjh1auXKlDh8+rJEjR+qnn35yyHvMkiWLgoKC\ndPToUT3zzDOqWrWqWrVqpX379jnkevg/9u48rOa8fwP4fU6bEtGQyhLSymSJTMPYZRk7I8uUEMma\nVMquxJRQjLGNNcbMGEs8gwwSSsKQFi0iDOYxSKlEy/n9Mb/OwwzGUH3O6dyv6+qP6ZxT93kuT3Xu\n8/5+3kTlq0uXLrC2tsaSJUuE5pg7dy727NmDefPmISUlBcnJyVi1apX8mJBu3bph165dOHXqFJKT\nkzFu3Dj5NEVFeHlz+7lz52BhYYEdO3ZwczvRSz7++GP4+PjAxcWFyzqIqMp58eIFfvvtN5iZmcl/\nxpWUlKBr167Q1NTEgQMHAADp6emYPHnyK8eTEREpCpadVO5KS0sxbdo0WFtbo2fPnqhXrx62b98O\n4M9LSSMjI5Gbmws7OzsMHDgQ9vb22LJli/zxW7ZsQV5eHmxtbTFixAiMGzcOjRs3/sfv6+bmhuHD\nh2PUqFFo164dsrKyMGvWrIp6mgCAmjVrws/PD5mZmWjTpg26d++OL7744l+9w1lSUoLExETk5ORU\nYFIi+qtZs2Zh8+bNuHXrlrAMffv2xf79+3HkyBG0bt0anTt3RlRUFKTSP389+/n5oVu3bhg4cCAc\nHBzQsWNHtG7dusJzlW1u/+6777B+/XrY2tpyczvRSzw9PSGTybBq1SrRUYiIypWmpiZGjhyJZs2a\nyf8eUVNTg56eHjp27IiDBw8C+PMN2wEDBqBJkyYi4xIRvZZExlcuROUmPz8f69evR0hICOzt7TF/\n/vx/LCYSExOxfPlyXLlyBe3bt0dQUBD09fUrKTER0dvJZDLs378ffn5+aNSoEYKDgyulcCVSdDdu\n3ED79u0RFRWFFi1aiI5DRFRuys4H19DQgEwmk59BHhUVBTc3N+zZswe2trZIS0uDqampyKhERK/F\nyU6iclS9enXMmjULmZmZ6NSpEwYPHvyPl7g1aNAAI0aMwNSpU7F582aEhobynDwiUhgSiQRDhgxB\nUlIShgwZgr59+3JzOxGApk2bYtmyZXByciqXZYhERKI9efIEwJ8l51+LzhcvXsDe3h76+vqws7PD\nkCFDWHQSkcJi2UlUAXR0dODh4YHr16/L/0B4k9q1a6Nv37549OgRTE1N0bt3b1SrVk1+e3luXiYi\nel8aGhpwd3d/ZXO7l5cXN7eTShs/fjwaNGgAf39/0VGIiD7I48ePMWnSJOzYsUP+hubLr2M0NTVR\nrVo1WFtbo6ioCMuXLxeUlIjon6ktWrRokegQRFWVVCp9a9n58rulw4cPh6OjI4YPHy5fyHT79m1s\n3boVJ06cgImJCWrVqlUpuYmI3kRLSwtdunTBmDFj8Msvv2Dy5MmQSCSwtbWVb2clUhUSiQTdunXD\nxIkT0bFjRzRo0EB0JCKi9/LNN98gNDQUWVlZuHjxIoqKilC7dm3o6elhw4YNaN26NaRSKezt7dGp\nUyfY2dmJjkxE9Eac7CQSqGzD8fLly6GmpobBgwdDV1dXfvvjx4/x4MEDnDt3Dk2bNsXKlSu5+ZWI\nFELZ5vYzZ84gNjaWm9tJZRkaGmLt2rVwcnJCfn6+6DhERO/l008/ha2tLcaOHYvs7GzMnj0b8+bN\nw7hx4+Dj44OCggIAgIGBAfr16yc4LRHR27HsJBKobAoqNDQUjo6Of1tw0KpVKwQGBqJsALtmzZqV\nHZGI6K0sLS2xf//+Vza3Hzt2THQsoko1dOhQ2Nvbw8fHR3QUIqL3Ym9vDW6M4AAAIABJREFUj08+\n+QTPnj3D8ePHERYWhtu3b2Pnzp1o2rQpjhw5gszMTNExiYjeCctOIkHKJjRXrVoFmUyGIUOGoEaN\nGq/cp6SkBOrq6ti0aRNsbGwwcOBASKWv/t/22bNnlZaZiOhNOnTogJiYGCxYsADTpk1Dz549cfny\nZdGxiCrN6tWrcejQIURGRoqOQkT0XmbOnImjR4/izp07GDp0KMaMGYMaNWpAR0cHM2fOxKxZs+QT\nnkREioxlJ1Elk8lkOH78OM6fPw/gz6nO4cOHw8bGRn57GTU1Ndy+fRvbt2/H9OnTUbdu3Vfuc/Pm\nTQQGBsLHxwdJSUmV/EyI6J8EBwdj1qxZomNUmtdtbndycsKtW7dERyOqcLVq1cLWrVsxfvx4Lu4i\nIqVTUlKCpk2bwtjYWH5V2Zw5c7B06VLExMRg5cqV+OSTT6CjoyM2KBHRO2DZSVTJZDIZTpw4gQ4d\nOsDU1BS5ubkYOnSofKqzbGFR2eRnYGAgzM3NXzkbp+w+jx8/hkQiwbVr12BjY4PAwMBKfjZE9DZm\nZmbIyMgQHaPSvby53dTUFG3atOHmdlIJ3bt3x9ChQzF16lTRUYiI3plMJoOamhoAYP78+fj9998x\nYcIEyGQyDB48GADg6OgIX19fkTGJiN4Zy06iSiaVSrFs2TKkp6ejS5cuyMnJgZ+fHy5fvvzK8iGp\nVIq7d+9i27ZtmDFjBgwMDP72tWxtbbFgwQLMmDEDANC8efNKex5E9M9UtewsU6NGDSxatAhJSUnI\ny8uDhYUFli9fjsLCQtHRiCrMsmXL8Ouvv+KHH34QHYWI6K3KjsN6edjCwsICn3zyCbZt24Y5c+bI\nX4NwSSoRKROJ7OVrZomo0mVlZcHHxwfVq1fHpk2bUFBQAG1tbWhoaGDy5MmIiopCVFQUDA0NX3mc\nTCaT/2Hy5ZdfIi0tDRcuXBDxFIjoDZ49e4batWsjLy9PvpBMlaWmpsLPzw+//vorlixZgtGjR//t\nHGKiquDChQvo168fLl++DGNjY9FxiIj+JicnB0uXLkWfPn3QunVr6OnpyW+7d+8ejh8/jkGDBqFm\nzZqvvO4gIlIGLDuJFERhYSG0tLQwe/ZsxMbGYtq0aXB1dcXKlSsxYcKENz7u0qVLsLe3xw8//CC/\nzISIFIeJiQmioqLQtGlT0VEURkxMDLy9vVFQUIDg4GA4ODiIjkRU7rZv344RI0ZAU1OTJQERKRx3\nd3ds2LABjRo1Qv/+/eU7BF4uPQHg+fPn0NLSEpSSiOj9cJyCSEFUq1YNEokEXl5eqFu3Lr788kvk\n5+dDW1sbJSUlr31MaWkpwsLC0Lx5cxadRApK1S9lf52XN7dPnToVDg4O3NxOVY6zszOLTiJSSE+f\nPkVcXBzWr1+PWbNmISIiAl988QXmzZuH6OhoZGdnAwCSkpIwceJE5OfnC05MRPTvsOwkUjAGBgbY\nv38/fv/9d0ycOBHOzs6YOXMmcnJy/nbfq1ev4ocffsDcuXMFJCWid8Gy8/XKNrcnJydj0KBB3NxO\nVY5EImHRSUQK6c6dO2jTpg0MDQ0xbdo03L59G/Pnz8fBgwcxfPhwLFiwAKdPn8aMGTOQnZ2N6tWr\ni45MRPSv8DJ2IgX38OFDxMfHo1evXlBTU8O9e/dgYGAAdXV1jB07FpcuXUJCQgJfUBEpqJUrV+LW\nrVsICwsTHUWhPX36FCEhIfj6668xduxYzJkzB/r6+qJjEVWYFy9eICwsDE2bNsXQoUNFxyEiFVJa\nWoqMjAzUq1cPtWrVeuW2tWvXIiQkBE+ePEFOTg7S0tJgZmYmKCkR0fvhZCeRgqtTpw769u0LNTU1\n5OTkYNGiRbCzs8OKFSvw008/YcGCBSw6iRQYJzvfTY0aNbB48eJXNreHhIS88+Z2vndLyubOnTvI\nyMjA/Pnz8fPPP4uOQ0QqRCqVwsLC4pWis7i4GAAwZcoU3Lx5EwYGBnBycmLRSURKiWUnkRLR09PD\nypUr0aZNGyxYsAD5+fkoKirCs2fP3vgYFgBEYrHs/HeMjIywfv16nDlzBjExMbCwsMDhw4f/8WdZ\nUVERsrOzER8fX0lJid6fTCaDqakpwsLC4OLiggkTJuD58+eiYxGRClNXVwfw59Tn+fPnkZGRgTlz\n5ghORUT0fngZO5GSKigowKJFixASEoLp06djyZIl0NXVfeU+MpkMhw4dwt27dzFu3DhuUiQS4MWL\nF6hRowby8vKgoaEhOo7SOXv2LMzMzGBgYPDWKXZXV1fExcVBQ0MD2dnZWLhwIcaOHVuJSYn+mUwm\nQ0lJCdTU1CCRSOQl/meffYZhw4bBw8NDcEIiIuDEiRM4fvw4li1bJjoKEdF74WQnkZLS0dFBcHAw\n8vPzMWrUKGhra//tPhKJBEZGRvjPf/4DU1NTrFmz5p0vCSWi8qGpqYn69evj5s2boqMopY4dO/5j\n0fnNN99g9+7dmDx5Mn788UcsWLAAgYGBOHLkCABOuJNYpaWluHfvHkpKSiCRSKCuri7/91y2xKig\noAA1atQQnJSIVI1MJnvt78hu3bohMDBQQCIiovLBspNIyWlra8POzg5qamqvvb1du3b4+eefceDA\nARw/fhympqYIDQ1FQUFBJSclUl3m5ua8lP0D/NO5xOvXr4erqysmT54MMzMzjBs3Dg4ODti0aRNk\nMhkkEgnS0tIqKS3R/xQVFaFBgwZo2LAhunfvjn79+mHhwoWIiIjAhQsXkJmZicWLF+PKlSswNjYW\nHZeIVMyMGTOQl5f3t89LJBJIpawKiEh58ScYkYpo27YtIiIi8J///AenT5+GqakpQkJCkJ+fLzoa\nUZXHczsrzosXL2Bqair/WVY2oSKTyeQTdImJibCyskK/fv1w584dkXFJxWhoaMDT0xMymQzTpk1D\n8+bNcfr0afj7+6Nfv36ws7PDpk2bsGbNGvTp00d0XCJSIdHR0Th8+PBrrw4jIlJ2LDuJVEzr1q2x\nb98+REZG4vz582jatCmCgoJe+64uEZUPlp0VR1NTE507d8ZPP/2EvXv3QiKR4Oeff0ZMTAz09PRQ\nUlKCjz/+GJmZmahZsyZMTEwwfvz4ty52IypPXl5eaNGiBU6cOIGgoCCcPHkSly5dQlpaGo4fP47M\nzEy4ubnJ73/37l3cvXtXYGIiUgWLFy/GvHnz5IuJiIiqEpadRCrKxsYGe/bswYkTJ3DlyhU0bdoU\nS5cuRW5uruhoRFUOy86KUTbF6eHhga+++gpubm5o3749ZsyYgaSkJHTr1g1qamooLi5GkyZN8N13\n3+HixYvIyMhArVq1EB4eLvgZkKo4ePAgNm/ejIiICEgkEpSUlKBWrVpo3bo1tLS05GXDw4cPsX37\ndvj6+rLwJKIKEx0djdu3b+PLL78UHYWIqEKw7CRScS1atMDu3bsRHR2NlJQUmJqaIiAgAE+ePBEd\njajKYNlZ/oqLi3HixAncv38fADBp0iQ8fPgQ7u7uaNGiBezt7TFy5EgAkBeeAGBkZITu3bujqKgI\niYmJeP78ubDnQKqjcePGWLp0KVxcXJCXl/fGc7br1KmDdu3aoaCgAI6OjpWckohUxeLFizF37lxO\ndRJRlcWyk4gAAFZWVti5cydiYmKQmZmJZs2aYeHChXj8+LHoaERKr3Hjxrh//z4KCwtFR6kyHj16\nhN27d8Pf3x+5ubnIyclBSUkJ9u/fjzt37mD27NkA/jzTs2wDdnZ2NoYMGYItW7Zgy5YtCA4OhpaW\nluBnQqpi1qxZmDlzJlJTU197e0lJCQCgZ8+eqFGjBmJjY3H8+PHKjEhEKuD06dO4desWpzqJqEpj\n2UlErzA3N8e2bdsQFxeH3377DWZmZpg3bx4ePXokOhqR0lJXV0ejRo1w48YN0VGqjHr16sHd3R0x\nMTGwtrbGoEGDYGxsjJs3b2LBggUYMGAAAMinViIiItC7d288fvwYGzZsgIuLi8D0pKrmzZuHtm3b\nvvK5suMY1NTUcOXKFbRu3RpHjx7F+vXr0aZNGxExiagKKzurU0NDQ3QUIqIKw7KTiF6rWbNm2Lx5\nMy5evIgHDx7AzMwMvr6++OOPP0RHI1JK5ubmvJS9nLVt2xZXr17Fhg0bMHjwYOzcuROnTp3CwIED\n5fcpLi7GoUOHMGHCBOjq6uLnn39G7969AfyvZCKqLFLpn396Z2Rk4MGDBwAAiUQCAAgKCoKdnR0M\nDQ1x9OhRuLq6Ql9fX1hWIqp6Tp8+jaysLE51ElGVx7KTiN6qSZMm2LhxIy5fvoycnBxYWFjA29sb\n//3vf0VHI1IqPLez4nz++eeYPn06evbsiVq1ar1ym7+/P8aPH4/PP/8cW7ZsQbNmzVBaWgrgfyUT\nUWU7cuQIhgwZAgDIyspCp06dEBAQgMDAQOzatQutWrWSF6Nl/16JiD5U2VmdnOokoqqOZScRvRMT\nExOsW7cOCQkJKCwshJWVFTw9PeXLQYjo7Vh2Vo6ygujOnTsYNmwYwsLC4OzsjK1bt8LExOSV+xCJ\nMnnyZFy5cgU9e/ZEq1atUFJSgmPHjsHT0/Nv05xl/16fPXsmIioRVRFnzpzBzZs34eTkJDoKEVGF\n41/7RPSvNGzYEGvWrEFSUhJKS0vRvHlzTJ8+HXfv3hUdjUihseysXAYGBjA0NMS3336LZcuWAfjf\nApi/4uXsVNnU1dVx6NAhnDhxAv3790dERAQ+/fTT125pz8vLw7p16xAWFiYgKRFVFTyrk4hUCctO\nInovxsbGCA0NRUpKCjQ1NfHxxx9jypQpuH37tuhoRAqJZWfl0tLSwtdffw1HR0f5C7vXFUkymQy7\ndu1Cr169cOXKlcqOSSqsa9eumDhxIs6cOSNfpPU6urq60NLSwqFDhzB9+vRKTEhEVcXZs2dx48YN\nTnUSkcpg2UlEH8TQ0BAhISFITU2Frq4uWrVqBTc3N2RlZYmORqRQGjZsiIcPH6KgoEB0FHqJRCKB\no6MjBgwYgD59+sDZ2Rm3bt0SHYtUxPr161G/fn2cOnXqrfcbOXIk+vfvj6+//vof70tE9Fc8q5OI\nVA3LTiIqFwYGBggKCkJ6ejo++ugj2NrawtXVFTdu3BAdjUghqKmpoUmTJrh+/broKPQXGhoamDJl\nCtLT09G4cWO0adMG3t7eyM7OFh2NVMCBAwfw6aefvvH2nJwchIWFITAwED179oSpqWklpiMiZXf2\n7Flcv34dzs7OoqMQEVUalp1EVK7q1KmDpUuXIiMjA8bGxrCzs8PYsWN5+S4ReCm7oqtRowb8/f2R\nlJSE3NxcWFhYYMWKFSgsLBQdjaqwunXrwsDAAAUFBX/7t5aQkIBBgwbB398fS5YsQWRkJBo2bCgo\nKREpI57VSUSqiGUnEVUIfX19+Pv7IyMjA40bN4a9vT2cnZ2RlpYmOhqRMObm5iw7lYCRkRE2bNiA\n6OhonDlzBpaWlti5cydKS0tFR6MqLDw8HEuWLIFMJkNhYSG+/vprdOrUCc+fP0d8fDxmzJghOiIR\nKZmYmBhOdRKRSmLZSUQVqnbt2li4cCEyMzNhYWGBzz77DKNGjUJKSoroaESVjpOdysXKygoHDhxA\neHg4vv76a7Rt2xbHjx8XHYuqqK5du2Lp0qUICQnB6NGjMXPmTHh6euLMmTNo0aKF6HhEpIR4VicR\nqSqWnURUKfT09DB37lxkZmbCxsYGXbt2haOjIxITE0VHI6o0LDuV02effYZz585hzpw5cHd3R69e\nvZCQkCA6FlUx5ubmCAkJwezZs5GSkoKzZ89i4cKFUFNTEx2NiJRQTEwMMjIyONVJRCqJZScRVaoa\nNWrA19cXmZmZaNu2LXr27ImhQ4eyOCCVwLJTeUkkEgwbNgwpKSkYMGAAevXqhTFjxuD27duio1EV\n4unpiR49eqBRo0Zo37696DhEpMTKpjo1NTVFRyEiqnQsO4lICF1dXXh7eyMzMxMdOnRA7969MWjQ\nIPz666+ioxFVGGNjY+Tm5uLp06eio9B7enlzu4mJCVq3bg0fHx9ubqdys3XrVpw4cQKHDx8WHYWI\nlFRsbCzS09M51UlEKotlJxEJVb16dXh6euLGjRvo1q0b+vfvj/79+yM+Pl50NKJyJ5VKYWpqyunO\nKqBmzZrw9/dHYmIinjx5ws3tVG7q16+Pc+fOoVGjRqKjEJGS4lQnEak6lp1EpBC0tbUxffp0ZGZm\nonfv3hg6dCj69OmDc+fOiY5GVK54KXvVYmxsjI0bN+LUqVM4ffo0LC0tsWvXLm5upw/Srl27vy0l\nkslk8g8iojeJjY1FWloaxowZIzoKEZEwLDuJSKFUq1YNU6ZMwfXr1zFo0CCMHDkSDg4OOHv2rOho\nROXC3NycZWcVZG1tjYiICISHh2PNmjXc3E4VYv78+diyZYvoGESkwBYvXow5c+ZwqpOIVBrLTiJS\nSFpaWnBzc0N6ejqGDx8OZ2dndOvWDdHR0aKjEX0QTnZWbX/d3N67d28uYKNyIZFIMGLECPj6+uLG\njRui4xCRAjp37hxSU1Ph4uIiOgoRkVAsO4lIoWlqasLV1RVpaWlwcnLC+PHj0blzZ5w8eZKX8pFS\nYtlZ9b28ub1///7c3E7lpkWLFvD19YWLiwtKSkpExyEiBcOzOomI/sSyk4iUgoaGBsaOHYvU1FS4\nurrC3d0dn332GY4dO8bSk5QKy07V8fLm9kaNGnFzO5ULDw8PSCQSrFy5UnQUIlIg586dw7Vr1zjV\nSUQEQCJjS0BESqikpAQ//PADDh48iK1bt0JbW1t0JKJ3IpPJULNmTdy5cwe1atUSHYcq0b1797Bo\n0SIcOHAAvr6+mDJlCrS0tETHIiV08+ZN2NnZ4eTJk/j4449FxyEiBdC7d28MHjwYbm5uoqMQEQnH\nspOIlFrZxmOplIPqpDzatGmDDRs2oF27dqKjkAApKSnw8/PD1atXsWTJEowcOZI/w+hf27JlC1av\nXo34+Hheskqk4uLi4uDo6IiMjAz+PCAiAi9jJyIlJ5VKWRKQ0jEzM0N6erroGCRI2eb27du3Y/Xq\n1dzcTu9l7NixaNSoERYtWiQ6ChEJxg3sRESvYkNARERUyXhuJwFAp06dEBcXx83t9F4kEgk2bdqE\nLVu2IDY2VnQcIhLk/PnzSElJwdixY0VHISJSGCw7iYiIKpm5uTnLTgLAze30YerVq4d169bB2dkZ\neXl5ouMQkQCLFy+Gn58fpzqJiF7CspOIiKiScbKT/up1m9tnz56NJ0+eiI5GCm7w4MHo0KEDvL29\nRUchokp2/vx5JCUlcaqTiOgvWHYSERFVsrKykzsC6a9q1qyJgIAAJCYmIjs7G+bm5li5ciWeP38u\nOhopsNWrV+Pw4cM4cuSI6ChEVInKzurU0tISHYWISKGw7CQiIqpkH330EQDg0aNHgpOQojI2NsbG\njRtx6tQpnDp1CpaWlti1axdKS0tFRyMFpKenh61bt2LChAn8uUKkIuLj4znVSUT0Biw7iYiIKplE\nIuGl7PROrK2tcfDgwVc2t584cUJ0LFJA3bp1w7BhwzBlyhTRUYioEpSd1cmpTiKiv2PZSUREJICZ\nmRnS09NFxyAl8fLm9kmTJqFPnz64evWq6FikYJYtW4aEhATs3r1bdBQiqkDx8fFITEzEuHHjREch\nIlJILDuJiIgE4GQn/Vtlm9uTk5Px+eefw8HBAS4uLrhz547oaKQgtLW1ER4ejhkzZuDu3bui4xBR\nBeFUJxHR27HsJCIiEsDc3JxlJ70XTU1NTJ06Fenp6WjYsCFatWrFze0k17ZtW0ydOhXjxo3jEjSi\nKujChQu4evUqpzqJiN6CZScRqQS+4CNFw8lO+lDc3E5v4ufnh+zsbKxbt050FCIqZ5zqJCL6Zyw7\niajK27p1K4qKikTHIHpFWdnJIp4+1Os2t3/33Xfc3K7CNDQ0sGPHDixYsIBvqhBVIRcuXEBCQgLG\njx8vOgoRkUKTyPgqi4iqOGNjY8THx6NBgwaioxC9om7dukhMTIShoaHoKFSFnD59Gt7e3iguLkZw\ncDC6d+8uOhIJsmbNGuzatQtnz56Furq66DhE9IH69euHPn36YMqUKaKjEBEpNE52ElGVV7t2bWRn\nZ4uOQfQ3vJSdKkLZ5nZfX1+4ublxc7sKmzJlCnR1dREUFCQ6ChF9oIsXL+LKlSuc6iQiegcsO4mo\nymPZSYqKZSdVFIlEgi+++AIpKSnc3K7CpFIptm7dirCwMFy+fFl0HCL6AGVndVarVk10FCIihcey\nk4iqPJadpKjMzMyQnp4uOgZVYdzcTg0bNsTKlSvx5ZdforCwUHQcInoPFy9exOXLlznVSUT0jlh2\nElGVx7KTFJW5uTknO6lSvLy5/fHjxzA3N8eqVau4uV1FjB49GlZWVpg3b57oKET0Hvz9/eHr68up\nTiKid8QFRURERIJcvnwZY8aM4XmKVOlSUlLg6+uLxMREBAYGYsSIEZBK+R54Vfbw4UPY2Nhg9+7d\n6Ny5s+g4RPSOLl26hIEDB+L69essO4mI3hHLTiIiIkGePn0KQ0NDPH36lEUTCfHy5vbly5ejW7du\noiNRBfr5558xdepUJCQkoGbNmqLjENE7GDBgABwcHDB16lTRUYiIlAbLTiIiIoGMjIxw4cIFNGjQ\nQHQUUlEymQw//fQT/Pz8YGZmhqCgINjY2IiORRVk4sSJKCkpwebNm0VHIaJ/wKlOIqL3wzESIiIi\ngbiRnUR73eb2sWPHcnN7FbVixQpERUUhIiJCdBQi+gf+/v6YPXs2i04ion+JZScREZFALDtJUby8\nub1+/fpo1aoVfH19ubm9iqlRowa2b9+OSZMm4cGDB6LjENEb/Prrr7h48SImTJggOgoRkdJh2UlE\n9BaLFi1CixYtRMegKszMzAzp6emiYxDJ1axZE0uWLMHVq1fx6NEjWFhYcHN7FfPZZ5/B2dkZkyZN\nAk+0IlJMixcv5gZ2IqL3xLKTiBSWi4sL+vXrJzSDl5cXoqOjhWagqo2TnaSo6tevj02bNuHkyZOI\nioqClZUVdu/ejdLSUtHRqBz4+/sjIyMDO3bsEB2FiP6CU51ERB+GZScR0Vvo6urio48+Eh2DqjBz\nc3OWnaTQmjdvjoMHD2Lr1q1YtWoV7OzscPLkSdGx6ANpaWlh586d8PLywq1bt0THIaKX8KxOIqIP\nw7KTiJSSRCLBTz/99MrnGjdujJCQEPl/p6eno3PnzqhWrRosLCxw+PBh6OrqYtu2bfL7JCYmokeP\nHtDW1oa+vj5cXFyQk5Mjv52XsVNFMzU1xc2bN1FSUiI6CtFbde7cGefPn8fs2bMxceJE9O3bl0cw\nKLmWLVti1qxZGDt2LCd2iRTE5cuXceHCBU51EhF9AJadRFQllZaWYvDgwVBXV0dcXBy2bduGxYsX\nv3LmXH5+Pnr16gVdXV3Ex8dj//79iI2Nxbhx4wQmJ1Wjo6ODOnXqcPM1KYWXN7f36dMHqampLOqV\nnLe3N54/f47Vq1eLjkJE+POsztmzZ0NbW1t0FCIipaUuOgARUUX45ZdfkJaWhmPHjqF+/foAgFWr\nVqFDhw7y+3z33XfIz89HeHg4atSoAQDYuHEjunbtiuvXr6NZs2ZCspPqKTu3s3HjxqKjEL0TTU1N\nTJs2DTKZDBKJRHQc+gBqamrYsWMH2rdvDwcHB1hbW4uORKSyyqY6d+/eLToKEZFS42QnEVVJqamp\nMDY2lhedANCuXTtIpf/7sXft2jXY2NjIi04A+PTTTyGVSpGSklKpeUm1cUkRKSsWnVWDqakpAgMD\n4ezsjKKiItFxiFSWv78/fHx8ONVJRPSBWHYSkVKSSCSQyWSvfK48X6DxBTxVJjMzM559SERCTZw4\nEQYGBliyZInoKEQq6fLlyzh//jwmTpwoOgoRkdJj2UlESqlu3bq4f/++/L//+9//vvLflpaWuHfv\nHu7duyf/3MWLF19ZwGBlZYXExEQ8ffpU/rnY2FiUlpbCysqqgp8B0f9wspOIRJNIJNi8eTPWr1+P\n+Ph40XGIVA6nOomIyg/LTiJSaLm5ubhy5corH1lZWejWrRvWrl2Lixcv4vLly3BxcUG1atXkj+vZ\nsycsLCwwZswYJCQkIC4uDp6enlBXV5dPbY4ePRo6OjpwdnZGYmIiTp8+DTc3NwwZMoTndVKlMjc3\nZ9lJRMIZGRlhzZo1cHJyQkFBgeg4RCrjypUrOH/+PNzc3ERHISKqElh2EpFCO3PmDFq3bv3Kh5eX\nF1asWIGmTZuiS5cuGDZsGFxdXWFgYCB/nFQqxf79+/H8+XPY2dlhzJgxmDt3LiQSibwU1dHRQWRk\nJHJzc2FnZ4eBAwfC3t4eW7ZsEfV0SUU1bdoUt2/fRnFxsegoRKTihg8fjrZt28LX11d0FCKVwalO\nIqLyJZH99dA7IqIqKiEhAa1atcLFixdha2v7To/x8/NDVFQU4uLiKjgdqbomTZrgl19+4VQxEQmX\nnZ0NGxsbbNmyBT179hQdh6hKS0hIQJ8+fZCZmcmyk4ionHCyk4iqrP379+PYsWO4efMmoqKi4OLi\ngpYtW6JNmzb/+FiZTIbMzEycOHECLVq0qIS0pOp4biepmpKSEjx58kR0DHqN2rVrY/PmzRg3bhyy\ns7NFxyGq0vz9/eHt7c2ik4ioHLHsJKIq6+nTp5g6dSqsra0xevRoWFlZITIy8p02refk5MDa2hqa\nmpqYP39+JaQlVceyk1RNaWkpvvzyS7i5ueGPP/4QHYf+wsHBAQMHDsS0adNERyGqshISEhAbG8uz\nOomIyhnLTiKqspydnZGeno5nz57h3r17+O6771CvXr13emytWrXw/PlznD17FiYmJhWclIhlJ6ke\nDQ0NhIeHQ1tbG9bW1ggNDUVRUZHoWPSSoKAgxMfHY8+ePaKjEFVJZWd16ujoiI5CRFSlsOwkIiJS\nAGZmZkhPTxcdg+i9PH78+L22d9euXRuhoaGIjo7GkSNHYGNjg6PekGmFAAAgAElEQVRHj1ZAQnof\n1atXR3h4OKZOnYr79++LjkNUpVy9epVTnUREFYRlJxERkQLgZCcpqz/++AOtW7fGnTt33vtrWFtb\n4+jRowgODsa0adPQr18/lv8Kon379pg4cSJcXV3BvaZE5afsrE5OdRIRlT+WnUSkEu7evQsjIyPR\nMYjeqEmTJrh37x5evHghOgrROystLcWYMWMwYsQIWFhYfNDXkkgk6N+/P5KSktC5c2d8+umn8Pb2\nRk5OTjmlpfc1f/583L9/H99++63oKERVwtWrVxETE4NJkyaJjkJEVCWx7CQilWBkZITU1FTRMYje\nSENDAw0bNsSNGzdERyF6ZytXrkR2djaWLFlSbl9TS0sL3t7eSEpKwqNHj2BpaYnNmzejtLS03L4H\n/TuampoIDw+Hn58fMjMzRcchUnqc6iQiqlgSGa9HISIiUgh9+/aFu7s7+vfvLzoK0T+Ki4vDwIED\nER8fX6GL3C5cuIAZM2bgxYsXCAsLQ4cOHSrse9HbrVy5Evv27UN0dDTU1NRExyFSSomJiXBwcEBm\nZibLTiKiCsLJTiIiIgXBcztJWWRnZ2PkyJHYsGFDhRadANCuXTvExMRg5syZcHR0xKhRo/Dbb79V\n6Pek1/Pw8IC6ujpWrFghOgqR0vL394eXlxeLTiKiCsSyk4iISEGw7CRlIJPJ4Orqiv79+2PQoEGV\n8j0lEglGjx6N1NRUmJqaomXLlggICMCzZ88q5fvTn6RSKbZt24bly5fj6tWrouMQKZ3ExEScOXOG\nZ3USEVUwlp1EREQKwszMjBuoSeF98803yMrKwvLlyyv9e+vq6iIgIAAXL15EQkICrKyssGfPHm4J\nr0SNGzdGcHAwnJyc8Pz5c9FxiJRK2VRn9erVRUchIqrSeGYnERGRgrhx4wa6dOmC27dvi45CpFS6\ndOmCsLAwtGzZUnQUlSCTyTB48GBYWlriq6++Eh2HSCkkJSWhR48eyMzMZNlJRFTBONlJRASgsLAQ\noaGhomOQijMxMcGDBw94aS7RvzRixAg4ODhg0qRJ+OOPP0THqfIkEgk2btyIbdu24ezZs6LjECkF\nTnUSEVUelp1EpJL+OtReVFQET09P5OXlCUpEBKipqaFJkybIzMwUHYVIqUyaNAnXrl2DlpYWrK2t\nERYWhqKiItGxqjQDAwOsX78eY8aM4e9Oon+QlJSE06dPw93dXXQUIiKVwLKTiFTCvn37kJaWhpyc\nHAB/TqUAQElJCUpKSqCtrQ0tLS08efJEZEwiLikiek/6+voICwtDdHQ0fv75Z9jY2CAyMlJ0rCpt\n0KBB6NSpE2bNmiU6CpFC8/f3x6xZszjVSURUSVh2EpFKmDt3Ltq0aQNnZ2esW7cOZ86cQXZ2NtTU\n1KCmpgZ1dXVoaWnh0aNHoqOSimPZSfRhrK2tERkZiaCgIEyZMgUDBgzg/6cqUGhoKCIjI3H48GHR\nUYgUUtlU5+TJk0VHISJSGSw7iUglREdHY/Xq1cjPz8fChQvh7OyMESNGYN68efIXaPr6+njw4IHg\npKTqWHaSosrKyoJEIsHFixcV/ntLJBIMGDAAycnJ6NixI+zt7eHj44Pc3NwKTqp69PT0sG3bNkyY\nMIFvGBK9RkBAAKc6iYgqGctOIlIJBgYGGD9+PI4fP46EhAT4+PhAT08PERERmDBhAjp27IisrCwu\nhiHhWHaSSC4uLpBIJJBIJNDQ0EDTpk3h5eWF/Px8NGzYEPfv30erVq0AAKdOnYJEIsHDhw/LNUOX\nLl0wderUVz731+/9rrS0tODj44PExET88ccfsLS0xNatW1FaWlqekVVely5d4OjoCHd397+diU2k\nypKTkxEdHc2pTiKiSsayk4hUSnFxMYyMjODu7o4ff/wRe/fuRWBgIGxtbWFsbIzi4mLREUnFmZmZ\nIT09XXQMUmE9evTA/fv3cePGDSxZsgTffPMNvLy8oKamBkNDQ6irq1d6pg/93kZGRti6dSsiIiKw\nceNG2NnZITY2tpxTqrbAwEAkJSVh9+7doqMQKYyAgAB4enpyqpOIqJKx7CQilfLXF8rm5uZwcXFB\nWFgYTp48iS5duogJRvT/GjRogCdPnnC7MQmjpaUFQ0NDNGzYEKNGjcLo0aNx4MCBVy4lz8rKQteu\nXQEAdevWhUQigYuLCwBAJpMhODgYpqam0NbWxscff4ydO3e+8j38/f1hYmIi/17Ozs4A/pwsjY6O\nxtq1a+UTpllZWeV2CX27du0QExMDDw8PDB8+HKNHj8Zvv/32QV+T/qStrY3w8HB4eHjwf1Mi/DnV\nGRUVxalOIiIBKv+teSIigR4+fIjExEQkJyfj9u3bePr0KTQ0NNC5c2cMHToUwJ8v1Mu2tRNVNqlU\nClNTU1y/fv1fX7JLVBG0tbVRVFT0yucaNmyIvXv3YujQoUhOToa+vj60tbUBAPPmzcNPP/2EtWvX\nwsLCAufOncOECRNQu3ZtfP7559i7dy9CQkKwe/dufPzxx3jw4AHi4uIAAGFhYUhPT4elpSWWLl0K\n4M8y9c6dO+X2fKRSKb788ksMGjQIX331FVq2bImZM2di1qxZ8udA78fW1hbTpk3D2LFjERkZCamU\ncxWkusrO6tTV1RUdhYhI5fAvECJSGYmJiZg4cSJGjRqFkJAQnDp1CsnJyfj111/h7e0NR0dH3L9/\nn0UnCcdzO0lRxMfH47vvvkP37t1f+byamhr09fUB/HkmsqGhIfT09JCfn4+VK1fi22+/Re/evdGk\nSROMGjUKEyZMwNq1awEAt27dgpGRERwcHNCoUSO0bdtWfkannp4eNDU1oaOjA0NDQxgaGkJNTa1C\nnpuuri6WLFmCCxcu4PLly7C2tsbevXt55uQH8vPzQ25uLtatWyc6CpEwKSkpnOokIhKIZScRqYS7\nd+9i1qxZuH79OrZv3464uDicOnUKR48exb59+xAYGIg7d+4gNDRUdFQilp0k1NGjR6Grq4tq1arB\n3t4enTp1wpo1a97psSkpKSgsLETv3r2hq6sr/1i3bh0yMzMBAF988QUKCwvRpEkTjB8/Hnv27MHz\n588r8im9VdOmTbF3715s3rwZixYtQrdu3XD16lVheZSduro6duzYgYULFyItLU10HCIhys7q5FQn\nEZEYLDuJSCVcu3YNmZmZiIyMhIODAwwNDaGjowMdHR0YGBhg5MiR+PLLL3Hs2DHRUYlYdpJQnTp1\nwpUrV5CWlobCwkLs27cPBgYG7/TYsi3nhw4dwpUrV+QfycnJ8p+vDRs2RFpaGjZs2ICaNWti1qxZ\nsLW1RX5+foU9p3fRrVs3XL58GV988QV69OgBd3f3ct80ryosLCywaNEiODs7c/EfqZyUlBScPHkS\nU6ZMER2FiEhlsewkIpVQvXp15OXlQUdH5433uX79OmrUqFGJqYhej2UniaSjo4NmzZrBxMQEGhoa\nb7yfpqYmAKCkpET+OWtra2hpaeHWrVto1qzZKx8mJiby+1WrVg2ff/45Vq1ahQsXLiA5ORkxMTHy\nr/vy16xM6urqmDx5MlJTU6GhoQErKyusXr36b2eW0j+bPHky9PT0sGzZMtFRiCoVpzqJiMTjgiIi\nUglNmjSBiYkJZsyYgdmzZ0NNTQ1SqRQFBQW4c+cOfvrpJxw6dAjh4eGioxLBzMwM6enpomMQvZWJ\niQkkEgl+/vln9O/fH9ra2qhRowa8vLzg5eUFmUyGTp06IS8vD3FxcZBKpZg4cSK2bduG4uJitG/f\nHrq6uvjhhx+goaEBMzMzAEDjxo0RHx+PrKws6Orqys8GrUz6+vpYvXo13Nzc4OHhgfXr1yM0NBQO\nDg6VnkVZSaVSbNmyBW3atEHfvn1ha2srOhJRhbt27RpOnjyJTZs2iY5CRKTSWHYSkUowNDTEqlWr\nMHr0aERHR8PU1BTFxcUoLCzEixcvoKuri1WrVqFXr16ioxLByMgIBQUFyMnJgZ6enug4RK9Vv359\nLF68GHPnzoWrqyucnZ2xbds2BAQEoF69eggJCYG7uztq1qyJVq1awcfHBwBQq1YtBAUFwcvLC0VF\nRbC2tsa+ffvQpEkTAICXlxfGjBkDa2trPHv2DDdv3hT2HJs3b45jx47h4MGDcHd3R4sWLbBixQo0\na9ZMWCZl0qBBA4SGhsLJyQmXLl3itnuq8gICAjBz5kxOdRIRCSaRceUkEamQFy9eYM+ePUhOTkZR\nURFq166Npk2bok2bNjA3Nxcdj0guODgY48aNQ506dURHISIAz58/x6pVq7B8+XK4urpi3rx5PPrk\nHchkMjg6OqJBgwZYuXKl6DhEFebatWvo3LkzMjMz+bOBiEgwlp1EREQKqOzXs0QiEZyEiF527949\nzJkzB8eOHcPSpUvh7OwMqZTH4L/No0ePYGNjg507d6Jr166i4xBViFGjRuHjjz+Gn5+f6ChERCqP\nZScRqZyyH3svl0kslIiI6N+Ij4/H9OnTUVJSgtWrV8Pe3l50JIV2+PBhTJ48GQkJCTyeg6qc1NRU\ndOrUiVOdREQKgm9DE5HKKSs3pVIppFIpi04iUjlRUVGiIyg9Ozs7xMbGYvr06Rg2bBicnJxw9+5d\n0bEUVt++fdGrVy94eHiIjkJU7srO6mTRSUSkGFh2EhEREamQBw8ewMnJSXSMKkEqlcLJyQlpaWlo\n1KgRbGxsEBgYiMLCQtHRFNKKFStw+vRpHDhwQHQUonKTmpqKX375BVOnThUdhYiI/h/LTiJSKTKZ\nDDy9g4hUVWlpKcaMGcOys5zp6uoiMDAQFy5cwKVLl2BlZYV9+/bx981f6OrqYseOHXB3d8eDBw9E\nxyEqFwEBAfDw8OBUJxGRAuGZnUSkUh4+fIi4uDj069dPdBSiD1JYWIjS0lLo6OiIjkJKJDg4GBER\nETh16hQ0NDREx6myTpw4AQ8PD9StWxehoaGwsbERHUmh+Pr6IjU1Ffv37+dRMqTUys7qvH79OmrW\nrCk6DhER/T9OdhKRSrl37x63ZFKVsGXLFoSEhKCkpER0FFISsbGxWLFiBXbv3s2is4J1794dly9f\nxtChQ9GjRw9MmTIFjx49Eh1LYSxevBg3b97Etm3bREch+iB79uyBh4cHi04iIgXDspOIVErt2rWR\nnZ0tOgbRP9q8eTPS0tJQWlqK4uLiv5WaDRs2xJ49e3Djxg1BCUmZPH78GKNGjcKmTZvQqFEj0XFU\ngrq6OqZMmYJr165BKpXCysoKa9asQVFRkehowmlpaSE8PBw+Pj7IysoSHYfovchkMnh6emL27Nmi\noxAR0V+w7CQilcKyk5SFr68voqKiIJVKoa6uDjU1NQDA06dPkZKSgtu3byM5ORkJCQmCk5Kik8lk\nGD9+PAYNGoQBAwaIjqNyPvroI6xZswYnT57EgQMH0KpVKxw/flx0LOFsbGzg7e0NFxcXlJaWio5D\n9K9JJBJUr15d/vuZiIgUB8/sJCKVIpPJoKWlhby8PGhqaoqOQ/RGAwcORF5eHrp27YqrV68iIyMD\n9+7dQ15eHqRSKQwMDKCjo4OvvvoKn3/+uei4pMDWrFmD7du3IyYmBlpaWqLjqDSZTIaIiAh4enrC\nxsYGK1asgKmpqehYwpSUlKBz584YMmQIPD09RcchIiKiKoKTnUSkUiQSCWrVqsXpTlJ4n376KaKi\nohAREYFnz56hY8eO8PHxwdatW3Ho0CFEREQgIiICnTp1Eh2VFNivv/6KgIAA/PDDDyw6FYBEIsGg\nQYOQkpKC9u3bw87ODr6+vnj69Ok7Pb64uLiCE1YuNTU1bN++HUuXLkVycrLoOERUSZ4+fQoPDw+Y\nmJhAW1sbn376KS5cuCC/PS8vD9OmTUODBg2gra0NCwsLrFq1SmBiIlI26qIDEBFVtrJL2evVqyc6\nCtEbNWrUCLVr18Z3330HfX19aGlpQVtbm5fL0TvLzc2Fo6Mj1qxZo9LTg4qoWrVq8PPzw5gxY+Dn\n5wdLS0ssXboUzs7Ob9xOLpPJcPToURw+fBidOnXCiBEjKjl1xTA1NcWyZcvg5OSEuLg4XnVBpAJc\n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\nZcv0zTff6MMPP7R1OQAAoIog7AQAyGKxKD8CGnabAAAeCUlEQVQ//4qzQbOysmSxWHTixInrdjIs\nKCiQp6en4uLi9NRTT131ujNnzsjT01MpKSkKDw+XJLVv316FhYVatGiRvL29NWzYMJWUlGj16tXs\nCVnJvL299f3331v3u7tRP//8szp06KDk5GTrrCoAsKW8vDxZLBZ5eXnZuhQAAFBFsLENAEAmk0ke\nHh7y8PDQww8/XO786dOn5eDgcNXXX95v8+DBgzKZTNa9On9//vI4krRy5Urdc889CgoKkiRt2bJF\nKSkp2rVrlzVEmzt3rpo3b66DBw+qWbNmlfKc+M3ljuw3E3ZevHhRAwYM0PTp0wk6AVQZ9evXt3UJ\nAACgirn59WsAgGrnesvYzWazJGnv3r1ydXWVm5tbmfO/bz6UmJioyZMn6+WXX1bdunV16dIlrVu3\nTt7e3goJCdGvv/4qSapTp468vLyUnp5+m56q+rocdt6McePGKTg4WM8999xtqgoArq2kpEQsSgMA\nANdD2AkAqDQZGRny9PS0NjuyWCwqLS2VnZ2dCgoKNH78eE2aNEmjR4/WjBkzJEmXLl3S3r171aRJ\nE0n/C07z8vLk4eGhX375xXovVI6bDTuXL1+udevW6d1336WjJQCbefzxx5WcnGzrMgAAQBXHMnYA\nQIVYLBadPXtW7u7u2rdvn3x9fVWnTh1JvwWXNWrUUFpaml588UWdPXtWCxcuVERERJnZnnl5edal\n6pdDzZycHNWoUaNCXeJxZUFBQdq0adMNXXvgwAGNGTNGa9assf67AsCddvDgQaWlpalDhw62LgUA\nAFRxhJ0AgAo5duyYunfvrqKiIh06dEh+fn5655131KlTJ7Vr104JCQmaPXu22rdvr9dff12urq6S\nftu/02KxyNXVVYWFhdbO3jVq1JAkpaWlydHRUX5+ftbrLyspKVGfPn3KdY739fXVPffcc4ffgbtP\nkyZNbmhmZ3FxsQYOHKgJEyZYG0kBgC3ExcVp8ODB122UBwAAQDd2AECFWCwWpaena+fOncrNzdX2\n7du1fft2tWnTRvPnz1erVq105swZRUREKCwsTMHBwQoKClLLli3l4OAgOzs7DR06VIcPH9ayZcvU\nsGFDSVJoaKjatGmj2bNnWwPSy0pKSrR27dpyneOPHTumRo0alQtBAwMD5efnd80mS9VJUVGR6tat\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "show_map(node_colors)" ] @@ -437,6 +436,50 @@ "Voila! You see, the romania map as shown in the Figure[3.2] in the book. Now, see how different searching algorithms perform with our problem statements." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SIMPLE PROBLEM SOLVING AGENT PROGRAM\n", + "\n", + "Let us now define a Simple Problem Solving Agent Program. Run the next cell to see how the abstract class SimpleProblemSolvingAgentProgram is defined in the search module." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%psource SimpleProblemSolvingAgentProgram" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The SimpleProblemSolvingAgentProgram class has six methods: \n", + "\n", + "* `__init__(self, intial_state=None)`: This is the `contructor` of the class and is the first method to be called when the class is instantiated. It takes in a keyword argument, `initial_state` which is initially `None`. The argument `intial_state` represents the state from which the agent starts. \n", + "\n", + "\n", + "* `__call__(self, percept)`: This method updates the `state` of the agent based on its `percept` using the `update_state` method. It then formulates a `goal` with the help of `formulate_goal` method and a `problem` using the `formulate_problem` method and returns a sequence of actions to solve it (using the `search` method).\n", + "\n", + "\n", + "* `update_state(self, percept)`: This method updates the `state` of the agent based on its `percept`. \n", + "\n", + "\n", + "* `formulate_goal(self, state)`: Given a `state` of the agent, this method formulates the `goal` for it.\n", + "\n", + "\n", + "* `formulate_problem(self, state, goal)`: It is used in problem formulation given a `state` and a `goal` for the `agent`.\n", + "\n", + "\n", + "* `search(self, problem)`: This method is used to search a sequence of `actions` to solve a `problem`." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -949,7 +992,7 @@ "display_visual(user_input = False, algorithm = depth_first_graph_search, problem = romania_problem)" ] }, - { + { "cell_type": "markdown", "metadata": {}, "source": [ @@ -960,7 +1003,9 @@ { "cell_type": "code", "execution_count": 21, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def best_first_graph_search(problem, f):\n", @@ -1045,7 +1090,9 @@ { "cell_type": "code", "execution_count": 22, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def uniform_cost_search(problem):\n", @@ -1073,7 +1120,7 @@ "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ca9b2d01bbd5458bb037585c719d73fc" - } + } }, "metadata": {}, "output_type": "display_data" @@ -1096,7 +1143,9 @@ { "cell_type": "code", "execution_count": 24, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def greedy_best_first_search(problem, h=None):\n", @@ -1150,7 +1199,9 @@ { "cell_type": "code", "execution_count": 25, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def astar_search(problem, h=None):\n", @@ -2830,7 +2881,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.5.2" } }, "nbformat": 4, diff --git a/search.py b/search.py index 9caee609a..b705d6f28 100644 --- a/search.py +++ b/search.py @@ -145,7 +145,7 @@ class SimpleProblemSolvingAgentProgram: """Abstract framework for a problem-solving agent. [Figure 3.1]""" def __init__(self, initial_state=None): - """State is an sbstract representation of the state + """State is an abstract representation of the state of the world, and seq is the list of actions required to get to a particular state from the initial state(root).""" self.state = initial_state From d4520ca7400bb320c432b2db182ea6d8d43f4967 Mon Sep 17 00:00:00 2001 From: Aman Deep Singh Date: Mon, 12 Feb 2018 15:23:23 +0530 Subject: [PATCH 5/6] Added more tests for mdp.py (#722) --- tests/test_mdp.py | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/tests/test_mdp.py b/tests/test_mdp.py index b27c1af71..9117a32d9 100644 --- a/tests/test_mdp.py +++ b/tests/test_mdp.py @@ -1,5 +1,21 @@ from mdp import * +sequential_decision_environment_1 = GridMDP([[-0.1, -0.1, -0.1, +1], + [-0.1, None, -0.1, -1], + [-0.1, -0.1, -0.1, -0.1]], + terminals=[(3, 2), (3, 1)]) + +sequential_decision_environment_2 = GridMDP([[-2, -2, -2, +1], + [-2, None, -2, -1], + [-2, -2, -2, -2]], + terminals=[(3, 2), (3, 1)]) + +sequential_decision_environment_3 = GridMDP([[-1.0, -0.1, -0.1, -0.1, -0.1, 0.5], + [-0.1, None, None, -0.5, -0.1, -0.1], + [-0.1, None, 1.0, 3.0, None, -0.1], + [-0.1, -0.1, -0.1, None, None, -0.1], + [0.5, -0.1, -0.1, -0.1, -0.1, -1.0]], + terminals=[(2, 2), (3, 2), (0, 4), (5, 0)]) def test_value_iteration(): assert value_iteration(sequential_decision_environment, .01) == { @@ -10,6 +26,30 @@ def test_value_iteration(): (2, 0): 0.34461306281476806, (2, 1): 0.48643676237737926, (2, 2): 0.79536093684710951} + assert value_iteration(sequential_decision_environment_1, .01) == { + (3, 2): 1.0, (3, 1): -1.0, + (3, 0): -0.0897388258468311, (0, 1): 0.146419707398967840, + (0, 2): 0.30596200514385086, (1, 0): 0.010092796415625799, + (0, 0): 0.00633408092008296, (1, 2): 0.507390193380827400, + (2, 0): 0.15072242145212010, (2, 1): 0.358309043654212570, + (2, 2): 0.71675493618997840} + + assert value_iteration(sequential_decision_environment_2, .01) == { + (3, 2): 1.0, (3, 1): -1.0, + (3, 0): -3.5141584808407855, (0, 1): -7.8000009574737180, + (0, 2): -6.1064293596058830, (1, 0): -7.1012549580376760, + (0, 0): -8.5872244532783200, (1, 2): -3.9653547121245810, + (2, 0): -5.3099468802901630, (2, 1): -3.3543366255753995, + (2, 2): -1.7383376462930498} + + assert value_iteration(sequential_decision_environment_3, .01) == { + (0, 0): 4.350592130345558, (0, 1): 3.640700980321895, (0, 2): 3.0734806370346943, (0, 3): 2.5754335063434937, (0, 4): -1.0, + (1, 0): 3.640700980321895, (1, 1): 3.129579352304856, (1, 4): 2.0787517066719916, + (2, 0): 3.0259220379893352, (2, 1): 2.5926103577982897, (2, 2): 1.0, (2, 4): 2.507774181360808, + (3, 0): 2.5336747364500076, (3, 2): 3.0, (3, 3): 2.292172805400873, (3, 4): 2.996383110867515, + (4, 0): 2.1014575936349886, (4, 3): 3.1297590518608907, (4, 4): 3.6408806798779287, + (5, 0): -1.0, (5, 1): 2.5756132058995282, (5, 2): 3.0736603365907276, (5, 3): 3.6408806798779287, (5, 4): 4.350771829901593} + def test_policy_iteration(): assert policy_iteration(sequential_decision_environment) == { @@ -18,6 +58,26 @@ def test_policy_iteration(): (2, 1): (0, 1), (2, 2): (1, 0), (3, 0): (-1, 0), (3, 1): None, (3, 2): None} + assert policy_iteration(sequential_decision_environment_1) == { + (0, 0): (0, 1), (0, 1): (0, 1), (0, 2): (1, 0), + (1, 0): (1, 0), (1, 2): (1, 0), (2, 0): (0, 1), + (2, 1): (0, 1), (2, 2): (1, 0), (3, 0): (-1, 0), + (3, 1): None, (3, 2): None} + + assert policy_iteration(sequential_decision_environment_2) == { + (0, 0): (1, 0), (0, 1): (0, 1), (0, 2): (1, 0), + (1, 0): (1, 0), (1, 2): (1, 0), (2, 0): (1, 0), + (2, 1): (1, 0), (2, 2): (1, 0), (3, 0): (0, 1), + (3, 1): None, (3, 2): None} + + assert policy_iteration(sequential_decision_environment_3) == { + (0, 0): (-1, 0), (0, 1): (0, -1), (0, 2): (0, -1), (0, 3): (0, -1), (0, 4): None, + (1, 0): (-1, 0), (1, 1): (-1, 0), (1, 4): (1, 0), + (2, 0): (-1, 0), (2, 1): (0, -1), (2, 2): None, (2, 4): (1, 0), + (3, 0): (-1, 0), (3, 2): None, (3, 3): (1, 0), (3, 4): (1, 0), + (4, 0): (-1, 0), (4, 3): (1, 0), (4, 4): (1, 0), + (5, 0): None, (5, 1): (0, 1), (5, 2): (0, 1), (5, 3): (0, 1), (5, 4): (1, 0)} + def test_best_policy(): pi = best_policy(sequential_decision_environment, @@ -26,6 +86,26 @@ def test_best_policy(): ['^', None, '^', '.'], ['^', '>', '^', '<']] + pi_1 = best_policy(sequential_decision_environment_1, + value_iteration(sequential_decision_environment_1, .01)) + assert sequential_decision_environment_1.to_arrows(pi_1) == [['>', '>', '>', '.'], + ['^', None, '^', '.'], + ['^', '>', '^', '<']] + + pi_2 = best_policy(sequential_decision_environment_2, + value_iteration(sequential_decision_environment_2, .01)) + assert sequential_decision_environment_2.to_arrows(pi_2) == [['>', '>', '>', '.'], + ['^', None, '>', '.'], + ['>', '>', '>', '^']] + + pi_3 = best_policy(sequential_decision_environment_3, + value_iteration(sequential_decision_environment_3, .01)) + assert sequential_decision_environment_3.to_arrows(pi_3) == [['.', '>', '>', '>', '>', '>'], + ['v', None, None, '>', '>', '^'], + ['v', None, '.', '.', None, '^'], + ['v', '<', 'v', None, None, '^'], + ['<', '<', '<', '<', '<', '.']] + def test_transition_model(): transition_model = { From 9ccc092b70db3d1b9c1bb36c51123092f79e3a93 Mon Sep 17 00:00:00 2001 From: Anthony Marakis Date: Mon, 12 Feb 2018 21:30:28 +0200 Subject: [PATCH 6/6] Update vacuum_world.ipynb (#725) --- vacuum_world.ipynb | 225 ++++++++++++++++++++------------------------- 1 file changed, 102 insertions(+), 123 deletions(-) diff --git a/vacuum_world.ipynb b/vacuum_world.ipynb index 92f5b90d9..34bcd2d5b 100644 --- a/vacuum_world.ipynb +++ b/vacuum_world.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# The Vacuum World \n", + "# THE VACUUM WORLD \n", "\n", - "In this notebook, we will be discussing about **the structure of agents** through an example of the **vacuum agent**. The job of AI is to design an **agent program** that implements the agent function: the mapping from percepts to actions. We assume this program will run on some sort of computing device with physical sensors and actuators: we call this the **architecture**: \n", + "In this notebook, we will be discussing **the structure of agents** through an example of the **vacuum agent**. The job of AI is to design an **agent program** that implements the agent function: the mapping from percepts to actions. We assume this program will run on some sort of computing device with physical sensors and actuators: we call this the **architecture**:\n", "\n", - " agent = architecture + program " + "

agent = architecture + program

" ] }, { @@ -22,15 +22,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Agent Programs\n", + "## CONTENTS\n", "\n", - "An agent program takes the current percept as input from the sensors and return an action to the actuators. There is a difference between an agent program and an agent function: an agent program takes the current percept as input whereas an agent function takes the entire percept history. \n", - "The agent program takes just the current percept as input because nothing more is available from the environment; if the agent's actions need to depend on the entire percept sequence, the agent will have to remember the percept. \n", + "* Agent\n", + "* Random Agent Program\n", + "* Table-Driven Agent Program\n", + "* Simple Reflex Agent Program\n", + "* Model-Based Reflex Agent Program\n", + "* Goal-Based Agent Program\n", + "* Utility-Based Agent Program" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## AGENT PROGRAMS\n", + "\n", + "An agent program takes the current percept as input from the sensors and returns an action to the actuators. There is a difference between an agent program and an agent function: an agent program takes the current percept as input whereas an agent function takes the entire percept history.\n", + "\n", + "The agent program takes just the current percept as input because nothing more is available from the environment; if the agent's actions depend on the entire percept sequence, the agent will have to remember the percept.\n", "\n", "We'll discuss the following agent programs here with the help of the vacuum world example:\n", "\n", "* Random Agent Program\n", - "* Table Driven Agent Program\n", + "* Table-Driven Agent Program\n", "* Simple Reflex Agent Program\n", "* Model-Based Reflex Agent Program\n", "* Goal-Based Agent Program\n", @@ -43,7 +59,7 @@ "source": [ "## Random Agent Program\n", "\n", - "A random agent program, as the name suggests, choses an action at random, without taking into account the percepts. \n", + "A random agent program, as the name suggests, chooses an action at random, without taking into account the percepts. \n", "Here, we will demonstrate a random vacuum agent for a trivial vacuum environment, that is, the two-state environment." ] }, @@ -56,25 +72,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0magents\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnotebook\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpsource\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/aima-python/notebook.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mgames\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mTicTacToe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malphabeta_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_player\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mFig52Extended\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minfinity\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mlogic\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mparse_definite_clause\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstandardize_variables\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0munify\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubst\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mlearning\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataSet\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mHTML\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcollections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCounter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdefaultdict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1106\u001b[0m orings = DataSet(name='orings', target='Distressed',\n\u001b[0;32m-> 1107\u001b[0;31m attrnames=\"Rings Distressed Temp Pressure Flightnum\")\n\u001b[0m\u001b[1;32m 1108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1109\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/aima-python/learning.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, examples, attrs, attrnames, target, inputs, values, distance, name, source, exclude)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexamples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mexamples\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparse_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopen_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexamples\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexamples\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/aima-python/utils.py\u001b[0m in \u001b[0;36mopen_data\u001b[0;34m(name, mode)\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0maima_file\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_root\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'aima-data'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 416\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maima_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 417\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 418\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/apurv/aima-python/aima-data/orings.csv'" - ] - } - ], + "outputs": [], "source": [ "from agents import *\n", "from notebook import psource" @@ -89,34 +89,34 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "%psource TrivialVacuumEnvironment" + "psource(TrivialVacuumEnvironment)" ] }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Dirty'}.\n" + "State of the Environment: {(0, 0): 'Dirty', (1, 0): 'Clean'}.\n" ] } ], "source": [ - "# These are the two locations for the two-state environment.\n", + "# These are the two locations for the two-state environment\n", "loc_A, loc_B = (0, 0), (1, 0)\n", "\n", - "# Initialise the two-state environment.\n", + "# Initialize the two-state environment\n", "trivial_vacuum_env = TrivialVacuumEnvironment()\n", "\n", - "# Check the intial state of the environment.\n", + "# Check the intial state of the environment\n", "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))" ] }, @@ -124,18 +124,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's create our agent now. This agent will chose any of the actions from 'Right', 'Left', 'Suck' and 'NoOp' (No Operation) randomly. " + "Let's create our agent now. This agent will choose any of the actions from 'Right', 'Left', 'Suck' and 'NoOp' (No Operation) randomly." ] }, { "cell_type": "code", - "execution_count": 120, - "metadata": { - "collapsed": true - }, + "execution_count": 4, + "metadata": {}, "outputs": [], "source": [ - "# Create the random agent.\n", + "# Create the random agent\n", "random_agent = Agent(program=RandomAgentProgram(['Right', 'Left', 'Suck', 'NoOp']))" ] }, @@ -148,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -160,7 +158,7 @@ } ], "source": [ - "# Add agent to the environment.\n", + "# Add agent to the environment\n", "trivial_vacuum_env.add_thing(random_agent)\n", "\n", "print(\"RandomVacuumAgent is located at {}.\".format(random_agent.location))" @@ -175,23 +173,23 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Dirty'}.\n", + "State of the Environment: {(0, 0): 'Dirty', (1, 0): 'Clean'}.\n", "RandomVacuumAgent is located at (0, 0).\n" ] } ], "source": [ - "# Running the environment.\n", + "# Running the environment\n", "trivial_vacuum_env.step()\n", "\n", - "# Check the current state of the environment.\n", + "# Check the current state of the environment\n", "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", "\n", "print(\"RandomVacuumAgent is located at {}.\".format(random_agent.location))" @@ -201,18 +199,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Table Driven Agent Program\n", + "## TABLE-DRIVEN AGENT PROGRAM\n", "\n", - "A table driven agent program keeps track of the percept sequence and then uses it to index into a table of actions to decide what to do. The table represents eplicitly the agent function that the agent program embodies. \n", + "A table-driven agent program keeps track of the percept sequence and then uses it to index into a table of actions to decide what to do. The table represents explicitly the agent function that the agent program embodies. \n", "In the two-state vacuum world, the table would consist of all the possible states of the agent." ] }, { "cell_type": "code", - "execution_count": 123, - "metadata": { - "collapsed": true - }, + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ "table = {((loc_A, 'Clean'),): 'Right',\n", @@ -230,18 +226,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will now create a table driven agent program for our two-state environment." + "We will now create a table-driven agent program for our two-state environment." ] }, { "cell_type": "code", - "execution_count": 124, - "metadata": { - "collapsed": true - }, + "execution_count": 8, + "metadata": {}, "outputs": [], "source": [ - "# Create a table driven agent.\n", + "# Create a table-driven agent\n", "table_driven_agent = Agent(program=TableDrivenAgentProgram(table=table))" ] }, @@ -249,15 +243,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Since we are using the same environment, let us remove the previously added random agent from the environment to avoid confusion." + "Since we are using the same environment, let's remove the previously added random agent from the environment to avoid confusion." ] }, { "cell_type": "code", - "execution_count": 125, - "metadata": { - "collapsed": true - }, + "execution_count": 9, + "metadata": {}, "outputs": [], "source": [ "trivial_vacuum_env.delete_thing(random_agent)" @@ -265,7 +257,7 @@ }, { "cell_type": "code", - "execution_count": 126, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -277,7 +269,7 @@ } ], "source": [ - "# Add the table driven agent to the environment\n", + "# Add the table-driven agent to the environment\n", "trivial_vacuum_env.add_thing(table_driven_agent)\n", "\n", "print(\"TableDrivenVacuumAgent is located at {}.\".format(table_driven_agent.location))" @@ -285,23 +277,23 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "State of the Environment: {(0, 0): 'Clean', (1, 0): 'Clean'}.\n", "TableDrivenVacuumAgent is located at (0, 0).\n" ] } ], "source": [ - "# Run the environment.\n", + "# Run the environment\n", "trivial_vacuum_env.step()\n", "\n", - "# Check the current state of the environment.\n", + "# Check the current state of the environment\n", "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", "\n", "print(\"TableDrivenVacuumAgent is located at {}.\".format(table_driven_agent.location))" @@ -311,9 +303,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Simple Reflex Agent Program\n", + "## SIMPLE REFLEX AGENT PROGRAM\n", "\n", - "A simple reflex agent program selects actions on the basis of the current percept, ignoring the rest of the percept history. These agents work on a **condition-action rule** (also called **situation-action rule**, **production** or **if-then rule**), which tell the agent the action to trigger when a particular situtation is encountered. \n", + "A simple reflex agent program selects actions on the basis of the *current* percept, ignoring the rest of the percept history. These agents work on a **condition-action rule** (also called **situation-action rule**, **production** or **if-then rule**), which tells the agent the action to trigger when a particular situtation is encountered. \n", "\n", "The schematic diagram shown in **Figure 2.9** of the book will make this more clear:\n", "\n", @@ -329,13 +321,11 @@ }, { "cell_type": "code", - "execution_count": 131, - "metadata": { - "collapsed": true - }, + "execution_count": 12, + "metadata": {}, "outputs": [], "source": [ - "# Delete the previously added table driven agent.\n", + "# Delete the previously added table-driven agent\n", "trivial_vacuum_env.delete_thing(table_driven_agent)" ] }, @@ -348,26 +338,24 @@ }, { "cell_type": "code", - "execution_count": 134, - "metadata": { - "collapsed": true - }, + "execution_count": 13, + "metadata": {}, "outputs": [], "source": [ - "# TODO: Implement these functions for two-dimensional environment.\n", - "# Interpret-input function for the two-state environment.\n", + "# TODO: Implement these functions for two-dimensional environment\n", + "# Interpret-input function for the two-state environment\n", "def interpret_input(percept):\n", " pass\n", "\n", "rules = None\n", "\n", - "# Rule-match function for the two-state environment.\n", + "# Rule-match function for the two-state environment\n", "def rule_match(state, rule):\n", " for rule in rules:\n", " if rule.matches(state):\n", " return rule \n", " \n", - "# Create a simple reflex agent the two-state environment.\n", + "# Create a simple reflex agent the two-state environment\n", "simple_reflex_agent = ReflexVacuumAgent()" ] }, @@ -380,14 +368,14 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "SimpleReflexVacuumAgent is located at (0, 0).\n" + "SimpleReflexVacuumAgent is located at (1, 0).\n" ] } ], @@ -399,23 +387,23 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "State of the Environment: {(0, 0): 'Clean', (1, 0): 'Clean'}.\n", "SimpleReflexVacuumAgent is located at (0, 0).\n" ] } ], "source": [ - "# Run the environment.\n", + "# Run the environment\n", "trivial_vacuum_env.step()\n", "\n", - "# Check the current state of the environment.\n", + "# Check the current state of the environment\n", "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", "\n", "print(\"SimpleReflexVacuumAgent is located at {}.\".format(simple_reflex_agent.location))" @@ -425,11 +413,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Model-Based Reflex Agent Program\n", + "## MODEL-BASED REFLEX AGENT PROGRAM\n", "\n", - "A model-based reflex agent maintains some sort of internal state that depends on the percept history and thereby reflects at least some of the unobserved aspects of the current state. In additon to this, it also requires a model of the world, that is, knowledge about \"how the world works\". \n", + "A model-based reflex agent maintains some sort of **internal state** that depends on the percept history and thereby reflects at least some of the unobserved aspects of the current state. In additon to this, it also requires a **model** of the world, that is, knowledge about \"how the world works\".\n", "\n", - "The schematic diagram shown in figure 2.11 of the book will make this more clear:\n", + "The schematic diagram shown in **Figure 2.11** of the book will make this more clear:\n", "" ] }, @@ -442,22 +430,11 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 16, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "list.remove(x): x not in list\n", - " in Environment delete_thing\n", - " Thing to be removed: at (0, 0)\n", - " from list: []\n" - ] - } - ], + "outputs": [], "source": [ - "# Delete the previously added simple reflex agent.\n", + "# Delete the previously added simple reflex agent\n", "trivial_vacuum_env.delete_thing(simple_reflex_agent)" ] }, @@ -470,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -482,14 +459,14 @@ } ], "source": [ - "# TODO: Implement this function for the two-dimensional environment.\n", + "# TODO: Implement this function for the two-dimensional environment\n", "def update_state(state, action, percept, model):\n", " pass\n", "\n", - "# Create a model-based reflex agent.\n", + "# Create a model-based reflex agent\n", "model_based_reflex_agent = ModelBasedVacuumAgent()\n", "\n", - "# Add the agent to the environment.\n", + "# Add the agent to the environment\n", "trivial_vacuum_env.add_thing(model_based_reflex_agent)\n", "\n", "print(\"ModelBasedVacuumAgent is located at {}.\".format(model_based_reflex_agent.location))" @@ -497,23 +474,23 @@ }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "State of the Environment: {(1, 0): 'Clean', (0, 0): 'Clean'}.\n", + "State of the Environment: {(0, 0): 'Clean', (1, 0): 'Clean'}.\n", "ModelBasedVacuumAgent is located at (1, 0).\n" ] } ], "source": [ - "# Run the environment.\n", + "# Run the environment\n", "trivial_vacuum_env.step()\n", "\n", - "# Check the current state of the environment.\n", + "# Check the current state of the environment\n", "print(\"State of the Environment: {}.\".format(trivial_vacuum_env.status))\n", "\n", "print(\"ModelBasedVacuumAgent is located at {}.\".format(model_based_reflex_agent.location))" @@ -523,19 +500,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Goal-Based Agent Program \n", + "## GOAL-BASED AGENT PROGRAM\n", "\n", - "A goal-based agent needs some sort of goal information that describes situations that are desirable, apart from the current state description. \n", - "Figure 2.13 of the book shows a model-based, goal-based agent: \n", + "A goal-based agent needs some sort of **goal** information that describes situations that are desirable, apart from the current state description.\n", + "\n", + "**Figure 2.13** of the book shows a model-based, goal-based agent:\n", "\n", "\n", - "Search (Chapters 3 to 5) and Planning (Chapters 10 to 11) are the subfields of AI devoted to finding action sequences that achieve the agent's goals.\n", + "**Search** (Chapters 3 to 5) and **Planning** (Chapters 10 to 11) are the subfields of AI devoted to finding action sequences that achieve the agent's goals.\n", + "\n", + "## UTILITY-BASED AGENT PROGRAM\n", "\n", - "## Utility-Based Agent Program\n", + "A utility-based agent maximizes its **utility** using the agent's **utility function**, which is essentially an internalization of the agent's performance measure.\n", "\n", - "A utility-based agent maximizes its utility using the agent's utility function, which is essentially an internalization of the agent's performance measure. \n", - "Figure 2.14 of the book shows a model-based, utility-based agent:\n", - "\n" + "**Figure 2.14** of the book shows a model-based, utility-based agent:\n", + "" ] } ], @@ -555,7 +534,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.3" } }, "nbformat": 4,