東洋大学 情報処理応用実習C講義資料

進化ゲームのシミュレーション

1997.10.27(c)旭貴朗


      目次
講義要項
初日資料
第1章 Macintoshの基礎
第2章 HyperCardの基礎
第3章 動点の描画法(HyperTalk)
第4章 集団生物学(タカハトゲーム)
第5章 じゃんけんゲーム
第6章 進化経済学(2産業2技能社会)


講義要項

情報処理応用実習C[白山]      副題:教育用シミュレーションの作成
講義内容
 「経営工学」という講義や「システム理論」に関係するテーマを中心にして,シミュレーションを作成する.シミュレーションとは,現実のシステム,あるいは将来構築しようとするシステムのモデルを作成して,コンピュータに実験や数値計算を行なわせ,そのシステムのダイナミックな特性を把握する方法である.把握された特性は,システムの分析や意思決定に役立つことになる.
 今年度は,進化ゲームに関連した概念や例題をコンピュータ上で再現する.たとえばタカとハトから成る集団が,限られたエサを求めて闘争し,人口分布が変化するようすをシミュレートする.最終的には,「教育用ソフトウエアとして利用できるようなレベルのシミュレーションの作成」を目標としたい.
 実習で使用するコンピュータはMacintoshである.使用するソフトはHyperCardというカード型マルチメディアソフトである.これをプログラミングする言語はHyperTalkというものである.過去になんらかの計算機言語(C言語,FORTRANやCOBOLなど)を履修済みの学生が望ましい.
 本学にはMacintoshの設置台数が少ないので,希望者が多いときには初日にクジ引きまたは面接を行なう.昨年は6名が限度であった.

年間スケジュール
 前期:HyperCardの基礎,HyperTalkの基礎,
    微分方程式の近似,タカハトゲーム.
 後期:3変数状態遷移図の描画,
    2技能2産業社会のシミュレーション.

指導方法
 授業で各種概念を解説し,皆で作成するプログラムの計画を討論する.講義や討論は指定された講義室で行なう.その後は課題を与えるので,ただひたすらマニュアルをみてプログラミングすることになる.プログラミングは経営学部GATS 実験室(12階)を使用する.宿題の提出はインターネットの電子メールでも受け付ける.
 授業時間外に作業や勉強をすることになるので,こういうことが好きな学生に受講してもらいたい.プログラミング経験に応じて課題レベルを調節するつもりである.

成績評価
 複数の課題の達成レベルで成績評価をおこなう.音声や動画を利用するなど,見た目のおもしろさや,デザインセンスも成績に加味する.教育用ソフトウエアとして利用できるような優秀な作品はインターネットで公開したい.

テキスト
 『HyperCard入門』といった名称で,HyperCardソフトを解説した,市販の書籍を各自で購入すること.HyperCard付属のマニュアルもある.
HyperTalk言語については,HyperCard付属のマニュアルがあるが,授業でも必要な部分を解説する.


初日資料

準備:初日用フロッピィー6枚作成
資料:講義要覧,資料「初日:dy/dtのグラフ」

1.授業説明
概要:講義要覧
こんなプログラムを作る:資料「dy/dtのグラフ(初日用簡略版)」
学習目標:宿題例

2.抽選会 6名まで受講可能

3.当選者はフロピィーディスク購入せよ.→初日用フロッピィーと交換する

4.次回は教室にて 第1章 Macintosh操作法を講議する。


第1章 Macintoshの基礎

 本日は講義.しかし,来週はGATS実験室で実習.

1. パソコンを動かす前に知っておくこと。
(1)マウスの使い方
1)マッキントッシュのマウスの特徴
 他のパソコンのマウスと違い、ボタンは1つだけしかない。
2)ドラッグ、ドロップ、ダブルクリック
 文字入力以外の操作の多くはマウスで行う。そのため、以下のような使い方をマスターしなければ、マックは使えない。
・ドラッグ :ボタンを押したまま持ち運ぶようにアイコンやファイルを動かす。
・ドロップ :ドラッグしたアイコンやファイルを落とす。ボタンを放せば良い。
・ダブルクリック:主に実行するときに使うやり方。目的のアイコンの上に「マウスの矢印(カーソル)」を持ってきて、連続で「カチカチッ」っと2回、すばやくボタンを押す。
・クリック :1回だけボタンを押す。

例: アプリケーションプログラムの起動はダブルクリック。
 ファイルを消すとき:消したいファイルをドラッグして、「ゴミ箱」にドロップする。

※以上のようなマウスの使い方は、ファイル操作だけのものではない。例えばワープロ使用中に、文字の切りとり、張り付けを行う際にも以上のような操作で行う。文書のなかのある範囲(部分)を指定したいときはドラッグすることになる。

(3)電源投入とシステム終了
 Macintoshは背面または側面に電源スイッチがありますが、それとは別にキーボード上にもスイッチがあります。Macintoshは,ふつうキーボード上のスイッチで電源をいれます.
1)パソコンの起動方法
 キーボード上の起動スイッチを押す。起動スイッチは、長方形の中に矢印(三角形)が書いてあるキーのこと。ディスプレイの電源も同時に入る。
2)終了方法(電源を切る)
 画面上部に表示されている「特別」メニューをドラッグして「終了」を選択すると電源が切れる。キーボード上の起動スイッチを押しても終了する機種がある。

(4)ファイル操作
1)ファイルとフォルダ
・ファイル:データやプログラムのひとまとまりのことで名前をつけて保存したもの。見かけは(画面上では)アイコン(2センチ四方の図柄)になっている。パソコンを起動するといくつかのアイコンが画面にあるのが見えるはず。
・フォルダ:いくつかの文書ファイルやプログラム(つまりファイル)をまとめて袋に入れたいとき、その袋に相当するもの。袋の中に、さらに袋をつくってゆくことができる。フォルダの中に何が入っているのかを見たいときは、目的のフォルダの上でダブルクリックする。つまり画面上の矢印を(マウスを動かして)目的のフォルダの上に持ってゆき、2回クリックする。

2)ファイルの複製 duplicate
ファイルを複製する手順
・目的のファイルをクリックして白黒反転させる。ダブルクリックではない。
・画面上部にある「ファイルメニュー」をドラッグして「複製」を実行する。

3)複製とコピーは違う
 Macintoshでは,ファイル複製することをコピーcopyとは言わないので注意する。
・複製:同じものをもう1つ作ること。
・コピー:クリップボードという一時的な隠れた場所に複写すること。クリップボードから取ってくるときは、ペーストpasteという機能を使う。

(5)システムフォルダ
 システム全体を動かすプログラムが多数はいっている所。当然消してはいけない。もしも消すとパソコンが動かなくなります。それでも誤って消去したときは、再び最初から全プログラムをインストールすればよい。個人使用のパソコンなら他人には迷惑がかからないし、インストールもマニュアル通りやれば簡単です。

2.アプリケーションプログラム

 ワープロや表計算などの市販ソフトは,通常アプリケーションと呼ばれます.アプリケーションプログラムを起動するには、そのアイコンの上でダブルクリックします。

(1)われわれが使うアプリケーションプログラム
HyperCard:マルチメディアソフト(絵や音や文書を扱える。プログラムもできる)。これで絵の書き方の練習ができます。ハイパーカードには、ガイドツアーがついています。クリックしてゆくとマルチメディアソフトの概要が分かります。
(2)動かなくなったとき
 アプリケーションを動かしているとき,突然画面がフリーズして,何も入力を受け付けなくなったとき,どうするか.もしもアプリケーションがワープロならば,約20分以内のそれまで入力した文章は,あきらめるしかありません.その場合でも,つぎの手順をおすすめします.
・(apple)+(option)+(esc)の3つのキーを同時に押すと,アプリケーション強制終了画面になるのでOKボタンを押す.しかし,電源が切れるわけではなく,通常画面(デスクトップ)に戻るので,すぐにそのアプリケーションを再開することができる.
・それでもダメなら,(apple)+(control)+(△)の3つのキーを同時に押すと,強制的に電源が切れ,再び電源が入る.
・さらにそれでもダメなら,手動で本体背面の主電源スイッチを切る.

3.動かしてみよう(たぶん,ここから第3日目,GATS実験室にて)

ハードウエアの電源投入→しばらくして,デスクトップ画面になる.
             上端が「メニューバー」
初日フロッピィーを挿入→フロッピィーアイコンがでる.
フロッピィーアイコンをダブルクリック→旭ゼミ専用フォルダーが見える
旭ゼミ専用フォルダーをダブルクリック
 →初日stack,ハイパーカード基礎stack,J-dtGraphのstackが見える.
初日stackをダブルクリック→HyperCardが起動される.
  スタートボタンをクリックしてみよう.
ファイルメニューの終了を選択する→HyperCardが終了する,デスクトップに戻る
ハイパーカード基礎stackをダブルクリック→HyperCardが起動される.
  いろいろなボタンをクリックしてみよう.
  1)ハイパーカードとは,
  2)ハイパーカードヘルプ,
  3)ハイパートークレファレンス.
ファイルメニューの終了を選択する→HyperCardが終了する,デスクトップに戻る
特別メニューの終了を選択する→Macintoshが終了する.電源が切れる.



第2章 ハイパーカードの基礎         (講義)

2.1 プログラム
本体(ワープロや言語ソフト)+ユーザー作成データ(レポートやプログラム)
と同じように,
本体(HyperCard)+ユーザー作成データ(stack)
stack = 複数のカード
card = バックグラウンド(bg),カードレイヤー(cd)
特徴:ワープロではテキスト主体だが,HyperCardではPicture主体

2.動かし方
(1)ユーザーレベルはスクリプティングにする
(2)最初の一歩は2種類ある.
1)新規スタックを作る.
 ファイルメニューの「新規スタック」を選択し,名前をつける.
 白紙カードが1枚できる.
2)すでに存在し,自分が作りたいものに似ているスタックを「複製」する.
 一旦,HCを終了し,デスクトップ画面上で複製する.名前をつけること.
(3)練習せよ.
 配布した初日フロッピィーの「J-dtGraph」stackを複製して,それを「練習用」という名称に変更し,触る.修正する.

3.部品の作り方
オブジェクトメニューのなかにある「新規フィールド」や「新規ボタン」を選択する.
フィールドやボタンはオブジェクトです.
 →サイズや位置を変更できる.
フィールドに文字を入れるには,
 ツールメニューのハンドアイコンをクリックしてから,そこに入れる.
ボタンの中にプログラムを書き込むには,
 ツールメニューのボタンアイコンをクリックしてから,そのボタンをダブルクリックし,さらに「スクリプト」を選択する.すると,スクリプトエディッターになる.プログラムが書ける.

3.ツールメニュー
 切り離し可能なポップダウンメニューのこと,ツールパレットができる.
1)ツールパレットの機能
□□□
□□□
□□□
□□□
図 ツールパレット

2)直線の描き方

1)人間がマウスをつかって描く方法
 ツールパレットの中のlineツールを選択する.開始点にカーソルをあわせ,マウスボタンを押し下げ,そのままドラッグして,終点でマウスボタンを離す.
2)プログラムに直線を描かせる方法
 choose line tool
 drag from 開始点座標 to 終点座標
 choose browse tool

4.練習 「練習用」stackでツールをいろいろ触って使って,絵を描いたり,フィールドを作ったりしてみよ.


第3章 動点の描画法      (講義)

 初日資料「dy/dt = 2tのグラフ」を解説することにより,
 HyperTalk言語の仕様を理解する.

3.1 微分とは何か
 微分とは,1)変化の割合を意味し,2)グラフの接線の傾きである.
 dy/dt = f(t)について考える.

1)dy/dt =一定 なら定率でyが変化する. 例:dy/dt = 5  図:/
2)dy/dt = 2t なら,t =0でdy/dt =0,t =1でdy/dt =2,t =2でdy/dt =4 と変化する.
 これは,実はy = t^2 を微分したもの. 図:∪

3.2 1変数動点の近似

 dy/dt = f(t)で表現される関数y(t)のグラフの近似について考える.
1)考え方
 仮にf(t)が1秒間一定なら,仮想位置はy(t)→y(t)+f(t),しかし,本当は変化している.そこで,十分小さな時間Δtで近似したい.Δt秒後の位置をつぎのように近似する.
    y( t +Δt) = y(t) +Δt・f(t)
これは,Δt:(1-Δt)の内分点.

2)プログラム例:dy/dt = 2t , y(0) = 0 のとき,
Δt ← 0.01  --近似幅
t  ← 0
y ← 0
repeat 1000       -- 適当な回数
 y1 ← y + Δt*2*t   -- y( t +Δt) = y(t) +Δt・f(t)
 t1 ← t + Δt     -- 次の時刻
「描画 from t,y to t1,y1」  -- 2.3節参照
 y ← y1
 t ← t1
end repeat
 このプログラムでは,右図のように動いて行く.

3.3「スタート」ボタンの内容

1)ボタンの中にプログラムを書き込むには,
 ツールメニューのボタンアイコンをクリックしてから,そのボタンをダブルクリックし,さらに「スクリプト」を選択する.すると,スクリプトエディッターになり,プログラム(スクリプトという)が書ける.

2)例:初日stackの「スタートボタン」
on mouseUp
 スクリプト本体
end mouseUp

3.4 描画のための画面座標 (たぶん,ここから翌週になる)
□□□□□□
□□□□□□
□□□□□□
よこ430ピクセル,たて340ピクセル.ただし,たては下向きになっている.
しかも,整数でなくてはならない.→round( x) 小数点以下を5捨6入する
したがって,
X = aX +oldT
Y = aY +round(oldY/100)
となっている.

3.5 ボタンが動く

1)オフジェクト(フィールドやボタン)の名称
絶対番号 button id 5  (自動的につく)
相対番号 button 7   (自動的につく)
ユーザー指定名称 例:ロケット
 ボタンツールを選択し,望みのボタン上でダブルクリックする.
2)オブジェクトの移動
set the location of button 番号/名称 to 画面座標
略記法 set loc of btn id 18 to nX,nY
3)初日stackでは,じつはサイコロアイコンなのだがサイズを小さくしている.


宿題1 (J-dtGraphの4ページみよ)
(問1) Δtの値とy(0)の値を自在に変化させたい.そこで,
1)2つのフィールドをつくる.名付ける.
2)「スタート」ボタンのscript内容に,それらのフィールドの中の数値を取り込む.
ヒント:put card field "delta" to e
略記法:put cd fld "delta" to e

(問2) 真のy = t^2 +1 のグラフをプログラムで描け.
1)「スタート」ボタンを複製し,「正確なグラフ」ボタンを作る.
2)スクリプトを修正する.
ヒント:tに数値を代入して行く,(t, t^2)のグラフを描く.

(提出方法)電子メールで提出せよ

Eudoraを起動する.
メールメニューの「新規メール作成」を選択する.
宛先To:asahi@mng.toyo.ac.jp
題目Subject:宿題1
本文を書く.
 旭先生へ 宿題1を送ります. あなたの氏名
 そのほか,書きたいこと.
メールメニューの「書類の添付」メニューを選択する.
 「J-dtGraph」をクリックする.
ウインドウ右上の「送付」ボタンをクリックする.

(注意)圧縮やフォーマット変換する必要はない.J-dtGraph.binとして送付すること.


第4章 進化生物学(タカハトゲーム)

 技能目標:これを題材にして,まともなスタックをまるごと作ってみる.
 資料:旭「進化ゲームの基礎概念と分析上の注意点」研究会資料
 参考文献:J.メイナード・スミス『進化とゲーム理論』産業図書(1982)pp11-16.

4.0 2変数動点の近似

dx/dt = f(t)
dy/dt = g(t)
で表わせる動点(x(t), y(t))の軌跡を描きたいとき,どうするか.

1)考え方
 もしも1秒間f(t),g(t)が一定なら,1秒後の仮想位置は(x+f(t), y+g(t))のはず.しかし,変化している.そこで,十分小さな時間Δtで近似したい.Δt秒後の位置を次のように近似する.
    x( t +Δt) = x(t) +Δt・f(t)
    y( t +Δt) = y(t) +Δt・g(t)
これは,Δt:(1-Δt)の内分点.

2)プログラム例:x(0) = 0 , y(0) = 0 のとき,
Δt ← 0.01  --近似幅
x  ← 0
y ← 0
repeat 1000       -- 適当な回数
 x1 ← x + Δt*f(t)   -- x( t +Δt) = x(t) +Δt・f(t)
 y1 ← y + Δt*g(t)   -- y( t +Δt) = y(t) +Δt・g(t)
「描画 from x,y to x1,y1」  -- 2.3節参照
 x ← x1
 y ← y1
end repeat

4.1 進化ゲームの概要
4.2 分析の対象
4.3 多型集団の分析


宿題2 タカハトゲームのシミュレーション
 C=4,V=2として,タカハトゲームを教えるためのHyperCard stackを作成せよ.

ヒント
1)J-dtGraphスタックを複製して,「タカハトゲーム」という名称にせよ.これを修正する.
2)4ページすべてを,あらかじめ紙上にデザインせよ.
たとえば,ふさわしいタイトル.ふさわしい絵をデザインせよ.また解説を考えよ.

提出方法
 電子メールで,夏休み終了後の第1回目授業まで.質問も電子メールで.


第5章 じゃんけんゲーム

技能目標:3角形状の座標で描画する.動点ボタンをマウスで移動できるようにする.
資料:「J-evolutionRSP」スタックを印刷したもの.

5.1 概要
(1)生物集団
 個体:グー,チョキ,パー
 相互作用(じゃんけん):引き分けでも-e
適応度
 n =(p,q,r), w(a,n) , w(b,n), w(c,n), w = 平均
ダイナミクス
 dp/dt =
 dp/dt =
 r = 1-p-q
(2)予想図 図△グーばかり,チョキばかり,パーばかり,
(3)定常状態とは dp/dt =dq/dt =0 → (1/3,1/3,1/3)
 しかし,これは安定だろうか?

5.2 プログラム(スタートボタンの内容)
aX = 10, aY = 310, length =300 となっている.

5.3 3角形状の座標
 3次元座標軸の単体三角形.
 端点をA(1,0,0),B(0,1,0),C(0,0,1), 動点をP(p,q,r)とする.Pから線分ABに降ろした垂線の足をQとする.このとき,
AQ = (1+q-p)*sqr(2)/2
QP = r*sqr(3)*sqr(2)/2.
これを画面表示したい.画面座標をX,Yとする.
単純に,X = AQ, Y = QP とすると,画面の左上端に,逆三角形ができる.
しかも小さい.ほとんど1ピクセル.
拡大し,反転するには,
X = aX + AQ*length/sqr(2)  --式(1)
Y = aY - QP*length/sqr(2)
とする.

5.4 動点ボタンの移動
put the loc of me into axis --画面座標(X,Y)が代入される.これをつかう.

r = 2(aY -Y)/length*sqr(3)  --式(2)
q = (X -aX)/length - r/2
p = 1 - q -r
で,正しい初期値に変換できる.

宿題3 じゃんけんゲームのシミュレーション
 与えられたスタックJ-evolutionRSPを修正し,
1)式(1)をつかって,三角形状の座標で動点が動くようにせよ.
2)式(2)をつかって,マウスで動点ボタンを移動できるようにせよ.
3)いろいろパラメータを変化させて研究せよ.その傾向を言葉で表現し,最後のカードに記述せよ.
4)電子メールで提出せよ.



第6章 進化経済学

 目標/宿題4:じゃんけんゲームを修正し,資料を追試する.
 資料:青木・奥野『経済システムの比較制度分析』東大出版(1996)pp.78-89.

6.1 概要
6.2 プログラム(転職条件なし)
6.3 分析
6.4 プログラム(転職条件あり)
6.5 分析