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