忍者ブログ
コンピュータ将棋など…。
[32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

少しがんばったものの簡易判定なので、詰む局面でも「詰み」と判定できないことが結構あります。。。
とりあえず、詰みと判断できないパターン(ほかにもあるかも??):

・玉の八近傍以外への駒打ち / 駒移動
・空き王手
・飛び駒の利きを延長するような局面(中央:2二銀が動くと1三に馬の利きが通る)
・両王手(ただし移動先に敵の利きがなければ通常の王手として判断可能)

詰まない1
49ac430c.pngb7dadfe1.png






1手詰めの詰将棋は合い利かずだったり、空き王手が多く、かなり解けません…。

※宣伝:
職場や事務所などでコピー機、複合機、レーザープリンタ等を使われていて、そろそろリース更新や買い替えを検討されている方がいらっしゃいましたら一報をお願いします。私が製品開発にかかわった複合機などの紹介をさせてください(営業担当が伺います)。
よろしくお願いします。
PR
詰ルーチンで新規節点で固定深さの探索を併用するようにしてみましたが、正解率は上がった(?)ような気がするものの、処理時間が残念なことになってしまいました。
やはり手抜き実装なのがいかんのか?!

せっかく1手詰め判定関数をがんばって作ったのになぁ。
ORノードで呼ぶようにしたときには速くなってたので、調子に乗っていろいろいっぺんに手を入れたら返って遅くなってしまったので、調整の問題かもしれないけど。

残り時間を考えると、詰ルーチンに時間をかけてる場合じゃないな(苦笑)。

あぁ、パーマンのコピーロボットかNARUTOの影分身のスキルが欲しいw

※宣伝:
職場や事務所などでコピー機、複合機、レーザープリンタ等を使われていて、そろそろリース更新や買い替えを検討されている方がいらっしゃいましたら一報をお願いします。私が製品開発にかかわった複合機などの紹介をさせてください(営業担当が伺います)。
よろしくお願いします。
閃いたので、1手詰判定関数から手を進めて戻す処理をなくしました!
これで、テストケース100万回ループの平均が196msから140msに高速化されました!!
(テストケースは1手・3手・5手詰なので偏っていますが)
テストケースの中でのワーストは680msなので、毎秒147万局面ですね。
2005年の金子さんらの資料だと「2GHzのCPUならば毎秒200万局面近く」とあり、今回の計測は2.6GHzのCPU使っているのでやや遅い?

で、調子に乗ってピンも考慮するようにしてみたところ、1.5倍ほど遅くなった上に次の局面で「4一龍で3一馬がピンされているので3二龍で詰み」と誤判断してしまいました。
うーん、これは難しそう。
オリンピアード用には1手詰判定関数からピンの考慮を除くか…。

ピンで間違い


※宣伝:
職場や事務所などでコピー機、複合機、レーザープリンタ等を使われていて、そろそろリース更新や買い替えを検討されている方がいらっしゃいましたら一報をお願いします。私が製品開発にかかわった複合機などの紹介をさせてください(営業担当が伺います)。
よろしくお願いします。
ヤバイ!
実質的な改良はまだ何もしていなくて、今、1手詰め判定関数のデバッグ中です。

とりあえずいろいろな問題でルーチンを動かしたところ、テーブルの設定ミスや移動可能の判断、相手から王手している駒を取られて詰まないなどのバグが見つかり、見つけたバグは全部対策したはず!
まぁ、まだまだ残っていると思いますが…。

あと、王手がかかっているときはコールしないというのが普通みたいですが、一応対応しました。
王手をかけている駒が1つの場合は、その駒を取って王手になり詰むか確認し、両王手の場合は詰まないと返します。

100万回のループで、候補手がないときは90~150ms、駒を打って詰むときは100ms~150ms、駒を動かして詰むときは400~1500ms程度かかるようです。

これで3手詰めにすると数秒~十数秒になってくるので、静止探索から呼ぶにはちょっと重すぎと思われます。

Bonanzaの1手詰めや3手詰めはどのくらいの時間で実行できているんでしょうね?

※宣伝:
職場や事務所などでコピー機、複合機、レーザープリンタ等を使われていて、そろそろリース更新や買い替えを検討されている方がいらっしゃいましたら一報をお願いします。私が製品開発にかかわった複合機などの紹介をさせてください(営業担当が伺います)。
よろしくお願いします。
だいたい出来ました!

割り切ったのは、
・王手は玉の近傍に限定し、離れた位置からの王手はチェックしない。
・ピンは考慮しない(本当は詰むのに詰まないと判断する)。
かな。

局面を更新しないで玉の近傍への駒打ちによる詰み判定はできました。
玉の近傍への移動による詰み判定は、難しかったので局面を更新して詰むかどうか判断しています。

これでも、100万回のループで1秒切っている(たいてい250ms以下)ので、それなりのスピードは達成できているんじゃないかと思います。
ループでコールしているので、キャッシュのヒット率が異様に上がっているだけかもしれませんが。

あとはこれを
・3手詰めに拡張
・静止探索に組み込む
・証明数/反証数の予測を追加して、詰ルーチンに組み込む
としていきたいですね。

※宣伝:
職場や事務所などでコピー機、複合機、レーザープリンタ等を使われていて、そろそろリース更新や買い替えを検討されている方がいらっしゃいましたら一報をお願いします。私が製品開発にかかわった複合機などの紹介をさせてください(営業担当が伺います)。
よろしくお願いします。


忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
なのはの応援をしていただき、かつ協力いただける方は、アマゾンでの買い物は下のリンクからお願いします
最新CM
[04/27 とおりすがり]
[10/21 おてだま]
[10/20 おてだま]
[01/24 なのはminiふぁん]
[01/08 sakura]
最新TB
プロフィール
HN:
かず
性別:
非公開
バーコード
ブログ内検索
最古記事
カウンター
アクセス解析