Bonanzaの高速一手詰め

思うところあって、Bonanzaの一手詰めルーチン(mate1ply.c)を読んでいます。 一見、長くて複雑そうなのですが、長いのは駒の種類ごとに細かく場合分けしてあるためで、思ったほど複雑な処理をしているわけではなかったようです。 自分が読んでみた内容をざ…

矢倉囲いに感動

最近、序盤の強化を試みているのですが、成果を試してみようと、Lesserkaiと対戦させてみました。 棋譜はこんな感じです。 先手:ymshogi_v3 後手:Lesserkai 1.3.2 ▲7六歩 △3四歩 ▲6六歩 △5四歩 ▲1六歩 △3二金 ▲5六歩 △4二銀 ▲2六歩 △3三銀 ▲2五…

計数将棋学的写真

昨日の午後、少し時間が空いたので、こんな写真を撮って来ました。 鋭い方はもうお分かりでしょう。 何だか分からない方はこちらをどうぞ。 それでは、写真左下に見える階段を上がってみましょう。 ラテン語の文章"Quae sit sapientia disce legendo"は、古…

位置評価用のインデックス

小宮日記の「位置評価用のインデックスは領域を重ねている」を読んで、最初はインデックスの意味が分からなかったんですが、いろいろ考えてようやく理解できました。 コメントに書こうと思ったんですが、忘れそうだし、長くなったのでこちらで。 「領域を重…

ボーナスの算入のしかた

前の記事で書いた、「残りのノードがたくさんあるなら優先度は低く、もう少しで証明が終わるなら優先度を高く」の方法ですが、UCB値にボーナスを加える方法で実装しています。 別に大した話でもないので、そのやり方について書いておきます。*1 UCB1-TUNEDの…

再びモンテカルロへ

確定勝利優先アルゴリズムにここで書いた修正を加えてみました。

one replyのなぞ

保木さんの論文を初めて読んでから、「one reply」というのが分からなくて、そのままずっと放置してました。 で、放置したことも忘れていたんですが、今回のことで思い出して、探索延長の部分のソースを見てみると、こんなコードが。 else if ( ptree->nsuc_…

そうか

PLY_MAXが48に設定されているから、実際にこのチェック if ( ply >= PLY_MAX-1 ) { if ( alpha_old != alpha ) { pv_close( ptree, ply, no_rep ); } MOVE_CURR = MOVE_NA; return value; } で引っかかることはまず無いということですね。自己解決しました。…

Bonanza公開に思うこと

bonanza.txtを読んで初めて、aka(=also known as)という略語があることを知りました。それはともかく、やはりいろんな方が反応されてますね。 当然ながら、皆さん、私などよりソースを読むスピードが速いようで*1、とうてい追いつけそうにありません。ym将棋…

Bonanza Version 4.0.3 公開

かずさんからの連絡で、早速ダウンロードしました。 …これ、ソース全部公開されてますよね。。予想以上の衝撃、感謝、感激です。 学習をやっておられる方はもちろん、そうでない方も探索とかの処理はとても参考になるのでは。 …C言語勉強しよう。いずれにし…

Bonanza Version 4.0.3に?

「コンピュータ将棋選手権使用可能ライブラリ」のページが更新されていました。BonanzaのVersionが3.0→4.0.3に変わっている… 認定とも却下とも書いてないので、まだ結論は出ていないのでしょうか。 申請からそろそろ1ヶ月、規定上は結論が出る頃ですが、どう…

「富士」乗車中

将棋と関係ないですが… いま新山口駅を出ました。 もうすぐ広島県に入りますね。 窓の外は雪で真っ白です。

たまには

休養をとりたいと思い、発作的に温泉に行くことにしました。 年末年始はほとんどプログラムしてましたので… 仕事を1日休んで、九州まで行ってきます。 帰りは、あのマイムーブ西村さんも乗った特急富士です。 (あのってなんだ) 廃止が決まったため、寝台券…

考え方だけ借用

前のエントリの話、つづく。証明数/反証数の考え方を借用しますが、とはいっても詰将棋とは違い、詰む詰まないを判定するのは主目的ではないので、 「詰みそうなノードには、多めにplayoutを割り当てる」 という基本方針でいこうと思います。あるノードの子…

どうやらバグがあったらしい

確定勝利優先アルゴリズム(長いです。。いい略語ないですか?)を入れて「5手詰めが解けた」と喜んでいたんですが、他の問題を解かせてみると、解けないはずの9手詰めまで詰みを返してきました。 調べてみると、勝ちフラグを立てる処理が間違っていて、本当…

ちょっと修正

確定勝利優先アルゴリズムの実装をちょっと修正しました。 昨日の実装では、指し手選択の時、「負けフラグが立っている手は選ばない」ようにしていました。 指しても必ず負けと分かっているので、調べる意味がないからですが、 よく考えたら、勝ちフラグが立…

モンテカルロ探索の小ねた

しばらくいじらないと誓ったモンテカルロ探索ですが、 テスト対戦を繰り返していると、ここで致命的なミスが出て負けることが結構多いのに気づきました。 で、そのたびに手直し。最近入れた修正はこんな感じです。 「確定勝利優先アルゴリズム」の実装 GPWで…

今年の選手権

申込み済ませました。 今年はGWに仕事が入る可能性があって、参加の可否は微妙なのですが、なるべく仕事と折り合いをつけて参加したいと思います。 ところで、今月からゆうちょ銀行と他金融機関との間で振込ができるようになりましたが、参加費用の送金で振…

Bonanzaなど

「世界コンピュータ将棋選手権使用可能ライブラリ」の「ライブラリ申請状況」の欄に、 「Bonanza Version 3.0」 とあるのが、とても気になっています。 いつ認可があるのか分かりませんが、どういう形式で使用できるようになるのでしょうか…

ym将棋のモンテカルロ探索

最近仕事が忙しく、GPW杯以降プログラムを全くいじってないのですが、年末年始の休みには手をつけたいと思っています。しばらくは通常探索の方に専念したいので、この辺で一度、ym将棋のモンテカルロ探索のアルゴリズムを公開してしまいます。 以下の内容…

GPW2008 その2

関係の皆さま、お世話になりました。ありがとうございます。 盛りだくさんの発表や講演、イベントが続き、文字通り寝る暇もないほどの、密度の濃い48時間でした。 最近、モンテカルロ将棋を試みている自分としては、「棋理」の佐藤さんの発表がとても興味深…

GPW杯に向けて

連休中、必死にデバッグを続けた甲斐があり、ようやく変な手を指さないようになりました。 覚えきれないほど多くの、かつ重大なバグがいくつもあって、今までよくこれで動いていたな…という感じです。 特に、今年の選手権直前にバタバタと実装した部分に多か…

GPW2008

今日、参加費用を振り込んできました。 ということで初参加します。 関係の皆さま、どうぞよろしくお願いいたします。せっかくの機会ですので、GPW杯にも何とか参加したいのですが、強さ以前に、正しく動くかどうかが問題、という状況で…さすがにバグだらけ…

小宮日記さんでとりあげられていた局面

http://d.hatena.ne.jp/mkomiya/20081019/1224373480 以前作ったモンテカルロでやらせてみました。 後手の持駒:歩 9 8 7 6 5 4 3 2 1 + v玉v桂v金 ・ ・ ・ ・ ・ と 一 v香v銀 ・ ・ ・ ・ ・ ・ ・ 二 v歩v歩v香v金v歩v銀 ・ ・v歩 三 ・ ・ ・v…

100年インタビュー

数日前にNHK-BSでやっていたインタビュー番組で、羽生名人がお話をされていました。 やはりというか、コンピュータ将棋についても話題が出ました。名人がコンピュータ将棋に抱いている印象。 「アマ高段の水準まできて、それからどう進歩していくのか、方向…

モンテカルロ将棋

少し実験してみましたが、なかなか難しいことを実感しました。 「細く長い手順」を読むのが難しい、とは聞いていましたが、実際にやってみて痛感。 駒の取り合いなんかはうまく読めずに、タダ捨てを繰り返したり、ということになります。 こういうのは、相手…

情報処理

注文していた学会誌が届いたので、さっそく「ミニ小特集」を読んでみました。 どの記事も面白かったですが、一番興味深かったのが「棚瀬将棋の技術背景」。 何より、Bonanza method の解説が分かりやすく、私はこの文章でようやく理解できた気がします。 探…

時間計測について、つづく

今朝目が覚めたとき、ハッシュ関連のバグに気が付きました。 エントリ数を制限するようなロジックを入れたにも関わらず、それが間違っていて、制限が機能していませんでした。他にもバグを見つけましたが、それが正しく時間計測できない理由というわけではな…

時間計測について

何ヶ月か前、他のブログで時間計測について話題が出ていましたが、 ym将棋でも、修正をしているうちに、時間計測がおかしくなる事態が発生しました。 話題が出ていた事象とは違うかもしれませんが、手元で起きていたのはこんな感じです。 ・制限時間1秒で思…

ハッシュには魔物が棲む

オーバーホールの途中、ハッシュ関連でバグを発見。。 ym将棋がベースにした れさぴょん(Java) では、ハッシュ値に手番情報がなかったので、手番が変わるたびに値を反転させる方式を導入しています。 ところが、その反転処理が間違っていて、大半のケースで…