Skip to content

Commit

Permalink
技巧とやねうら王classicの評価値を混ぜ合わせる
Browse files Browse the repository at this point in the history
  • Loading branch information
pushpak51094 committed Aug 8, 2016
1 parent a3355f0 commit e7f258e
Show file tree
Hide file tree
Showing 9 changed files with 507 additions and 416 deletions.
85 changes: 85 additions & 0 deletions about_Gikou_YaneuraOuClassicEvalMix.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
【Gikou_YaneuraOuClassicEvalMix】
将棋ソフト「技巧」の非公式版です。

 ・技巧の評価関数バイナリに加えてやねうら王classicの評価関数バイナリを読込み、両ソフトでの評価値を計算したうえで
  任意の割合で混ぜ合わせて最終的な評価値を算出するようにした、実験的なプログラムです。
 ・別途、やねうら王classicの評価関数バイナリ(kkp32ap.bin、kpp16ap.bin)が必要になります。
  オリジナルの技巧の評価関数バイナリ等も必要です。
 ・当ソフトで使用するのは、やねうら王2016 Midの評価関数バイナリ(KK_synthesized.bin、KKP_synthesized.bin、KPP_synthesized.bin)ではなく
  やねうら王classicの評価関数バイナリであることにご注意ください。
  やねうら王2016 Midの評価関数バイナリはApery(WCSC26)の評価関数バイナリと同じ形式ですので、
  そちらを使用する場合は当ソフト【Gikou_YaneuraOuClassicEvalMix】ではなく【Gikou_AperyEvalMix】の方をご使用ください。
 ・npsが大きく低下するため、オリジナルの技巧に比べると棋力は下がります。
 ・ただ、当ソフト同士を自己対戦させてみると、「やねうら王classicの評価値を混ぜる割合を0%(技巧の評価値が100%)」としたものより、
  適度にやねうら王classicの評価値を混ぜ合わせた方が強くなる場合もあるようです。
 ・評価値の差分計算は実装しましたが、高速化の余地は多々残っていると思います。
 ・USI拡張コマンドとして、「evalコマンド」を実装しました。(下記参照)
 ・mizarさんの「USI ["go nodes <x>", "go depth <x>"], Option ["LimitDepth"] の実装」をマージしました。
 ・当プログラムの作成にあたり、Apery及びやねうら王のソースコードを参考にさせて頂きました。


■USI options
将棋所の「エンジン設定」画面などで設定する項目として
以下の4種類のオプションを追加しました。

 ・Z11_YaneuraOuClassicEvalJoban やねうら王classicの評価値の割合(序盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z12_YaneuraOuClassicEvalChuban やねうら王classicの評価値の割合(中盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z13_YaneuraOuClassicEvalShuban やねうら王classicの評価値の割合(終盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z14_YaneuraOuClassicEvalFolder やねうら王classic評価関数バイナリのフォルダ:(例)./YaneuraOuClassicEval

 【やねうら王classicの評価値の割合の設定例】
  (例1)序盤0%、中盤0%、終盤0%
    算出される評価値は、技巧の評価値と一致します。
  (例2)序盤100%、中盤100%、終盤100%
    算出される評価値は、やねうら王classicの評価値と一致します。
  (例3)序盤50%、中盤50%、終盤50%
    算出される評価値は、技巧の評価値とやねうら王classicの評価値の平均値と一致します。
  (例4)序盤100%、中盤50%、終盤0%
    序盤の評価値はやねうら王classicに近く、徐々に技巧の割合が増えていき、終盤の評価値は技巧の評価値と近くなります。
  (例5)序盤30%、中盤50%、終盤20%
    序盤から中盤にかけてやねうら王classicの割合が30%から50%へと増えていき、
    中盤から終盤にかけてやねうら王classicの割合が50%から20%へと減っていきます。

  ※当ソフトでは、「進行度」に応じて評価値を混ぜる割合を内分しています。
   そもそもオリジナルの技巧で、序盤、中盤、終盤の評価値を持っており、進行度に応じて内分する仕組みが実装されています。
   当ソフトではその仕組みを流用させて頂いています。


■USI拡張コマンド「eval」
事前に任意の局面を設定したうえで「eval」コマンドを実行すると、
当ソフトで算出した評価値、技巧とやねうら王classicの評価値とその内訳などを標準出力へ出力します。
なお、評価値として「手番側から見た評価値」を出力しています。

【実行例】
setoption name Z14_YaneuraOuClassicEvalFolder value ./YaneuraOuClassicEval
isready
position sfen l6nl/5+P1gk/2np1S3/p1p4Pp/3P2Sp1/1PPb2P1P/P5GS1/R8/LN4bKL w RGgsn5p 1
eval

---------- Eval
Eval = -438     ←算出した評価値(技巧とやねうら王classicを混ぜ合わせ済み)
-----
Gikou = -53.27    ←技巧の評価値
YaneuraOu = -823.04    ←やねうら王classicの評価値
-----
SideToMove = White(Gote)  ←手番
Progress(%) = 88.87%   ←進行度
Gikou(%) = 50.00%   ←技巧の評価値を混ぜる割合
YaneuraOu(%)= 50.00%   ←やねうら王classicの評価値を混ぜる割合
---------- Gikou
Sum = -53.27    ←技巧の評価値(再掲)
-----
KP = -1055.88    ←技巧のKP(King-Piece)(おそらく駒割りもこれに含まれる)
PP = +82.48    ←技巧のPP(Piece-Piece)
Controls = -122.32    ←技巧の「利き(各マスの利き)」に関する評価値
KingSafety = +618.37    ←技巧の「玉の安全度」に関する評価値
Sliders = +424.08    ←技巧の「飛び駒(飛車・角・香車の利き)」に関する評価値
---------- YaneuraOuClassic
Sum = -823.04    ←やねうら王classicの評価値(再掲)
-----
Material = -734.88    ←やねうら王classicの駒割り
KK = +3.27    ←やねうら王classicのKK (King-King)
KKP = +38.30    ←やねうら王classicのKKP(King-King-Piece)
KPP = -129.76    ←やねうら王classicのKPP(King-Piece-Piece)
----------

8 changes: 4 additions & 4 deletions gikou_ja.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ OwnBook 定跡を使う
SuddenDeathMargin 切れ負けルール時の余裕(秒)
Threads スレッド数
TinyBook 出現頻度の低い定跡手を選ばない
Z01_AperyEvalJoban Aperyの評価値の割合(序盤、%)
Z02_AperyEvalChuban Aperyの評価値の割合(中盤、%)
Z03_AperyEvalShuban Aperyの評価値の割合(終盤、%)
Z04_AperyEvalFolder Apery評価関数バイナリのフォルダ
Z11_YaneuraOuClassicEvalJoban やねうら王classicの評価値の割合(序盤、%)
Z12_YaneuraOuClassicEvalChuban やねうら王classicの評価値の割合(中盤、%)
Z13_YaneuraOuClassicEvalShuban やねうら王classicの評価値の割合(終盤、%)
Z14_YaneuraOuClassicEvalFolder やねうら王classic評価関数バイナリのフォルダ
Loading

0 comments on commit e7f258e

Please sign in to comment.