6.5 ジョブのクラスター化に関する検討
Ϭ ϮϬ ϰϬ ϲϬ ϴϬ ϭϬϬ ϭϮϬ ϭϰϬ ϭϲϬ ϭϴϬ ϮϬϬ
ϭϬ ϬϬ ϯϬ ϬϬ
ϱϬ ϬϬ ϳϬ ϬϬ
ϵϬ ϬϬ ϭϭ ϬϬ Ϭ
ϭϯ ϬϬ Ϭ
ϭϱ ϬϬ Ϭ
ϭϳ ϬϬ Ϭ
ϭϵ ϬϬ Ϭ
Ϯϭ ϬϬ Ϭ
Ϯϯ ϬϬ Ϭ
Ϯϱ ϬϬ Ϭ
Ϯϳ ϬϬ Ϭ
Ϯϵ ϬϬ Ϭ
ϯϭ ϬϬ Ϭ
E Ƶŵ
͘Ž Ĩ
6.
Ϭ ϱ ϭϬ ϭϱ ϮϬ Ϯϱ ϯϬ ϯϱ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
LJŶĂŵŝĐĞƐƚŝŵĞƚĞĚ ĐůƵƐƚĞƌĞĚ
LJŶĂŵŝĐĞƐƚŝŵĂƚĞĚ ŝŶĚŝǀŝĚƵĂů ƐƚŝŵĂƚĞĚƐƚĂƚŝĐ
^ƚĂƚŝĐĐLJĐůŝĐ
LJŶĂŵŝĐĂŶĚĐůƵƐƚĞƌĞĚũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ LJŶĂŵŝĐĂŶĚŝŶĚŝǀŝĚƵĂůũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚŽƵƚĞƐƚŝŵĂƚŝŽŶ
図 6.10: 実験結果(1/3)
くのエージェントから報告を受け,指示を出す上位のリーダーについては特に大きな 負荷となることが予想される.
そのため,指数分布から外れて極端に負荷が大きいエージェントを導入した場合に 関しても本方法が有効であるかを確認することとした.
今回,1000エージェントのうち10エージェントを巨大負荷エージェントと置き換え ることとした.巨大負荷エージェントの負荷は,サイクルあたりの評価数が5万点,25 万点,50万点,100万点の4種類とした.
実験結果を図6.11に示す.負荷推定の有無による実行性能の違いが際立つ結果となっ た.これは,巨大負荷エージェントが少数のスレッドに偏って存在するような場合,他 のスレッドを待たせる時間が長くなってしまう状況が発生していると考えられる.
一方で,負荷推定を実施しているアルゴリズム間での差は,特にスレッド数が多い 場合においてエージェントの負荷が指数分布に従う場合と比べて明確ではなくなった.
これは,巨大負荷のエージェントが10あるため,スレッド数が多い場合には巨大負荷 のエージェントの偏りによる処理負荷の違いを他のエージェントの分配によって補え なくなっていると考えられる.
6.5 ジョブのクラスター化に関する検討
Ϭ ϱ ϭϬ ϭϱ ϮϬ Ϯϱ ϯϬ ϯϱ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
ŝŐĂŐĞŶƚǁŽƌŬůŽĂĚŝƐϱϬŬƉŽŝŶƚƐ ϮϱϬŬƉŽŝŶƚƐ
ϱϬϬŬƉŽŝŶƚƐ ϭϬϬϬŬƉŽŝŶƚƐ
Ϭ Ϯ ϰ ϲ ϴ ϭϬ ϭϮ ϭϰ ϭϲ ϭϴ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
Ϭ Ϯ ϰ ϲ ϴ ϭϬ ϭϮ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
LJŶĂŵŝĐĞƐƚŝŵĞƚĞĚ ĐůƵƐƚĞƌĞĚ LJŶĂŵŝĐĞƐƚŝŵĂƚĞĚ ŝŶĚŝǀŝĚƵĂů ƐƚŝŵĂƚĞĚƐƚĂƚŝĐ
^ƚĂƚŝĐĐLJĐůŝĐ Ϭ
ϱ ϭϬ ϭϱ ϮϬ Ϯϱ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
LJŶĂŵŝĐĞƐƚŝŵĞƚĞĚ ĐůƵƐƚĞƌĞĚ LJŶĂŵŝĐĞƐƚŝŵĂƚĞĚ ŝŶĚŝǀŝĚƵĂů ƐƚŝŵĂƚĞĚƐƚĂƚŝĐ
^ƚĂƚŝĐĐLJĐůŝĐ
LJŶĂŵŝĐĂŶĚĐůƵƐƚĞƌĞĚũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ LJŶĂŵŝĐĂŶĚŝŶĚŝǀŝĚƵĂůũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚ ĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚŽƵƚĞƐƚŝŵĂƚŝŽŶ
LJŶĂŵŝĐĂŶĚĐůƵƐƚĞƌĞĚũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ LJŶĂŵŝĐĂŶĚŝŶĚŝǀŝĚƵĂůũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚ ĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚŽƵƚĞƐƚŝŵĂƚŝŽŶ
図 6.11: 実験結果(2/3)
6.5.2 多数のエージェントが登場する MAS による実験
前節まで,円周率を計算するエージェントを利用したテストプログラムによって本 方法を評価してきた.これらのエージェントの負荷は予め固定されており,変化しな い.一方,実際のMASにおいてはそれぞれのエージェントの処理負荷は状況によって 変化し,常に一定ではない.そのため,多数のエージェントが目的のために行動する 複雑な状況においても効率的なジョブの分配ができることを確認する必要がある.
そのため,今回は災害対処をモデル化したシミュレーションを用いて本方法の評価 を行った.実験に用いたシミュレーションでは,2次元メッシュで構成されたマップ上 において都市部の火災を模擬しており,多数の避難民と火災に対処する消防チームを 模擬する.シミュレーションの状況表示例を図6.12及び図6.13に示す.また,シミュ レーションに登場するエージェントとその機能を表6.2に示す.今回は消防指揮所1か 所,消防リーダー10人,消防士50人,避難民1000人としてシミュレーションを実施 した.
6.
図 6.12: シミュレーションのスクリーンショット(1/2)
図 6.13: シミュレーションのスクリーンショット(2/2)
各エージェントはマップ全体を消火するという共通の目的のために命令,報告の枠 組みを通じて協調して動作する.また,多数のエージェントが登場し,複雑な環境下 で活動するのみならず,消火中,移動中または待機中等のエージェントの状況に応じ てエージェントの処理負荷が大きく変動するなど,本方法が実際的なシミュレーショ ンにおいても有効かどうかの評価に適切であると考えられる.
なお,本シミュレーションの処理の詳細については7章で詳述する.
6.6 結言 表 6.2: シミュレーションに登場するエージェント
エージェント名 登場数 機能
消防指揮所 1
・部下及び避難民からの報告を受ける
・リーダーに移動及び消火指示を出す
消防リーダー 10
・司令部に状況を報告する
・司令部から指示された場所へ移動する
・消防車として振る舞い,消防士たちを運搬する
・消防士たちを搭載し,下車させる
・部下の消防士たちから報告を受ける
・消防士たちを火災現場へ誘導する
消防士 50
・リーダーに乗車し,目的地で下車する
・火災を消火する
・リーダーに状況を報告する 避難民 1000
・司令部に状況を報告する
・最も近い避難所へ移動する
火災 1000
・建物と道路を燃やす
・消防士によって消火される
本章で提案した効率化方法を本シミュレーションに適用した結果を図6.14に示す.グ ラフ上の点は,各条件において25回実行した平均値としている.グラフより,負荷推 定によるエージェント処理の分配が有効に働いていることがわかる.
本シミュレーションにおける実験結果より,MASの効率化のための本方法が実際的 なシミュレーションにおいても有効であることが示された.一方で,エージェントの 処理のクラスター化については導入することによる有意な差が見られなかった.
6.6 結言
本章では,効率的にMASを構築するためのフレームワークであるFUSEについて論 じた.エージェント及び環境の制御,メッセージ交換,セーブ・リストア等,MASの 開発において必要となる機能を備えていることを示し,また効率的なシミュレーショ ン実行のための機能を有していることを実験によって明らかにした.
また,既存の主なMASフレームワークとFUSEの特徴を図6.15に示す.FUSEは 行動判断ルールのアルゴリズムや二次元及び三次元の状況表示といった多くの機能を サポートすると同時に,必要な機能を取捨選択して使用するような,柔軟な利用方法 にも対応している.
FUSEを利用して実際に開発されたMAS及びその評価については次章において詳述
6.
Ϭ ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ ϵ ϭϬ
ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
LJĐů ĞƐƉ Ğƌ^ ĞĐŽŶ Ě
EƵŵďĞƌŽĨdŚƌĞĂĚƐ
LJŶĂŵŝĐĞƐƚŝŵĞƚĞĚ ĐůƵƐƚĞƌĞĚ LJŶĂŵŝĐĞƐƚŝŵĂƚĞĚ ŝŶĚŝǀŝĚƵĂů ƐƚŝŵĂƚĞĚƐƚĂƚŝĐ
^ƚĂƚŝĐĐLJĐůŝĐ
LJŶĂŵŝĐĂŶĚĐůƵƐƚĞƌĞĚũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ LJŶĂŵŝĐĂŶĚŝŶĚŝǀŝĚƵĂůũŽď ĚŝƐƚƌŝďƵƚŝŽŶǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚĞƐƚŝŵĂƚŝŽŶ
^ƚĂƚŝĐũŽďĚŝƐƚƌŝďƵƚŝŽŶ ǁŝƚŚŽƵƚĞƐƚŝŵĂƚŝŽŶ
図 6.14: 実験結果(3/3) する.
^ǁĂƌŵ ZĞƉĂƐƚ 'D ƌƚŝƐŽĐ s^Ϯ ᡓᅜ
&t &h^
䝷䜲䝤䝷䝸ᆺ;>Ϳͬ
䜰䝥䝸䜿䞊䝅䝵䞁 ᆺ;Ϳ
> > > >
ၟ⏝;Ϳͬ䝣䝸䞊;&Ϳ
& & & ෆ〇 ෆ ෆ〇 ෆ ෆ 〇 〇 〇
䝋䞊䝇䝁䞊䝗
ᨵኚྍ⬟
䚽 䚽 䚽 㽢 㽢 䕿 䕿 䕿 䕿 䕿
㝵ᒙᵓ㐀⤌⧊䛾
䝃䝫䞊䝖