« 2007年2月 | トップページ | 2007年4月 »

2007/03/31

ライツアウトの解法

渡辺竜王VSボナンザ戦に感銘を受けていろいろWEBで調べまわってる。
そんな折に見つけたのかこのページ。ライツアウトというパズルの解法を紹介してる。
こんな解き方があったのか……。
一時期、ライツアウトに嵌ってたんだけど、まったく考えが及ばなかった。

| | コメント (0) | トラックバック (0)

2007/03/30

データ取ってみた

東南戦1000試合で鳴き仕掛けに対してベタオリすべきと判断した局面は638回。
その局面で降りなかったときの局平均収支は-980。

評価関数で推測した値との差もデータ取ってみた。
3向聴以上はリアルタイムに期待値計算できないので対象外として、
2向聴以内の手で集計すると、
ベタオリすべき対象となる局面数は559回
そのときの局平均収支は-920。
評価関数での計算値では期待値-860。
これだけ比較してみると評価関数の出来はそれなりに良さげだけど、個々の局面の場合わけが甘いんで、リアルタイムで見ているとイマイチな印象を受ける。

さて、局平均収支-980って数字はどう見るべきか。
ベタオリしたときのマイナスとそれほど差が出ない数字なら降りても仕方ない気もする。
計算上、ベタオリしたときの評価関数での局平均期待値は-450と出ている。倍も違うといえなくも無い。
まずは、降りたときの局収支を集計できるようにプログラムしていく。


| | コメント (0) | トラックバック (0)

データを取ってみるか

鳴き仕掛けに対してベタオリすべきと判定した局面にもかかわらず、降りなかった場合、どのような局収支になるかをデータを取ってみる。(鳴きには降りないが、立直がかかった場合には降りることもある)
それと、鳴き仕掛けに対してベタオリすべきと判定した局面で実際に降りた場合のデータも取ってみて差を見てみる予定。

* * *
現在、突っ張ったときのデータ採取を開始、まだ開始10分程度だけど、平均局収支は-1500~-1600位。

| | コメント (0) | トラックバック (0)

2007/03/25

鳴き仕掛けに対して降りるべきと判断したケース

作成中の鳴き仕掛けに対する警戒部分で、オリと判断した状況を無作為に8つ紹介。誰の手番かわかりにくいけれど、手牌の数を数えてください。
点数状況判断は無し。どれも、降りないときと降りるときの差は僅か。私の感覚だと降りすぎてると感じるんだけど……でも私は、第2東風荘で放銃率14%前後のヘタレだから、私の感覚は当てにならんのか。
1つめ
Nakiori1
2つめ
Nakiori2
3つめ
Nakiori3
4つめ
Nakiori4
5つめ
Nakiori5
6つめ
Nakiori6
7つめ
Nakiori7
8つめ
Nakiori8

| | コメント (4) | トラックバック (0)

2007/03/23

2chのスレ


おまいら最強の麻雀プログラムしてみろよ

ときどき、似たようなスレがたちますがあっさり消えていってしまいます。
今回はぜひがんばってもらいたいと思います。

ところで、このスレの中で、リバーシ1って人が提唱しているやりかたについて……
===============================================
35 :リバーシ1:2007/03/15(木) 13:56:42
最強の麻雀アルゴリズムができた
まず14枚をランダムで配る そして何を捨てるのがいいか調べるアルゴリズム


もし、役が出来ていたらbreakする
残りごまの中から、一枚ランダムに加えて、どれか一枚を捨てたら
役が出来るなら、その駒が選ばれたとカウントする(もっとも得点が高くなる駒を選ぶ)

役が出来ていないならば、もう一枚加えて、どれか二枚を捨てたら
役が出来るなら、その駒が選ばれたと0.5ずつカウントする
終局までに、どんな役も揃わなかったら、カウントしない

これを1万回くらい繰り返すと、役が揃いやすい捨て駒にカウントが集まる
敵からのリーチ、一発があるときは、手を変える事もあるがあとで
ぽん、かん、ちーが出来るときは、するかどうか、1万回くらい試行して決める
============================

これは、いわゆる、モンテカルロ法というやり方だとおもいます。

最近囲碁の世界で、このやり方が脚光を浴びているようです。
参考URL
http://www32.ocn.ne.jp/~yss/monte.html
http://www.itmedia.co.jp/news/articles/0702/22/news054.html

このような方法は麻雀にも活用できるでしょうか?

まず、結論から言うと現時点では相当に困難だと思います。
なぜなら、オセロ、囲碁が陣取り合戦のゲームであり、チェスや将棋が殺戮破壊のゲームであるのに対して、麻雀は創造のゲームだからです。(さらに思考時間が2,3秒しか許されていないという問題もあります。)

リバーシや囲碁の場合、ルールで許されている場所に適当に石を置いていけば、どんなにでたらめに打っていてもそのうち石を置ける場所がなくなるのでとりあえず勝敗は付きます。
しかし、麻雀は混沌とした状態から秩序を創造していくゲームです。デラタメに打っていたらエントロピーは減少せず、天和レベルの確率でしか上がれません。

1万回程度の試行回数では当然1回もあがれません。
試行回数を増やそうとすると今度は制限時間が問題になってきます。

なので、でたらめにツモと打牌を繰り返すやり方ではどうしてもよい結果は出せません。
なんらかの工夫が必要となります。

ひとつの方法として、打牌をせず、ツモだけランダムに追加していき、先に和了形を抜きだしてから不要牌に点数をつけるという案が考えられます。
しかし、これも、私はすでに試しましたが、とてもではないが計算が追いつきません.
また、計算時間を無視したとしても、単騎待ち、面子オーバー形、面子候補が足りない場合に誤差が大きすぎてしまい。私が現状使っているやり方よりも牌効率が悪くなってしまいます。

これらの欠点を解消する何らかの方法があるのであるとすると、結構面白いことにつかえそうではあるのですが、今のところよい手立ては私には思いつきません。


| | コメント (2) | トラックバック (0)

2007/03/21

牌譜データ提供のお願い

第2東風荘の超上級ランキング卓の牌譜データをお持ちの方、牌譜データを提供願えないでしょうか。
出来ればひとつのハンドルで500試合以上のまとまった試合数をこなしているものが望ましいですが、数が少ないものでもOKです。提供していただける方は、lzhかzip形式でmjscore.txtを圧縮の上、kmo2@yahoo.co.jpに送ってください。何のお礼もできませんが、よろしくお願いします

| | コメント (0) | トラックバック (0)

2007/03/19

これはダメかもしれん。

バグを消しつつ、鳴き対策の動きを見てるけれど、かなり現実的な結果や私の感覚とズレが生じている。

このアルゴリズムが見ているのは、さらしている面子の種類、前半の捨てパイの色の片寄り、前半の河に捨てられている3~7の数牌の枚数、順目だけ。それと、やはり、それぞれの要素が独立と考えるの無理がある。

判断に使う状況を増やそうにもデータが足りなくて細かい状況分けは不可能。それに、手出しツモギリなどの要素はノーリスクでブラフに使えるので入れたくない。

さあ、どうするか……

| | コメント (2) | トラックバック (0)

2007/03/15

バグだらけ

ある程度動作するようになったので、動かしながらデバッグしているが、バグ多し。
立直のときの平均失点を組み込むのを忘れてる。

| | コメント (0) | トラックバック (0)

2007/03/03

なかなか、試したい局面が出ない

変数を初期化していないというダメダメなバグ発見。直してためしに打っている状況。
けれど、デモモードで眺めていてもなかなか修正した効果が現れる局面が現れない。
自分で打って無理やり混一狙ったりしていたら、自分の打ち方が狂ってしまって東風荘で絶不調になってしまった。

| | コメント (2) | トラックバック (0)

« 2007年2月 | トップページ | 2007年4月 »