Skip to content

Releases: tttak/Gikou

Gikou_AperyEvalMixKKPT_20161106

06 Nov 15:57
Compare
Choose a tag to compare
Pre-release

【Gikou_AperyEvalMixKKPT_20161106】
将棋ソフト「技巧」の非公式版です。
 ・技巧の評価関数バイナリに加えてAperyの評価関数バイナリを読込み、両ソフトでの評価値を計算したうえで
  任意の割合で混ぜ合わせて最終的な評価値を算出するようにした、実験的なプログラム。
 ・Aperyの評価値について、試験的にKPPのみ手番の評価をなくしたバージョン。
  KKとKKPは手番評価あり。KPPTではなくKKPT。
 ・Aperyの評価関数バイナリ(KK_synthesized.bin、KKP_synthesized.bin、KPP_synthesized.bin)を読み込むが、
  KPPでは「駒の位置」の部分のみ使用し、「手番」の部分は使用しない。
 ・技巧の評価値はオリジナルのまま。手番の評価を含む。

Gikou_NozomiSDT4EvalMix_20161018

18 Oct 15:41
Compare
Choose a tag to compare
Pre-release

【Gikou_NozomiSDT4EvalMix】
第4回将棋電王トーナメント時のnozomiの評価関数バイナリ(kpp_kkp_kkpt.bin)に対応

Gikou_AperyEvalMixNoTurn_Stockfish7_20161008

08 Oct 16:08
Compare
Choose a tag to compare

【Gikou_AperyEvalMixNoTurn_Stockfish7_20161008】
将棋ソフト「技巧」の非公式版です。
 ・技巧の評価関数バイナリに加えてAperyの評価関数バイナリを読込み、両ソフトでの評価値を計算したうえで
  任意の割合で混ぜ合わせて最終的な評価値を算出するようにした、実験的なプログラム。
 ・ただし、Aperyの評価値については、手番の評価は使用しない。KPPTではなくKPP。
 ・Stockfish7の探索部を取り込み中。

Gikou_Stockfish7_20161004

04 Oct 15:07
Compare
Choose a tag to compare
Pre-release

【Gikou_Stockfish7_20161004】
将棋ソフト「技巧」の非公式版です。
 ・実験的に、技巧にStockfish7の探索部を取り込み中。
 ・少しだけ強くなったような気がするので、一旦リリース。

Gikou_JobanAperyEval_20160922b

22 Sep 04:09
Compare
Choose a tag to compare
Pre-release

【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 ", "go depth "], 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 Z01_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)
---------- 

Gikou_AperyEvalMixNoTurn_20160913

13 Sep 15:23
Compare
Choose a tag to compare
Pre-release

■Gikou_AperyEvalMixNoTurn_20160913
「Gikou_AperyEvalMix_20160905」からの変更点
 ・Aperyの評価値については、試験的に手番の評価をなくしたバージョン。KPPTではなくKPP。
 ・Aperyの評価関数バイナリ(KK_synthesized.bin、KKP_synthesized.bin、KPP_synthesized.bin)を読み込むが、
  「駒の位置」の部分のみ使用し、「手番」の部分は使用しない。
 ・評価関数の精度は下がるが、npsは向上する。
 ・技巧の評価値はオリジナルのまま。手番の評価を含む。

Gikou_AperyEvalMix_20160905

04 Sep 15:59
Compare
Choose a tag to compare
Pre-release

■Gikou_AperyEvalMix_20160905
「Gikou_AperyEvalMix_20160803」からの変更点
 ・評価関数ファイルを読込むタイミングを変更しました。
  * 変更前:isreadyの度に毎回読み込む。
  * 変更後:初回のisreadyのときのみ読み込む。
 ・評価関数パラメータについて、PsqIndexを変換(技巧⇔Apery)するタイミングを変更しました。
  * 変更前:Evaluate()の中で毎回変換する。
  * 変更後:評価関数ファイルの読み込み時に(一度だけ)変換する。
 → Evaluate()が少しだけ速くなりましたが、メモリ使用量が増えましたのでご注意ください。
   例えば、AperyのKPPのパラメータは3次元配列[81][1548][1548]ですが、
   今回の変更で3次元配列[81][2110][2110]として保持することになったため、メモリ使用量が増えました。
   (技巧の評価関数では「と~成銀」を「金」と区別しているため、PsqIndexの数がAperyより多くなっています。)

Gikou_NozomiEvalMix_20160821

21 Aug 13:33
Compare
Choose a tag to compare
Pre-release

【Gikou_NozomiEvalMix】
将棋ソフト「技巧」の非公式版です。

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

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

 ・Z11_NozomiEvalJoban nozomiの評価値の割合(序盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z12_NozomiEvalChuban nozomiの評価値の割合(中盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z13_NozomiEvalShuban nozomiの評価値の割合(終盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z14_NozomiEvalFolder nozomi評価関数バイナリのフォルダ:(例)./NozomiEval

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

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

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

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

---------- Eval
Eval = -449     ←算出した評価値(技巧とnozomiを混ぜ合わせ済み)
----- 
Gikou = -53.27    ←技巧の評価値
Nozomi = -846.37    ←nozomiの評価値
----- 
SideToMove = White(Gote)  ←手番
Progress(%) = 88.87%   ←進行度
Gikou(%) = 50.00%   ←技巧の評価値を混ぜる割合
Nozomi(%) = 50.00%   ←nozomiの評価値を混ぜる割合
---------- 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    ←技巧の「飛び駒(飛車・角・香車の利き)」に関する評価値
---------- Nozomi
Sum = -846.37    ←nozomiの評価値(再掲)
----- 
Material = -760.47    ←nozomiの駒割り
KKP = -0.00    ←nozomiのKKP(King-King-Piece)
KPP = -178.92    ←nozomiのKPP(King-Piece-Piece)
Turn = +93.02    ←nozomiの手番
---------- 

Gikou_YaneuraOuClassicEvalMix_20160809

08 Aug 16:26
Compare
Choose a tag to compare
Pre-release

【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 ", "go depth "], 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)
---------- 

Gikou_AperyEvalMix_20160803

03 Aug 15:52
Compare
Choose a tag to compare
Pre-release

【Gikou_AperyEvalMix】
将棋ソフト「技巧」の非公式版です。

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

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

 ・Z01_AperyEvalJoban Aperyの評価値の割合(序盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z02_AperyEvalChuban Aperyの評価値の割合(中盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z03_AperyEvalShuban Aperyの評価値の割合(終盤、%)  :0%~100%の範囲で設定します。(例)50
 ・Z04_AperyEvalFolder Apery評価関数バイナリのフォルダ:(例)./Apery_20160307

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

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

■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 = -180     ←算出した評価値(技巧とAperyを混ぜ合わせ済み)
----- 
Gikou = -53.27    ←技巧の評価値
Apery = -307.99    ←Aperyの評価値
----- 
SideToMove = White(Gote)  ←手番
Progress(%) = 88.87%   ←進行度
Gikou(%) = 50.00%   ←技巧の評価値を混ぜる割合
Apery(%) = 50.00%   ←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)
----------