入玉用評価項目のプラン
現在のGA将の実装だと、自己対戦学習時に1%前後の割合で入玉で終局します。入玉しそうになって、それを阻止した対局も多少はあるはずです。
んで、それをムダにするのももったいないので入玉時の評価をきちんと出来る様にしたいです。
という訳でそれ用の評価項目の案。ものすごくザックリ書くと下記の様なコードになります。
if(王将が敵陣から5段以内にいる){ // 王将の位置による評価 this->score += this->rankFactor[ y ] * this->weight1; // 敵陣にいる駒の枚数による評価 this->score += 敵陣にいる駒の枚数 * this->rankFactor[ y ] * this->weight2; // 大駒・小駒の点数による評価 this->score += 点数 * this->rankFactor[ y ] * this->weight3; }// if(...)
rankFactorは入玉に近付くほど大きな値になる係数として、とりあえずは手打ちでy<=3なら1.0、y==4なら0.5、y==5なら0.25位でやってみます。(本当はrankFactorも学習させたいんですが、それだと非線形の評価関数になってしまうので当面はパス。)
それと、weight2,weight3は駒の枚数・点数に応じてもうちょっと細かく分けた方が良いかもしれませんが、当面は単一のパラメータとします。
後、一昨年位のGPWで発表のあった、王将の入玉経路の有無による評価もやってみたいです。
とりあえずそれ位やっておけば、通常は入玉用評価項目は動かないんでNPSには影響無いでしょうし、入玉出来そうになったらそれなりの評価をしてくれる…ハズ。