
やねうら王 更新履歴


■　2016/12/04 V4.23

・shogi.h、4タブ化。
・thread.cpp、4タブ化。
・Stockfish : Handle Windows Processors Groups
・Windows環境にて複数のプロセッサを積んでいるときに探索ですべてのプロセッサを使い切るための改良。
・MultiThinkを全プロセッサを使い切るように修正。
・gensfen、learnコマンドも同様にすべてのプロセッサを使い切るように。
・learnコマンドでopenmpをすべて使い切るように修正。
・openmpのscheduleをstaticを指定するように。
・pythonの自己対局スクリプト、全CPUを使い切るように変更。→　engine_invoker5.py
・KPPT型評価関数のときにEngineNuma optionは指定できないように変更。
・exe/に2017Earlyの実行ファイルを入れる。


■　2016/12/03 V4.22

・取る一手将棋は、GUIから局面が送られてきたときに合法手チェックをするように。


■　2016/12/02 V4.21

・取る一手将棋、仮公開。
・exeフォルダ、整理。
・解説.txt更新。


■　2016/12/02 V4.20

・王手将棋評価関数V6を公開。(+R150)
・取る一手将棋のための準備。
・Learner::search()修正。


■　2016/11/24 V4.19

・王手将棋評価関数V4を公開。(+R300)
・[Pull Req.] : 盤面を英字表示する際のコンパイルエラーを修正
・USI_PIECE、やはり定義したほうがいいような気がするので修正。
・CHCECK_SHOGI_ENGINE →　CHECK_SHOGI_ENGINE　修正。
・連続自己対局pythonスクリプト、後手番のときの勝率も出力できるようにする。
・王手将棋評価関数V5を公開。(+R200)


■　2016/11/23 V4.18

・王手将棋評価関数V3を公開。(+R400)
・連続自己対局pythonスクリプト、先手/後手の勝率を集計できるようにする。


■　2016/11/22 V4.17

・learnコマンドでmany coreだとassertに引っかかることがあったのを修正。
・王手将棋用評価関数V2を公開。(+R300)
・王手将棋の実行ファイルの差し替え。


■　2016/11/22 V4.16

・王手将棋でqsearch()においてss->plyを初期化しないうちにmated_in(ss->ply)で返していたの修正。


■　2016/11/21 V4.15

・Learner::search()、aspiration型に戻す。綺麗に実装しなおす。
・定跡を読み込んでいないとき、MemoryBook:find()はなる早でリターンするように変更。
・王手将棋用の評価関数V1を用意した。(+R300)
・README.md更新。
・書き直したLearner::search()のaspiration searchがバグっていたので修正した。
・Learner::search()でalpha,beta指定できるの良くないので変更する。
・Learner::qsearch()も同様に修正。
・やねうら王2016Mid/LateからLearnerのスタブ削除。(お役御免)
・EVAL_LEARNなしでTEST_CMD有効にしたときにコンパイルが通らなかったの修正。


■　2016/11/20 V4.14

・王手将棋(CheckShogi)探索部追加。また、ビルドに追加。
・makefileを王手将棋に対応。
・PER_THREAD_COUNTERMOVEHISTORY追加。
・PER_STACK_HISTORY追加。
・thread.h、2tabになっていたの修正。
・readme等を用意して、王手将棋関連をexe/に入れた。
・プロジェクトファイルのターゲットCPUがAVX2でなくなっていたの修正。


■　2016/11/18 V4.13

・2017(early)の探索パラメーターの調整


■　2016/11/17 V4.12

・2017-early-engineの作業開始。関連ファイル追加。
・2017(early)がbuild出来るようにmakefile修正。
・Stockfish[pull req.] : Remove restriction of Depth
	→　PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH1削除
	→　PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH2削除
	T1,b3000,2302 - 144 - 2354(49.44% R-3.88)
・Stockfish[pull req.] : remove evasionPrunable variable, reorder condition evaluation
・Stockfish[pull req.] : Remove branching in key_after()
　　→　この関数、実装してない。
・Zobrist::psqをSQ_NB_PLUS1まで確保するように修正。
・Zobrist::psq,handはpc==NO_PIECEのときに0を保証するように変更。
・Stockfish[pull req.] : Position::is_draw(): start searching from the 4th ply behind 
	→　すでにこれに近いコードになっているので修正不要。
・Stockfish[pull req.] : Non-quiet pruning tweak
・PARAM_DEFINE PARAM_FUTILITY_AT_PARENT_NODE_MARGIN2追加。


■　2016/11/15 V4.11

・gensfenコマンドでは16手目までの局面を書き出さないように変更。


■　2016/11/14 V4.10

・init_for_search()にhistory等をクリアするコード追加。
・move_picker_2016Q3.hのコメント間違っていたの修正。
・LEARN_READ_SFEN_SIZE →　LEARN_SFEN_READ_SIZEにリネーム。
・SfenReader、vector::resize()で元の要素がコピーされることを期待していたので修正。
・SfenWriterのバッファ確保まわりの処理、単純化。
・Learner::search()でmulti pvのときもbest valueが正しく返るように修正。
・read_to_thread_buffer_impl、単純化。


■　2016/11/14 V4.09

・learnコマンドで置換表の世代を進めるの、1M→100k局面ごとに変更。
・gensfenのSfenWriterのコード整理。
・Learner::init_for_search()のコード整理。
・analyze_yane_log.py、mini-batchのサイズを自動認識するように修正。
・SfenWriter、FILE_WRITE_INTERVAL→SFEN_WRITE_SIZEにリネーム。


■　2016/11/13 V4.08

・test dumpsfenコマンド追加。
・PackedSfenValueの定義をlearn.hに移動。
・Learner::Search()に初期化コード色々追加。
・gensfen、MAX_PLY2まで生成するのやめてMAX_PLYに変更。
・"test dumpsfen"コマンドにnumber指定できるように。


■　2016/11/12 V4.07

・Stockfish : Stack offset changed from -5 to -4
・Stockfish : Make a version of Position::do_move() without the givesCheck parameter →　すでにそうしてた。
・Stockfish : Allow benches with more than 2G nodes.
・Learn::search()、stackのpv初期化コード追加。
・atoi()を使っていたところstoi()に変更。


■　2016/11/11 V4.06

・gensfenコマンドで玉の2手指しのコード、削除。
・gensfenコマンド、定跡の局面であっても一定確率でランダムムーブは行なうように変更。
・gensfenコマンドで定跡にhitしなかったときの処理、少しおかしかったので修正。
・gensfenコマンド、learnコマンドの局面の重複除去処理のバグ修正。
・learnerのinit_for_search()にDRAW_VALUEの初期化コード追加。
・gensfenのランダムムーブ、24手目以降ではやらないように変更。


■　2016/11/09 V4.05

・learn.hのGENSFEN_SAVE_FIRST_MOVE、デフォルトではオフに変更。
・教師局面生成のときの評価値、leafを辿るのやめる。
・GENSFEN_SAVE_FIRST_MOVEをdefineしていないときにコンパイルが通らなかったの修正。
・gensfenのときに定期的にTT.new_search()を呼び出すように変更。
・volatileを使っていたところ、atomicに変更する。


■　2016/11/08 V4.04

・gensfenで書き出す局面、同一局面の書き出しを制限するためのコード追加。
・learnコマンドでも同一局面を学習対象から外すコードを追加。


■　2016/11/07 V4.03

・Stockfish : Simplify futility pruning return value
・Stockfish : Use explicit logic for pruning →　反映済みだった。
・Stockfish : Remove useless assignments to currentMove →　反映済みだった。
・Stockfish : Simplify next_move by always scoring evasions →　反映済みだった。
・Stockfish : Per-thread TB hit counters → TB hit counter使ってなかった。
・Position::set_node_searched()削除。(使っていない/使わないから)
・Position::node_searched()をint64_tからuint64_tに変更。
・Thread::node_searched()も同様にuint64_tに変更。
・Stockfish : History Stat Comparison
・Stockfish : Output PV if last iteration does not complete
・Stockfish : Fix a series of undefined behaviours
・Stockfish : Sync variable names in decl vs def
・Stockfish : Reduction Simplification
・Stockfish : Reproducible searches after ucinewgame



■　2016/11/06 V4.02

・2016Lateの、search()のスタブ、aspiration searchをしているコードを削除。
・gensfenのときに毎node、evaluate()を呼び出すように修正。


■　2016/11/05 V4.01

・GENSFEN_USE_NO_REPETITION関係、削除。
・learnコマンドで計算するrmse、USE_EVALUATE_FOR_SHALLOW_VALUEのときは、evaluate()基準で計算するように変更。
・learnコマンドでetaを設定できるように変更。
・DISPLAY_STATS_IN_UPDATE_WEIGHTS削除。
・learnコマンドのparser、ソースコード整理。
・学習のときの進み具合をグラフ化するpythonスクリプト追加(たぬきチームより提供) → analyze_yane_log.py
・scriptフォルダにreadme.txt追加。


■　2016/11/04 V4.00

・gensfenコマンドで生成される棋譜の数が指定した数ぴったりになっていなかったのを修正。
・gensfenコマンドでdepth < ONE_PLYでも教師局面が生成できるように修正。
・learnのeta2廃止。
・gensfenコマンドでdepth2を指定できるように。
・AdaGradのとき、最初のiterationではwを更新しないように変更。
・save_eval()の開始時にメッセージを出力するように。
・learn.hの設定項目にLEARN_EVAL_SAVE_INTERVAL追加。
・KPP_MIRROR_WRITEが定義されていないとき、get_kpp_indexはmirrorを考慮しないindexを返すように変更。
・学習時のkppのupdateのコード、整理。
・learnの更新式のupdate、整理した。
・learnからUSE_YANENZA_UPDATE削除。
・learnからUSE_YANE_SGD_UPDATE削除。
・kppのp1==p2がゼロかチェックするテストコード追加。
・learnのadd_grad()からdead code削除。
・学習のときのwの絶対値の抑制するコード、調整。
・学習のときのg2の減衰、KKとKKPに適用してなかったの修正。
・USE_KKP_MIRROR_WRITE追加。
・learnはデフォルトでKPPのflipも対応。
・learnのadd_grad()でKK,KKPのflipにも書き込むようにした。
・learnのFloatPairに基本的な演算子追加。
・gensfenコマンドでdepth < 0 のときは単にevaluate()を呼び出すように変更。


■　2016/10/16 V3.99

・AdaGradの更新式、調整。
・解説.txtに推奨設定のところ追記。
・YaneGrad削除。
・LEARN_READ_SFEN_SIZEのデフォルト値 10Mに変更。
・2016lateのInCheck→inCheckに変更。
・Stockfish[pull req.] : Explicit Logic/Speedup
・Stockfish[pull req.] : Remove assignments to currentMove that don't serve any purpose
・Stockfish[pull req.] : Simplify next_move by always scoring evasions.


■　2016/10/13 V3.98

・ResignValueの実装、バグっていたようなので修正。
・AVX2用のバイナリが差し替わっていなかったので修正。


■　2016/10/13 V3.97

・MinimumThinkingTime、電王トーナメントでは2秒未満が計測1秒らしかったので、デフォルトを2秒に戻しておく。
・投了スコアを設定できるように変更。ResignValue
・*_ja.txtの置換表サイズの単位表記を大文字に修正。
・解説.txtに推奨対局設定を追加。


■　2016/10/13 V3.96

・bitop.hにBLSRマクロ追加。(thanks! > merom686さん)
・gen_sfen時にfail low/highしたら生成を終了するように変更。
・learn.hにLEARN_UPDATE_EVERYTIME追加。
・KPPTのAVX2のコード、Late以外にも開放。


■　2016/10/12 V3.95

・真やねうら定跡公開。
・やねうら王2016Late(≒真やねうら王)の公開のための準備。
・やねうら王2016Lateの探索パラメーターファイルを公開に変更。
・教師局面の生成部、KINGの二度移動が新しいコードにおいて生成出来ていなかったの修正。
・極やねうら王の定跡ファイル、読み込み対応。
・AdaGradのg2に関するif式修正。(thanks! > 読み太の塚本さん)


■　2016/10/07 V3.94

・Position::see_ge()、g++で警告出てていたの修正。
・その他、g++で警告出ていたもの一通り修正。


■　2016/10/06 V3.93

・Stockfish : Do not use SEE in evasion scoring 
・Stockfish[pull req.] : Replace Position::see and Position::see_sign by Position::see_ge 
・Stockfish : Optimisation of Position::see and Position::see_sign
・USE_SIMPLE_SEE削除。
・2016 Late用のデフォルトパラメーター(Stockfishと同じもの)を公開。
・上の修正にともなって、Score<Evasion>、LVAするの忘れていたの修正。
・score<EVASION>、capture_or_promotionで分岐するように変更。→　revert


■　2016/10/05 V3.92

・MovePickerのupdate、abs()の括弧の位置がおかしかったの修正。(thanks > merom686さん)
・offsetof()を使うときはstddef.hをincludeするように修正。(thanks > Qhapaqさん)


■　2016/10/04 V3.91

・Stockfish : Allow inCheck pruning
・makebook mergeコマンドで、different nodeのカウントをしていないところがあったので修正。


■　2016/10/04 V3.90

・教師局面生成時および定跡生成時に、置換表世代を定期的にインクリメントする処理追加。
・test bookcheckコマンド追加。
・makebook thinkコマンド、与えた定跡ファイルが、moves以下までしかないときに正しく局面を
　思考対象としていなかったのを修正。
・makebook thinkコマンド、複数台での分散生成に対応。


■　2016/10/02 V3.89

・learnコマンド、targetdirを指定したときに読み込むファイルpathがおかしかったの修正。
・learn.cpp、PackedSfenまわりリファクタリング。
・learnコマンド、OpenMP無効なら警告を出すように変更。
・learnコマンドのsave()で、OpenMP無効時も勾配の更新をしないように変更。
・evalmergeコマンドの追加。
・2016 Lateでmakebookコマンドが無効になっていたの修正。


■　2016/10/01 V3.88

・KPPTのAVX2化。(thanks! > tanuki-さん)
・GENSFEN_SAVE_FIRST_MOVE追加。PVの初手も保存するように変更。
・gensfenコマンドで教師局面を生成するとき、PV leafのevaluate()の値を保存するように変更。
・教師局面からの学習 : 教師のPVの初手と異なる場合、それを学習対象としないように変更。
・learnコマンドのoptionのdir→basedirに変更。
・learnコマンドのoptionにtargetdir追加。
・教師局面からの学習 : search_depthよりPVが短い場合(置換表にhitするなどした場合)、その局面は出力しないように変更。


■　2016/10/01 V3.87

・N手詰め、まだバグっていたのでまたまた修正。(thanks! > tttakさん)


■　2016/09/29 V3.86

・N手詰め、まだバグっていたので修正。(thanks! > tttakさん)


■　2016/09/29 V3.85

・Stockfishのコード、razor_margin[3]を下回るときに静止探索を呼び出しているが、razor_margin[ZERO_DEPTH]
　を下回るときでないとrazoringとしておかしい。これはStockfishのバグだろう。修正した。
・Stockfish公式のほうも同じ修正が入った。
→　Stockfish : Remove useless razoring condition


■　2016/09/29 V3.84

・mate_n_ply()でlegal()の判定忘れていたの修正。
・pythonの自己対戦スクリプト、保守できないので1と4だけ残す。


■　2016/09/29 V3.83

・2016 Late、razoring marginパラメーターで変更できてなかった。修正。
・2016 Late、razoring margin、関数を通さず、テーブルを直接参照するように変更した。
・USI拡張コマンド.txtでbenchコマンドの説明が間違っていたの修正。


■　2016/09/29 V3.82

・N手詰め、バグっていたの修正。(thanks! > tttakさん)
・position.hのcheck_info_update()を呼び出す必要があるという注意書き、削除。

■　2016/09/28 V3.81

・2016 LateのRANDOM_PARAMETER、値を3択ではなく、intervalの範囲で複数の値が試行できるように変更。
・Makefileのソースのところに extra/mate_n_ply.cpp 追加してなかったので追加。
・PARAM_SINGULAR_MARGINのスケール16倍に変更。


■　2016/09/27 V3.80

・3手詰めやめて、N手詰めに拡張。
・2016 Late、weak_mate_n_ply()を使うかどうかをパラメーター化
・PARAM_WEAK_MATE_PLY追加。
・2016 Late、以下のパラメーター追加。
	"PARAM_REDUCTION_ALPHA",
	"PARAM_FUTILITY_MOVE_COUNT_ALPHA0","PARAM_FUTILITY_MOVE_COUNT_ALPHA1",
	"PARAM_FUTILITY_MOVE_COUNT_BETA0","PARAM_FUTILITY_MOVE_COUNT_BETA1",


■　2016/09/27 V3.79

・2016 Late、LMRのreductionテーブルの初期化タイミングの変更。
・reduction_table、FutilityMoveCountsをパラメーター化の準備。
・mate3()実装。
・MovePickerの書き換えでclassic-tceまでがコンパイル通らなくなっていたの修正。


■　2016/09/26 V3.78

・PARAM_SINGULAR_SEARCH_DEPTHをPARAM_SINGULAR_SEARCH_DEPTH_ALPHAにリネーム。
・PARAM_PRUNING_BY_MOVE_COUNT_DEPTHの値が反映していなかったの修正。
・&PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH0削除。
・parent nodeでの負のsee()を持つときの枝刈りに関する旧コード、削除。
・2016 LateにENABLE_OUTPUT_GAME_RESULT追加。
・2016 Lateからdynamic marginに関するコード削除


■　2016/09/26 V3.77

・2016 LateにPARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH3追加。
・PARAM_FUTILITY_AT_PARENT_NODE_GAMMA1,2を追加。
・PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH1→PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH0に名前変更。以下、1,2も同様。
・pythonの自己対戦スクリプト、定跡のランダムシャッフルするオプションを追加。
・PARAM_NULL_MOVE_MARGIN追加。
・PARAM_SINGULAR_SEARCH_DEPTHの初期値がおかしかったの修正。


■　2016/09/25 V3.76

・PARAMで"fixed"と書かれているものは無いものとして扱うように変更。→　バグっていたので修正。
・2016 late、古いほうのreduction tableの初期化コード、削除。
・2016 late、mate1の呼び出しもパラメーター化する。USE_MATE_1PLY_IN_SEARCH、USE_MATE_1PLY_IN_QSEARCH削除。
・USE_RANDOM_PARAMETERSのとき、2択のパラメーターの採択確率に偏りがあったのを修正。


■　2016/09/25 V3.75

・singularのPARAM、2を掛けていたの修正。
・PARAMで"fixed"と書かれているものは無いものとして扱うように変更。
・Stockfish : Rename shift_bb() to shift()
・Bitboard::shift()追加。
・movegen.cpp、mate1ply()など、Bitboard::shift()を用いるように変更


■　2016/09/25 V3.74

・2016 MidのMovePicker、QUIETS→SEARCH_QUIETSに置換もれがあったの修正。
・PARAM_FUTILITY_AT_PARENT_NODE_GAMMAの順番変更。
・PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTHまわり変更。
・PARAM_FUTILITY_AT_PARENT_NODE_SEE_DEPTH2を用意。
・Stockfish : Allowing singular extension in mate positions


■　2016/09/24 V3.73

・analyze_result_log.py、win、drawやloseが0の場合に対応。
　→　まだなおってなかった。修正した。
・2016-mid-param.hの冒頭のifdefのシンボル、変更。


■　2016/09/24 V3.72

・2016 Late用のパラメーターファイル名変更。
・2016 LateにUSE_RANDOM_PARAMETERS機能追加。
・2016 Lateのほう、パラメーターファイル、MASTERとSLAVEに分けるのやめる。
・pythonの対戦スクリプトにPARAMETERS_LOG_FILE_PATHの追加。
・pythonの対戦スクリプト、gameoverコマンド正しく返すように修正。
・ランダムパラメーターのログファイルを分析するpythonのスクリプト追加。
・lateのパラメーターファイルは非公開に変更して、残りはGitHubに公開。
	// やねうら王ライブラリを用いる電王トーナメント参加者様へ。
	// Lateは書きかけなので使わないほうが無難です。(ただし使用を禁止するわけではないです)


■　2016/09/24 V3.71

・Stockfish : Fix pin-aware SEE
・Stockfish : Simplify pinners conditions in SEE()


■　2016/09/21～2016/09/22 V3.70

・ADAMの学習率0.5に変更。更新式、doubleの精度で計算するように変更。
・LOSS_FUNCTIONにCROSS_ENTOROPY_FOR_VALUE追加。
・AdaGradの学習率調整。


■　2016/09/18～2016/09/20 V3.69

・自己対戦用のpythonスクリプトV3を用意。エンジンそれぞれに対して異なる持ち時間設定で対局できるようにした。
・Stockfish : Fix a warning with MSVC
・Stockfish : Fix indentation in struct FromToStats
・教師局面の生成、USE_RANDOM_LEGAL_MOVE追加。(こちらをdefaultに変更する。)
・教師局面の生成、最大手数を512に変更。
・MultiThinkGenSfen::thread_workerでconst intのMAX_PLYがglobalのMAX_PLYと被っていたの修正。
・USE_DEBUG_ASSERT有効のときに、エラーメッセージ出力後、停止するように変更。
・教師局面からの学習で、クロスバリデーションのために保存している局面は2周目でも学習には使用しないように変更。
・教師局面からの学習、weight_updateをOpen MPで並列化した。(Open MPを有効にしてコンパイルすること)
・教師局面からの学習に、やねんざメソッド実装。
・解説.txtにOpenMPのことを追記。
・教師局面からの学習のときに、kppのmin,max,sumを出力する機能を追加。
・教師局面からの学習、局面をメモリ上のバッファから読み込んだ時点で局面数をカウントしていたの修正。
・教師局面からの学習設定としてUSE_KPP_MIRROR_WRITE追加。デフォルトではこれをオフに。


■　2016/09/17 V3.68

・Stockfish : Renaming in MovePicker
・Stockfish : Pinned aware SEE
・Positionクラスにattackers_to(to,occ)追加。
・Position::see()、リファクタリング。
・SIMPLE_SEEでないほうのコード、削除。スッキリ。
・min_attackerで角・飛車に馬、龍が混じっていたの修正。
・move_picker_2016Q3.hのMovePicker::pick_the_best()を.cpp側に移動。
・Position::pawn_promotion()追加。
・Stockfish : Use per-thread counterMoveHistory
	→　コア数が多いと効果があるが、コア数が少ないか持ち時間が少ないとマイナスの効果があるようだ。
・CSAルール改正に伴い、MinumumThinkingTimeのデフォルト値を2000から1000に変更。
・自己対戦用のpythonスクリプト、score cp XXX のところに数字以外が送られてくるエンジン向けに修正。


■　2016/09/16 V3.67

・GEN_SFENのときでも、探索部で連続王手の千日手は有効にしておく。
・Stockfish : Change from [Color][PieceType] to [Piece]
・Stockfish : Prune dangerous moves at low depth
・Stockfish : Integrate next_stage() logic into next_move()
・move_piceker_2016Q3.cpp、変数名をStockfishに合わせた。
・調整パラメーターにPARAM_FUTILITY_AT_PARENT_NODE_GAMMA追加。
・GEN_MOVE_TYPEにQUIETSをaliasとして追加。
・指し手生成で回避手、王手の指し手生成のときにcapture_or_pawn_promotion()の判定要らなかった。修正。


■　2016/09/05 V3.66

・movegenで歩成りの王手生成時の上位8bitに格納する駒が間違っていたバグ修正。(ysさん、thanks!)
・learn.cppでsize_tを使っていたところ、一部u64に変更。


■　2016/09/03 V3.65

・nanoがビルド通らなかったの修正。
・LONG_EFFECTありのmated1plyがコンパイル通らなかったの修正。
・Position::key()追加。
・learn.hにLEARN_GENSFEN追加。
・Key exclusion_key()　→　削除
・futilityでpos.see_sign()を使っていたところ、see()に変更。
・PARAM_REDUCTION_BY_HISTORY = 10000に戻す。
・g++用のmakefileでLATE_ENGINEがコンパイル出来なかったの修正。


■　2016/09/02 V3.64

・update_stats()整理。
・反駁ペナルティ等の変更。
・ONE_PLYを2,4,8,...できちんと動作するように変更。
・history pruningのときにkillerの判定しないように変更。
・CheckInfo、StateInfoに隠匿。CheckInfoUpdate削除、CheckInfoUpdate()関係すべて削除。
・Position::check_blocker()削除。
・Position::silder_blockers()追加。
・is_aligned()廃止。aligned()追加。aligned()の引数の並び順をStockfishに合せる。
・Position::check_info_update()を呼び出さなくて良くなった。
・Optionクラス、spin型でもto_string()が呼び出せるように変更。
・testコマンドの最初でis_ready()を呼び出すように修正。
・set_check_info()、null_move()のとき処理を分離した。


■　2016/08/31 V3.63

・学習のときのmini-batchサイズをlearnコマンドのときに指定できるように。
・学習時の評価関数ファイルの保存を8000万局面ごとに変更。


■　2016/08/30 V3.62

・pythonスクリプトに、自己対局のときに評価値つきの棋譜を残す機能追加。
・教師局面生成時に千日手局面に突入したらその対局を終了するように変更。


■　2016/08/26 V3.61

・目的関数=勝率の関数のときにも、YANE_SGD_UPDATEの更新式を用意。
・SGDのeta2、constにしてて、global変数参照してた…。0になってたのか…。


■　2016/08/22 V3.60

・YANE_SGD_UPDATE追加。
・2016Lateをmakebookコマンドに対応。
・test exambookコマンド追加。
・KPPTのときに評価関数名が、usiの応答に対して出力されていなかったのを修正。
・learnコマンドでrmseの計算にsfen_unpack()を使っていたところをset_from_packed_sfen()に変更。
・自己対戦フレームワーク、readyokに対して初回のみ1秒のwaitを追加。


■　2016/08/20 V3.59

・自己対戦フレームワークに、time outの処理追加した。
・search()のmate1判定、depth == ONE_PLYでもやるように変更。
・IID単純化。
・captureでのLMR追加。
・2016Late engineをgensfenコマンドに対応。


■　2016/08/19 V3.58

・2016Late engine書きかけ。
・move_picker2016Q3追加。
・Search::search_endの説明が間違ってる気がする。消す。
・move_picker、capturesで歩の成り、考慮しない。
・move_picker、BadCaptureの順序変更。
・evaluateのときのTempo使わないように変更。


■　2016/08/18 V3.57

・SSEなしのときにBitboardの>>=演算子の実装が間違っていたの修正。(ai5さん、thanks！)
・これに伴い、exeファイル、入れ替え。


■　2016/08/17 V3.56

・局面生成、盤上に王が1枚しかないときに盤上の2駒を交換しようとするバグ修正。
・nodes as timeモードきちんと実装。
・MultiPV != 1のときにpreviousScoreが設定されていなかったバグ修正。
・評価関数ファイル、numaが異なるときは共有しない仕組みを用意。
・ソースコードにのponderまわりにコメント追加。
・新自己対戦フレームワーク、魔女との対局に対応。
・optionが存在しないときに"Error"の文字列を入れておく。(自己対戦フレームワークなどでtrapしたいため)


■　2016/08/16 V3.55

・深いdepthでの枝刈り
・depth 1でのnull pruning追加。
・from_sq()追加。
・ColorFromTo historyを導入。
・評価関数パラメーター、共有メモリにCreateしたときはcheck sumを表示するように変更。
・pythonによる自己対戦スクリプト、思考エンジンから送られてきた"Display"を含む文字列はそのまま表示するように変更。


■　2016/08/16 V3.54

・futility margin調整。


■　2016/08/15 V3.53

・isready()のときのメモリチェックのコード追加。


■　2016/08/14 V3.52

・pythonによる連続自己対戦フレームワーク(仮)
	→　script/engine_invoker2.py追加。


■　2016/08/09 V3.51

・Position::is_mated()でstalemateの判定がおかしかったのを修正。(tanuki-さんより報告あり)


■　2016/08/04 V3.50

・レーティング計算用、pythonのスクリプトをプロジェクトに追加。→　script/calc_rating.py
・思考エンジンの設定をしてlocal-game-serverを呼び出す用のpythonのスクリプトをプロジェクトに追加。→　engine_invoker.py
・評価関数ファイルの読み込みに失敗した場合、エラーを表示したあと1秒待つようにした。
・local-game-serverに子プロセスの終了判定のコード追加。
・local-game-server、プロセスの起動に失敗したときのコード追加。


■　2016/08/01～2016/08/03 V3.49

・短い時間に対するrtime時の勝率に与える影響が大きいようなので思考時間のランダム化を少し抑制。
・benchコマンドの引数の説明が、USI拡張コマンド.txtのほう、間違っていたので修正。(uuunuuunさんより指摘あり)


■　2016/07/30～2016/07/31 V3.48

・gensfenのときにeval_limitを指定できるようにした。
・learn.hからGEN_SFENS_EVAL_LIMIT削除。
・局面生成、規定回数になっていないのに終了するバグがあるようだ。
　→　圧縮ドライブに対する細切れのfwrite自体、異様に時間かかるようだ。
・局面生成の表示まわり、変更。終了時にも最終的な出力したsfenの数を表示するように。
・局面生成、規定回数ぴったりにならないバグ修正。


■　2016/07/28 V3.47

・local-game-serverにEngineConfigDirオプション追加。
・local-game-serverにBookSfenFileオプション追加。
・local-game-serverにEngineNumaオプション追加。
・local-game-serverで指定する対局回数は、対局回数は並列化されている分も考慮した、
	トータルでの対局回数に変更。この回数に達すると対局中のものは中断して打ち切る。
・local-game-serverにおいて、goコマンドのあとstopで停止できないように変更する。そうしないとquitをqueueに積めない。
・やねうら王2016において定跡なしを選択できるように拡張。


■　2016/07/26 V3.46

・Jenkins対応を進めていく。
・gensfenコマンド、生成するファイル名を指定する手段を用意。
・kpptファイルのファイル名のほうにもスラッシュつけてたのでpath_combine()失敗していたの修正。
・gensfenのときに最後、finalizeしてないから指定局面数だけファイルに書きだされていないの修正。
・gensfenでloop回数を指定してもそのループ回数で終了しなかったの修正。(loop_count初期化忘れ)
・TEST_LEGAL_LEAF、デフォルトではundefinedに。
・EvalSaveDir optionを用意。learnコマンドのときに保存先フォルダはこれで変更することに。
・learnコマンドの保存の間隔を1億局面に1回に変更。
・learnコマンドのときファイル名出力したほうがいいや。(入力は、見えないと仮定すると)
・learnコマンドでのsaveのときにpath_combineするの忘れていたの修正。


■　2016/07/25 V3.45

・learnコマンド使ったときに更新式を表示するように変更。
・epochの初期化忘れていたの修正。
・Adamでコンパイラ周りのバグ(?)回避。
・目的関数をlearnコマンド実行時に表示するようにした。
・learnコマンドでmini-batch sizeを指定できるようにした。
・YaneGrad、mini-batch sizeで学習率ηを変えるようにした。
・SGDのパラメーターもlearn.hではなく、自動的に計算して設定するように変更。
・learnコマンドにloop,dirの指定が出来るようにした。
・misc.hにpath_combine()を追加。
・evaluate_kppt.cppでは、EvalDirの末尾に'/'が指定されていても良いようにこれを用いるように変更。
・learnコマンドのdirオプションもpath_combine()を用いるように変更。
・learnでフォルダを掘るときにもpath_combine()を用いるように変更。
・SGD、mini-batchのサイズで学習率変える必要ない気がしたので修正。


■　2016/07/24 V3.44

・learnコマンドのために置換表をオフにしているときは起動時に警告が出るように。
・プロジェクト設定、AVX2に戻していなかったの修正。
・gensfenコマンド、lockしてファイル書き出しているのが気持ち悪いのでworker別に作った。
・README.mdに電王トーナメントの参加者向けの情報追加。
・評価関数を共有メモリに配置する件、EvalDirが異なる場合は共有しないようにした。
　　YaneuraOu + USI version番号 + EvalDir名
　が合致したときにのみ共有するようにした。
・evaluate_kppt_learn.cpp、ValueKkFloatとか、要らなかった。整理した。
・学習時のKK配列のlimitの緩和。
・学習時の更新式にAdam追加。
・定跡のバイナリサーチのバグ修正。(thx. merom686さん)
・Adamの学習率調整。
・Linux環境用のmkdirのwrapper書いた。(learnコマンドで用いる)
・makefile、Linux環境だと_LINUXというシンボルを定義するようにした。
・g++でbitop.hで警告が出ていたの修正。


■　2016/07/23 V3.43

・評価関数バイナリ28種公開。README.mdに追記。やねうら王2016Midのreadme.txtに追記。
・KPPT評価関数において評価関数の共有をしない設定オプションを追加。
・↑の件YaneuraOu-2016-mid_ja.txtに反映。
・config.hにNO_SSE追加。
・やねうら王2016Mid、各CPU向けの実行ファイルビルドしなおして、exe/ に保存。


■　2016/07/22 V3.42

・学習時に置換表を参照しないオプション追加。learn.hで書けるようにした。
・教師局面ファイル45億局面分、公開した。
・ミニバッチサイズをlearn.hに移動。
・learn.hで学習オプションのconfigureが出来るように。
・棋譜からの学習、ネットワーク上のファイルの読み込みに時間がかかるのでもう一段、バッファリングする。
・save_eval()で、Windows環境ならDirectoryを掘るように。
・棋譜からの学習、ファイルの保存でディレクトリ名変えるのは10億局面ごとに変更。
・update_weights()を呼び出すタイミング、調整した。
・LEARN_READ_SFEN_SIZE、learn.hに移動。
・棋譜からの学習のときにバックグラウンドでファイルを読み込むスレッドを追加。
・AdaGradとYaneGrad、5回目ぐらいまではg2のupdateのみにするようにした。
・save_eval()のときにフォルダ名を表示するようにした。
・learnコマンド、40HTでスケールアウトするように改良。
・learnコマンド、gensfenコマンド、出力を抑制するようにした。learn.hで設定可能。
・file_read_workerのjoin()忘れていたの修正。

	
■　2016/07/21 V3.41

・sfenのunpacker、高速化。Position::set_from_packed_sfen()を作った。
・Position::set()のvalidation、ASSERT_LV3以上のときのみするように変更した。(ここが遅いと棋譜からの学習でボトルネックになるため。)
・SGDでのupdateのときの係数、目的関数に合わせて調整するようにした。
・学習の最後にも評価関数パラメーターをファイルに保存するコード追加。
・学習率η2導入。rateをlearn.hで設定できるようにした。
・評価関数パラメーターの各値にリミットをかける。
・AdaGradに最初のほうの更新量を抑制するε項を追加。
・AdaGradのkkpの更新式、タイプミスしてたの修正。
・10億局面ごとではなく5億局面ごとに評価関数ファイルに保存するように変更。
　→　保存間隔、learn.hに移動。
・SGDのηなどもlearn.hに移動。
・1万局面ごとに'.'を出力するかどうかもlearn.hで設定できるようにした。
・棋譜生成時の評価値の上限をlearn.hで設定できるようにした。またこの値を2000→3000に変更した。
・更新式にYaneGrad追加。learn.hで選択可能に。
・YaneGradによる更新式を実装。
・g++でlearner.cppでwarningが出ていたの修正。


■　2016/07/20 V3.40

・学習のときにkppの次元下げを用いるように実装。
・Eval::save_eval()追加。
・2000万局面ごとに保存するコード追加。
・学習時にmean_error出力するように。
・rmse計算のときに置換表世代を新しくするコード追加。
・256手引き分けになるスコアは学習の妨げになるので棋譜生成のときにMAX_PLY-16までにしておく。
・棋譜からの学習のときに浅い探索の結果としてevaluate()とqsearch()を選択可能に。
・learn.h追加。学習時のオプションはここにまとめた。
・AdaGradの更新式においてサンプル数で割り算するのをやめる。
・updateのときにmax_kkpを表示するようにした。
・AdaGradで最初のほうは値を動かさないように改良。
・AdaGradの学習率調整。
・目的関数として交差エントロピーを実装。
・交差エントロピーの目的関数の導出式をソースコード上に書いた。
・評価関数のファイル名、evaluate_kppt.hに移動。
・save_eval()、evaluate_kppt_learn.cppに移動。
・学習のときに、10億局面ごとに保存する評価関数ファイル名を変更するようにした。


■　2016/07/17 - 2016/07/19 V3.39

・learnコマンド少し実装。packed sfenファイルの読み込みとshuffle～unpackのコードは書けた。
・learnでmse計算するコード追加。
・learnで∂J/∂Wiを計算するコードまで書けた。
・Eval::add_grad(),update_ada_grad(),init_grad()を追加。
・学習時の損失関数を選べるようにした。
・Evall::add_grad()でrootでの手番を考慮してなかったので修正。
・Eval::update_grad()→update_weight()とリネーム。
・Eval::update_weight()にweight配列に関するassert追加。
・AdaGrad以外にSDGでのupdateも追加。
・EvalのLEARN関連、learnに移動させる。
・evaluate_kppt.h , evaluate_kppt_learn.cpp追加。
・勾配計算するときにshallowとdeep、逆にして関数に渡してた。修正。


■　2016/07/16 V3.38

・USI原案に従い、sfen化文字列を修正する。
・定跡にも影響が出るので定跡ファイルを修正する。
・makebook sortコマンドを実行したときにsfen文字列を再構築するように変更する。
・inv_piece[]について質問があったのでソースコード上にコメントを追記。
・やねうら王標準定跡V1.01公開。
・やねうら大定跡V1.01公開。
・exeフォルダのやねうら王2016Mid差し替え。


■　2016/07/15 V3.37

・kpp_mirror_write()まわり、盛大にバグっていたので修正。
・mir_piece[]の初期化コード、バグっていたので修正。
・kkp_mirror_write()、盤面180度回転させたときの符号が違ったので修正。
・bookのsfen文字列の比較部分のコード、少し改良。
・makebook sortコマンドのときに局面のsfenを正規化するように修正。
・ソースコードが2TAB(TAB=スペース2つ)だと、他の環境と合わせるの難しいので、
  VS2015標準の4TABに変更していく。
・Linux環境でgetline()が'\r'まで残すので定跡にhitしない問題修正。
・ShogiGUIの検討モードで定跡の指し手が複数表示されない問題を修正。(multipvで定跡を出力するように変更)
・解説.txtにShogiGUIの検討モードのことを追記。
・開発者のために、depth 6でgensfenした10億局面を配布。


■　2016/07/14 V3.36

・gensfenで圧縮棋譜を生成するときは拡張子をbinに変更。
・定跡を書き出すときにfinalizeで落ちるバグ修正。
・gensfenコマンドで評価値の絶対値が2000を超えたら出力しないように変更。
・exe/フォルダのやねうら王2016Mid差し替え。
・BookDepthLimitとしてゼロが指定されていたときに無視されてしたの修正。
・解説.txtに定跡DBにhitしたときに表示されるメッセージの説明追加。
・やねうら大定跡V1、公開。


■　2016/07/12 V3.35

・gen_sfen()にis_ready()が抜けてた(気がする)ので修正。
	→　MultiThinkが持っているので良いのか…。
・makebook thinkのときに終了時にコマンドのusageが出ていたの修正。
・makebook thinkでのDB上の出現頻度は、バージョンナンバーにしておく。→　やねうら大定跡も。
・やねうら大定跡はNarrowBookを必ずオフにする件、説明追記。
・MultiThinkでworker threadの終了を待つ方法がよろしくないので修正。
・gensfenコマンド、進捗がわかりにくいので改善。
・gensfenコマンドで定跡の局面は書き出さない＆思考しないように修正。
・gensfenコマンドで書き出すときに時刻を出力するように修正。
・gensfenでファイルを作るときにios::appでopenするように変更。
・やねうら大定跡では、手番側から見たスコアの良い順に指し手をソートしてあることを保証するようにした。


■　2016/07/10 V3.34

・少ないメモリのマシンで思考エンジンを何十個も立ち上げようとしたときにメモリ不足になるので
　評価関数をshared memoryを用いて他のプロセスと共有するための改造開始。(作業中)
・Positionのコンストラクタで平手に初期化すると、compute_eval()が呼び出され、このときに
  評価関数テーブルを参照するが、isready()が呼び出されていないのでこの初期化が出来ない。
  ゆえに、この処理はやめたほうが良い。
・KPPT評価関数でcoutを用いていたところ、sync_coutにしたほうが無難なので修正。
・ALIGNED()マクロ追加。
・g++でbook.cpp , learner.cpp にてwarningが出ていたの修正。
・評価関数テーブルを共有メモリを用いて実現するの、実装完了。→　Windows版はデフォルトでこの設定に。
 →　説明を解説.txtに追記。
・makebook、処理が終わったときにusageが出ていたの修正。
・_stricmp()がlinux系では存在しないらしくその場合、strcasecmp()で置き換えるように修正。
・makebookのときisready()を呼び出しておかないとPosition::set()などが出来ないので修正。


■　2016/07/09 V3.33

・置換表のprobeを行わない設定追加。USE_FALSE_PROBE_IN_TT
(自己生成棋譜からの学習でqsearch()のPVが欲しいときに置換表にhitして枝刈りされたときにPVが得られないの悔しいので)
・benchのときに、複数スレッドだとmain threadの探索のnode数が表示されていた問題修正。
・benchで複数スレッドのときはmain threadとトータルの情報とどちらも表示することに。
・makebookコマンドに並び替え機能追加。
	例)> makebook sort book_src.db book_sorted.db
・定跡をメモリに丸読みせずに指す機能追加。BookOnTheFlyオプション。
・exe/book/standard_book.dbをsort済みのものと差し替え。
・MemoryBookにon the fly機能追加。
・"usinewgame"に対してNo such optionと表示するようになっていたの修正。
・定跡を途中で選び直したときに前の定跡のclear()をしていなかったの修正。


■　2016/07/05 V3.32

・探索による定跡生成、一定時間経過ごとに保存するようにした。
・makebook mergeコマンド追加。定跡ファイルのマージが可能に。
・book_write()で空のentryは書き出さないように修正。
・makebook thinkコマンドのときに思考対象node数を表示することに。
・定跡生成depth18で32手目ぐらいまで。→やねうら大定跡として公開する(かも)。
・makemove thinkコマンドに思考対象とする開始手数(startmoves)の指定を出来るようにした。
・やねうら王2016Midに新定跡を対応させる。USI option、定跡絡みの指定を大量追加。
		  o["BookEvalDiff"]       << Option(100  , 0, 99999);
		  o["BookEvalBlackLimit"] << Option(0    , 0, 99999);
		  o["BookEvalWhiteLimit"] << Option(-140 , 0, 99999);
		  o["BookDepthLimit"]     << Option(16   , 0, 99999);
・あまりBookEvalDiffを大きくすると、すぐに定跡DBにない局面に行ってしまう…。30ぐらいでいいや。
・Visual Studio 2015 Update3後、g++版とnpsがあまり大差ないようなのでg++版の実行ファイルをexe/から削除。
・思考エンジンの説明に、doc/解説などを読むように誘導。
・makebookコマンドでstartmovesの値が反映されてなかったの修正。
・makebook thinkコマンドで新たな指し手を追加していないときはSではなくsを出力してファイルの
　書き出しはしないように変更。


■　2016/07/04 V3.31

・スレッドにまたがってsearchを個別に呼び出すworker用のclass追加。extra/multi_think.cpp
・APRNG、意味ない気がしてきた。削除。
・gensfenまわり、MultiThinkクラスを用いて書き直し。そこそこ綺麗に書き直せた。
・bookまわりもMultiThinkクラスを用いて書き直した。そこそこ綺麗に書き直せた。
・Mid2016のsearch/qsearchのスタブ、デフォルトでsilentモードとした。
・is_ready()のほう、引数にPosition&を取るのやめる。これがあると余計な依存性が発生する。
・g++でbuild出来なくなっていたの修正。
・g++でbuildするとCFLAGS   += -fltoをつけるとセグフォで落ちるので、Makefileからこのオブション、削除。
  →　shogi.cppでSearch::init() (やねうら王2016Mid)が呼び出された瞬間に落ちている模様。g++のbugくさい。
・やねうら王2016Midにユーザー定跡機能追加。(user_book1.db～user_book3.dbまで)
・gensfenの動作テスト →　gensfenうまく動いている。
・makebook thinkのときに思考対象局面のsfenを表示するように。
・makebookコマンドで無効なパラメーターが来たときのエラー出力追加。
・解説.txtのmakebookコマンドの説明がmoveとなっていたのでmovesに修正。
・makebookコマンドでMOVE_WIN/MOVE_RESIGNの処理してなかったので追加。
・局後学習機能 →　対局中にsfenを出力しておけばいいのだが、将棋所等でcsaファイル出力すればいいから…要らないか…。
・bookの生成モード動作テスト → うまく動くようになった。
・2016Midがconfig.hでLONG_EFFECT_LIBRARYをdefineしたままだったので修正。
・探索による定跡を生成して配布する。(準備中)
	→　4手目までdepth 24,MultiPV = 7
	    8手目までdepth 18,MultiPV = 5
		の定跡ファイル作った。


■　2016/07/03 V3.30

・gensfenで定跡を用いる機能追加。→　うまく動いている。
・ASYNC_PRNG追加。
・Mutexのtypedefをconfig.hに移動。
・gensfenで任意二駒をときどき入れ替える機能追加。USE_SWAPPING_PIECES →　動いてるっぽい。
・Position::do_move_by_swapping_pieces()追加。→　書けた。うまく動いている。
・USIオプションの簡略入力のときに大文字小文字の区別をしないように変更。
・gensfenしたファイルを読み込む機能追加。(learnコマンドの一部)　→　テストコードはうまく動いているようだ。
・learnコマンド追加。→　作業中
・定跡の自動生成機能追加。
・makebook from_sfen のほうのコマンド、from_sfenを指定せずに動いていたの修正。
・sfenを与えて思考させるためのmakebookコマンド追加。
	> makebook think 2016.sfen yaneura_book.db move 16 depth 32 multipv 3
	→　コード書けた。デバッグまだ。


■　2016/07/02 V3.29

・sfen圧縮機能追加。(かきかけ)
・Position::sfen_from_rawdata()追加。
・sfen packer、misc/に移動。
・USE_SFEN_PACKER追加。
・USIで直接 Threads 1 とやったとき、setoption name Threads value 1と等価なようにする。
・公式のトップページに書いていた更新履歴、邪魔なので消す。
・sfen packer完成。
・gensfenコマンド、とりあえず完成。
・gensfenコマンド、packed_sfenで書き出す機能追加。


■　2016/07/01 V3.28

・evalコマンドで呼び出すのをcompute_eval()に変更。
	(root nodeではStateInfo::previousがnullptrなので差分計算できない)
・StateInfo::previousのところのコメント修正。
・YANEURAOU_2016_MID_ENGINE_LEARN 追加。
・learn/learner.cpp追加。
・test gensfenコマンド削除。gensfenコマンド追加。
・sfenのpacker/unpacker書いた。
・BitStreamクラス書いた。
・sfenの圧縮出力追加。(かきかけ)
・2016Midの定跡選択部がgccでコンパイルエラーが出るようになっていたの修正。
・Makefile修正。CFLAGSに-flto追加。


■　2016/06/30 V3.27

・KPPTの評価関数、学習のときに使うのでKPPのmirrorを考慮したKPP配列の要素を参照するモードを用意。
・EVAL_LEARN追加。
・KPPTのLEARN用として、mirror_piece(),inv_piece()追加。初期化コード追加。
・Mir(Square)関数追加。
・kpp_write(),kkp_write()追加。
・棋譜生成のためのSearchのスタブにmulti pv、aspiration window searchを導入する。
・2016Midに定跡ファイルの選択機能追加。
・read_book()で二度目はskipするように変更。
・プロジェクトからToDo削除。


■　2016/06/29 V3.26

・qsearch()のassertを、ASSERT_LV3(abs(bestValue) <= mate_in(ss->ply));に変更。
・Apery(WCSC26)のKPP配列のp=0にゴミが入っているので、それをクリアするコード追加。(ただしコメントアウトしてある)
・KPPTを、KKPTだけにするテストコード追加。
・null move時のprefetch()削除
・2016Midでeval hashの使わないように変更。


■　2016/06/28 V3.25

・EVAL_KPPT_FAST導入。
・KPPT型の超高速な評価関数、開発開始。(とりあえず非公開)
・Makefileに2016Late用の記述追加。
・Mid以外がbuildできなくなっていたの修正。VALUE_NOE_VALUATE→VALUE_NOT_EVALUATED
・nano/nano plusでassertで落ちるの修正。
・USE_TT_PVのときに置換表の指し手をpseudo_legal()でチェックしていなかったの修正。(nano/nano plus)
・MidでMovePickerから取得した指し手に対してpsudo_legal()のassert追加。
・nono plusでdraw_value返すときにvalue_from_tt通してなかったの修正。
・miniでOptions["Param1"]をextra_option()で追加していなかったの修正。


■　2016/06/27 V3.24

・捕獲から逃れる指し手のところ、コメント追記。
・to_sq()をmove_to()のaliasとして、いまあるto_sqはsqww_to_sqに名前変更。
・HashTableにaligned_as(32)追加。
・KPPTの評価値の未計算値、VALUE_NOT_EVALUATEDに変更。フラグ位置をp[2][0]ではなくp[0][0]に変更。
・evaluate_nullmove()削除。
・KPPTの評価関数、リファクタリング。(Apery、魔女風にした)
・s32、s64等のtypedef追加。


■　2016/06/26 V3.21～V3.23

・Position::moved_piece_after_ex()廃止。
・やねうら王2016MidではUSE_DROPBIT_IN_STATSなしに変更。
・ソースコード中にtabが混じっていたの修正。
・MakefileのPGO版のビルドプロセスで、quitコマンドの手打ちが必要だと
　ビルドプロセスを自動化出来ないので、bench終了後にquitするようにMakefile修正。
・improvingの値比較、ひとつの条件をコメントアウト。(ひとつ前の式が暗黙的に含んでいるので)
・PV nodeをcutnodeで呼ぶことはなくなったのでpv && cutNodeという条件式は無駄なので省略。
・探索部、cmh,fmhまわりにコメント追加。
・long_effect.cppがg++でbuildが通らなかったの修正。
・mate1ply_with_effect.cppがg++でwarningが出ていたの修正。
・nanoがbuild通らなくなっていたの修正。
・棋譜の自動生成ルーチンを書く。(新学習メソッドで用いるので)
　→　searchのrootMovesのセット、Learner::search()に移動させる。
・test gensfenのqsearch()のPVがきちんと得られるようにした。
・ENABLE_OPERATORS_ONをENABLE_BASE_OPERATORS_ONとENABLE_FULL_OPERATORS_ONに分離
・ENABLE_FULL_OPERATORS_ONにintとの割り算追加。depth / ONE_PLYが出来るように。
・fail low時のbonusを与える条件、変更。
・PARAM_IID_MARGIN_ALPHA追加。
・PARAM_FUTILITY_AT_PARENT_NODE_MARGIN、256に戻す。
・check extensionの条件、単純化。
・やねうら王2016Midでehash有効にする。
・capture_or_pawn_promotion() 高速化
・movegenで金相当の駒の指し手、Moveの上位16bitに金としてしまっていたバグ修正。
・gensfenコマンド、修正。


■　2016/06/25 V3.20

・PVの出力の抑制。(出力が詰まるため)
・USIオプションに"PvInterval"追加。
・旧SEE、min_attacker()をtemplate化。min_attacker()での馬と龍の式を簡略化。
・新SEE周り、occupiedの初期化がされてない実行経路があったの修正。
・やねうら王2016Mid、新see()を使うように変更。
・_mm_alloc()を使うのにg++では*intrin.hをincludeしないときにmm_alloc.hをincludeする必要があるので修正。
・CapturePieceValue[KING]=VALUE_ZEROに変更。これで問題ない。
・Makefile PGOがかけられるように修正。
・misc.cppにprefetch()追加。
・do_null_move()のときにはprefetch()するように変更。


■　2016/06/24 V3.19

・Macのg++でbuild出来るようにbitop.hにSSE/AVX用のincludeを集めた。
・USE_SSE4廃止。USE_SSE41追加。
・kpptのevaluate()でSSE4の命令をUSE_SSE2で使っていたの修正。
・std::round()、C++11では使えるが、C++14だと使えない…？！msys64でコンパイルしたのがいけないのか…そうか。
・g++でコンパイルしたほう、2割ぐらい速くなった。
・SSE4.2用のinclude headerは<nmmintrin.h>か。追加した。実行ファイル差し替え。
・AVX512対応考える。
・extra/config.hでターゲットCPUの選択、下位CPUのdefineは自動的に選択されるようにした。
・Makefileを使ってビルドするときは、config.hを変更しなくともターゲットCPU用の実行ファイルがビルド出来るように。
・やねうら王2016Mid以外もmakeでbuild出来るようにする。
・探索部のファイル名、*-search.cppで統一する。


■　2016/06/23 V3.18

・利きを用いないmate1ply()、離し飛車・角に対して合駒判定間違えていたの修正。
・利きを用いないmate1ply()、歩の移動による詰み、歩の開き王手による詰みを間違えていたの修正。
・#includeするときのfolder separatorが"\"になっていたものを"/"に修正。(thx.もりたにさん)
・文字コードがcp932になっていたファイルをutf8に修正。(thx.もりたにさん)
・INT_MAXにclimits、offsetofにはcstddefが必要だそうで追加。(thx.ingkさん)
・評価関数の未計算値をINT_MAXにしているの、VALUE_NOT_INITとかにしたほうがわかりやすい気はしなくもないが..。まあいいか。
・g++でvalueが未初期化かもというwarningが出るのを回避するコードを追加。
・Ubuntu16.04でmake avx2が通ることは確認した。
・parameters.h →　2016-mid-param.hにリネーム


■　2016/06/22 V3.16～V3.17

・razoring margin調整。
・王手延長の単純化	
・IIDのとき、常にcut nodeにするのではなく、そのnodeのcutNodeを伝播させる
・Makefile、フォルダを自動的に掘るように修正。(thx. tanuki-さん)
・Moveが32bitにともない、MemoryBookが16bitでMoveを持っていると合致しないことになる。
	MemoryBookをstructに変更して、なんとかする。
・noSSE/SSE2/SSE4/SSE4.1/AVXの命令を分けた。SSEなしでも動くはず。
・gcc用の64bit環境の判定、一箇所抜けてた。そこを使わないようにリファクタリングした。
・評価関数の格納されているフォルダ名のセパレータ、"\"ではなく"/"を使うように変更。(Linux/Mac対応)


■　2016/06/21 V3.12～V3.14

・qsearch()を直接呼び出せるようにした。(学習で用いるので)
・教師棋譜を自動生成するtest gensfenコマンド追加。(書きかけ。まだ正しく動作しない)
・IID時のkillerをセットするコード削除。
・KPPT用のevaluate hashtableを実装。
・razoring margin、1秒対戦で自動調整。
・paramters_master.h読み込み時にparamの要素の数が足りないときに詳細エラーを表示するようにした。
・Msys2上のg++でコンパイルが通るようにした。Makefile追加。
・struct名ymmだとg++でコンパイルが通らないので変更。


■　2016/06/20 V3.11

・history、駒打ちを区別するかどうかをUSE_DROPBIT_IN_STATSで切り替えられるようにした。
・ExtMove、Move32を格納するように変更。
・MovePickerのkillerまわり修正。
・evalのフォルダをUSIのsetoptionで変更できるように。
・指し手生成段階で移動先での駒種 + 打ち駒なら32 をしたものを上位bitに格納するように変更。Moveの32bit化
・#define KEEP_PIECE_IN_COUNTER_MOVE　削除。
・駒打ちの駒(+32)を cout << pc;のようにして表示できるように拡張。
・Move move_from_usi(const std::string& str)に、Move16が返るというコメント追加。


■　2016/06/18 V3.10

・更新履歴が見にくいので実験記録を分離。
・ここまでの古い更新履歴は old/更新履歴2016Q2まで.txtに移動。
・予定はToDoのリスト.txtに移動。
・長い持ち時間のときの勝率upのためのチューニング(長い持ち時間において+R120)
・ONE_PLY_EQ_1を定義するとONE_PLYが1になるようにした。
・静止探索でのmate1ply()のタイミング少し早めにする。
・PieceValueCapture名前おかしいのでCapturePieceValueに変更。
・update_stats()するの、capture or pawn promotionであるべきか…。そうか。
・駒打ちに対するmove_from()にassert追加。
・駒打ちの駒を得るのにmove_from()を使っていたところ、move_dropped_piece()を使うように変更。
・MovePickerのGOOD_RECAPTURESにassert追加。
・Apery風のSEE()も実装した。USE_SIMPLE_SEEをdefineすると使える。
・min_attackerの引数からpiece_bb削除。
・SEE()で、と金で駒を取るときにそれがKING+1で王がとられる扱いになっていたの修正。
・SEE()のordering修正。
・historyのupdate()を呼び出すときに打ち駒で+32していないところがあったのを修正。
