• 検索結果がありません。

生物系シミュレーション

N/A
N/A
Protected

Academic year: 2021

シェア "生物系シミュレーション"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

ライフゲーム

~MATLAB実験~

2019年8月24日(土)12:50 ~ 14:30 静岡理工科大学 情報学部 コンピュータシステム学科 幸谷 智紀 (こうや とものり) https://cs-tklab.na-inet.jp/

(2)

本日のメニュー

1. 「MATLAB」と「生物系」

2. 離散系シミュレーション

3. MATLABの操作方法

(3)

1. 「MATLAB」と「生物系」

• 「MATLAB」(マトラボ,マトラブ)とは?

・・・40年以上の歴史ある統合型数値計算ソフト

ウェア。様々な方程式を解いたり,結果をグラフ化

したりできる。

• 「生物系」(Biological system)とは?

・・・一人では生きていけない生物の相互作用を表

現したもの。ここでは数学的に表現できるものだけ

を扱う。

(4)

2.離散系シミュレーション

• シミュレーション(simulation)とは?

• 離散(discrete) vs. 連続(continuous)

(5)

シミュレーション(simulation)とは?

• さまざまな現象をコンピュータ上で模擬的に再現

すること。

• 全ての現象をコンピュータが実行できる「計算」

として表現する必要がある。

↓なぜ?↓

• コンピュータ(ハードウェア)ができること

• [プログラム] メモリに置かれた手順書。「ソフトウェ ア」とも言う。 ↓プログラムに従って処理を実行 • [入力] データを読み込み,メモリに蓄える • [演算] メモリからデータを取得して計算(演算)を実行 し,結果をメモリに書き戻す • [出力] メモリにあるデータを人間が理解できる形でディ スプレイなどに表示 CPU メインメモリ RAM ディスプ レイ キーボード マウス 外部記憶 対人間 10進数 2進数 (bit列) 入力 出力 出力 演算

(6)

離散(discrete) vs. 連続(continuous)

• 離散・・・バラバラなイメージ

• コンピュータが扱えるのは離散

的なデータのみ

0

y

0

y

• 連続・・・滑らかに繋がっている

イメージ

• 理論的,かつ,理想的なもの。コ

ンピュータでは扱いづらい。

(7)

離散系シミュレーションの例・・・ライフゲーム

• 升目状に生物を配置

• 周りに適切な数の生物が存在していれば生 存 or 誕生 • 過密すぎると死亡 • 過疎過ぎても死亡

• 1ステージ毎に,周囲の生物数をカウン

トし,生存,誕生 or 死亡を判定し,次

のステージに進む

• 時間間隔が一定(離散的)なので,離散

系の生物シミュレーションの一種

• セル・オートマトンの原型

• 生物数をプロットしていくと,連続的に

変化しているように見えてくる

(8)

3. MATLABの操作方法

• 諸注意

• 実習終了まで,PCは起動したまま!(再起動するとファイル全消去) • トラブル時はTAに救助を求めて下さい。

以下は口頭で解説しながら実演します。

• コマンドウィンドウの使い方

• エディタの使い方

• 作成物の保存方法

(9)

4. ライフゲーム体験

• ライフゲーム(life game)の規則

• MATLABによるライフゲーム

• 有名なパターン

(10)

ライフゲーム(life game)の規則

• 平面に広がった升目に生物が存在しているとす

• 中心の升目を取り囲む8つの升目に存在してい

る生物数(n)によって,次のステージにおける中

心の升目の状態が変わる

• 中心に生物が存在している場合

• 2 ≦ n ≦ 3 → 生物は生存を続ける • n ≦ 1 → 過疎のため,生物は死亡(升目は空に) • n ≧ 4 → 過密のため,生物は死亡

• 中心が生物が存在していない場合

• n = 3 → 生物誕生(升目に生物が生成される) 中 心 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

(11)

手動計算によるライフゲーム

● ● ● 0 1 1 1 0 0 2 ① 2 0 0 3 ② 3 0 0 2 ① 2 0 0 1 1 1 0 ● ● ●

①盤面の端は無視(生物のい

ない壁とする)し,塗りつぶ

し部分を中心としたときの生

物数をカウントする。

②カウントした生物数に基づ

いて,次のステージの状態を

作る。

(12)

MATLABによるライフゲーム:

lifegame1.m

• ssh_lifegame1.mとしてスクリプトを生

成(右参照)

• 下記のようなウィンドウが開けば成功

% 初期設定 G = [ 0, 1, 0; 1, 0, 0; 1, 1, 1 ]; % 升目のサイズ n = 23; % 升目 X = sparse(n, n); % XにGをセット X(11:13, 11:13) = G; % 盤面描画 spy(X);

(13)

pause; % 一時停止 % Xの横サイズ( = n)を取得 sizeX = size(X, 1); % 壁面をつなげる p = [sizeX, 1:sizeX - 1]; q = [2:sizeX, 1]; % 周囲8マス分をカウント Y = X(:, p)+ X(:, q)+ X(p, :)+ X(q, :)+ X(p, p)+ X(q, q)+ X(p, q)+ X(q, p); % 周囲に2ないし3生物存在しているか? X = (X & (Y == 2)) | (Y == 3); % 状態プロット spy(X)

lifegame1.mの続き

(14)

ステージ数を増やす:lifegame2.m

• ssh_lifegame1.mをssh_lifegame2.mとして別名保存

• 上記のように下線部分のみ変更

• 1世代ごとに状態を見たい時にはpauseの前の%を外す

% メインループ for year = 1:100 % 周囲8マス分をカウント (同じ) % 周囲に2ないし3生物存在しているか? (同じ) % 状態プロット (同じ) drawnow; %pause; end % 周囲8マス分をカウント Y = X(:, p) + X(:, q) + X(p, :) + X(q, :) + X(p, p) + X(q, q) + X(p, q) + X(q, p); % 周囲に2ないし3生物存在してい るか? % → X(i, j)に生物を生成 or 生 存継続 X = (X & (Y == 2)) | (Y == 3); % 状態プロット spy(X)

(15)

有名なパターン

• 永久にそのまま:ブロック(block)

• 振動する:ブリンカー(blinker)

• 他のパターンを食べる:イーター(eater)

→ イーターの近くにブリンカーを配置すると?

● ● ● ● ● ● ● ● ● ● ● ● ● ●

(16)

大規模シミュレーション: ssh_lifegame3.m

(17)

lifegame3.m(1/2)

% 升目のサイズ n = 500; % 初期設定 initial_pattern = (rand(n, n) > 0.5); % 升目 X = sparse(n, n); % 初期状態を設定 X = initial_pattern; % 初期状態を表示 spy(X); pause; % 一時停止 % Xの横サイズ( = n)を取得 sizeX = size(X, 1); % 壁面をつなげる % p = sizeX, 1, 2, .., sizeX - 1 % q = 2, 3, ..., sizeX, 1 p = [sizeX, 1:sizeX - 1]; q = [2:sizeX, 1]; % 生物数を数える num = [];

(18)

% メインループ for year = 1:1000 num(year) = nnz(X); % 周囲8マス分をカウント Y = X(:, p)+X(:, q)+X(p, :)+X(q, :)+X(p, p)+X(q, q)+X(p, q)+X(q, p); % 周囲に2ないし3生物存在しているか? % → X(i, j)に生物を生成 or 生存継続 X = (X & (Y == 2)) | (Y == 3); % 状態プロット spy(X); drawnow; %pause; end plot(num);

lifegame3.m (2/2)

(19)

プログラムを変えてみましょう!

1. 初期設定を変えるとどうなるか?

% 初期設定 initial_pattern = (rand(n, n) > ここを0~1の間の数に設定);

2. ライフゲームの生存条件,死亡条件,誕生条件を変えるとど

うなるか?

X = (X & (Y == ここ)) | (Y == ここ);

3. 生物数をなるべく多く残すためにはどうすればいいか?

(20)

参考文献

• C.B.Moler, MATLABドキュメント

• https://jp.mathworks.com/help/distcomp/examples/stencil-operations-on-a-gpu_ja_JP.html • https://www.mathworks.com/content/dam/mathworks/mathworks-dot-com/moler/exm/chapters/life.pdf

• W.Poundstone, 有澤誠・訳「ライフゲイムの宇宙」日本評論社

参照

関連したドキュメント

うのも、それは現物を直接に示すことによってしか説明できないタイプの概念である上に、その現物というのが、

る、関与していることに伴う、または関与することとなる重大なリスクがある、と合理的に 判断される者を特定したリストを指します 51 。Entity

以上,本研究で対象とする比較的空気を多く 含む湿り蒸気の熱・物質移動の促進において,こ

以上のことから,心情の発現の機能を「創造的感性」による宗獅勺感情の表現であると

世界的流行である以上、何をもって感染終息と判断するのか、現時点では予測がつかないと思われます。時限的、特例的措置とされても、かなりの長期間にわたり

・蹴り糸の高さを 40cm 以上に設定する ことで、ウリ坊 ※ やタヌキ等の中型動物

関西学院大学には、スポーツ系、文化系のさまざまな課

Power Platform とは Power Apps、Power BI、Power Automate を合わせた製品群です。ビジネス ニーズに応じてさまざまなアプ リをカスタマイズ、拡張、構築することで、Office