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

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

評価関数の実装開始

 パラメータ自動調整用の評価関数のコーディング開始。とりあえず単独の駒の絶対テーブルによる評価を実装。

 普通は駒割評価関数から実装するものなんでしょうが、色々考えた末実装しない事にしました。

 理由は単純で「無くても構わない」。それだけです。

 最終的には

  • 単独の駒の絶対テーブル
  • 二つの駒の位置関係
  • 王将・王将側の囲いの駒・相手側の攻め駒*1の位置関係
  • +α

を実装する予定なのですが、駒割+絶対テーブルだと

  1. 歩の基本価値が100、位置によるボーナスが20,22,20,...
  2. 歩の基本価値が110、位置によるボーナスが10,12,10,...

みたいに、「実質的には同じなんだけどパラメータをパッと見ると異なる」場合が出てきてしまいます。

 これは、例えば「5五にいる駒のボーナスは常に0」みたいな制約を付ければ回避出来ますが、そうすると結局「駒割の評価をしない」のと同じ事になります。

 そんな訳で駒割評価関数は無し、って事にしました。


 さて、方針を大幅に変更したのでTODOリストもアップデート。さらっと書いてある項目の開発にどれだけ苦労するか、ですね。

【TODOリスト】 優先度順

  1. C++を学ぶ
  2. 将棋関連のライブラリを移植
  3. 囲いの方式を検討
  4. C++でのマルチスレッドを学ぶ
  5. 並列化方式を検討
  6. モンテカルロ将棋の実装
  7. CSA将棋との接続
  8. シンプルなαβ法での探索を実装
  9. 評価関数を実装
  10. CSA形式の棋譜読み込みを実装
  11. パラメータ自動調整を実装
  12. 実現確率打ち切りを実装
  13. 静止探索に脅威を追加
  14. Null-Move Pruningを実装
  15. Futility Pruningを実装
  16. 各種ユーティリティを移植
  17. 詰め将棋ルーチンを実装
  18. チューニング
  19. 終盤度の判定方式を検討
  20. 詰めろを意識した探索を検討
  21. GA関連の移植
  22. 免疫アルゴリズムを学ぶ

*1:囲いに含まれない駒