よくある質問 - mizar/YaneuraOu GitHub Wiki

やねうら王に関するよくある質問

1手0.2秒対局

Q)

1手0.2秒で指す、のように1秒より細かい思考時間で指して欲しいのですが、それは可能ですか?

A)

1秒未満の思考時間で指して欲しい時、設定の一例ですが、持ち時間0分、秒読み1秒に設定したあと、MinimumThinkingTime(最小思考時間)を1000(1秒)に設定して、NetworkDelayとNetworkDelay2を800(0.8秒)に設定すれば、1秒の0.8秒前に必ず指すので、1手0.2秒での対局が実現できます。

このように、MinimumThinkingTimeとNetworkDelay,NetworkDelay2を組み合わせると1秒より細かい思考時間に調整することができます。

floodgateでの設定

Q)

floodgateでのお勧め設定について教えてください。

A)

floodgateでは通信遅延が起こりうるので以下の思考エンジン設定で、前者を120~400、後者を1120~1400ぐらいを設定すると良いと思います。(それぞれの意味については思考エンジンオプションのほうを確認してください。)

NetworkDelay 通信の平均遅延時間[ms]
NetworkDelay2 通信の最大遅延時間[ms]

ひどい通信遅延が起こらないネットワーク環境なら、それぞれ120,1120ぐらいを推奨。

読み筋が途中のdepthからしか出力されない

Q)

ShogiGUIの検討/棋譜解析モードで読み筋が途中のdepthからしか出力されません。

A)

思考エンジン設定でPvIntervalを0にすればこの問題は解決されます。また、(思考時間無制限の)検討モードは

go infinite

で思考が開始されるはずで、このとき、PvIntervalを強制的に0にみなすようになっています。

読み筋が一手しか表示されないことがある

Q.

読み筋が1手しか表示されないことがあります。

A.

思考エンジンオプション ConsiderationMode(検討モード)をオンにしてみてください。

より詳しい解説記事はこちらをどうぞ。 👉 やねうら王ブログ 検討モード用の読み筋出力について

fail low/highした時に読み筋を出力する/しない

Q.

fail low/highしたときに読み筋を出力して欲しい / 欲しくないです。

A.

思考エンジンオプション OutputFailLHPVで変更できます。

より詳しい記事はこちらをどうぞ。👉 fail low/highしたときの読み筋の出力

優等局面

Q.

優等局面とは何ですか?

A.

盤面(盤上の駒配置)は同じなのに、自分の手駒が増えている局面です。

例えば、相手が歩を成り捨てたので同金と取って、また相手が金の頭に歩を打ってきたので、金をバックしたとします。そうすると歩を成り捨てる前と同じ盤面で、手駒が歩一枚増えていることになります。これを(前の局面に対する)優等局面と言います。

この逆に、盤面は同じで、自分の手駒が減っている局面は劣等局面と言います。

評価値31111

Q.

勝勢でもないのに評価値に31111という値が表示されることがあります。これは何ですか?

A.

やねうら王NNUEでは優等局面の内部的な評価値が28000となっています。これを出力する時に、cp(centi-pawnという単位)に変換します。cpは、歩1枚の価値が100なのですが、内部的な評価値は、歩1枚の価値は90になっていますので、優等局面の時に出力される値は、28000×100/90 cp = 31111 cp ということになります。

💡 優等局面は、前の局面より悪くなることはありえないため、やねうら王では優等局面に遭遇した時点で、その進行はありえないものとして、評価値28000(詰みではないが、相手が回避するであろう評価値)をつけて、読みを打ち切っています。そのため、優等局面が含まれる変化があると、そこで評価値31111と出力されることがあります。

ふかうら王のhashfull

Q)

ふかうら王ではhashfull(将棋所の「ハッシュ使用率」の表示)が自分の手番になるごとに常に1%ぐらいに戻るのですが、自分の手番が来るごとにそれまでに調べていた読み筋を捨てているのですか?(だとしたら弱くなりませんか?)

A)

捨てていません。(弱くなっていません)

ふかうら王では、メモリを動的に(探索時に)確保するので残りどれだけメモリが使えるかはエンジン側からは把握できないのです。そこで、hashfullの値は、

hashfull = 1000(千分率) × search_nodes(今回の探索を開始してから探索したノード数) / uct_node_limit (エンジンオプションのUCT_NodeLimitの値)

が出力されるようになっています。

自分の手番が来たときにsearch_nodesは0にリセットされるため、見かけ上、探索開始時にhashfullは0に戻ります。しかし実際には、現在の局面に以降の読みの情報は捨てていません。

また、hashfullは上記のような計算式なので実際に使えるメモリ量の参考にはなりません。一局を通じてタスクマネージャーで空きメモリを見ながら、UCT_NodeLimitを設定するのがよろしいかと思います。