コンピュータ将棋など…。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ハッシュのクリアはするプログラムとしないプログラムとあるようです。
謎電さんのところでYSSが毎回律儀にハッシュをクリアしていることに対して、クリアしないハッシュのことが書いてありました。 「最近の実装は変わっているのかも?」と思い山下さんに聞いてみると今でも毎回クリアしているそうです。 実際、対局中の画面の出力を見ると407msとかかけてクリアしていました。 あと、公開されている木偶の坊のソースから判断したある工夫を確認したら、推測に間違いはないようですw ちなみになのははクリアするほう・・・あれっ? 意図としてはクリアするんだけど、処理がきちっと入っていないか・・・? えーと、 1.詰ハッシュの確認 ここで「詰みが入っている&&手がNull」の場合に詰ハッシュをクリアして再詰探索。 2.詰みなら指し手を返す 3.(意図としてはここで詰ハッシュと普通のハッシュをクリア) 4.思考ルーチン(詰み+木探索) となっていてクリアしていないっぽい…。orz PR
結局、朝まで寝てしまいました。
とりあえず、今日の大会用に x64 でビルドしたら、MFCのメッセージマップで ON_WM_TIMERでエラーとなり焦りました。 とりあえず、OnTimer(UINT nIDEvent) を OnTimer(UINT_PTR nIDEvent)に変更してビルド成功。 将棋所(LessarKai)と通信テストしたところ SLB を打ったし、これで対戦自体はいけるかな?
一致率を算出するようにしてみました。
純粋に対象棋譜との一致するかしないかを見た場合(純~)と対象棋譜の手と違っていても定跡データにあればOKとみなす場合(許容~)の両方で出してみました。
並列化が出来ていないのでシングルスレッドですが、1000局あたり70秒弱の時間がかかっていて全棋譜では47分弱だったので、せめて別アプリとして4つ平行に走らせるべきでした…。 本来であれば、ここでBonaメソの登場なんでしょうが、そこまで手が出ません…。 あと、この数値から行くと、皆さんが注目している一致率はここでの純一致率ってことですね。orz せめてもう少し上げていかないと。 れさぴょんの手の選択基準の頻度の高い手から勝率の高い手を選択するように変更してみました。
詰めルーチンを思考ルーチンに組み込む際に課題がありそうで実装をどうしようかと思っています。
課題は「内部ノードから詰めルーチンを呼ぶと判断を間違うことがある」(未確認)ということ。 ルートが先手のときに1手先の局面(後手番)から詰めルーチンを呼ぶと後手番からみた結果をハッシュに登録してしまう(あるいは先手番からみた結果を参照してしまう)。 普通は問題なさそうなんだけど、逆王手がかかる局面では間違えそう・・・。 ということで、今はルートからしか詰めルーチンを呼んでいません。 進歩本2の「6.4.2 ハッシュ表」にYSSでは先手の詰と後手の詰を分けていることが載っていました。 なのはではハッシュを分けるかなぁ~。 |
カレンダー
フリーエリア
なのはの応援をしていただき、かつ協力いただける方は、アマゾンでの買い物は下のリンクからお願いします
最新CM
[04/27 とおりすがり]
[10/21 おてだま]
[10/20 おてだま]
[01/24 なのはminiふぁん]
[01/08 sakura]
最新記事
(06/12)
(04/17)
(08/13)
(06/08)
(06/06)
最新TB
プロフィール
HN:
かず
性別:
非公開
ブログ内検索
カウンター
アクセス解析
|