﻿
USIプロトコルの独自拡張コマンド

■　USI options

set option name XXX value ...で設定できるoption

	簡略表現として、
	> Threads 1
	のように指定したとき、
	> setoption name Threads value 1
	と等価なようになっている。


	注意) USI_Hash で設定された値は無視されます。

	Threads			: 思考するスレッド数
	Hash			: 置換表のサイズ(単位[MB])
	USI_Ponder		: ponder(相手番での思考) on/off
	WriteDebugLog   : 標準入出力をファイル("io_log.txt")にリダイレクトする(logコマンドでonには出来る)
	NetworkDelay    : 通信時の平均遅延時間[ms]
				これを例えば200に設定しておくと、5.0秒で指さずに、4.8秒(200ms早め)で指すようになります。
	NetworkDelay2   : 通信時の最大置換時間[ms]
				これを例えば600に設定しておくと秒読み10秒で、切れたら負けという瞬間に限り、9.4秒(600ms早め)に指し手を返します。
				floodgateなどときどき大きな遅延が発生するサーバーで対局させるときは、この値を1200(1.2秒早め)ぐらいに設定することをお勧めします。
	Contempt        : 引き分けを受け入れるスコア。歩を100とする。例えば、この値を100にすると引き分けの局面は
	                  評価値が -100とみなされる。(互角と思っている局面であるなら引き分けを選ばずに他の指し手を選ぶ)
	EvalDir			: 評価関数用のファイルの配置フォルダ(デフォルトでは eval/ )
					isreadyコマンドで評価関数ファイルを読み込むので、起動後isreadyまでにsetoptionでこの設定を変更しないと効かない。

	// やねうら王classic、tce、local-game-server時。

	EnteringKingRule: 入玉ルール
		NoEnteringKing  : 入玉ルールなし
		CSARule27       : 27点法(CSAルール)
		CSARule24       : 24点法。31点で宣言勝ちなので31点にならないと宣言勝ちはしない。
		TryRule         : トライルール

	// やねうら王classic,tce時

	MultiPV         : その局面での上位N個の候補手を調べる機能
	NarrowBook		: 実現確率の低い定跡を採用しない
	Param1			: パラメーターの自動調整用X軸
	Param2			: パラメーターの自動調整用Y軸

	// やねうら王tce時

	MinimumThinkingTime : 最小思考時間。2秒以内に指すと計測1秒となる場合、2000を指定すべき。(CSAルールなど)
					このとき、NetworkDelayの分は減じて思考するので計測1秒となるはず。
	MaxMovesToDraw      : 終局までの手数。256手ルールなら256と設定する。0なら無制限。

	BookMoves		: 定跡を用いる手数(0=未使用)

	// やねうら王2016 Mid/Late時

	PvInterval      : PVの出力を抑制する。前回出力時間から、この時間(単位は[ms])経過するまでは
					次のPVを出力しない。

	EvalShare       : 評価関数を共有メモリに展開する。詳しくは解説.txtを参照のこと。
		
	EvalSaveDir     : learnコマンドを使ったときに保存するフォルダ。

	BookFile 定跡ファイル : 定跡ファイルの選択

					# このコンボボックスの値
					no_book          定跡なし
					standard_book.db 標準定跡
					yaneura_book1.db やねうら大定跡(公開用 concept proof)
					yaneura_book2.db 超やねうら定跡(大会用2015)
					yaneura_book3.db 真やねうら定跡(大会用2016)
					yaneura_book4.db 極やねうら定跡(大会用2017)
					user_book1.db ユーザー定跡1
					user_book2.db ユーザー定跡2
					user_book3.db ユーザー定跡3


	評価値ベースの定跡。以下のオプションを用いるときは
	1) NarrowBookを必ずオフに。(やねうら大定跡では、「出現頻度」のところが、思考エンジンのバージョンナンバーになっています！
    	　このため、出現頻度順で並び替えても意味がありません。)
	2) 「やねうら大定跡」「真やねうら定跡」など評価値がきちんとついている定跡を用いる。

		BookEvalDiff	    : 定跡の第一候補手との評価値の差
				定跡の指し手で1番目の候補の指し手と、2番目以降の候補の指し手との評価値の差が、
				この範囲内であれば採用する。(1番目の候補の指し手しか選ばれて欲しくないときは0を指定する)

		BookEvalBlackLimit  : 定跡の先手の評価値下限

				定跡の指し手のうち、先手のときの評価値の下限。これより評価値が低くなる指し手は選択しない。

		BookEvalWhiteLimit  : 定跡の後手の評価値下限

				同じく後手の下限。

		BookDepthLimit      : 定跡のdepth下限

				定跡に登録されている指し手のdepthがこれを下回るなら採用しない。0を指定するとdepth無視。

	BookOnTheFly    : 定跡ファイルをメモリに丸読みしない機能
		
		やねうら大定跡のような巨大な定跡を試合開始時に読み込まれるとその読み込みに時間がかかるため、
		対局中、1手指すごとにファイルを読みに行くオプション。定跡は事前にソートされている必要があります。
		これはmakebook sortコマンドで行なえます。コマンドの使い方については、doc/解説.txtにある。
		なお、やねうら王の公式サイトで配布している定跡ファイルはsortされています。

		定跡ファイル内をバイナリサーチで調べているのでファイルサイズが10GBを超える超巨大な定跡でも取り扱えます。
		ランダムアクセスに近いアクセスになるので、このオプションを用いるならHDDよりはSSDのほうが好ましいです。

	nodestime      : node as timeモード。

		時間の代わりに探索ノード数を決めて探索するときのミリ秒当たりのnode数。
		この値を0に設定するとnode as timeモードではない。

		例) この値を600と指定した場合、
			go btime 1000とすると、600000ノード(の時間が与えられたものとして)探索する。
		1スレッドあたりのnps / 1000 ぐらいを指定すると、goコマンドを従来通り使える。
	
	EngineNuma				: 評価関数バイナリを共有するときのプロセッサグループの番号。
							異なるプロセッサグループの評価関数と共有すると速度が低下するので異なるプロセッサグループとは
							共有しないためのオプション。-1なら、指定なし。

	// やねうら王 2016Late以降

	ResignValue     : 投了スコア。例えば3000にすると相手から見た評価値が3000以上(自分から見たら-3000以下)に
		なった場合に投了する。デフォルトは99999。


	// 協力詰めsolver時

	CM_Hash			: 協力詰め時の置換表サイズ(単位[MB])


	// local-game-server時

	EngineConfigDir			: "engine_configX.txt"が配置してあるフォルダ
	
	EngineNuma				: 子プロセスでEngineを実行するプロセッサグループ(Numa node)
							  -1なら、指定なし。

	BookSfenFile			: 連続自己対戦のときに定跡の局面まで進めるためのsfenファイル。
							  このファイルの棋譜のまま32手目まで進める。
							  book/book.sfen
							  のように指定する。


■　USI拡張コマンド

	d       : Debug デバッグ用に現在の局面を表示する。
	s       : Sashite 指し手生成のスピードテストを行なう。
	         王手がかかっているときはEVASIONS,かかっていないときはNON_EVASIONS
	eval    : 現在の局面に対して評価関数を呼び出して評価値を出力する。
	matsuri : 指し手生成祭りの局面を現在の局面としてセットする。
	moves   : 現在の局面の合法手(LEGAL_ALL)をすべて出力する。
	sfen    : "position sfen"の略。"d"コマンドで表示されたsfen文字列をコピペするときに便利。
	key		: 現在の局面に対して局面のhash keyを出力
	mated   : 現在の局面に対して詰み判定を呼び出す。詰んでいれば1。さもなくば0。
	mate1   : 現在の局面に対してmate1ply()を呼び出す。

	bench   : ベンチマーク
		bench [置換表サイズ][スレッド数][→の指定][LimitType = depth , nodes, time][局面の指定]
		例)
			bench 1024 1 10 default depth
			※　パラメーター省略時は上記の設定
		
		[局面の指定]について
		  "default"=デフォルトの局面、"current"=現在の局面、
		  それ以外 = ファイル名とみなしてそのsfenファイルを読み込む

		例) bench 1024 1 10 default depth


	test    : テスト用コマンド
		test unit            : unit test
		test perft [depth]   : perft(パフォーマンステスト)。深さを指定できる。
		test rp    [回数]    : random playerのテスト。回数を指定できる。
		test rpbench [回数]  : ランダムプレイヤーを用いたbenchマーク。
		test checks [回数]	 : ランダムプレイヤーで対局させて、王手の指し手生成ルーチンで指し手が
								正しく生成出来ているかをテストする。
		test autoplay [回数] : 思考ルーチンを呼び出して連続自己対戦をさせる。
		test timeman         : TimeManagerで消費する時間のテスト結果を表示する。(やねうら王classic-tce以降のみ)
			
	log		: ログファイル("io_log.txt")に標準入出力を書き出す設定。Write Debug Logでon/offも出来る。

	// MAKE_BOOK_CMDをdefineしてコンパイルしたときにのみ有効。

	makebook : 定跡作成コマンド。詳しくは doc/解説.txt のほうを参考に。

	goコマンドの拡張。
		go rtime 100
	とすると、今回の思考時間として、100～300[ms]を使って思考する。

	// やねうら王2016Mid LEARN版のみ

	gensfen [depth 探索深さ] [loop 生成する棋譜の数] [file ファイル名] [eval_limit 評価値]  : 学習用の自己対局棋譜の生成
		例) gensfen depth 6  (残りは省略可)
			eval_limitは、評価値の絶対値がこの値を上回った時点でその対局を終了するという値。

	learn [ファイル名1] [ファイル名2] …   : 生成した棋譜から評価関数パラメーターの学習をさせる。

		ファイル名はいくらでも書ける。
		
		batオプション
			learn bat 200 [ファイル名1][ファイル名2]..のように mini batchのサイズを設定できる。
			200だと200万局面ごとに評価関数パラメーターの更新が行われる。
		basedirオプション
			learn basedir c:/kif [ファイル名1][ファイル名2]..のように指定すると c:/kif/ファイル名1 c:/kif/ファイル名2 のように
			書いたのと同じ効果がある。
		targetdirオプション
			learn targetdir c:/kif
			とするとc:/kifフォルダ内にあるファイルを根こそぎ学習対象とする。
		loopオプション
			learn loop 3 [ファイル名1][ファイル名2]..のように指定すると、3回ループする。
			(手抜き実装のため大きな数字を指定すると、ファイル名の文字列バッファをたくさん消費するので1000ぐらいまでの指定でお願いします)
		batchsizeオプション
			minibatchのサイズを指定できる。デフォルトは100万局面。

		保存するフォルダは"EvalSaveDir"で指定したフォルダ。
		デフォルトでは"evalsave"。このフォルダは事前に用意されているものとする。
		このフォルダ配下にフォルダを"0/","1/",…のように自動的に掘り、そこに評価関数ファイルを保存する。
