Stockfish DD – material,endgame,etc..

今回はmaterial.hとmaterial.cppの解説をします。と言っても、この二つ、将棋では使わないからあまり関係ないです。ソースコードには簡単なコメントしかつけていません。

ついでにendgame.hとendgame.cppも貼り付けておきます。こちらはチェスの終盤用の処理のようですが、これも将棋では関係ないのであくまでおまけと言うことで…。将棋ではこれに代わり、詰将棋探索を用意したり、しなかったりします。

あと、Scoreという構造体は、序盤と終盤の両方の値を持っていて、実際使うときはそれを進行度に応じて内分して使っているようです。将棋では序盤と終盤で評価値を分けて成功した事例というのはほとんどないですが、理由はよくわかりません。ゲームとしての性質の違いによるものなのかも知れません。

それからpsqtab.hのpsqtabとは、PieceSquareTableの略だと思います。駒がある場所にあるときの評価値。KPですらないですね。チェスでもKPとかKPPを導入すればいまより強くなると思うんですが、大駒ばかりで位置評価があまり利いてこないチェスでは評価関数が重くなるデメリットのほうが大きいのかも知れませんね。

・追記 [2015/2/20 1:00]

 

Stockfish DD – material,endgame,etc..” への2件のコメント

  1.  質問です。material.cppの285行目以降ですが、
    npm >= MidgameLimit ? PHASE_MIDGAME
    : npm <= EndgameLimit ? PHASE_ENDGAME
    などとなっているので、この説明としては「npmがMidgameLimit以上ならMIDGAME扱い。npmがEndgameLimit以下ならENDGAME扱い。」とするのが適当かと思いましたが、いかがでしょうか。
     ソースコードはよく読めてないのですが、ポーン以外の駒の点数を足し算して、閾値以下になったら(ポーン以外の駒が減ったら)終盤と見なす、というプログラムかと思いました。間違いでしたらすみません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です