« まったり麻雀と科学する麻雀の押し引き判定の違い | トップページ | まったり麻雀Ver0.9.7公開します »

2012/07/08

次期メジャーバージョンアップに向けた開発作業状況

 最近、私生活とか仕事とか優先的にやらなければならないことが多く、それらをこなすだけで疲れてしまっていて、なかなかまったり麻雀の開発をすすめるだけの時間と気力を確保できていません。年内はこの状況は続きそうですが、何とか隙間時間を見つけて、のんびりと作業を進めていきたいと思っています。

 ブランクが開いてしまうと、何をやったのか忘れてしまい、開発作業の再開が難しくなってしまうので、整理も兼ねて、Ver0.9公開以降、どのような作業をしたのか記事にしておきます。


探索アルゴリズムの刷新
 現行版は最新のパソコンでも古いパソコンでもコンピュータ雀士の強さに変化はありませんが、次の版では、CPUの処理能力や思考時間の設定次第で強さが変化するようにしたいと思っています。そのために、探索アルゴリズムを修正しています。
現行CPUのパワーをすべて使い切れていないので、CPUパワーを効率よく使えるようにアルゴリズムを修正中です。マルチコアCPUのCPUを効率よく使えるようにマルチスレッド対応の探索処理を作成しています。
 現在、アルゴリズムの骨格は作成済みで、シングルスレッドでの動作確認まで済んでいますが、実際にマルチスレッド化するための排他処理などが未着手の状態です。

手牌構造の修正
 1スーツ分の非副露手牌の全パターンを事前にテーブルで持ち、数牌スーツ3種と字牌スーツの組み合わせで、向聴数、受け入れ牌種、捨て牌候補がどうなるかを高速に処理できるようにしました。
 上記考え方に基づくアルゴリズムは、現行版でも既に一部採用しているのですが、さらに改良を加えています。

データの取り直し
 相手の仕掛けや捨て牌に応じた行動がより的確にできるように相手の挙動を読むためのデータを牌譜から採取しなおしました。ただ、採取したデータの分析と、評価関数としてどのようなパラメータをどのような値とするかの作業が手が付いていません。単純にデータを採取しグラフを書いてみた段階で作業がストップしています。

鳴き仕掛けの処理
 片和了り、後付鳴きなどの強化のための、処理パーツを作成しています。いまは、作るべき部品の整理を済ませ、トイトイ、タンヤオ、チャンタ系、飜牌などの役の処理まで作成していますが、一通、三色などまだ作成していない役もあり、メインの思考ルーチンとの組み合わせもまだできていません。

点数状況判断の改造
 基本的な方針を脳内で決定し、簡単なシミュレートをしただけで、まったり麻雀に組み込むための具体的なコーディングはできていません。

モードの廃止と統合的な評価関数
 麻雀ゲームによっては、混一モード、七対モード、ベタオリモード、喰い断モード、聴牌即リーモードなどの多彩なモードを思考アルゴリズム持たせているものもありますが、まったり麻雀ではできるだけそのようなモードは持たせないようにしています。
 まったり麻雀も、混一モードなどを持っていますが、それらを廃止して、すべての状況を同一の評価方針で点数化できるように修正するつもりですが、まだ、作業が進んでいません。
 脳内で構想を練って、文書ファイルにまとめている状況です。

作成段階のアルゴリズムの仮組と現行アルゴリズムとの対戦
 いままでの作業て作成したアルゴリズムの部品を仮組レベルではありますが、組み立てて、ゲームに組み込んで、現行のアルゴリズムと対戦させてみる実験を実施しました。
 結果は、現行のアルゴリズムの方が強いというがっかりな結果がでました。その後、全ツッパ縛りで対戦させたところ新アルゴリズムの方が強いことがわかり、どうやら、新アルゴリズムの牌効率の問題ではなく、押し引き判定や雀士のクセとの相性などのバランスの問題であるようだということまで判明しています。
 この一連の作業で割と面白いことがわかりましたので、そのうち別記事にするかもしれません。

期待値計算の詳細化
 期待値計算のステップを巡目単位から、打/ツモ/鳴き単位に詳細化する作業をしています。これは統合的なアルゴリズムを作成するためにやった方がいいと思い作業を進めていますがもしかするとかえって誤差が増えてしまい逆効果になるかもしれず、苦労したけど没という憂き目にあうかもしれません。

他家仕掛け読み
 他家の仕掛けの意図を読むアルゴリズムの改造を予定していますが、今はまだ手が付いていません。

 全体的にやるべきことは決まっていて、淡々と実現のための作業を進めてはいるのですが、開発を煮詰めていくうちに色々と問題が出てきているうえに、なかなか解決のための時間と気力が確保できていない状況です。

|

« まったり麻雀と科学する麻雀の押し引き判定の違い | トップページ | まったり麻雀Ver0.9.7公開します »

コメント

開発お疲れ様です。

何か変に感じた部分があったので、仕様について質問します。
ルールに、
「和了やめ あり(トップがオーラスに上がるか聴牌すると自動的にゲーム終了)」
とありますが、全ての和了りが対象なのでしょうか?
オーラスで親が上がって2位以下の時も終了してしまいます。
この時は終了せずに連荘するのが妥当だと思いますが。

投稿: 348sakura | 2012/07/08 14:28

デュプリケートモードではないですか?
デュプリケートモードは一切連荘がありません。

投稿: kmo2 | 2012/07/08 17:19

デュプリケートモードで連荘なしにしている経緯とかは以下の記事見てください。
http://kmo2.cocolog-nifty.com/prog/2008/02/post_4ccf.html

投稿: kmo2 | 2012/07/08 17:21

牌譜を確認したところ、対面を飛ばしていたことが分かりました。
私のミスです。申し訳ございませんでした。

ちなみに、通常の東風赤ありで、連荘も確認しました。

投稿: 348sakura | 2012/07/08 20:42

東家で国士無双をツモ和了したのですが、48000点ではなく、32000点しか加点されていませんでした(他家は全員16000点ずつ点数がひかれていました)。もしこれがバグが原因であれば修正をお願いします。

投稿: panda | 2012/07/13 20:55

確認します。

投稿: kmo2 | 2012/07/14 01:10

原因分かりました。ありがとうございます。修正版を用意します。

投稿: kmo2 | 2012/07/14 01:34

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/61182/55146767

この記事へのトラックバック一覧です: 次期メジャーバージョンアップに向けた開発作業状況:

« まったり麻雀と科学する麻雀の押し引き判定の違い | トップページ | まったり麻雀Ver0.9.7公開します »