Sunfish version 2.0 アピール文書 1. 前回からの主な改良点 - 局面の評価項目を変更 - 局面評価の差分計算 - 新たな枝刈り手法の導入 など 2. 盤面の表現 Sunfishでは配列(駒番号), bitboard, 利き情報を全て使用しています. 前回出場時はまだbitboardをあまり生かせていませんでしたが, 様々な改良によって以前よりも速くなりました. だだ, それでもbitboard, 配列いずれかのよくチューニングされた プログラムには及ばないのが現状です. 3. 探索アルゴリズム 今回は主にチェスプログラムStockfishを参考にしつつ, 新たな前向き枝刈り手法を導入しました. その他は, 並列探索や各種探索パラメータの改良を行っています. 4. 評価関数 Sunfishの局面に対する評価項目 (* は差分計算) - 駒割り * - 玉との相対位置 x 駒の種類 * - 玉の筋(/段) x 各駒の玉との相対位置 x 駒の種類 * - 玉に隣接する駒 x 玉との相対位置 x 駒の種類 * - 各持ち駒の枚数 - 玉の位置 x 各持ち駒の枚数 - 玉との相対位置 x 駒の種類 x 右(/左下/下/右下)に隣接する駒 - 玉との相対位置 x 香の自由度(移動可能なマスの数) - 玉との相対位置 x 角(/馬)の左上(/右上/左下/右下)への自由度 - 玉との相対位置 x 飛(/竜)の上(/左/右/下)への自由度 - 玉との相対位置 x 角(/馬)の自由度 - 玉との相対位置 x 飛(/竜)の自由度 - 香車の利き上の駒 - 角(/馬)の左上(/右上/左下/右下)への利き上の駒 - 飛(/竜)の上(/左/右/下)への利き上の駒 - 玉との相対位置 x 香車の利き上の駒 - 玉との相対位置 x 角(/馬)の左上(/右上/左下/右下)への利き上の駒 - 玉との相対位置 x 飛(/竜)の上(/左/右/下)への利き上の駒 - 玉との相対位置 x 歩の2マス前の駒 - 各筋に歩を打てるか - 玉の位置 x 各筋に自分が歩を打てるか - 玉の位置 x 各筋に相手が歩を打てるか - 玉の位置 x 歩打ちで王手できるか - 桂馬の利き先の駒 - 玉との相対位置 x 桂馬の利き先(右/左)の駒 - 玉の周囲で移動可能なマスの数 - 玉の筋(/段) x 玉の周囲で移動可能なマスの数 - 玉の周囲8マスの利きの勝ち負け - 玉の位置