レポート課題:シミュレーション学
講義のホームページはこちらです.
締め切り
8月8日の23:59まで。
概要
3つのoptionのうち、1つを選んで提出せよ。レポートはいかに創意工夫、 努力、考察したかで評価する。その努力の汗がひしひしと伝わってくるような レポートを提出して欲しい。
なお講義で説明したシミュレータのいくかは ここから入手できる。 そのほかのシミュレータについては 一般公開はしていないが、レポートの参考となる場合には ソースコードなどは提供可能である。 ただしそれらの多くはswarm に基づいている。興味ある場合は早めにコンタクトしてほしい。
Option A
性選択のシミュレーションを実験的に観測・検証してみよう。 論文にある以下のような実験を行うとよい。これは尾の長さの場合である。- 尾の長さだけに適応するニューラルネットワークの学習をする。 学習例には長いもの、短いものなどを与える。
- 学習されたニューラルネットワークに対して学習例を進化させる。 長いほど適合度を低くする。
- 学習が終わったら、ランダムに生成した学習例に対して認識率と適合度を評価する。本当に長い尾が進化するのか?
挑戦者であれば、対称性や色彩発現などを好む性選択を各自で工夫して試してみてほしい。たとえば、円形、特殊な幾何図形、変な形態などを好むような進化が起こるだろうか?
この授業での詳細説明は第5回講義の最初の部分(5分目くらいから)で説明している(性選択の詳細は第4回から)。
Hint0: 講義で最初に説明した論文は以下のものである。オスの適合度を工夫するとよい。
Hint1: 以下の論文が参照になる。
- Female preference for symmetrical males as a by-product of selection for mate recognition
- Symmetry, beauty and evolution
Hint2: 単純なANNでも十分だが、チャレンジングな場合にはCNN, AutoEncoderなどのdeep learningを用いて適当な素材をもとに実験してみると面白い。
Option B
GAの探索問題として、適当な例題を考えよ。 もし何もアイディアがないなら、講義で説明した、- ナップザック問題
- Nクィーン問題
- TSP問題
このとき、その問題に関して次の2つの異なったGAの性能を比較しなさい。
- 標準的なGA
- GAに性選択を導入したもの
GAに「性」を入れる方法はさまざまに考えられる。たとえば、Hint3の論文が参考になるが、かならずしもこれが最適ではない。各自で独自の工夫をするとポイントが高い。
Hint1: ナップザック問題の定義、計算量、ヒューリスティックの解説は ここにある。また、 解くべき例題については、 ここにあるベンチマークなどを利用するとよい。 とくにP07,P08を推奨する。
Hint2: GAによるTSPのコード・解説は ここにある。
Hint3: 例えば、GAに性選択を導入した論文は ここにある。ただしこの論文でのmatingにはpreferenceが考慮されていない(Figs.1-3)。この点でさらに拡張するとポイントが高い。
Option C
以下のような例題の中から1つを選んで、面白い 複雑系現象のシミュレーションプログラムを作成せよ。- 人流シミュレーション
- 緊急時の人の流れをシミュレーションして、隘路や障害物の危険度、扉の幅の影響などを実験的に観察する。
- 人流シミュレーション(情報処理、vol.58, no.7, 2017)
- 黄色ほこりカビによるcAMP螺旋
- 風紋のパターン(サルテーション)
- 「砂時計の7不思議」―粉粒体の動力学 (中公新書) 田口 善弘(著) :重いものがなぜ上に来るのか?
- 飛砂による地形の動力学 : 風紋と砂丘
- Grain size segregation and stratigraphy in aeolian ripples modelled with a cellular automaton
- Computer simulations of self-organized wind ripple patterns
- サンゴの成長モデル
- ミツバチ・コロニーの巣板パターン
- より実際的な形態のパターン形成
必ず複雑系のシミュレーションであり、かつ可視化を伴う実装であることが必須である。
いかに創意工夫したかによって評価する。Life Game, Boidのような余りに単純なものやサンプルの模倣は評価が低いので注意すること。
注意事項
以下のものを提出すること。- シミュレーションに関するドキュメント
- 1ページ目に必ず、名前、学籍番号、所属、学年 を記入すること。
- 実現したシミュレーションに関する説明(どの部分をどう創意工夫したかなど)。
- 実装法に関しての説明(ファイルのどの部分をどう変更したか? など)。
- ソースリストの簡単な説明(ソースコードにコメント付加するのでも良い)。
- 実験結果に関する簡単な考察(複雑系シミュレーションとしての意義など)。
- 授業に関するコメント、要望など(次回の参考にするので是非書いて下さい)。
- source code (こちらで実験を確認するので重要)
なお、レポート作成については、講義や教科書で説明しているSwarmシミュレータや、 その他のシミュレータを自分で作成・利用してもよい。
ただし、以下の点に留意すること。
- 可視化をともなう複雑系のシミュレーションであること(とくにOption Cのとき)
- できるだけ一般的なシミュレーションツール、もしくは実行環境であること
- こちらで確認ができるようにreportにおいて実行環境について十分丁寧に説明すること
提出方法
以下のものを提出すること。- プログラムを作成した場合、 実現したシステムに関する説明(どの部分をどう創意工夫したかなど)。さら にアルゴリズム、ソースリストの説明。
- 結果の表示(グラフなどを用いると分かりやすい)。
- 結果に関する考察と評価。
- 授業に関するコメント、要望など(次回の参考にするので是非書いて下さい)。
提出については、すべてのファイル(レポートドキュメント+ソースファイル+必要な実行環境・データなどをzipなどでまとめること)をICT-LMSの「シミュレーション学」の「課題提出」より行うこと。