*All archives* |  *Admin*

<<10  2017/11  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  12>>
麻雀AI開発その31・押し引き判断基礎データをCSVファイル出力
前回まででAIのレベルの低さに目をつむれば、最低限、評価値を出力できるところまではいけたので、
鳳凰卓の実際の牌譜を読み込ませて、そのデータを押し引き判断に活かすことを考えます。

なぜそういうことをするのかというと、現状ではAIの押し引き判断が相当ザル(リーチ者がいるときのみで、聴牌は全ツ、一向聴は10%以下押し、二向聴は3%以下押し、3シャンテン以上は即ベタ降り)なので、そこをもうちょっと精緻化したいということです。
細かい評価方法(おそらく回帰分析的なことになると思うが)は後で考えるとして、必要になりそうなデータの収集だけ先にやってしまおうと思って先に作りました。

で、今日は頑張って牌譜解析用のプログラムを作るところまでいけました。
取得したデータは
・試合数
・局数(トンパツを1として、局終了時点で+1される。)
・牌譜URL
・最大攻撃者(二軒以上リーチが7、一軒リーチが6、ドラポンが5、その他副露が1~4副露数)
・牌を切る人のシャンテン数
・巡目
・ベタ降りシミュレーションの局収支
・ある打牌候補を打った時の再帰パート局収支(初手は安牌想定)
・ある打牌候補を打った時の総放銃率(その牌の危険度の3人分の和)
・ある打牌候補を打った時の危険度指数(その牌の危険度×放銃時失点の3人分の和)
・実際に打たれた打牌候補ナンバー

今のところは最大攻撃者とシャンテン数(と巡目)については完全分類(それぞれ別個に回帰式的なのを作る。)で、
変数は再帰局収支(攻撃面でどの程度いい手なのか)と危険度指数(切る牌の総合的な危険度)の2本立てで評価しようかと思ってます。
ベタ降り成功率(ベタ降り局収支)も重要だとは思うのですが、あまり変数を増やしすぎるとうまいこと理論が作るのが難しくなるような気がするので、今のところは考えないでおこうかと思います。(必要になったら取り出せるように計算値だけは出しておきますが。)
攻撃者が親番については危険度指数のところで考慮されてるからまぁいいかな、と。その分、分類の次元が増えるのはちょっとしんどいので。
牌の種類についても危険度指数の中である程度評価の中に入ってるので、これも考えるのはやめときます。

そんな感じでまずは1試合分計算させてCSVファイルで出力したのがこんな感じ。
170709-01.png

とりあえずそれっぽいものは出力できてるっぽい。
問題は時間ですね。Debugビルドで1試合に数分くらいかかりました。
800万局なら1試合10局とすれば80万試合、1試合5分なら400万分、ってことは1000日!?
ちょいちょいちょい。それはいくらなんでもまずすぎますよ。

ただ、基礎スペック的に考え得る限りの高速化はやってるから、後はReleaseビルドにするのと、出力部分でごまかすくらいしかできないですし。
(例えば、シャンテン数を上げて危険牌を切るケースは除外するとか、後は思い切ってベタ降り局収支をカットするか。)
とりあえず今晩で100試合分くらいCSV出力してみて、それにかかった時間で考えようか。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード