Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Japanese Mahjong AI.
branch: master
Failed to load latest commit information.
bin Making mjai-manue work independent of current directory.
coffee Choose action based on averageRank.
lib/mjai/manue Bug fix for tsumogiri criteria.
share Add score change probability distribution and average rank to the met…
test Adding more features.
tools
.gitignore Misc.
Gemfile
README.md Adding document of how it works.
mjai-manue.gemspec Adding license in gemspec.

README.md

概要

Mjai 麻雀AI対戦サーバ 用の麻雀AIです。

仕組み

自己対戦の牌譜のサンプル

まず、それぞれの打牌をした場合について、以下の数値を算出します。これらのスコアは、上の牌譜のデバッグ出力で確認できます。

  • horaProb / Hora probability / 和了率
    • その打牌をした場合に、この局で自分が和了できる確率。
    • モンテカルロで求める。終局までにNツモあるとすると、ランダムにN枚引いて、手牌13枚+N枚で和了を作れるかどうかをチェック。これを1000回繰り返す。
    • 実際には高速化のために「今の手牌から和了するための必要牌」をあらかじめ求めておき、ランダムに引いたN枚に必要牌が含まれるかをチェックしている。
  • avgHoraPt / Average hora points / 平均和了点
    • 自分が和了した場合の平均和了点。
    • horaProbと同時にモンテカルロで求める。手牌13枚+N枚で作れた和了の点数の平均。
  • unsafeProb / Unsafe probability / 放銃率
    • その打牌で誰かに放銃する確率。
    • 今のところ、リーチしている人への放銃だけを考慮。
    • 決定木学習を使って推定。特徴量は「字牌」「スジ」など。学習データは天鳳の牌譜。統計による麻雀危険牌分析参照。
  • avgHojuPt / Average hoju points / 平均放銃点
    • 放銃した場合に払う額の平均。
    • 今のところは自己対戦のログから求めた固定値6265点。牌譜のデバッグ出力にはない。

以上の数値から、この局で自分が得る点数の期待値(expPt)を求めることができます。

  • expPt = (1 - unsafeProb) * horaProb * avgHoraPt - unsafeProb * avgHojuPt

このexpPtが最大となる打牌を採用します。

「鳴くか、鳴かないか」「リーチか、ダマか」も同様の方法で判断します。

ライセンス

"New BSD Licence" です。

作者

Hiroshi Ichikawa

Something went wrong with that request. Please try again.