Skip to content

Commit

Permalink
序盤はAperyの評価関数を使い、中盤~終盤は技巧の評価関数を使う
Browse files Browse the repository at this point in the history
  • Loading branch information
pushpak51094 committed Sep 22, 2016
1 parent 1620006 commit 88141d7
Show file tree
Hide file tree
Showing 9 changed files with 475 additions and 189 deletions.
80 changes: 80 additions & 0 deletions about_Gikou_JobanAperyEval.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
【Gikou_JobanAperyEval】
将棋ソフト「技巧」の非公式版です。

 ・序盤はAperyの評価関数を使い、中盤~終盤は技巧の評価関数を使うようにした、実験的なプログラムです。
 ・探索部はオリジナルの技巧のままです。
 ・別途、Aperyの評価関数バイナリ(KK_synthesized.bin、KKP_synthesized.bin、KPP_synthesized.bin)が必要になります。
  オリジナルの技巧の評価関数バイナリ等も必要です。
 ・どの段階で評価関数をAperyから技巧へ切り替えるかについて、将棋所の「エンジン設定」画面等から「進行度」で指定することができます。(下記参照)
 ・評価関数を切り替えた際に、置換表のクリア等は行っていません。
  そのため、「Evaluate()では技巧の評価値を算出するが、探索では置換表に残っているAperyの評価値も使われる」といったことも起こると思います。
  これによる棋力への影響は不明です。
 ・別のプログラム「Gikou_AperyEvalMix」では、Evaluate()が呼ばれるたびに両ソフトの評価値を算出したうえで
  それらを混ぜ合わせて最終的な評価値を算出していますのでnpsが大きく低下しますが、
  当プログラムではEvaluate()ではどちらか一方の評価値を算出するだけですので、「Gikou_AperyEvalMix」よりは高速です。
 ・Aperyの評価値の算出について、差分計算は実装しましたが、高速化の余地は多々残っていると思います。
 ・USI拡張コマンドとして、「evalコマンド」を実装しました。(下記参照)
 ・mizarさんの「USI ["go nodes <x>", "go depth <x>"], Option ["LimitDepth"] の実装」をマージしました。
 ・当プログラムの作成にあたり、Apery及びやねうら王のソースコードを参考にさせて頂きました。


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

 ・Z01_AperyEvalFolder Apery評価関数バイナリのフォルダ    :(例)./Apery_20160307
 ・Z02_ChangeEvalProgress 評価関数切替(Apery→技巧)の進行度(%) :-1%~100%の範囲で設定します。(例)40

 【評価関数切替(Apery→技巧)の進行度(%)の設定例】
  (例1)33
    進行度0%~33%(≒序盤)はAperyの評価関数が使用され、進行度33%~100%(≒中盤~終盤)は技巧の評価関数が使用されます。
  (例2)66
    進行度0%~66%(≒序盤~中盤)はAperyの評価関数が使用され、進行度66%~100%(≒終盤)は技巧の評価関数が使用されます。
  (例3)100
    常にAperyの評価関数が使用されます。
  (例4)0
    常に技巧の評価関数が使用されます。
  (例5)-1
    「-1」は特殊な設定値で、使用される評価関数(技巧・Apery)が1手ごとに切り替えられます。

  ※「進行度」自体は技巧の仕組みで算出されます。


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

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

---------- Eval
Eval = -53     ←算出した評価値
-----
Gikou = -53.27    ←技巧の評価値
Apery = -307.99    ←Aperyの評価値
-----
SideToMove = White(Gote)  ←手番
Progress = 88.87%   ←進行度
ChangeEval = 40.00%   ←評価関数切替(Apery→技巧)の進行度
EvalKind = Gikou     ←使用された評価関数(Apery/技巧)
---------- 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    ←技巧の「飛び駒(飛車・角・香車の利き)」に関する評価値
---------- Apery
Sum = -307.99    ←Aperyの評価値(再掲)
-----
Material = -800.00    ←Aperyの駒割り
KK = +30.87    ←AperyのKK (King-King)
KKP = +61.77    ←AperyのKKP(King-King-Piece)
KPP = +399.38    ←AperyのKPP(King-Piece-Piece)
----------

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

0 comments on commit 88141d7

Please sign in to comment.