« 検証中 | トップページ | 期待値計算ロジック作成 »

2004/12/10

3万局検証結果

目先の向聴数を向上させる牌の数がもっとも多くなるように牌をきるアルゴリズム(A)と現在の向聴数を向上させる牌の数×向聴数N-1の時の向聴数を向上させる牌の数×…と掛け算をすることによってもとまる評価値を基準にどの牌を切るかを決めているアルゴリズム(B)で、どの程度の差が出るか試してみた。(まだ、局数が十分とはいえないかもしれないが。)

結果は以下のとおり。

アルゴリズムA
試験数=10000
和了率=21.12%
テンパイ数=51.55%
所要時間 49932.296000秒[秒/一万局]

アルゴリズムB
試験数=20000
和了数=22.04%
テンパイ数=49.90%
所要時間 25329.500000[秒/一万局]

なお、アルゴリズムBを適用しているのは2向聴からであり、それ以前についてはAと同じである。また、Bのほうがはるかに複雑な処理をしているのに所要時間がAより短いのは、Aが高速化する前の手牌解析サブルーチンを利用してるためである。

BはAよりも和了率は1%弱ほど良くなっているが、むしろテンパイ率は悪くなっている。
テンパイ率が悪くなるのは将来の効率のために目先の効率の悪さを多少目をつむっているためであり、十分予測できる結果ではある。たとえば、11月27の記事の上の手牌では3ピンを切るより4萬をきる方がテンパイまでたどり着く確率は確かに大きいだろう。

また、和了率が1%程度の差が出るであろうこともある程度期待していた結果どおりではある。
評価関数を目先の受け入れ枚数ではなくBのような掛け算で求めること自体は間違いではないだろう。

今後の改善点の候補の1つとしては、以前紹介したあらのHPのように、向聴数毎の評価値を受け入れ枚数とするのではなくしっかりと確率計算をすることがある。しかしこれは直感的/経験的に和了率に響くほどの差がでることは考えにくい。ただし、今のままでは異なる向聴数の手牌同士の優劣の比較が行えないという欠点があり、それが解消されるというメリットはある。

もう一点の改善点候補は、手変わりを考慮に入れることである。おそらく、こちらのほうが和了率への影響は大きいだろう。アルゴリズムBは2向聴の状態から和了状態まで向聴数が上がるツモに関しては完全に網羅してるわけだが、向聴数が上がらない手変わりについては考慮されていない。

こんご、今よりも和了率を良くしようとしたら。

A.アルゴリズムBに手変わりを考慮に入れた再帰呼び出しによる先読みを実施する。
B.アルゴリズムAに、向聴数が向上する枚数以外に現在の手牌状況のあがりやすさを示す評価値を導入する。などの方法が考えられる。

A.の方法はまず間違いなく計算量的にゲームに組み込めるだけの速度を出すことは不可能だろう。
B.の方法では何を評価値として採用するか、その評価値の重み係数をどう設定するかが重要になってくる。

いずれにせよ、向聴数の変わらない手変わりを考慮に入れるために、向聴数は上がらないが両面ターツの数が増える牌を探すアルゴリズムを作っておいて損は無いだろう。

また、2つのアルゴリズムで具体的にどのような局面で打ち方に差が出たのかを今後検証してみる価値もあるかもしれない。

|

« 検証中 | トップページ | 期待値計算ロジック作成 »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 3万局検証結果:

» マッタリプログラミング日誌 [ひいいの麻雀研究]
kmo2さんのマッタリプログラミング日誌(http://kmo2.cocolog... [続きを読む]

受信: 2004/12/12 23:38

« 検証中 | トップページ | 期待値計算ロジック作成 »