- PlayerXとPlayerYが20回連続して囚人のジレンマゲームを行います.
- GameServerDはPlayerXとPlayerYの戦略(黙秘/自白)を要求し,勝敗を判定し,結果を通知します.
- GameServerDはPlayerX, PlayerYからの参加表明を待ちます.
- ユーザはWebUIを用いてPlayerX,PlayerYに start を送ります.PlayerX, PlayerYは参加表明である request-join をGameServerDに送ります.
- 参加者数が2になったら,次の手順が20回繰り返されます.
- GameServerDは それぞれの参加者に request-action を送り,黙秘するか自白するかを質問します.
[_p:'request-action', loop:ループ回数, gain:現在の利得の総和, competitor:前回の相手の戦略]
ループ回数:0~19
現在の利得:ループ回数=0のときは0,以降はその時点での送信先参加者の利得の合計
前回の相手の戦略:ループ回数=0のときは'noaction'
,以降は'silence'
または'confession'
- PlayerX, PlayerYは 次のいずれかをGameServerDに返信します.
[_p:'silence']
: 黙秘
[_p:'confession']
: 自白
- GameServerDは 各回の戦略と利得を記録しています.
- 20回のゲーム後に,次をPlayerX, Yに送ります.
[_p:'result' you:自分の利得の総和 opponent:相手の利得の総和]
- 利得表は次の通りです:
|
Y黙秘 |
Y自白 |
X黙秘 |
-1, -1 |
-5, 0 |
X自白 |
0, -5 |
-3, -3 |
※表の要素は「Xの利得, Yの利得」
- 上記の動作を行うエージェントGameServerD, PlayerX, PlayerYを作成してみましょう.
- 利得の総和を多くする戦略を考えてみましょう.
TAG以外のシステムを用いてもOKです.その場合,
- 1つのエージェントを1つのプロセスやスレッド上で実行してください.今回のエージェント数は3なので,最低でも3つのプロセス/スレッドを用いることになります.
- プログラムの説明に加えてシステムの説明を付加してください.