以下の記事の続きです。
ゲーム理論(二人・二択)の混合戦略の確率を求める
https://akira2kun.hatenablog.com/entry/2018/12/23/180906
プログラムで計算する場合の計算式を書いたので、javaでサンプルプログラムを作ってみました。
【ソースコード】
public class GameKongoMain {
public static void main(String[] args){
// 各選択肢の利得を定義
double valueAa = 2;
double valueAb = 6;
double valueBa = 5;
double valueBb = 4;
// 例外処理
if (valueAa > valueBa && valueAb > valueBb) {
System.out.println("劣等戦略未除外エラー");
return;
} else if (valueAa < valueBa && valueAb < valueBb) {
System.out.println("劣等戦略未除外エラー");
return;
} else if (valueAa == valueBa && valueAb == valueBb) {
System.out.println
("混合戦略の確率 選択肢A:0.5 選択肢B:0.5");
return;
}
// 選択肢の傾きの計算
double slopeA = 0;
double slopeB = 0;
slopeA = valueAb - valueAa;
slopeB = valueBb - valueBa;
// 選択確率の計算
double probabilityA = 0;
double probabilityB = 0;
probabilityA = (slopeB * -1) / (slopeA + (slopeB * -1));
probabilityB = slopeA / (slopeA + (slopeB * -1));
// 結果出力
System.out.println
("混合戦略の確率 選択肢A:"+ probabilityA +
" 選択肢B:" + probabilityB);
}
}
【実行結果】
混合戦略の確率 選択肢A:0.2 選択肢B:0.8
【注記】
・各選択肢の利得の値を変えて、各例外ケースも確認しています。
・片方の選択肢の傾きが0でもう片方が0ではないケースも確認しています。
(この場合、傾きが0の選択肢の選択確率が1.0、もう片方の選択肢がの選択確率が0.0になる)