240 likes | 396 Views
シミュレーション論 Ⅱ 第7回. マルチエージェント・シミュレーション(2). 第6回のレポート解答例. マルチエージェント・シミュレーションの特徴+利点をまとめ、3点以上述べてください (1) 特徴:比較的単純な要素+局所的相互作用によるモデル化 利点:プログラミングが単純で明確、要素数の増減や相互作用の追加・変更が容易 (2) 特徴:全体的な挙動の一括した記述や大域的制御の不要なボトムアップ的モデル 利点:トップダウン的モデルに比べてモデルの記述や制御が容易 (3) 特徴:個体差、エージェントの異種性の導入が容易
E N D
シミュレーション論 Ⅱ第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」を選択 • 「セキュリティ」をクリックして「セキュリティレベル」を「中」にしておく • 「コントロール ツールボックス」ボタンを押す
ライフゲームの作成(6) • ツールボックスの「コマンドボタン」をクリックし、適当な位置に貼り付ける
ライフゲームの作成(7) • コマンドボタンを右クリックし、「プロパティ」を選ぶ • (オブジェクト名)を「更新ボタン」、Captionを「更新」とする(できたらプロパティは閉じる)
ライフゲームの作成(8) • 「Visual Basic」ツールバーの赤丸を押し、操作の記録をおこなう(マクロの記録) • 「マクロ名」は「更新」とする • 「右枠内全て(X2~AQ21)をコピー」→「B2セルを右クリック」→「形式を選択して貼り付け」→「値」→「X1セルをクリック」 • 以上ができたら四角い停止ボタンを押して記録を終了する
ライフゲームの作成(9) • 「Visual Basic」ツールバーの「デザインモード」ボタンが押されていることを確認し、コマンドボタン(更新ボタン)をダブルクリックする • 空白になっている「End Sub」の前に「更新」と記入 デザインモード ボタン
ライフゲームの作成(10) • デザインモードのウインドウを閉じ、Visual Basicツールバーの「デザインモード」ボタンを押して終了させる • 左枠の適当な位置に「1」をいくつか入力し、「更新」ボタンを押して動くかどうか確認してみよう
ライフゲームの作成(11) • 左枠内を選択し、「書式」→「条件付き書式」でセルに色をつける • フォントの色とセルのパターンを「0」のとき白、「1」のとき青とする 左枠内を選択し、「書式」→「条件付き書式」でセルに色をつける フォントの色とセルのパターンを「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次元セルオートマトンを利用したシミュレーションをおこなうなら、どのようなものをやってみたいか、概要を記述してください