GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

王将の移動可能範囲の評価方法

 現実逃避がてら、GA将!!!!!でやってる王将の移動可能範囲の評価について書いてみます。選手権とかで時々聞かれたりする事があるので、まぁ多少の需要はあるかな、とも思いますし。

 んで、王将の8近傍のうち安全なマスの数を評価するってのは、割と以前からされていた様ですし、それを24近傍に拡張したものもどっかで見た覚えがあります。

 一言で言っちゃうと、GA将!!!!!でやってるのはそれを任意の距離n*1まで拡張したものです。

 まず、用語として「安全に移動可能なマス」の定義をします。これは、次の両方の条件を満たすマスの事です。

  1. 自分の駒が無い(空マスか、相手の駒がある)
  2. 相手の利きの数が0

 次に、実際の処理方法。

  1. 現在の王将の位置を起点として、その8近傍の距離1の安全なマスにマークする
  2. 距離1の安全なマスを起点として、その8近傍の距離2の安全なマスにマークする。ただし、現在の王将の位置及びマーク済みのマスは無視する。
  3. 以下、距離nまで同じ処理(距離n-1の安全なマスの8近傍の安全なマスを距離nの安全なマスとしてマーク)を繰り返す。

 これは、実例を見てもらった方が早いと思うので、盤面の一部を切り出した図を書きます。図中の駒は全て先手の駒で、数値があるマスはマークされたマスです(数値は距離を表します)。

筋/段

 この例だと、距離1・4・5が各2マスで距離2・3が1マスです。実際の評価値は、距離とマスの数に応じて適当に点数を付けます。(学習させると、距離が遠いマスほど評価値が低くなり、同じ距離なら2〜3個目のマスあたりが最も高評価になります。)

 んで、こういう評価をすると何が嬉しいのか、実例をいくつか。

筋/段

 実例その1。自分の駒が壁になっているケースを「悪い」と評価可能です。この例だと、金が4八に寄ったせいで、距離2以降のマスがざっくり消えています(その分評価値が下がる)。

筋/段
v龍

 実例その2。今度は横から後手の龍が攻めてきたケース。ピンチですね。

 しかし、端歩を付けば1七から逃げれるという事を認識出来て居ます(図では省略しましたが、五段より上も同様に処理します)。

 こういう評価が出来るので、自玉が逃げ回るのが得意になったり、敵玉の逃げ道に利きをつけて塞ぐ、という事が可能になります(上の例で後手番の場合だと、1七を塞いで先手玉の逃げ場所を狭くする、という手も指せるかもしれません)。

 ただ、この評価項目は結構重いんで、重い分に見合った価値があるのかは不明です。私は貧乏性なんで実装してそのまま有効にしていますが、場合によっては実装したら弱くなる、なんて事もあるかもしれません。

*1:現在のGA将!!!!!の設定では5