Home

牌の危険度計算アルゴリズム(5) 〜 危険度閾値の再調整

打牌選択アルゴリズム(10) 〜 残り牌数の正規化 で残り牌数の数え方を変え、それにより変化した手牌の評価値に合わせて 押し引きアルゴリズムの改善(4) 〜 押し引き閾値の再調整 で押し引きの閾値を再調整しました。 今回は牌の危険度の閾値を再調整します。 危険度決定アルゴリズム自体は変更しないので、調整は不要な可能性が高いです。


前準備

まず「スジ・無スジ」に頼る 旧来の押し引き方法 の危険度決定アルゴリズムから 牌の危険度計算アルゴリズム(1)牌の危険度計算アルゴリズム(2) の「待ちの形とカベ」を利用したアルゴリズムに戻します。

この段階で局収支は以下となりました。

結果 0601 修正後
和了 11.7% 11.9%
放銃 11.4% 11.4%
被ツモ 31.7% 31.6%
横移動 26.2% 26.1%
流局 19.0% 19.1%
局収支 -956 -934

続いて、相対危険度 を計算できるようにします。 現段階ではまだ使用せず、相対危険度を取得するメソッドのみの追加です。

閾値の調整

現在公開中のAI 0504 では、押し引きのパターンを以下の表で分類しています。

安全牌あり 安全牌なし
愚形 ベタオリ(危険度最低の牌を切ってオリる) 押し(危険牌は切らない)
好形 回し打ち(安全牌なら切ってよい)
超好形 全押し(超危険牌は切らない)

この表における、安全牌危険牌超危険牌 を区別する閾値は以下の通りです*1

意味
Aこれ以上は全押しでも切らない 超危険牌 とする 13.5
Bこれ以上は押しでも切らない 危険牌 とする 8.0
Cこれ以下は回し打ちなら切ってよい 安全牌 とする 3.0

牌の危険度計算アルゴリズム(3)牌の危険度計算アルゴリズム(4) と同様に、0600 と閾値を調整したAIを実際に1,000戦対戦させて、この値を再調整します。

安全牌の閾値(閾値C)

まず、これ以下なら回し打ちで切ってよい安全牌とみなす 閾値C から調整します。

安全牌あり 安全牌なし
愚形 ベタオリ(危険度最低の牌を切ってオリる) (安全牌 がないため)全押し
好形 回し打ち(安全牌 なら切ってよい)
超好形 全押し

押し引きパターンを上記とし、閾値C とすべき値を探します。

結果 調整前 3.0 3.1 3.2 3.3 3.4
和了 11.9% 11.8% 11.9% 12.0% 12.1% 12.1%
放銃 11.4% 11.2% 11.3% 11.3% 11.4% 11.5%
被ツモ 31.6% 31.8% 31.8% 31.8% 31.7% 31.0%
横移動 26.1% 26.1% 26.1% 25.9% 25.9% 26.0%
流局 19.1% 19.0% 18.9% 19.0% 18.9% 18.8%
局収支 -934 -949 -942 -937 -944 -959

相対危険度を導入する以前の局収支 -934 を超える閾値は見つかりませんでした。 しかたがないので最良の値を選択し、閾値C の値は 3.2 とします。

超危険牌の閾値(閾値A)

次に、全押しでも切らない超危険牌とみなす 閾値A を調整します。

安全牌あり 安全牌なし
愚形 ベタオリ(危険度最低の牌を切ってオリる) 全押し(超危険牌 は切らない)
好形 回し打ち(安全牌なら切ってよい)
超好形 全押し(超危険牌 は切らない)

押し引きパターンは上記とします。

結果 調整前 12.5 12.8 13.0 13.2 13.5
和了 12.0% 11.9% 11.9% 11.9% 11.9% 11.9%
放銃 11.3% 10.9% 10.9% 10.9% 10.9% 11.0%
被ツモ 31.8% 31.9% 31.9% 31.9% 31.9% 31.9%
横移動 25.9% 26.0% 26.0% 26.0% 26.0% 26.0%
流局 19.0% 19.3% 19.2% 19.2% 19.2% 19.2%
局収支 -937 -923 -922 -921 -923 -926

閾値A は 13.0 としました。

危険牌の閾値(閾値B)

最後に、愚形・好形で安全牌なしのときに切らない危険牌とみなす 閾値B を調整します。

安全牌あり 安全牌なし
愚形 ベタオリ(危険度最低の牌を切ってオリる) 押し (危険牌 は切らない)
好形 回し打ち(安全牌なら切ってよい)
超好形 全押し(超危険牌は切らない)

押し引きパターンは上記となりました。

結果 調整前 7.5 7.8 8.0 8.2 8.5
和了 11.9% 11.9% 11.9% 11.9% 11.9% 11.9%
放銃 10.9% 10.9% 10.8% 10.8% 10.8% 10.9%
被ツモ 31.9% 31.9% 31.9% 31.9% 32.0% 32.0%
横移動 26.0% 26.0% 26.0% 26.0% 26.0% 26.0%
流局 19.2% 19.3% 19.3% 19.3% 19.2% 19.2%
局収支 -921 -923 -919 -918 -920 -922

閾値B は 8.0 とします。

調整後の閾値

調整の結果、各閾値は以下となりました。

意味
Aこれ以上は全押しでも切らない 超危険牌 とする 13.513.0
Bこれ以上は押しでも切らない 危険牌 とする 8.0 8.0
Cこれ以下は回し打ちなら切ってよい 安全牌 とする 3.0 3.2

親リーチの危険度の調整

危険度の分類はできたので、親リーチの危険度を表す係数も調整します。 現在公開中のAI 0504 では親リーチに関しては危険度を 1.4 倍して警戒しています。

結果 調整前 1.45 1.48 1.50 1.52 1.55
和了 11.9% 11.6% 11.6% 11.6% 11.6% 11.5%
放銃 10.8% 10.6% 10.5% 10.5% 10.5% 10.5%
被ツモ 31.9% 31.9% 32.0% 32.0% 32.0% 31.9%
横移動 26.0% 26.3% 26.3% 26.3% 26.3% 26.4%
流局 19.3% 19.6% 19.6% 19.5% 19.6% 19.6%
局収支 -918 -914 -914 -913 -917 -921

親リーチの危険度は 1.50 倍して評価します。

押し引きパターン

最終的に押し引きパターンは以下となりました。

安全牌あり 安全牌なし
愚形 3シャンテン以前もしくは
1シャンテン以前で評価値が 80 未満
ベタオリ
(最も安全な牌を切る)
押し
(危険度 8.0 以上は切らない)
好形 1シャンテン以前で評価値が 750 未満
もしくはテンパイで評価値が 50 未満
回し打ち
(危険度 3.2 以上は切らない)
超好形 1シャンテン以前で評価値が 750 以上
もしくはテンパイで評価値が 50 以上
全押し
(危険度 13.0 以上は切らない)

親リーチの危険度は 1.50 倍して評価。

対戦結果

修正後のAIを 0602 として、0600 および現在公開中のAI 0504 と10,000戦の デュプリケート対局 を行いました。 手作りに関する変化はないため、役の出現率の統計は割愛します。

0600 0601 0602 0600 0601 0602
1位率 .251 .266 .268和了率 .214 .220 .219
2位率 .256 .255 .256放銃率 .128 .133 .129
3位率 .247 .241 .242立直率 .226 .232 .233
4位率 .246 .238 .234副露率 .339 .340 .340
平均順位 2.49 2.45 2.44平均打点5,5665,6525,662
0504 0602 0504 0602
1位率 .258 .256和了率 .216 .217
2位率 .245 .246放銃率 .132 .131
3位率 .244 .248立直率 .238 .232
4位率 .254 .250副露率 .342 .339
平均順位 2.49 2.49平均打点5,6665,655

0600 との対戦では 0601 から比べて放銃率が 13.3% → 12.9% と下がり、平均順位も微妙に改善しました。 一番気になるのは現行のAI 0504 より強くなったかですが、ほとんど変わらないようです。 残念な結果ですが、これを次版 ver.2.5.0 に反映することとします。

  1. ^ 閾値の名称自体(A〜C)は今回変更し 「電脳麻将本」 とは一致しません