TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

dlshogiのdf-pnのテスト方法

dlshogiのdf-pnだけを動かす手順を書いておきます。

テスト局面追加

testプロジェクトのtest.cppの
「// DfPnテスト」と書いてあるところのmain()の

	vector<string> sfens = {
		// 詰み
		"9/9/+N8/p1p4p1/6p1p/1P7/3k3PP/2+p5L/6+rGK w R2B2G3Sgs3n3l9p 1",
		"1n1g3+Pl/k1p1s4/1ng5p/pSP1p1pp1/1n3p3/P1K3P1P/1P7/9/L1G5L b 2R2BG2SL5Pn 161", // mate 15
		// (略)
	};

の部分にsfenで局面を追加することでテストできます。

test.cppには、main()がたくさんありますが、テストしたいところを「#if 1」にしています。

https://github.com/TadaoYamaoka/DeepLearningShogi/blob/master/test/test.cpp#L359

探索上限変更

上限ノード数は

dfpn.set_max_search_node(1000000);

で変更、深さの上限は、

dfpn.set_maxdepth(29);

で変更できます。

ハッシュサイズ変更

ハッシュの衝突が起きると探索効率が落ちるため、置換表は十分なサイズが必要です。
dfpn.cppの以下の箇所で定数定義しています。

int64_t DfPn::HASH_SIZE_MB = 2048;

https://github.com/TadaoYamaoka/DeepLearningShogi/blob/master/usi/dfpn.cpp#L11

ハッシュの衝突が起きると上書きするため、長手数の詰み探索には向いていません。
長手数の詰み探索には、Small TreeGCとか使う方が正しいです。

ビルド方法

Visual Studioの場合は、ビルド構成をReleaseにしてtestプロジェクトを右クリックしてビルドでビルドできます。
ソリューションのビルドからは外しているため個別にビルドが必要です。

Gccの場合は、testディレクトリにMakefileがあります。