読者です 読者をやめる 読者になる 読者になる

HPO機密日誌

自己をならふといふは、自己をわするるなり。

繰り返し囚人のジレンマゲーム・シミュレーション GUI版

昨日から、時間をみつけて、id:aidiaryさんの素晴らしいライフゲームPython版に囚人のジレンマゲームを入れ込む作業をした。Pythonのクラスとメソッドがよく分からず苦労したが、試行錯誤を繰り返してなんとかものになった。オリジナルの作者のaidiaryさんの許可が得られていないので、ソースはまだ公開できない。QuickTimeで画面の動作状況は記録できた。

青いのがお人好しで常に相手を信頼する「囚人」、緑が勝ち続けると相手を信頼し、一定以上負けると相手を裏切る「囚人」、赤が常に相手を裏切り続ける「囚人」だ。それぞれの「信頼」か、「裏切り」の結果の報酬は以下の通り。「/」の上が自分側、下が相手方。「資産」を最初に10点もっていて、この報酬表に従って自分の資産が増減していく。隣接するグリッドに「相手」が存在すれば「取引」をする。いなければ、ランダムに移動する。

    相手
       同意    裏切
自分  同意  1/1   -6 / 0
    裏切  0/ -6  -3/-3

当初からぐっと数が減っていくが、信頼しあえる「囚人」同士はコロニーを作って、「資産」を増やしていく。*1一定以上の資産が貯まると、セルは白くなる。

裏切りものの赤い「囚人」が一匹狼となり、うろうろしたあげくに、コロニーを次つぎに絶滅させていく様子がわかる。フリーライダーというものがどのようなものか、よくわかる。昨日、増田で「未婚男性」という話しがでていたが、ま、そのシミュレーションといえるかもしれない。あ、ただし、私は「未婚男性」がすべてフリーライダーだという論には立たない。念のため。


■30分たたないうちに・・・・

お返事いただいた。ありがたい!

ライフゲーム囚人のジレンマに応用したんですね。もちろん公開しても問題ありません。このサイトのプログラムは完全にフリーなので。
移動する囚人のジレンマって実はついこの間、始めて知ったのですが発想が面白いですよね。私の場合、NetLogoというプログラムのモデルを見て知りました。PythonGUIのプログラムを書くのがけっこう面倒なのでNetLogoでもよいかもしれませんね。
http://ccl.northwestern.edu/netlogo/models/PDN-PersonIterated

http://aidiary.hatenablog.com/entry/20080914/1281748797#comment-12921228815715709240

このリンク先のプログラムが面白そう。まだ動かせてないので、確信はないが意思決定の戦略別に色分けしているらしい。移動もするらしい。いやぁ、ちゃんとした研究者がこうしてやっているのだと。

ま、私のレベルの低いモデルでのPythonのソースはこちら。ちなみに、Python以外にPyGameというパッケージ(?)をインストールする必要があるので要注意。

*1:本当の囚人のジレンマゲームでは、信頼し合えても「懲役」をくらうのだが、それではあまりに「囚人たちがかわいそう・・・、ではなく、あまりに早く絶滅してしまうので、信頼しあえれば「資産」がプラスになるように意図的に変形している。」