« ちっとも進まん | トップページ | eval7作成中 »

2005/07/19

eval7作成開始

評価関数7作成開始。久々に一人麻雀用のプログラムを引っ張り出す。

評価関数7のやり方を単純に言うと、始めに和了形を全部羅列する方法。


例えば、下の画像の手牌の場合、二向聴数なので最低3枚入れ替えれば、和了形になる。
eval7-1

まずは、有効牌をリストアップする。
そしてその有効牌をすべて手牌に加えた多牌状態の手牌を作る。

一二二二三(4)(5)(6)(6)(6)(7)(8)(8)(8)12234発発発

その手牌から和了形のパターンをすべて抜き出し、その和了形の点数とその和了形になる確率を求める。
点数と確率をかけた値をその和了形に使わなかった牌の点数をして加算する。

例えば上記の手牌のうちの和了形のひとつとして

二二(4)(5)(6)(6)(7)(8)123発発発

を抜き出した場合、点数は(ドラなどを考えないと)リーチツモ発で4000点

元の手牌から追加した牌は(4)(7)発だが、これらを17回のツモの間に少なくとも1枚ずつ引く確率をPとするとPは以下の式で表現できる。

P = C(4,1)*C(4,1)*C(2,1) * C(見えてない牌の数-3,14) / C(見えてない牌の数,17)
※C(N,M)はN枚からM枚を選んだ場合の組み合わせ数

そして元の手牌にあった牌の内で上記の和了形に使わなかった一(8)2の評価点として4000*Pを加算する。

これをすべての和了パターンに行ない、不要牌に点数を加算する。
最終的に一番点数が高かった牌が一番いらない牌になる。


この方式のメリットとデメリットは以下の通り

メリット
1.
期待値版評価関数より計算速度が早いため、向聴数が悪くても計算できる。
2.
上記理由で手変わりについても評価しやすい。
3.
鳴き和了の時の評価点を出しやすくなる。
4.
最初に和了形をリストしているのでオーラスのように特定の点数を上がる必要があるケースでの評価がやりやすい。

デメリット
1.
厳密な意味での期待値とは異なる評価点になる。(例えば、ある特定の和了パターンになる前に別のパターンで和了する場合が考慮されていない)
2.
メンツオーバー形、リャンカン形、単騎待ち、特に七対子は本来の価値より高い点数になるはず。


今日までの作業状況:
入れ替え枚数を考慮しないで、すべての和了形のリストアップをしようとしたら、手牌のパターンによってはメモリ不足になるほどにパターン数が爆発していたので、和了形リストアップアルゴリズムを改造して、入れ替え枚数を考慮したリストアップを行なうように修正。(単純な修正でもっと工夫すればスピードアップが図れることは分かっているけれど、いまのままでも十分なスピードがでているようなのでいまはまだそのままにしておく。)

現在は同一パターンを重複して抜き出しているようなのでそこら辺の修正などを明日以降行なっていく。

|

« ちっとも進まん | トップページ | eval7作成中 »

コメント

はじめまして、最近麻雀ゲームを作ってみたいと思った麻雀好きの花と申します。
といっても、技術があるわけではなく0からjavaの勉強を始めて、先が見えずにさまよっていたらここにたどり着きました。
まだ過去の記事は読んでませんが、すごい内容だと思います。
がんばってください。
あと、少し勉強させてくださいm(._.)m

投稿: 花 | 2005/07/19 19:25

ども、はじめまして。
私もほとんど0から始めたようなものです。
麻雀に関するプログラミングについての資料は少ないですけれど、結局は基本的なアルゴリズムの組み合わせですから、技術書などに載ってるパズルを解くようなアルゴリズムは麻雀ゲームにも結構応用できます。

締め切りとか意識しないでのんびりやってれば麻雀ゲームプログラミングは結構楽しいですよ。花さんも頑張ってください。

投稿: kmo2 | 2005/07/19 21:47

ありがとうございます。
なげ気味でしたが、もう少し頑張れそうです。
ところで、メール送ろうとしたら帰ってきてしまいました。
ヤフーのアドレス変えたのですか?

投稿: 花 | 2005/07/20 04:33

あっと、すいません。わざと違うメアド書いてました。
これが今度は本物書いてあります。

投稿: kmo2 | 2005/07/20 06:58

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: eval7作成開始:

« ちっとも進まん | トップページ | eval7作成中 »