ゴールは共同配送問題の答えを探すこと。
「囚人のジレンマ」
(* 利得行列の定義 *)
payoffMatrix = {
{{-8, -8}, {-0.25, -10}},
{{-10, -0.25}, {-1, -1}}
};
(* プレイヤーの戦略 *)
strategies = {"自白", "黙秘"};
(* ナッシュ均衡を見つける関数 *)
findNashEquilibria[matrix_] := Module[
{n = Length[matrix], equilibria = {}},
For[i = 1, i <= n, i++,
For[j = 1, j <= n, j++,
If[
And[
matrix[[i, j, 1]] == Max[matrix[[All, j, 1]]],
matrix[[i, j, 2]] == Max[matrix[[i, All, 2]]]
],
AppendTo[equilibria, {i, j}]
]
]
];
equilibria
];
(* ナッシュ均衡の計算 *)
nashEquilibria = findNashEquilibria[payoffMatrix];
(* 結果の表示 *)
Print["ナッシュ均衡:"];
For[k = 1, k <= Length[nashEquilibria], k++,
Print[
"プレイヤー1: ", strategies[[nashEquilibria[[k, 1]]]],
", プレイヤー2: ", strategies[[nashEquilibria[[k, 2]]]]
]
]
Claudeは凄い。
Geminiにも頼んだけど、彼女は正しいコードが書けない。
(後で回避策が分かる。「Mathematicaの基本関数で」と頼めば良い)
解説を依頼。わかりやすい。生成AIを使ってコードを書いてもらって実行しながら教科書を読むのが私は一番わかり易いのでこうする。