コンピュータ将棋の進捗3
最近1ヶ月以上書いていなかったので書く。
現状、探索部や評価関数の実装までは済んでいて、これから評価関数の特徴を検討するつもりだった(1月以上遅れているが)。
しかし、自己対戦により棋譜生成&学習を繰り返しつつ評価関数の改善をするにあたり、可能な限り自己対戦をするプレイヤをなるべく強い方がよく、さらに思考時間を短くしたい。そのためには、探索部を最適化する必要があり、そっちからやることにした。
とりあえず実現確率探索の実装と、枝刈りパラメータの最適化をする。
コンピュータ将棋の進捗2
コンピュータ将棋ソフトを作り始めて丁度一週間、ひとまずルール部分は作り終えた。
次に作るのは探索部で、2日でつくり上げることを予定していた。2日ということは、明日の晩には探索部やUSIの対応を一通り書き上げるということである。
無理そうなので、まあ、3日後までに出来れば良しとしよう。
コンピュータ将棋の進捗
昨日、将棋ソフトを1から作ると宣言(
データ構造の指針
効きの差分計算を容易にするため、盤サイズを81マス丁度にせず、盤端に番兵を容易する。 11x11の盤面は64bit x 2のBitBoardに収まるため、bitboardのサイズは大きくならない。
実装したこと
BitBoardによる効きの計算のコードと、王手されていない局面での盤上の駒を移動させる手の生成を書いた。 ただし、飛車の横効きの計算のコードが適当なので、実行速度に不満があればその時書き直す。
これから実装すること
その1
駒打ち生成、王手回避手生成、盤面の初期化。このあたりを実装したら指し手生成祭りをやる。明後日にここまで出来れば、1週間でのルール部分の開発が間に合いそう。
その2
手をすすめる/戻す、王手判定。できればSEEも。ここまで実装すれば、探索部やUSIへの対応に取り掛かれる。
将棋ソフト開発
将棋ソフトを作る
将棋ソフトを1から作る。大体1ヶ月くらいで浮かむ瀬程度の強さにしたい
開発方針
-
ルールの実装
高速に動作する盤面クラスを実装する。 BitBoardを用いた効きの算出、効きの差分計算、駒番号を使用し高速かつ拡張性の高い実装にする。
期間は1週間程度。
-
探索の実装
探索部を実装し、対局できるようにする。静止探索、置換表、キラームーブ、Late Move Reduction, Null Move Pruning, Futility Pruningあたりの基本的な手法を実装する。評価関数は駒割りだけ。
期間は2日程度。
-
評価関数の実装
KP(手番込み), PPを実装して、自己対戦棋譜からの強化学習で最適化する。この時点で多分Bonanza 6.0以上の強さにはできるはず。
期間は1週間程度。
-
評価関数の特徴の検討
自己対戦棋譜を分析して評価関数の特徴を改善する。R400以上上がって欲しい(願望)。
期間は1週間程度。
-
探索部の改良
実現確率探索、並列化の実装。(マシン次第で)R400くらい上がるはず。
期間は1週間程度。