[ ホームページ ] [ 携帯用URL ]
将棋所のサポート掲示板
将棋所についての質問やバグ報告、USIエンジンの作成報告などに使用して下さい。

[ EZBBS.NET | 新規作成 | ランキング | オプション ]
iモード&(絵文字)、au対応!ケータイからも返信できる無料掲示板!
名前
 E-mail 
題名
内容
   タグ有効 改行有効 等幅フォント
URL
 



1091.USIプロトコルのscoreについて確認  
名前:48    日付:2020/9/29(火) 22:1
テスト版4の対応ありがとうございます。
AGREE切れ以外の状況はリカバーできていることを確認しました。
次回大規模夜戦で問題なければ電竜戦に耐えれると思います。

ところで,テスト中にちょっと不思議なことがあったので確認させてください。
後手番の終盤でエンジン側が以下の4行を送りました。自作エンジンです。
info depth 1 time 12 nodes 2687 nps 223916 score cp 721 multipv 1 pv 1b1c B*2b 1c1d
info depth 2 time 71 nodes 15860 nps 223380 score cp -32000 multipv 1 pv
info score cp -32000 pv 1b1c string random
bestmove 1b1c ponder B*2b

1行目は読みが浅く自分側がやや有利と思っていますが2行目で負けを読み切ります。
雑な管理なのでPVが出ていません。
3行目は負けを読み切った際でも詰み局面まで指すために合法手をランダムで選んでいるところで,4行目は着手です。

以上の4行で2行目か3行目のscore cp -32000が採用されると思っていたのですが将棋所のグラフ上でもfloodgateへの送信評価値も1行目の721を送っているようです。
これは私の理解が足りないのでしょうか。理由がわかれば教えてください。



1093.Re: USIプロトコルのscoreについて確認
名前:将棋所の作者    日付:2020/9/30(水) 23:20
報告ありがとうございます。最近ちょっと忙しくて、なかなかすぐに回答できません。これから調べてみるのでしばらくお待ちください。


1097.Re: USIプロトコルのscoreについて確認
名前:将棋所の作者    日付:2020/10/3(土) 23:6
調べたところ、両方とも盲点みたいなことが原因になっていました。以下ちょっと説明が長くなります。

まず、2行目の評価値が採用されない問題について。
将棋所でエンジンの思考情報を表示する部分は、予想手・現在の探索手・探索局面数などを表示する部分があり、その下に、読み筋ごとの思考時間・探索深さ・探索局面数などをリスト項目で追加して表示する部分があります。
この、リスト項目の部分は、現状の将棋所では、読み筋がない場合は追加しないようにしてあります。その場合、探索深さや探索局面数は上記の表示部に表示できるし、読み筋のない項目をリストに追加しても意味がないと判断しているためです。
ただ、評価値に関しては独立した表示部がないので、表示するのであれば、必ずリスト項目の部分になります。なので、リスト項目に追加されない行の評価値は表示されません。
つまり、2行目のように読み筋がなくて評価値のある情報を返した場合、将棋所ではその行の情報をリスト項目として追加しないので、その評価値が保存されず、グラフ表示にも採用されません。エンジンが手を指したとき、もし、その評価値を採用してグラフに表示すると、それを見ている側からすると、どこにも表示されなかった評価値が突然グラフに表示されて、この評価値はどこから来た?ということになります。
送っている評価値が採用されないのはおかしいという意見ももっともなので、読み筋がなくてもリスト項目に追加して表示するか、あるいは評価値にも独立した表示部を設けるという方法もありますが、どちらもちょっと気の進まないところがあります。

次に、3行目の評価値が採用されない問題ですが、これはmultipvを使う行と使わない行が混在することが原因でした。
1行目でmultipv 1を使っていますが、この場合、将棋所では、multipvの数字ごとに、それに対応した読み筋と評価値を保存します。multipvの数に応じて読み筋が複数存在する可能性があるので、エンジンが手を指したとき、その手と初手が一致する読み筋を探して、それに対応する評価値をグラフ表示などに使うためです。
その後、3行目でmultipvを使わずに読み筋を返すと、この行の評価値は、multipvの数字ごとに保存する部分とは別に保存されるのですが、そのあとで手を指すと、将棋所ではmultipvの数字に対応した評価値を先に見に行ってしまうので、3行目で返した評価値が無視されていました。
これに関しては、multipvを使わない行での評価値がmultipvの行よりもあとに返って来たなら、それを優先して表示すべきかもしれません。ただこれも、同一局面の思考表示において、multipvを使う行と使わない行が混在すること自体どうなのか、ということがあります。
(別の話ですが、infoコマンドを返す時、同じ行の中でpvとstringを同時使用するのは規約違反です。USIプロトコルの解説にも、「pvとstringの同時使用は不可」と明記してあります。今回の問題とは関係ないのでこれ以上触れませんが)

以上、将棋所の問題と言えばそうなのですが、エンジンの返すコマンドの使い方がかなり想定から外れていて、それに対する動作として大きな欠陥があるとも思えないので、修正すべきかどうか迷っています。


1098.Re: USIプロトコルのscoreについて確認
名前:48    日付:2020/10/4(日) 9:22
調査ありがとうございます。
こちらとしては対応できる情報を頂けたので十分です。
実装が見えないと原因を推測するのが難しいなと言ったところです。

選手権などでも妙なグラフを描いてる部分などがあるように思っていたので
これを機に確認することにします。

「1091.USIプロトコルのscoreについて確認」への返信

無料アクセス解析

アクセス解析の決定版!無料レンタルで最大100ページ解析!

   投稿KEY
   パスワード

EZBBS.NET produced by InsideWeb