コンピュータ将棋など…。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
思ったように動作しなく、assertを入れまくった結果、1手進める/戻す処理でデータ不整合となっていました。
先手番ではうまく動作して後手番でうまく動作しないというありがちな状況で今までテスト漏れしていました。 3枚目の角が出現したりしてます。 本番で出ませんように…。 非常にマズイ気がする…。 ・利き情報の生成 ・ピン情報の生成 ・合法手の生成 ・1手進める/1手戻す ・利き情報の差分更新 ・ピン情報の差分更新 ・局面ハッシュの差分更新 ←今ここ ・王手生成 ・詰将棋(反復深化) ・詰将棋(df-pn) ←年内の目標 ・局面の静的評価 ・αβ探索 ・SEE ・パラメータの学習 ・GUIとの結合 ・floodgate参戦 : ・GUI開発
なのはの局面データは利き情報(先手、後手)とピン情報を持っている。
手を進める処理および手を戻す処理においてのピン情報の更新を次のように行っている。 まず、玉の利きを延長し、利き情報に入れておく(下図:黒=自玉、赤=相手玉)。 ※実際には局面データの初期化時に設定し、玉移動時に更新する。 自玉を動かす場合: ・自玉に関するピン情報を更新する。 ・相手玉の利きの延長線上に自玉の移動元、移動先がある場合、その線上のピン情報を更新する。 (2六玉とする場合、4四から1七のラインのピン情報を更新する) 玉以外の駒を動かす場合: ・移動元、移動先が自玉、相手玉の利きの延長線上にある場合、その線上のピン情報を更新する。 (5五に角がいて3三に移動する場合、自玉の4六~9一、3六~3一のライン、相手玉の5四~5九、4四~1七のラインのピン情報を更新する) 王手がかかっているときの合法手生成のテストをしてて見つけたバグ…。 Index = _BitScanForward(&Index, Mask); としていました。
駒番号を見ての着手生成が出来ました。
ループ回数が81回から40回に減ったことで高速化されました。 しかし、BitBoardにはちょっと追いつけそうにありません…。 ・例の局面 … 66万回/秒 ・初期局面 … 103万回/秒 まだ、ピン情報は未確認です。 着手による盤面の更新処理はどうしたものかなぁ~。 v飛・・歩・歩・・玉 のような並びのときに歩を動かしたときに、動かさないほうの歩がピンされた状態になるけど、これを高速に差分更新するにはどうしたらいいんだろう?? うーん、ピンは都度生成したほうがいいのかな? |
カレンダー
フリーエリア
なのはの応援をしていただき、かつ協力いただける方は、アマゾンでの買い物は下のリンクからお願いします
最新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:
かず
性別:
非公開
ブログ内検索
カウンター
アクセス解析
|