Reflection-Play(反省会モード)は効果無しとの結論に至った
以前Reflection-Playを有効にして強くなった事があったんですが、これはReflection-Playの効果では無く、単に運が良かっただけみたいです。
という訳で、今日からは本命の本将棋モードでの学習に着手します。
評価項目を駒割+PPT+王将の移動可能範囲に限定したんで、1ヶ月有れば収束してくれないかなぁ。
川中島の戦いじゃないんだから…
13:56:26 @ core::rl::GameAggregator::aggregate() > 2200局終了 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > | | | | | |v歩| | |^と| 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > |v香|v桂| |^杏| | | | | | 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > |v歩|^龍| | | |v桂| | |v歩| 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > | | |v歩| | |v王|^歩| | | 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > | |^桂| | |v歩|^金| | | | 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > | |^歩|^歩| | |^王| | |^歩| 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > |^歩| | |v龍|^角| |v金|^歩|^香| 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > |^香| | | | | | | | | 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > | |v角| |v銀| |vと| | | | 13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+ 13:56:26 @ core::rl::GameAggregator::aggregate() > 歩,香,桂,銀,金,角,飛, 13:56:26 @ core::rl::GameAggregator::aggregate() > 3, 0, 0, 2, 0, 0, 0, 13:56:26 @ core::rl::GameAggregator::aggregate() > 2, 0, 1, 1, 2, 0, 0, 13:56:26 @ core::rl::GameAggregator::aggregate() > 手番:後手 13:56:26 @ core::rl::GameAggregator::aggregate() > 手数:131
前線まで王将が出張ってく必要、無くない?
第11回UEC杯5五将棋大会 in GAT2019版のGA将?を公開しました
第11回UEC杯5五将棋大会 in GAT2019版のGA将?を公開しました。
下記URLのからダウンロード可能です。動作環境や使い方に関しては、ZIPフィアル内のReadMe.txtをご参照下さい。
ZIPファイルへの直リンク:
https://drive.google.com/open?id=1mOWW2AYmJ554KMsM8XbpHsCSKd_Fa6ik
GA将のウェブサイト内:
http://gasyou.is-mine.net/archive/index.html
また、何か問題が有りましたら、お手数ですが本エントリのコメント欄もしくはメール・Twitter*1でご連絡頂けると幸いです。
# 2019/03/14 15:30現在、公開の準備中です。10分ほどで公開完了予定です。
2019/03/14 15:41に作業完了しました。
# 2019/03/15 15:42 AVX2命令をサポートしていないCPUで動作しない可能性が有りましたので、ZIPファイルを差し替えました。
# 問題が発生している方は、お手数ですが再度ダウンロードして頂けないでしょうか。動作している方に関しては、再DLの必要は有りません。
*1:アドレス・アカウントはReadMe.txtに記載してあります
PGQの実装、一通り完了
思考時間制御の修正案
先日書いた、合議での票の割れ具合に応じた思考時間制御の問題点ですが、解決策が見つかったのでメモ。
つらつら書くより擬似コードの方が分かりやすいかと思うので、まずそれから。C++風の構文です。
// PVには静止探索の読み筋も含むので、長さはバラバラ 各クライアントからPVを取得する; const int minPvLength = 取得したPVのうち、最も短いものの長さ; // 局面の一致具合の最大値 int maxAccordCount = -1; for( int d = 1; d <= minPvLength; d++ ) { // この値は1以上クライアント数以下になる const int firstMajorityCount = d手先で最も多く現れた局面の出現回数; // 全局面が同一なら、この変数は0になる const int secondMajorityCount = d手先で二番目に多く現れた局面の出現回数; // 必要なら最大値を更新 maxAccordCount = max( maxAccordCount, firstMajorityCount - secondMajorityCount ); }// for(..d..) // ここから先で、maxAccordCountに応じて思考時間制御を行う
まー要するに、PV中の局面を順に見ていって、最も出現回数の差が大きかった部分(=最も局面の一致した部分)の一致具合をベースに、思考時間制御をしようって事です。
例えば、「7手先で全局面が一致したから、現局面での思考時間は短くていいかな」とか「minPvLengthまで探しても局面がバラバラだから、現局面では長めに思考時間を設定しよう」とかやる感じです。
多分これで上手く問題解決するはずなんで、選手権までには実装します。