人は駒得のみに生くるにあらず その17
ひよこ将棋v0.10にはnull move pruningを実装しました。
序盤でのiterationが13手程度(15分設定にて)、終盤で9手程度回るようです。
以前に比べると序盤で3手、終盤で2手ぐらい伸びました。
探索速度は平均的には4,5Mnpsと言ったところでしょうか。シングルコアです。まだ並列探索はしていません。
1手探索深さが深くなるごとにR50はあがると思うのでR100ぐらい上がっていると思います。実力的に見てもR1600相当ぐらいだと思います。floodgateではもう少し高い点数がつくかも知れませんが。
角頭歩戦法は健在ですが、読みが深くなったせいか、そこそこうまい受けをします。
いやー、null move pruningって本当に素晴らしい技術ですね。
NullMove枝狩り
自分がパスをして相手に手番を渡しても、それでも結果がベータ以上なら、パスしないでどんな手を指したところでベータ以上になるはずなので、それ以上探索しないでのベータ以上と仮定する。山下さんによれば、商業チェスソフト界においてこっそり使われていた手法らしい
コンピュータ将棋の知識
http://misakirara.s296.xrea.com/misaki/words.html
へ〜、へ〜、へ〜って感じです。
それからひよこ将棋v0.10をfloodgateに投入しておきました。深夜のうちに落ちてなければ明日レーティングがついていると思います。…が、いま見たら初戦でれさぴょんに当たり千日手で引き分けになっていました…。
ひよこ将棋v0.10は千日手検出とか一切していないのですが、れさぴょんは意外と同じ手を繰り返してくることが多くてよく千日手になるんですよね…。これは修正しておかないといけません。明日は、この修正をしようと思います。
それから、のちほどひよこ将棋v0.10の実行ファイルを公開しておきます。
ひよこ将棋v0.10を公開しました。
例によってこのブログの一番上のダウンロードのコーナーからダウンロード出来ます。
デバッグはほとんどしていませんので途中で落ちても泣かないこと!
USI対応ですので、将棋所に思考エンジンとして登録して遊んでください。
■ ひよこ将棋を知らない人向け説明
・ひよこ将棋は駒得だけの評価関数でどこまで強くなるのかというチャレンジです。
・ひよこ将棋には駒得以外の評価関数は一切組み込まれていません。
・ひよこ将棋は定跡を一切持っておりません。
・某氏からパチってきた拝借した、「世界最速の指し手生成ルーチン」を使用しております。
ひよこの挑戦はまだまだ続きます!!!
人は駒得のみに生くるにあらず その18
ひよこ将棋v.0.10が玉を逃げ間違えて5手詰めのほうに逃げてしまう将棋がありまして、iteration8回は回っているのに5手詰めが見えないはずもなく、おかしいなーと思っていたのですが、今日原因がわかりました。
これです。
tree->pv[ply],ply = ply;
みなさん、わかりますか? "."(ドット)でなく","(カンマ)になっているんですね。
これについてVisual C++2010はコンパイル時に警告すら出しません。
私は目がすこぶる悪いのでこんなウォーリーを探せ!みたいなデバッグは苦手です。
デバッガーで追いかけるまでまったく気づきもしませんでした。
このバグのせいでひよこ将棋v0.10はPVが更新されないことがあります。そんな状態で勝ててるのが不思議ですが、ちょっとぐらいバグっていても大幅に弱くなるわけではないのがコンピューター将棋ってことですね。
人は駒得のみに生くるにあらず その19
新しい枝刈りを追加するごとにいろんなところがバグっているのに気づいて、その修正のほうが新しい機能の追加の倍ぐらいの時間がとられているひよこです、こんばんは。
・通常探索中にも1手詰みを呼び出すようにしました。終盤がわずかに強くなったのでR20〜30ぐらいあがったはず。
・あと小さなbug-fixいろいろやりました。落ちるとか、敵陣で飛車が成ったら1手詰めと判定するだとか、PVと違う手を返していただとか。(←全然小さいバグじゃない気がしますが…)
そうこうしているとGasyou_Atom-D510_2c4tとまた当たりまして、なんとか勝てました。
http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/10/24/wdoor+floodgate-900-0+hiyoko_shogi_v0.10_1t1c+Gasyou_Atom-D510_2c4t+20111024190005.csa
相変わらずひよこのほうはひどすぎる序盤ですが、終盤はアマ三段ぐらいの手が出てきます。
次の局面は先手のひよこ将棋の手番です。どうするのかなーと思っていたら41角打ち62玉に64桂!!詰めろがかかり、先手優勢です。
GA将のほうは、49銀〜47桂成と迫ってきますが27玉とひょいと交わして、GA将が74歩と退路をあけて、83金と打ったひよこ将棋。
ひよこ将棋はここで +Mate:11 と評価値を表示しています。「どうきても11手で詰みます」と宣言しているわけです。
以下、GA将は61金としますが、即詰みに討ちとります。11手というのは、詰みを見つけたらそれ以上短手数の詰みを探索しないように私はしているので、そのせいで手数が伸びているのだと思います。
あと、83金のところでは52角成が迫っていけば13手詰めですね。まだひよこ将棋にこの即詰みを見つけるのは少し辛いようです。頑張ってiterationをもっと回るようにしなくてはなりません。
いま現在、ひよこ将棋v0.10にはfloodgateの2週間レーティングではR1780という点数がついており、先日のような一時的な強さではなく、まあ、それぐらいのレーティングはあるのかなと思わせる程度に終盤は強くなってきています。
序盤が10級ぐらいの弱さなのですが、終盤がアマ四段ぐらいなので、総合棋力はアマ二段ぐらいなのかなという感じです。
のちほど新しい実行ファイルを公開しておきます。
ひよこ将棋v0.12公開しました。
floodgate上での名前はまだhiyoko_shogi_v0.10_1t1cのままです。
floodgateではあまり早くに引き上げると正しいレーティングがつかないので、毎晩寝る前に新しいエントリー名に変更するようにしています。そのため、公開しているバージョン名とfloodgateでの名前が同じであっても異なる実行ファイルであるということがありえます。ご注意ください。(誰もひよこ将棋で遊んでないでしょうけども)
■ ひよこ将棋を知らない人向け説明用テンプレ
・ひよこ将棋は駒得だけの評価関数でどこまで強くなるのかというチャレンジです。
・ひよこ将棋には駒得以外の評価関数は一切組み込まれていません。
・ひよこ将棋は定跡を一切持っておりません。
・某氏からパチってきた拝借した、「世界最速の指し手生成ルーチン」を使用しております。
ひよこ将棋が遊べない人がいるらしいのですが
2chのコンピューター将棋スレを見ていると、ひよこ将棋が遊べない人がいるらしいのですが…それ以前にまさか遊んでいただけるとは、作者冥利に尽きるというものです。
私は開発者以外のかたがダウンロードすることは想定していなかったので、説明が適当すぎました。大変失礼しました。
・Windowsでx64(64bit OS)であること。
Windows7 x64 にて動作確認をしていますが、特別なことは何もしていないので他のWindows系の64bit OSでも動くと思います。
・SSE2/4.2の命令をところどころ使っていますので、もしかしたらCore2以前のCPUでは動かないかも知れません。Core i7 860 , Core i5 , Phenom II x6などで動作確認しております。
将棋所で「これはUSIエンジンではありません」のメッセージが出る場合、将棋所を最新版にアップデートしてみてください。 ひよこ将棋側がメッセージを返すのが遅くて(?)タイムアウトになるようです。Lesserkaiのソースをパクってサンプル通りに書いたつもりなのですが。これについては原因をあとでもう少し調べてみます。
人は駒得のみに生くるにあらず その20
さきほどfloodgateにてひよこ将棋v0.12がFireFly(R2141) に勝ちました。
FireFlyは遅いマシンで動かしたSunFishらしいです。
記念に棋譜を貼っておきます。
http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/10/24/wdoor+floodgate-900-0+Firefly+hiyoko_shogi_v0.12_1t1c+20111024230003.csa
序盤からFireFlyがちょっかいを出してきたのでお互い玉を囲わない将棋になりました。こうなるとひよこ将棋はR200ぐらい強いです。あと乱戦で駒得が生きる展開になりました。こうなるとひよこ将棋はさらにR200ぐらい強いです。
しかし、上の棋譜をよく見ると、やはりひよこ将棋はひたすら駒得しか考えていません。玉の安全度とかどうでもよくて、ひたすら駒・駒・駒です。駒得になる手順自体はよく練られていて、私自身「ほほー、こうやって駒得するのか」という新たな発見があり、そして「こんなのぼくの知ってる将棋じゃない…」という想いとを交錯させながら傍観しております。
とても楽しいです。