麻雀AI開発その78・AIどうしの自己対戦プログラム
2017-10-21(Sat)
麻雀AIの続きです。
前回、染め手パラメータを取って、これから染め手も含めたシミュレーションの設計をやろう!…と思ったのですが、
とある事情により、そっちはいったんほったらかして、AIどうしの自己対戦のプログラムを作ることにします。
人間一人VSAI三体のプログラムはすでにできてるので、それをちょっと改造すればすぐできます。
バグを収拾させつつ1試合分打たせたのがこんな感じ↓。
haifufile.txt
とりあえず自然な感じにはなっているっぽいです。
問題は計算時間ですね。東風戦1試合で10分~15分かかりました。
10000試合しようとすると1試合10分なら1時間6試合、1日150試合、ということは66日かかる、と。うむー。
ボトルネックになってるのは一向聴・聴牌の再帰計算+シミュレーションです。
二向聴以上の手みたいに全部機械学習で置き換えた方がよろしいのかしら。
一向聴以下だと上がりに直結する分、最終の待ち受けとか役判定打点関連とかをもっと精密に作らないといけなさそうな気がします。
機械学習でやると、中身がブラックボックス的になって分析がやりにくいですし、一番は今までシミュレーションで培ってきた知見が活かしづらいということがあるので、あんまり乗り気ではないです。
さて、どうしようか。
とりあえず1000試合・7日くらいでお茶を濁しておきましょうか。
後は対戦するAIですが、全部同じものを対戦させるのも芸がないので、別個のものを4体用意しようかと思っています。
今考えているのは、平均順位ベースAI・局収支ベースAI・局収支ベース(攻め型)・局収支ベース(守り型)
平均順位ベースは打牌選択基準(一向聴以下手牌のみ)を平均順位の良し悪しで判断する。
攻め型は自手上がり時得点に関して局収支を1.1倍換算したものを判断基準にする。
守り型は放銃時失点に関して局収支を1.1倍換算したものを判断基準にする。
という感じの予定。
普段使いのPCとは別に、自己対戦とかfloodgateでの大量対戦用のPCを買おうかなーと本気で検討中です。
もし、今のPC(3年選手)がつぶれてもスペアがあれば安心ですしね。
ハードディスクをSSDというのにすれば動作が早いらしいですし。
前回、染め手パラメータを取って、これから染め手も含めたシミュレーションの設計をやろう!…と思ったのですが、
とある事情により、そっちはいったんほったらかして、AIどうしの自己対戦のプログラムを作ることにします。
人間一人VSAI三体のプログラムはすでにできてるので、それをちょっと改造すればすぐできます。
バグを収拾させつつ1試合分打たせたのがこんな感じ↓。
haifufile.txt
とりあえず自然な感じにはなっているっぽいです。
問題は計算時間ですね。東風戦1試合で10分~15分かかりました。
10000試合しようとすると1試合10分なら1時間6試合、1日150試合、ということは66日かかる、と。うむー。
ボトルネックになってるのは一向聴・聴牌の再帰計算+シミュレーションです。
二向聴以上の手みたいに全部機械学習で置き換えた方がよろしいのかしら。
一向聴以下だと上がりに直結する分、最終の待ち受けとか役判定打点関連とかをもっと精密に作らないといけなさそうな気がします。
機械学習でやると、中身がブラックボックス的になって分析がやりにくいですし、一番は今までシミュレーションで培ってきた知見が活かしづらいということがあるので、あんまり乗り気ではないです。
さて、どうしようか。
とりあえず1000試合・7日くらいでお茶を濁しておきましょうか。
後は対戦するAIですが、全部同じものを対戦させるのも芸がないので、別個のものを4体用意しようかと思っています。
今考えているのは、平均順位ベースAI・局収支ベースAI・局収支ベース(攻め型)・局収支ベース(守り型)
平均順位ベースは打牌選択基準(一向聴以下手牌のみ)を平均順位の良し悪しで判断する。
攻め型は自手上がり時得点に関して局収支を1.1倍換算したものを判断基準にする。
守り型は放銃時失点に関して局収支を1.1倍換算したものを判断基準にする。
という感じの予定。
普段使いのPCとは別に、自己対戦とかfloodgateでの大量対戦用のPCを買おうかなーと本気で検討中です。
もし、今のPC(3年選手)がつぶれてもスペアがあれば安心ですしね。
ハードディスクをSSDというのにすれば動作が早いらしいですし。
スポンサーサイト