マルチエージェントシステム M A S シミュレーション                        に関する関心事                         - 思いつきと使えそうな技術 -                      ...
アジェンダ● MASシミュレーションとは?● 高速なシミュレーションを目指して ○ 並列計算   ■ Go言語:ゴールーチンとチャネル   ■ Map Reduceアルゴリズム ○ データ構造   ■ 四分木を使った近傍探索● ビジュアライゼー...
MASシミュレーション
マルチエージェントシステム● エージェント ○ 自律的に動くプログラム ○ 中央集権的ではない処理の単位● マルチエージェントシステム(MAS) ○ エージェントが相互に影響し合うシステム ○ 仮想空間において近傍のエージェントと何らかの相互作...
有名なシミュレータ● Swarm  ○ 開発  :サンタフェ研究所  ○ 使用言語:Objective-C, Java + tcl/tk  ○ 特徴    ■ 非常に柔軟なシミュレーションができる● Artisoc  ○ 開発:構造計画研究所 ...
本研究室が開発したシミュレータ● TOMAS  ○ 使用言語:Java  ○ 特徴    ■ 若干遅い● Percy1  ○ 使用言語:Java  ○ 特徴    ■ TOMASの改良版● Percy2  ○ 使用言語:Java  ○ 特徴  ...
シミュレータに求めること● 大規模なシミュレーション ○ 実行速度   ■ 1ステップの差はあまりなくても、ステップ数が多いと     すぐに実行時間がふくれあがる ○ 複数のコンピュータを使った処理   ■ 1つのシミュレーションを分割したい...
高度なシミュレーションを目指      して
MASシミュレーションと並列処理● エージェントは自律的に動く ○ 同期的に動く必要がない ≠ セルオートマトン ○ あるエージェントの1ステップに関連するものは   ■ 前のステップの自分の状態   ■ 前のステップの周囲(影響のあるエージェ...
どんな方法があるのか?● いろいろある ○ スレッド、グリッドコンピューティング、.....● 手軽にできる事が知りたい! ○ Go言語   ■ ゴールーチンとチャネル ○ Map Reduce
Go言語の並列プログラミング-ゴールーチン-● 軽量のスレッドに似たゴールーチンというものが  ある● 予約語goを付けて関数を呼び出す  ○ 別のゴールーチンで動作する[Sample]// 別のゴールーチンでgo something()//す...
Go言語の並列プログラミング-チャネル-● ゴールーチンとやり取りするための仕組み     ○ ゴールーチンとゴールーチンを繋ぐパイプのようなも        の!     ○ やり取りする値の型を持つ     ○ 安全にやりとりできる![Sa...
Map Reduceアルゴリズム● Googleの検索を支えてるアルゴリズム● 大きなデータを並列に処理する為のアルゴリズ  ム● 処理をMapとReduceに分け行なう● Hadoopなどを使って実装する                   ...
Map ReduceとMASシミュレーション● Map処理 ○ エージェントと影響のあるエージェントの塊に分割する ○ <A, <B, C>>   ■ エージェントAと影響のあるエージェントBとC● Reduce処理 ○ Map処理で分割した単...
四分木● 二次元空間を再帰的に4分割し、木で表す事  で、効率的に空間上の物体の当たり判定などを  行なうデータ構造● 全探索するより効率的⇒近傍のエージェントを探すのに使える!           http://marupeke296.com...
ビジュアライゼーション
ビジュアライゼーション● せっかくシミュレーションしても視覚的に  分かりづらいと意味がない● データが表す本質をうまく視覚化しなく  てはならない  ○ エージェントの視覚化  ○ 統計データの視覚化
Webを使ったビジュアライゼーション● 画像やムービは手軽にできるが ○ インタラクティブな効果は入れられない● Webの技術を使えば、インタラクティブな視覚化  が行なえる ○ d3js ○ svg ○ canvas● 言語に依存したUIでは...
d3js● データドリブンな視覚化を行なうための  Javascriptのライブラリ● チャートやグラフ(ネットワーク)などの表現だけ  ではなく、色々な表現が行なえる● SVGなどWeb標準のフォーマットで描画● インタラクティブな効果を入れ...
Java FX 2● Javaの新しいGUIライブラリ  ○ データバインディング    ■ 値の変更を他のデータ構造に伝える事が可能    ■ エージェントの状態に合わせて、色を変えたりすること      が簡単にできる  ○ シーングラフ ...
Upcoming SlideShare
Loading in...5
×

Masシミュレーションに関する関心事@第65回 ca masゼミ

656

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
656
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Masシミュレーションに関する関心事@第65回 ca masゼミ

  1. 1. マルチエージェントシステム M A S シミュレーション に関する関心事 - 思いつきと使えそうな技術 - 2012/10/18(Thu) 第65回 CA/MASゼミ @システム科学研究室 豊橋技術科学大学大学院 電子・情報工学専攻 3年 上田拓也@tenntennhttp://u.hinoichi.net
  2. 2. アジェンダ● MASシミュレーションとは?● 高速なシミュレーションを目指して ○ 並列計算 ■ Go言語:ゴールーチンとチャネル ■ Map Reduceアルゴリズム ○ データ構造 ■ 四分木を使った近傍探索● ビジュアライゼーション ○ d3js ○ JavaFX
  3. 3. MASシミュレーション
  4. 4. マルチエージェントシステム● エージェント ○ 自律的に動くプログラム ○ 中央集権的ではない処理の単位● マルチエージェントシステム(MAS) ○ エージェントが相互に影響し合うシステム ○ 仮想空間において近傍のエージェントと何らかの相互作 用を行なう● MASシミュレーション ○ MASのシミュレーションをコンピュータ上で行なう
  5. 5. 有名なシミュレータ● Swarm ○ 開発  :サンタフェ研究所 ○ 使用言語:Objective-C, Java + tcl/tk ○ 特徴 ■ 非常に柔軟なシミュレーションができる● Artisoc ○ 開発:構造計画研究所 ○ 使用言語:VBライクなスクリプト + GUI ○ 特徴 ■ GUIを使ってサクサク作れる
  6. 6. 本研究室が開発したシミュレータ● TOMAS ○ 使用言語:Java ○ 特徴 ■ 若干遅い● Percy1 ○ 使用言語:Java ○ 特徴 ■ TOMASの改良版● Percy2 ○ 使用言語:Java ○ 特徴 ■ TOMASライクな部分を捨て、Swarmに近い
  7. 7. シミュレータに求めること● 大規模なシミュレーション ○ 実行速度 ■ 1ステップの差はあまりなくても、ステップ数が多いと すぐに実行時間がふくれあがる ○ 複数のコンピュータを使った処理 ■ 1つのシミュレーションを分割したい ○ 効率のいいデータ構造 ■ 効果的なデータ構造を使えば処理速度も上がる● ビジュアライゼーション(視覚化) ○ データの効果的な視覚化 ■ 出力されたデータを効果的に視覚化 ■ インタラクティブなメディアを使用したい
  8. 8. 高度なシミュレーションを目指 して
  9. 9. MASシミュレーションと並列処理● エージェントは自律的に動く ○ 同期的に動く必要がない ≠ セルオートマトン ○ あるエージェントの1ステップに関連するものは ■ 前のステップの自分の状態 ■ 前のステップの周囲(影響のあるエージェント) のみである(基本的には)。 ⇒ 並列処理が向いている!
  10. 10. どんな方法があるのか?● いろいろある ○ スレッド、グリッドコンピューティング、.....● 手軽にできる事が知りたい! ○ Go言語 ■ ゴールーチンとチャネル ○ Map Reduce
  11. 11. Go言語の並列プログラミング-ゴールーチン-● 軽量のスレッドに似たゴールーチンというものが ある● 予約語goを付けて関数を呼び出す ○ 別のゴールーチンで動作する[Sample]// 別のゴールーチンでgo something()//すぐにここに来る
  12. 12. Go言語の並列プログラミング-チャネル-● ゴールーチンとやり取りするための仕組み ○ ゴールーチンとゴールーチンを繋ぐパイプのようなも の! ○ やり取りする値の型を持つ ○ 安全にやりとりできる![Sample] Godone := make(chan bool)go func() { main true sub for i := 0; i < 1000000; i++{} done <- true // チャネルで送る}()<- done // 終わるまで待つ 安全ですね!
  13. 13. Map Reduceアルゴリズム● Googleの検索を支えてるアルゴリズム● 大きなデータを並列に処理する為のアルゴリズ ム● 処理をMapとReduceに分け行なう● Hadoopなどを使って実装する hoge 1 foo 1 hoge 1,1,1 foo 1,1 hoge 3hoge map foo 2foo hoge 1 output bar 1 reducehoge mapbar reduce outputhogefoo map hoge 1 bar 1 foo 1 bar 1 参考:http://www.slideshare.net/n3104/mapreduce-7587216
  14. 14. Map ReduceとMASシミュレーション● Map処理 ○ エージェントと影響のあるエージェントの塊に分割する ○ <A, <B, C>> ■ エージェントAと影響のあるエージェントBとC● Reduce処理 ○ Map処理で分割した単位を振り分け、エージェントに行 動させる⇒効果的なのかは知りません!
  15. 15. 四分木● 二次元空間を再帰的に4分割し、木で表す事 で、効率的に空間上の物体の当たり判定などを 行なうデータ構造● 全探索するより効率的⇒近傍のエージェントを探すのに使える! http://marupeke296.com/COL_2D_No8_QuadTree.html
  16. 16. ビジュアライゼーション
  17. 17. ビジュアライゼーション● せっかくシミュレーションしても視覚的に 分かりづらいと意味がない● データが表す本質をうまく視覚化しなく てはならない ○ エージェントの視覚化 ○ 統計データの視覚化
  18. 18. Webを使ったビジュアライゼーション● 画像やムービは手軽にできるが ○ インタラクティブな効果は入れられない● Webの技術を使えば、インタラクティブな視覚化 が行なえる ○ d3js ○ svg ○ canvas● 言語に依存したUIではない ○ 処理とUIの切り分けが可能 ■ 処理はGo言語 ■ UIはHTML+CSS+JS
  19. 19. d3js● データドリブンな視覚化を行なうための Javascriptのライブラリ● チャートやグラフ(ネットワーク)などの表現だけ ではなく、色々な表現が行なえる● SVGなどWeb標準のフォーマットで描画● インタラクティブな効果を入れれる● ギャラリーを見るのが一番いい ○ https://github. com/mbostock/d3/wiki/Gallery
  20. 20. Java FX 2● Javaの新しいGUIライブラリ ○ データバインディング ■ 値の変更を他のデータ構造に伝える事が可能 ■ エージェントの状態に合わせて、色を変えたりすること が簡単にできる ○ シーングラフ ■ UIコンポーネントをグラフで表すことで、簡潔に表すこ とができる ■ 円などの図形もUIコンポーネントとして扱われる ⇒  直接イベントが埋め込めれる! ○ チャート ■ 円グラフ、折れ線グラフ... ○ デモ見た方がいい! ■ http://www.oracle.com/technetwork/java/javafx/overview/index.html
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×