【最もプリミティブ(原始的)なエージェントの実装】 Agentを移送する 通信方式のモデル ( ②巡回方式)の実装 Agentを移送する通信方式のモデル(②巡回方式) Pythonをベースにしたエージェントの開発・実行プラットホーム Pythonをベースにした通信方式のモデル(②巡回方式)の実装方法 プログラミング演習素材:ファミリーレストランのオブジェクトモデル Pythonをベースにしたエージェントの開発・実行プラットホーム への、ファミリーレストランのオブジェクトモデルの実装 Pythonをベースにした通信方式のモデル(②巡回方式) への、ファミリーレストランのオブジェクトモデルの実装 エージェントの実行タスク(client_task.py) エージェントの指令クライアント(client.py) エージェントの実行プラットホーム(AgentPlatform.py) 【最もプリミティブ(原始的)なエージェントの実装】 Agentを移送する通信方式のモデル ②巡回方式 create dispose (廃棄) dispatch (発送) Server dispose (廃棄) ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 clone dispatch (発送) Client dispose (廃棄) dispatch (発送) Server dispose (廃棄) ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 【最もプリミティブ(原始的)なエージェントの実装】 Pythonをベースにしたエージェントの開発・実行プラットホーム エージェントの実行タスクは、 Pythonのスレッドとして活性 化・走行 エージェントの実行タスクは、 Pythonのモジュールとして実現 エージェント エージェント エージェントの 実 行 タ ス ク (client_task.py) エージェント エージェント エージェントの指令 ク ラ イ ア ン ト ( c l i e n t .py) エ ー ジ ェ ン ト の 実行プラットホーム (AgentPlatform.py) ランタイムシステム ランタイムシステム Python仮想機械 Python仮想機械 ハードウェア コンピュータA エージェント ハードウェア 移動 エージェントは、 xmlrpcを介して通信上のデータ に収納されたPythonモジュールとして移動 コンピュータB ネットワーク 【最もプリミティブ(原始的)なエージェントの実装】 Pythonをベースにした通信方式のモデル(②巡回方式)の実装 create dispose (廃棄) dispatch (発送) Server dispose (廃棄) ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 clone dispatch (発送) Client dispose (廃棄) dispatch (発送) Server dispose (廃棄) ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 【最もプリミティブ(原始的)なエージェントの実装】 プログラミング演習素材:ファミリーレストランのオブジェクトモデル 食材配送 店長 ウエイトレス 料理人 冷蔵室 厨房 カ ウ ン タ | 料理 メニュー 料金 食材 禁煙席 たばこ自動販売機 トイレ 喫煙席 レジ 待合室 客 【最もプリミティブ(原始的)なエージェントの実装】 Pythonをベースにしたエージェントの開発・実行プラットホーム へ の 、 フ ァ ミ リ ー レ ス ト ラ ン の オ フ ゙ シ ゙ ェ ク ト モ テ ゙ ル の 実 装 エージェントの実行タスクは、Python のスレッドとして活性化・走行 エージェントの実行タスクは、Python のモジュールとして実現 エージェントの 実 行 タ ス ク (client_task.py) 店長 料理人 冷蔵室 客 エージェント 厨房 エージェント エージェント トイレ 客 ウエイトレス 料理 メニュー 料金 食材 カ ウ ン タ | 禁煙席 エージェント たばこ自動販売機 喫煙席 レジ エ ー ジ ェ ン ト の 実行プラットホーム ( Age nt Pl atfor m.p y) エージェントの指令 ク ラ イ ア ン ト (client.py) ランタイムシステム Python仮想機械 ランタイムシステム 客 エージェント ハードウェア コンピュータA 待合室 Python仮想機械 ハードウェア 移動 エージェントは、 xmlrpcを介して通信上のデータに収納 さ れ た P y t h o n モ ジ ュ ー ル と し て 移 動 コンピュータB ネットワーク 【最もプリミティブ(原始的)なエージェントの実装】 P y t h o n を ベ ー ス に し た 通 信 方 式 の モ デ ル ( ② 巡 回 方 式 ) へ の 、 フ ァ ミ リ ー レ ス ト ラ ン の オ フ ゙ シ ゙ ェ ク ト モ テ ゙ ル の 実 装 店長 料理人 冷蔵室 厨房 トイレ 料理 メニュー 料金 ウエイトレス 食材 カ ウ 禁煙席 ン タ | たばこ自動販売機 dispose (廃棄) ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 喫煙席 create dispose (廃棄) dispatch (発送) レジ Server 待合室 clone dispatch (発送) Client 店長 料理人 冷蔵室 dispose (廃棄) 厨房 dispatch (発送) トイレ dispose (廃棄) 待合室 レジ ・外部状態の把握 ・状態モデルとの照合 ・メソッドの実行 喫煙席 Server 料理 メニュー 料金 ウエイトレス 食材 カ ウ 禁煙席 ン タ | たばこ自動販売機 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの実行タスク(client_task.py) エージェントの実行タスクは、Pythonのモジュールとして実現 エージェントの 実 行 タ ス ク (client_task.py) def main(name, arg): n = arg while 1: print 'Hello from thread', name, n time.sleep(3) n -= 1 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの指令クライアント(client.py) x m l r p c を 介 し た エ ー ジ ェ ン ト の 実 行 制 御 プ ロ ト コ ル エージェントの指令 ク ラ イ ア ン ト ( c l i e n t .py) main(): workbench = "http://localhost:7070" s = xmlrpclib.ServerProxy(workbench) f = open('client_task.py') task = f.read() f.close() name = 'agent_a' arg = 100 s.spawn_agent(task, name, arg) s.kill_agent(name) 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの実行プラットホーム(AgentPlatform.py) エージェントの実行タスクは、Pythonのスレッドとして活性化・走行 class AgentPlatform: def spawn_agent(self, task, name, arg): try: rv = spawn_agent_task(task, name, arg) except: return '***' return rv def kill_agent(self, name): try: rv = kill_agent_task(name) print 'rv:', rv except: traceback.print_exc() rv = '***' return rv if __name__ == "__main__": s = SimpleXMLRPCServer(("localhost", 7070)) print s thread.start_new(agent_watcher, ()) エ ー ジ ェ ン ト の s.register_instance(AgentPlatform()) 実行プラットホーム s.serve_forever() (AgentPlatform.py) 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの実行プラットホーム(AgentPlatform.py) エージェントの実行タスクは、Pythonのスレッドとして活性化・走行 def spawn_agent_task(task, name, arg): try: f = open('log/' + name + '.py', 'w') f.write(task) f.close() m = mloader.load('log. ' + name) fun = getattr(m, 'main', None) tid = KThread.KThread(target=fun, args=(name, arg)) except: return '***' agent_pool[name] = {'task': task, 'arg': arg, 'tid': tid} return tid エ ー ジ ェ ン ト の 実行プラットホーム (AgentPlatform.py) 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの実行プラットホーム(AgentPlatform.py) エージェントの実行タスクは、Pythonのスレッドとして活性化・走行 def kill_agent_task(name): try: tid = agent_pool[name]['tid'] tid.kill() del agent_pool[name] except: return '***' return tid エ ー ジ ェ ン ト の 実行プラットホーム (AgentPlatform.py) 【最もプリミティブ(原始的)なエージェントの実装】 エージェントの実行プラットホーム(AgentPlatform.py) エージェントの実行タスクは、Pythonのスレッドとして活性化・走行 def agent_watcher(): print 'Start agent_watcher' while 1: time.sleep(1) エ ー ジ ェ ン ト の 実行プラットホーム (AgentPlatform.py)
© Copyright 2024 ExpyDoc