2017-07-25(Tue)
麻雀AIの続きです。
昨日、今日と、わりとがんばったので、グラフィックがかなり進展しました。
他家の手牌と捨て牌部分を自分と同じように作って、中央に局情報(局・本場・供託・残り山・ドラ表示牌)と各人の情報(風・得点・名前)を置きました。
卓のサイズはやっぱりほぼ正方形のでかいサイズが必要になったので、メインフォームのサイズをでかくして、いらないテキストボックスとかを横によけておきました。
挙動が安定したら手牌とか捨て牌のテキストボックスはリストラできるでしょう。
また、1順前の捨て牌について、手出し牌は牌の下に水色線を引きました。(1順回ってきて捨て牌の画像が更新されるタイミングで、水色線の手出し情報は見えなくなる。)

やっぱり実際の牌の画像を使うと麻雀をやってる感が出てとても良いです。
従前のように切ることができる牌をリスト化したコンボボックスから1牌選択して「切る」ボタンを押すのが手間なので、
自分の手牌の画像を直接クリックして切ることができるようにしました。
また、グラフィック化したので、他家の切った牌と自分のツモ牌の情報をメッセージボックスで逐一出していたのをやめました。
(鳴きとリーチについては従前通り、メッセージボックスを出す。)
ちょっと対局がさくさく進む…かもしれないです。ただ、肝心のAI本体の計算時間がかなりかかるので、全体としてはそんなにスピードアップはしてないかもしれないですが。
また、鳴き無しボタン、自動和了ボタン、リーチ後ツモ切りボタンといった細かいオプションも用意。

この局は手が悪かったので回し気味に聴牌取りにいってたら、なんか知らないけど、上がりまで拾えた。

東3局、自分の親番で満貫被ツモ親かぶり。ダマ愚形5200をしっかりダマにしてくるAIちゃん。

オーラスもドラポンと親リーチに囲まれて無筋をたくさん引かされて大変だったけど、無事に上がって2着。
牌譜の出力も成功。

挙動が安定するまでしばらくテストは必要になるだろうけれど、とりあえず牌譜検討ソフトとして、AIとの対戦機能・牌譜の再生機能・AIの評価値を表示する機能の骨組みはこれでできたことになります。
画像処理とかでもっと手間取るかと思ってましたが、ものすごく順調に進んでいます。
それで、検討ソフトの骨組みを作る作業と並行して細かい押し引きを決めるための基礎データ集めをやっているのですが、こっちの方はなかなか進まないです。1日に300試合くらいしか進まなくて、今のところもうちょっとで目標の半分である5000試合が見えてくるというところです。
(グラフィックのコード作りとテストの試合をがりがりやってたせいか、今日は特に進みが遅いです。今晩は天鳳できなさそう。)
ずっと何もせずに待ってるだけというのも退屈なので、目の前に見えてる5000試合でいったん妥協してcsvファイルの振り分けとエクセルソルバーにがんばってもらうのをやろうか。それで使えそうなデータだったら詳細押し引きを組み込むと。
ダメそうならもうちょっと試合数を追加すると。
その次は序盤(2シャンテン以上)の手組をどうするかを考えたいです。3シャンテンのほぼ受け入れ枚数だけのてきとうな打牌選択とか、2シャンテン手替わりなし再帰計算の全数探索でかなり時間を食うのがストレスなので、そこをうまいこと改善したいです。今のところ考えているのは、牌の種類とかその牌を切ることによる一次有効牌の減少数とかまわりの牌の有無とかで、実測値からスコア化して、そのスコアが一番いいものを打牌として選ぶみたいな。それだけだと手役(特に三色・一通・チャンタあたりの鳴ける手役)がおろそかになりそうなので、そこも多少は考えつつ。(まぁ、これは後で付け足しとかでもいいかな。)
まだ数学的にちゃんとできる目途は立ってないですが。
こっちは理論さえうまいこといければ実測牌譜を再帰計算するみたいな超時間がかかるようなことにはならないはず。
通常の牌譜解析と同レベル、でできればいいなぁ。
検討ソフトの骨組みの方はテストで試合を重ねて挙動を安定させるのとか、まだ考慮できてないルール作り(途中流局とか、パオとか)を作るところとかです。
後は他家がカンすることを考慮してないのもなんとかしないといけないか。
とはいえ、まだ粗いですけど、まぁひとまずはうまくいってよかったよかった。
昨日、今日と、わりとがんばったので、グラフィックがかなり進展しました。
他家の手牌と捨て牌部分を自分と同じように作って、中央に局情報(局・本場・供託・残り山・ドラ表示牌)と各人の情報(風・得点・名前)を置きました。
卓のサイズはやっぱりほぼ正方形のでかいサイズが必要になったので、メインフォームのサイズをでかくして、いらないテキストボックスとかを横によけておきました。
挙動が安定したら手牌とか捨て牌のテキストボックスはリストラできるでしょう。
また、1順前の捨て牌について、手出し牌は牌の下に水色線を引きました。(1順回ってきて捨て牌の画像が更新されるタイミングで、水色線の手出し情報は見えなくなる。)

やっぱり実際の牌の画像を使うと麻雀をやってる感が出てとても良いです。
従前のように切ることができる牌をリスト化したコンボボックスから1牌選択して「切る」ボタンを押すのが手間なので、
自分の手牌の画像を直接クリックして切ることができるようにしました。
また、グラフィック化したので、他家の切った牌と自分のツモ牌の情報をメッセージボックスで逐一出していたのをやめました。
(鳴きとリーチについては従前通り、メッセージボックスを出す。)
ちょっと対局がさくさく進む…かもしれないです。ただ、肝心のAI本体の計算時間がかなりかかるので、全体としてはそんなにスピードアップはしてないかもしれないですが。
また、鳴き無しボタン、自動和了ボタン、リーチ後ツモ切りボタンといった細かいオプションも用意。

この局は手が悪かったので回し気味に聴牌取りにいってたら、なんか知らないけど、上がりまで拾えた。

東3局、自分の親番で満貫被ツモ親かぶり。ダマ愚形5200をしっかりダマにしてくるAIちゃん。

オーラスもドラポンと親リーチに囲まれて無筋をたくさん引かされて大変だったけど、無事に上がって2着。
牌譜の出力も成功。

挙動が安定するまでしばらくテストは必要になるだろうけれど、とりあえず牌譜検討ソフトとして、AIとの対戦機能・牌譜の再生機能・AIの評価値を表示する機能の骨組みはこれでできたことになります。
画像処理とかでもっと手間取るかと思ってましたが、ものすごく順調に進んでいます。
それで、検討ソフトの骨組みを作る作業と並行して細かい押し引きを決めるための基礎データ集めをやっているのですが、こっちの方はなかなか進まないです。1日に300試合くらいしか進まなくて、今のところもうちょっとで目標の半分である5000試合が見えてくるというところです。
(グラフィックのコード作りとテストの試合をがりがりやってたせいか、今日は特に進みが遅いです。今晩は天鳳できなさそう。)
ずっと何もせずに待ってるだけというのも退屈なので、目の前に見えてる5000試合でいったん妥協してcsvファイルの振り分けとエクセルソルバーにがんばってもらうのをやろうか。それで使えそうなデータだったら詳細押し引きを組み込むと。
ダメそうならもうちょっと試合数を追加すると。
その次は序盤(2シャンテン以上)の手組をどうするかを考えたいです。3シャンテンのほぼ受け入れ枚数だけのてきとうな打牌選択とか、2シャンテン手替わりなし再帰計算の全数探索でかなり時間を食うのがストレスなので、そこをうまいこと改善したいです。今のところ考えているのは、牌の種類とかその牌を切ることによる一次有効牌の減少数とかまわりの牌の有無とかで、実測値からスコア化して、そのスコアが一番いいものを打牌として選ぶみたいな。それだけだと手役(特に三色・一通・チャンタあたりの鳴ける手役)がおろそかになりそうなので、そこも多少は考えつつ。(まぁ、これは後で付け足しとかでもいいかな。)
まだ数学的にちゃんとできる目途は立ってないですが。
こっちは理論さえうまいこといければ実測牌譜を再帰計算するみたいな超時間がかかるようなことにはならないはず。
通常の牌譜解析と同レベル、でできればいいなぁ。
検討ソフトの骨組みの方はテストで試合を重ねて挙動を安定させるのとか、まだ考慮できてないルール作り(途中流局とか、パオとか)を作るところとかです。
後は他家がカンすることを考慮してないのもなんとかしないといけないか。
とはいえ、まだ粗いですけど、まぁひとまずはうまくいってよかったよかった。
スポンサーサイト