
やねうら王 更新履歴



■　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していないところがあったのを修正。
