sakurapyon’s blog

sakurapyon’s blog

打つ手と移動手のオーダリング

sakurapyonの生成する指し手を見ていると、将棋の合法手の大半は悪手だというのが納得できる。羽生語録にも「将棋の手はほどんとが悪手である」とあるし。特に打つ手のほとんどは悪手じゃないかと思ったりするし、その悪手の生成や枝刈りに時間がかかるのだからコンピュータ将棋は難しい。

つい最近までsakurapyonの指し手オーダリングはバグってて、打つ手をヒストリ順に並べていなかった。なので、ほとんどの打つ手は評価値0で、移動手の後に来ていた。それを直したらなぜか弱くなった(>_<)。打つ手と移動手の重みって変えないとまずいっぽい。今は打つ手は移動手の1/10ぐらいの重みにしてる(これでいいんだろうか?)。いつも参考にしているchessprogramming - Move Orderingには打つ手はないし。

バグを取る前までの sakurapyon は 駒を駒台に溜め込む癖があって、駒得大魔王だと思ってたけど、実はオーダリングのせいだったようだ。バグを修正(改悪?)したら、今度は駒を打ちたがるようになった。評価の順番が後ろの手は採用されにくいようだ (なぜだろう?)。LMRなら後ろの手ほどreductionされるから指さない、という気がするけどPVSでもそうなるのが謎だ。このへんもおいおい理解できるようになりたいものだ。

オーダリングのあたりはもっと手を入れないと深く読めないような気がする。さて、どうしたらいいんだろ。

追記:思い当たった。History reductionのせいか。スコアの低い手は1-2手短縮されるから。逆に、駒を打つようになった理由もそれかもしれない。オーダリングとreductionは分けた方がいいのかもな… id:suzume_r さんが「細かく分けないと、似た手でどんどんreductionがかかって弱くなりました」と書いてたのも、これか。