*All archives* |  *Admin*

<<05  2017/06  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  07>>
牌譜検討モード製作その2
牌譜の解釈までが昨日終わって、今日は出来合いの麻雀AIで実際に計算させるところをやってみます。

読み取って計算させる牌譜は昨日と同じ。
牌譜URLを載せ忘れたので載せておきます。
http://tenhou.net/0/?log=2017022819gm-0029-0000-4dfdc487&tw=0

AIの思考方法は前に作ったのと同じです。
詳しくは↓のリンクを参照のこと。
floodgate for mahjong へ参戦その6・一人麻雀再帰計算関数の作り直し
floodgate for mahjong へ参戦その8・バグ取りとかテストとか

それでなんとか途中でエラーで止まらずに1試合分完走してくれました。
計算結果がこちら。
shutu170302-01.txt
毎ツモごとに2シャンテン以下なら再帰計算で局収支等を求めます。
(まだロンとか鳴きとかは考慮できてない。)

最初に局情報と現在ツモ番と巡目とドラ表示牌を出力し、
次に各人の手牌(他家の晒してる以外の手牌は不明なので「?」にしている)と捨て牌を出力、
そして、この情報をもとに現在ツモ番者の最適打牌をAIが計算して出力する、という流れです。

かなりの情報量ですが、かなりいい感じです。
なんかおかしなところがないかもうちょっと精査する必要はありますが。

1試合分計算し終わるのにおよそ5分かかりました。
1打当たりだとほぼ数秒以内には計算し終えることができているので、まぁ及第点でしょう。
ここから他家からロンとか鳴きを考慮する分とシミュレーションパートも入ることを考えれば、最終的には計算時間はもっと増えそうですが、
まぁAIとして最低限動くレベルにはなりそうです。

ファイルサイズが10KB(mjscoreっぽい形式)から400KBに膨れました。行数で1万行をちょっと超えるくらい。
現実に1局面の何切る問題としてみるときはテキストエディタの検索機能(「南1局0本場」で検索後、「8巡目」とかでさらに検索するみたいな。)で目当てのところまでたどり着く必要がありそうです。


後、前回課題として挙げた、mjscoreっぽい形式じゃないと解析できないという問題ですが、
やっぱり自分一人でURLから自動でmjscoreにするプログラムを作るのはちょっとしんどそうです。

調べてると「天鳳の牌譜変換β」というサイト(http://sion.mokuren.ne.jp/analyzer/index_conv.php)があってそれを使えば、
人力でURLからmjlog形式に変換して、mjlogファイルを牌譜の保存場所に放り込んで、牌譜解析スクリプトでmjscore化する、という作業で、
一応、他人様の何切るもAIで計算することは可能になりそうなことが分かりました。(めんどくさいけど。)
まぁどうせ、ほぼ自分ひとりもしくは仲間内だけでしかAIは公開しないので、人力でもできるんならあえて難しいところに触る必要はないかなーと思ってます。
そういうことを考えるよりはAI本体の性能向上をやりたいです。

というわけで、牌譜検討モードもいちおうできたので、また次回からはAI本体の作業に戻ろうと思います。
次こそは他家ロンをやります。
スポンサーサイト

コメントの投稿

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

コメント

プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード