以下の内容はhttps://waregawa-log.hatenablog.com/entry/2019/07/07/113824より取得しました。


mesaによるマルチエージェントシミュレーション

Pythonで実装された、マルチエージェントシミュレーション用ライブラリの一つが「mesa」である。 普段お世話になっているこのライブラリの布教を目的に、鳥の行動モデルをmatplotlibで可視化した。

まとめ:可視化結果

https://github.com/estshorter/boid-model-visualization-matplotlib/raw/master/movie.gif

赤丸が鳥(エージェント)の位置を、破線が鳥同士の通信可能範囲を表している。 この範囲に入っている他の鳥の情報(位置・速度)と、自分の情報のみを考慮して、鳥は移動している。 簡単のため、領域の端と端が繋がっている設定にしている。 正直あまり鳥に見えないが、ご容赦いただきたい。

追記 (20/05/05)

mesaがcondaでインストールできるようになった。

conda install -c conda-forge mesa

でインストール可能。

可能な限りpkgs/mainのチャンネルを使いたい場合は、以下の記事を参照のこと。 waregawa-log.hatenablog.com

マルチエージェントシミュレーション

マルチエージェントシミュレーション(Multi Agent Simulation: MAS)の詳細な説明は以下のページなどに譲るが、 一言でいうと「意思決定をおこなうもの(エージェント)が複数存在する系のシミュレーション」である。 交通渋滞のシミュレーションなどが適用例として挙げられる。この場合、エージェントは車(の運転手)である。

http://mas.kke.co.jp/modules/tinyd4/index.php?id=16

qiita.com

mesa

MASのためのPythonライブラリの一つがmesaである。 オープンソースな上、簡単に使えるのでオススメ。 ソースコードの分量が少ないので、ライブラリ中でなにをやってるかすぐにわかるのもよい。

mesaのインストールは

pip install mesa

で可能。パッケージ管理にcondaを使っている場合には、mesa用の環境を作った後、

pip install mesa --no-deps

としてmesa単体のみをインストールし、依存パッケージはcondaで入れるとよい。

鳥の行動モデルの可視化

以下、mesaを使って鳥の行動モデルを可視化してみる。

鳥の行動モデル

鳥の行動モデルはボイドモデルとも呼ばれており、 エージェントが以下の3つのルールに従って移動するものである。

①衝突回避(Collision Avoidance):衝突しそうな他の鳥や物体がいたら衝突しないように離れるようにします。

②整列(Velocity Matching):近くにいる他の鳥と移動する速さと方向を合わせて動きを同じにします。

③接近(Flock Centering):群れからはぐれてしまわないように、鳥が多くいるほうに近づくようにします。

f:id:estshorter:20190706220750p:plain
鳥の行動モデルにおける3つのルール

以上の説明と画像は、下記より引用した。

http://mas.kke.co.jp/modules/tinyd4/index.php?id=7

鳥の行動モデルの実装はmesaのexampleで公開されており、 今回はこれを使用した。

可視化

可視化のためのソースコードを以下のリポジトリに置いた。 mesa、numpy、matplotlibがインストールされていれば動作するはず。

github.com

run.pyを実行すると、シミュレーション結果がmatplotlibによりリアルタイムに可視化される。可視化結果は最初に載せたとおりであり、generate_movie.pyはそのgif動画を作るためのファイルである。

なお、上述の通り、鳥の行動モデルの実装自体は流用した。 自分が書いたのは、可視化部分(model.pyの一部関数)、run.py、およびgenerate_movie.py である。 また、可視化を高速に行うため、グラフを差分更新している。 この詳細については以下の記事を参照されたい。 waregawa-log.hatenablog.com

参考

可視化結果の動画化については以下のページを参考にした。

FuncAnimationについての記事 qiita.com

Gifで保存するときの設定法についての記事 cartman0.hatenablog.com

mesaの使い方自体については、以下の公式チュートリアルがよくまとまっている。

Introductory Tutorial — Mesa .1 documentation




以上の内容はhttps://waregawa-log.hatenablog.com/entry/2019/07/07/113824より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14