PPTファイル

シミュレーション論 Ⅱ
第7回
マルチエージェント・シミュレーション(2)
第6回のレポート解答例

マルチエージェント・シミュレーションの特徴+利点をまとめ、3点以上
述べてください
(1)
特徴:比較的単純な要素+局所的相互作用によるモデル化
利点:プログラミングが単純で明確、要素数の増減や相互作用の追加・
変更が容易
(2)
特徴:全体的な挙動の一括した記述や大域的制御の不要なボトムアップ
的モデル
利点:トップダウン的モデルに比べてモデルの記述や制御が容易
(3)
特徴:個体差、エージェントの異種性の導入が容易
利点:モデルの複雑な拡張が可能、現象の複雑さの要因を解析できる
今回の内容

マルチエージェント・シミュレーションの一例として、ごく簡
単な「マクロ」を用いた2次元セルオートマトンの作成をお
こなう
Excelによるライフゲームの作成

Excelを用いて、2次元セルオートマトンの代表例で
ある「ライフゲーム」を作成する
ライフゲームの概要



各セルには「生」「死」の2状態がある
各セルは自分と周囲の計9セルの状態によって生死が決定
される
生死のルール:
誕生
– 死んでいるセルの周囲に3つの生きているセルが
あれば次の世代では生きる(誕生する)。
維持
– 生きているセルの周囲に2つか3つの生きている
セルがあれば次の世代でも生き残る。
死亡
– 上以外の場合には次の世代では死ぬ。
ライフゲームの作成(1)

Excelの全てのセルを選択し、「書式」→「列」→「幅」
で「2」とする(正方形のセルを作る)
ライフゲームの作成(2)

B2~U21、X2~AQ21に20×20の枠を作成し、
左側の枠に全て「0」を入力する
ライフゲームの作成(3)




右側の枠に左側の枠の次ステップの状態を記述する
0を死、1を生とし、ルールに従って生死を決定する
X2セルに以下のように入力する
=IF(SUM(A1:C3)=3,1,IF(AND(B2=1,SUM(A1:C3)=4),1,0))
自分と周囲の計9セルで3セル生きていれば生、自分
が生で周囲9セルで4セル生きていれば生、それ以外
は死
ライフゲームの作成(4)


入力できたら右側の枠内全てにドラッグでコピー
枠線をコピーしたくないときは右下に出るボックスを
クリックして「書式なしコピー」を選ぶとよい
ライフゲームの作成(5)






「マクロ」を用いて更新作業をおこなう
左枠の状態から次ステップの状態を右枠で計算→
左枠へコピー
この操作をマクロによって自動化する
「表示」→「ツールバー」→「Visual Basic」を選択
「セキュリティ」をクリックして「セキュリティレベル」を
「中」にしておく
「コントロール ツールボックス」ボタンを押す
参考:Excel2007の場合


Excel2007を利用している場合は、左上のOfficeボ
タンから「Excelのオプション」→「基本設定」を選び、
「[開発]タブをリボンに表示する」にチェックを入れる
開発タブが表示されるので、「挿入」から「フォーム
コントロール」でボタンを設置し、「記録」ボタンでマ
クロの記録・登録をおこなう
ライフゲームの作成(6)

ツールボックスの「コマンドボタン」をクリックし、適
当な位置に貼り付ける
ライフゲームの作成(7)


コマンドボタンを右クリックし、「プロパティ」を選ぶ
(オブジェクト名)を「更新ボタン」、Captionを「更新」
とする(できたらプロパティは閉じる)
ライフゲームの作成(8)




「Visual Basic」ツールバーの赤丸を押し、操作の記録をおこ
なう(マクロの記録)
「マクロ名」は「更新」とする
「右枠内全て(X2~AQ21)をコピー」→「B2セルを右クリック」
→「形式を選択して貼り付け」→「値」→「X1セルをクリック」
以上ができたら四角い停止ボタンを押して記録を終了する
ライフゲームの作成(9)


「Visual Basic」ツールバーの「デザインモード」ボタ
ンが押されていることを確認し、コマンドボタン(更
新ボタン)をダブルクリックする
空白になっている「End Sub」の前に「更新」と記入
デザインモード
ボタン
ライフゲームの作成(10)


デザインモードのウインドウを閉じ、Visual Basic
ツールバーの「デザインモード」ボタンを押して終了
させる
左枠の適当な位置に「1」をいくつか入力し、「更新」
ボタンを押して動くかどうか確認してみよう
ライフゲームの作成(11)


左枠内を選択し、「書式」→「条件付き書式」でセル
に色をつける
フォントの色とセルのパターンを「0」のとき白、「1」
のとき青とする
ライフゲームの作成(12)


コントロールツールバー
から「コマンドボタン」を選
び、もう1つボタンを作成
する
右クリック→「プロパティ」
とし、 (オブジェクト名)を
「クリアボタン」、Captionを
「クリア」とする(できたら
プロパティは閉じる)
ライフゲームの作成(13)


「Visual Basic」ツールバーの「デザインモード」ボタ
ンが押されていることを確認し、クリアボタンをダブ
ルクリックする
空白になっている「End Sub」の前に「クリア」と記入
ライフゲームの作成(14)


ウインドウ左側の「標準モジュール」をダブルクリックし、「Module 1」をダ
ブルクリックして開く
既にある「End Sub」の後に以下のように書く
Sub クリア()
Range(“B2:U21") = 0
End Sub
ライフゲームの作成(15)


デザインモードのウインドウを閉じ、Visual Basic
ツールバーの「デザインモード」ボタンを押して終了
させる
左枠の適当な位置に「1」をいくつか入力し、「クリ
ア」ボタンを押して全て「0」に戻るか試してみよう
ライフゲームの作成(16)


以上でほぼ完成
適当に1を入力し、更新ボタンを何度か押して実行
してみよう
様々な初期値で試してみよう

以下のような初期値で試してみよう
参考:製品普及モデル

ライフゲームのシミュレーションを修正し、2種類の製品普及
モデルも作成できる
(X2セル)=IF(AND(COUNTIF(A1:C3,1)<3,COUNTIF(A1:C3,2)<3),0,
IF(COUNTIF(A1:C3,1)>COUNTIF(A1:C3,2),1,
IF(COUNTIF(A1:C3,1)<COUNTIF(A1:C3,2),2,
RANDBETWEEN(1,2))))
第7回のレポート

2次元セルオートマトンを利用したシミュレーションをおこな
うなら、どのようなものをやってみたいか、概要を記述してく
ださい