« 2007年11月 | トップページ | 2008年1月 »

2007/12/31

どこまで細かく場合分けすべきか

期待値型の評価関数で、1人麻雀版と4人麻雀の違いは、他家の挙動により、18順目まであるとは限らない点にあるのだけれど、ここをどこまで考慮するか?こいつが結構面倒で悩ましい。

いまのアルゴリズムでは、立直がかかっている状態と、危険な鳴き仕掛けだけ失点の計算が入っていて、後のケースは、順目の継続率を考慮している程度で失点は無視している。

これを、先日のグラフなどを元に各順目での他家の和了による失点を考慮に入れようと考えているのだけれど、さすがに立直がかかっている状態とそうでない状態を場合分けせずに集計したデータを使うのは乱暴すぎる。

かといってどこまでやるべきか。

理想は、順目ごとに、
立直状態の他家一人がその順目に和了する確率、
門前ダマダマ状態の他家一人がその順目に和了する確率、
1副露状態の他家一人がその順目に和了する確率、
2副露状態の他家一人がその順目に和了する確率、
3副露状態の他家一人がその順目に和了する確率、
4副露状態の他家一人がその順目に和了する確率、

門前ダマ状態の他家一人に立直する確率
門前ダマ状態の他家一人がその順目に鳴く確率
1副露状態の他家一人がその順目に鳴く確率
2副露状態の他家一人がその順目に鳴く確率
3副露状態の他家一人がその順目に鳴く確率
4副露状態の他家一人がその順目に鳴く確率

を求めた上で計算すべきなのだろうけれど、正直面倒でやってられない。


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

2007/12/30

面倒臭い

手替わり版評価関数のバグ修正。
それと、4人麻雀向けに修正するための基礎データを集計しなおし。

点数分布と一人当たりの順目ごとの和了率のデータとった。こんなの誰かがすでにやってるだろうに……
とかく麻雀の研究てのは、難しいことなんてほとんどなくて、ただただ煩雑なことが多い。
Tensu_bunpu

Waryo_junnme

しかしなんで18順目は和了率が低いのだろう!?流局にしたほうが得との判断が働くのかな。

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

2007/12/29

麻雀シーズン到来?

ネット上で、麻雀の社会的な地位について、将棋と比較して論じている人を見かける。ま、確かに、プロの尊敬の度合いなど、社会的な地位は大差があるようにおもうけれど、一般的に受け入れられているのはむしろ麻雀なのではないのかな?そうおもって、思ってGoogle Trendで比較してみた。

Mj_vs_shogi

やっぱ検索数では麻雀がコンスタントに上回ってます。

グラフをみて興味深いのは、例年年末年始になると麻雀の検索数が伸びているということ。
なぜなんでしょうね?
正月休みにお年玉をかけて家族親戚でコタツ麻雀をやるからなんでしょうか?

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

2007/12/28

期待値型麻雀評価関数のジレンマ

「真の意味でのデジタル派な…」とか名乗っておきながらこんな言い方するのはなんだけど、オートモードで新アルゴリズムが打っているのをぼんやり見ていると、なんかすごく流れが悪いなと感じる。自摸の運が悪いとかではなくて、打ち方にポリシーを感じないという意味で。

ようするに、天さんからも同様のコメントいただいているけれど、「ここでこう打つなら、さっきああ打てばいいのに。」と感じる打牌が多いのだ。

前の状態だと打牌の良し悪しは別として打牌に一貫性があった。だから、棒聴即リー派な人が打ってると思えば割と自然に感じられたけれど、今度はいかにもコンピュータが打ってるっぽい支離滅裂なうち方と感じるケースも出てくる。変な表現だけれど、山崎一夫さんが打っていたのが途中から小島武夫さんが代打ちに入った感じになる。(!?)

これは、新アルゴリズムが計算量の関係で1向聴のときには使えるけれど、2向聴のときには使えないことに原因がある。2向聴と1向聴でアルゴリズムが替わるので、当然打ち方の癖が変わる。2向聴までは割と棒聴気味の打ち方なのに、1向聴になると手替わりまで読むようになるのだ。

2向聴でも新アルゴリズムが使えると良いのだけれど、どうしても計算量の爆発が起きてしまう。
2向聴で手代わりまできっちり期待値計算することは、3向聴の手で棒テンをで探索するのと同等以上に計算量がかかるのだけど、2向聴(6手先まで探索)から、3向聴(8手先まで探索)に探索の深さを変えると、単純なやり方だと、計算量は200倍から300倍程度かかる。
まったり麻雀は21世紀に入ってから発売開始された程度のPCの能力でも快適に動作できることを目安に計算量を決めているが、それらの比較的古いPCでも、ボウテン期待値型のアルゴリズムで計算させて、2向聴の手牌で最悪でも2,3秒以内には打牌すると思う。けれど、3向聴だと3分以上かかってしまい、ゲームの思考アルゴリズムとして使えない。

麻雀では、手がまとまっていない早い段階で手替わりを考えるのは、有効度が高いが、順目が進んでから考えるのはあまり有効度が低いとされているのだけど、この関係が逆になってしまうというジレンマが起きてしまっている。
私のプログラムは速度的に改善できる点がいっぱいあるので、何とかチャレンジしてみるつもりだけど、正直これはそんなに簡単ではない。このジレンマが解決できるようだと、少なくとも一人麻雀では人間が太刀打ちできない領域に達するだろう。

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

2007/12/26

新旧アルゴリズムの打牌の相違

一向聴のとき一手替わりまで読むようにしたアルゴリズムを一人麻雀に組み込み、旧アルゴリズムと打牌の違いを比較してみた。まだ、数値自体はバグがあり、新アルゴリズムは低い値がでるけど、打牌自体に違いはないはず。

裏ドラ一発なし、親で18打まで必ずあり、ロンなしの一人麻雀の条件。

私の意見も書いているけど正直自信なし。ぜひコメントください。

その1
Nanikiru01

旧: 打7索
新: 打2萬

私は7索切ると思うけど……新アルゴリズムは、役なしテンパイになる2萬を捨てて3色への変化を見てるっぽい。

その2
Nanikiru02

旧:打6索
新:打1萬

私だったら何切るだろう……やっは6索かな。下手すると、あせって8索とか切っちゃうかも。
新アルゴリズムは断ヤオへの変化を見てる!?

その3
Nanikiru03

旧:打9筒
新:打4筒

ま、これは、4筒切るかな私も。(その前に3打前のドラ切りが気になるけど)

その4
Nanikiru04
旧:打6萬
新:打7索
うーん。私なら6萬だなやっぱ。
新アルゴリズムは平和、一盃口または、三色 を見てる!?

その5
Nanikiru05
旧:打2萬
新:打4筒

これは私も新アルゴリズムと同じ意見。

* * * *

全体的に、私の感覚では、新アルゴリズムは、手変わりを重視しすぎてる気がするけど、自信なし。私自身の打ち方が和了率はそこそこ高いけど、素点が低くいタイプだからなあ。っていうか、旧アルゴリズムを見て、自分の打ち方を変えてるから、私の感覚が、旧アルゴリズムに近い価値感になってるのかも。

ただ、裏ドラなし、振込みなしというのが相当に評価値に影響してるはず。そこらへんを修正した4人麻雀用の評価値でも試してみる予定。

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

2007/12/23

麻雀は奥の浅いゲーム

ここ3年間、暇さえあれば、麻雀のアルゴリズムのことばっかり考えているけれど、なんていうか、麻雀ってのは、奥の浅いゲームだなと思う。
別に麻雀愛好家にけんか売ってるわけじゃない。
ここで言いたいのは、ゲームの木の構造を描いたときに、幅は広いけど深さは浅いゲームの木の絵になるって意味でのこと。

将棋などと違い、十数手も先を読む必要はなく、数手先が読めさえすればよいんだけど、一手先の変化の量が多くてそれが意外とままならない。とにかく、無駄にルールが複雑なので一つの局面の評価に時間がかかる上に、思考に費やすことが許される考慮時間が短いものだから、すこし、深く読もうとするとすぐに計算量の問題にぶち当たる。

2人零和完全情報交互ゲームの場合、αβ法のような有効でかつ安全な枝刈アルゴリズムが確立されていて入門者向けレベルでも理解できる本がいくつも出ているけれど、麻雀のような4人零和不完全情報ゲームの場合、そういった手法が確立されていない。

このゲームのアルゴリズムでは、作為的な前方枝刈で計算量の爆発を防いでいるわけだけど、これが棒テン気味に手をすすめる要因になってる。

今作っているやつで多少増しになることを期待するけど、どの道計算量的に1向聴のときしか使えないのが心配の種。(テンパイのときはまた別アルゴリズムになる)

「どうせ計算量の問題で1向聴でしか使えないしなあ」と思って、今まで手をつけてこなかったんだけど、うまくいかない理由ばっかり考えていると何も作業が進まなくなる。
とにかく条件が限定的でもマシになる部分を探して現状の欠点を直していかないといけないな。

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

2007/12/19

ブログ妖精ココロをVistaサイドバーに登録する方法

先日、Nifyから新しいブログパーツブログ妖精ココロが提供が開始された。ちょっと試してみたら「牌は多い方が来るよ」とか「新しいバグが……」みたいなセリフもしゃべった。なかなか面白い。
でも可愛すぎてこのブログには合わない。っていうか萌えキャラを自分のブログに張るのはなんだか恥ずかしい。(今はこのブログにも下のほうに表示してるけどそのうち消すかも。)

そんな恥ずかしがり屋さんのためにNiftyではMyNiftyのページでデザインをココロにしてひっそりと楽しむサービスも提供してる。

Mynifty

けれど、単にWEBのデザインがココロになるだけで、ココロが喋ってくれない。

なので、せっかくVistaに乗り換えたのでVistaのサイドバーガジェットの作り方をしらべてココロをサイドバーガジェットとして登録してみた。こんな感じ。
Kokoro_on_sidebar

ココロの利用登録が済んでいれば、やりかたは割りと簡単。
萌えキャラ好きを世間に認知されたくない人、逆にブラウザを開いていないときもココロに逢いたい人はお試しあれ。

まず、ここからzipファイルをダウンロードして解凍する。

そして、メモ帳でkokoro.htmlを開き、ブログ登録のためのスクリプトコードを貼り付けて保存する。

Kokoro_setting

スクリプトコードはココロのページからログイン後、各種設定のページの下のほうにあります。

Harituke_code_3


そして、以下のフォルダに解凍したkokoro.gadgetフォルダをフォルダごとコピーする。
%userprofile%\AppData\Local\Microsoft\Windows Sidebar\Gadgets
ただ、このフォルダは隠しフォルダなので、フォルダオプションの設定を変えないと、ファイルエクスプローラからは直接見えない。なので、アドレスバーに上の一行をコピペしてして直接目的のフォルダを開くようにすると良い。

Gadget_folder


あとはサイドバーを右クリックしてプルダウンメニューから「ガジェットの追加」を選んでココロのガジェット選択すれば、表示されるはず。

| | コメント (9) | トラックバック (5)

開発環境を移行

新しいPCを購入し、開発環境を移行。
OSをXPからVistaに変更したため、Borland C++ Builder6が動作しなくなってしまった。(プロジェクトのプロパティを表示しようとするとエラーになる)
まったり麻雀の開発が継続できないかも!?と慌てたけれど、TurboC++の無償版はVistaでも問題なく動作しているので、開発環境をTurboC++に完全移行した。

* * * *

作業としては、混一モード時に、無意味な鳴きをするバグと、死に塔子にこだわるバグを修正した。
けれど、リリースはまだ保留。一向聴のときに手広く読む評価関数を実装してからリリースしたい。

一向聴のときに手広く読むようにするために、どのように実装にすればよいかのについて、具体的な方針がほぼ決定。明日から実際の作業に移る予定。

これが実装できると相当打ち方の印象が変わり自然な感じになるのではないかと期待している。
また、今後修正する点況判断にもかなり有益になアルゴリズムになると期待している。


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

2007/12/14

母がオレオレ詐欺に引っかかりました

まったく、あんな手に引っかかる馬鹿はどこのどいつだよと思ってましたが、自分の親でしたか、そうですか。

 朝自宅に電話ががかかってきて私が痴漢をしたので示談交渉中だとのこと。相手の女性はレイプされて流産?した経験があるので痴漢にあって通常以上にすごくショックを受けている。私は泣いていて、魔が差した、父親には言わないでくれと言ってたらしい。

 私は公安に捕まっていて携帯電話も没収されていてることになっていて会社には体調不良で休むと連絡をしてるとのこと。すでに弁護士もそばにいると。父には言うなと念を押した上で、示談にしたいので金を振り込めと、言ってきたらしい。

 私の電話番号を教えろといわれ、母は、素直に私の携帯電話の番号を教えてしまったらしい。名前も名乗ったそうだ。その直後、私の携帯には頻繁に出会い系サイトの料金滞納分を払えと催促電話がかかってくる。べたな脅迫で面白がって相手していたんですが、何度相手してもしつこくかけなおしてくるんで、うっとうしくなって電話の電源を切ったのですがそれも相手の作戦の一部だった模様。
 私から出会い系サイトの料金を取れるとは思ってなくて、両親が私と連絡を取れないように、私に携帯の電源を切らせる作戦なんですな。よく、考えているなと変な感心してしまった。

結局、金は払わなかったんですが、あっさり電話番号教えてしまうとは、ホンとあほな親だこと。
うちの親は割りと何でも信じるほうで、マイナスイオン清浄機だとか、変な神秘的な水だとか、ご利益のあるお札だとかが家にあったりする。

いつも、得体の知れないものに金を払えといってきたら、警察だろうと神様だろうと全部サギだと思えといってたんですがねえ……


忘年会の話のネタが増えたんで、良しとしますか。

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

2007/12/13

地味に作業中

手牌の分析部や向聴数チェックアルゴリズムなどを地味に改造中。われながら汚いプログラムなので作業のやりがいがあるな……

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

« 2007年11月 | トップページ | 2008年1月 »