From 6a263c59e40ef1d73fcd64a23f8cdd81be93de78 Mon Sep 17 00:00:00 2001 From: yaneurao Date: Sat, 18 Nov 2023 17:09:00 +0900 Subject: [PATCH] =?UTF-8?q?-=20super=20sort=E6=9C=89=E5=8A=B9=E3=81=AE?= =?UTF-8?q?=E6=99=82=E3=81=AB=E6=9C=89=E5=8A=B9=E3=81=AB=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=80=82=20-=20PARAM=5FMOVEPICKER=5FUSE=5FSUPERSORT?= =?UTF-8?q?=E5=89=8A=E9=99=A4=20-=20parital=5Finsertion=5Fsort=E3=81=AE?= =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF=E3=83=BC=E8=AA=BF?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/engine/yaneuraou-engine/yaneuraou-param.h | 11 ++--------- source/movepick.cpp | 11 ++++------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/source/engine/yaneuraou-engine/yaneuraou-param.h b/source/engine/yaneuraou-engine/yaneuraou-param.h index 1fbdfb807..e56e18115 100644 --- a/source/engine/yaneuraou-engine/yaneuraou-param.h +++ b/source/engine/yaneuraou-engine/yaneuraou-param.h @@ -283,20 +283,13 @@ PARAM_DEFINE PARAM_MOVEPICKER_SORT_ALPHA1 = 3130; // 重要度 ★★★★★ // 元の値 = 1960 , step = 1 // [PARAM] min:-1000,max:3000,step:480,interval:1,time_rate:1,fixed -PARAM_DEFINE PARAM_MOVEPICKER_SORT_TH2 = 480; +PARAM_DEFINE PARAM_MOVEPICKER_SORT_TH2 = 1960; // move pickerでsortする係数 (super sort使用しない時) // 重要度 ★★★★★ // 元の値 = 3130 , step = 1 // [PARAM] min:0,max:6000,step:500,interval:1,time_rate:1,fixed -PARAM_DEFINE PARAM_MOVEPICKER_SORT_ALPHA2 = 2630; - -// move pickerでsuper sortを用いるか -// 重要度 ★★★★☆ -// 元の値 = 0 , step = 1 -// [PARAM] min:0,max:1,step:1,interval:1,time_rate:1,fixed -PARAM_DEFINE PARAM_MOVEPICKER_USE_SUPERSORT = 1; - +PARAM_DEFINE PARAM_MOVEPICKER_SORT_ALPHA2 = 3130; // // mate.. diff --git a/source/movepick.cpp b/source/movepick.cpp index a8182453b..570f8dd79 100644 --- a/source/movepick.cpp +++ b/source/movepick.cpp @@ -520,14 +520,11 @@ Move MovePicker::next_move(bool skipQuiets) { // sortする個数が64以上などはquick sortに切り替えるなどした方がいい可能性もある。 #if defined(USE_SUPER_SORT) && defined(USE_AVX2) - - // 以下のSuperSortを有効にするとinsertion_sortと結果が異なるのでbenchコマンドの探索node数が変わって困ることがあるので注意。 - - if (PARAM_MOVEPICKER_USE_SUPERSORT) - partial_insertion_sort(cur, endMoves, -PARAM_MOVEPICKER_SORT_TH1 /*1960*/ - PARAM_MOVEPICKER_SORT_ALPHA1 /*3130*/ * depth); - else + // SuperSortを有効にするとinsertion_sortと結果が異なるのでbenchコマンドの探索node数が変わって困ることがあるので注意。 + partial_super_sort (cur, endMoves, - PARAM_MOVEPICKER_SORT_TH1 /*1960*/ - PARAM_MOVEPICKER_SORT_ALPHA1 /*3130*/ * depth); +#else + partial_insertion_sort(cur, endMoves, - PARAM_MOVEPICKER_SORT_TH2 /*1960*/ - PARAM_MOVEPICKER_SORT_ALPHA2 /*3130*/ * depth); #endif - partial_insertion_sort(cur, endMoves, - PARAM_MOVEPICKER_SORT_TH2 /*1960*/ - PARAM_MOVEPICKER_SORT_ALPHA2 /*3130*/ * depth); // → sort時間がもったいないのでdepthが浅いときはscoreの悪い指し手を無視するようにしているだけで // sort時間がゼロでできるなら全部した方が良いがどうせ早い段階で枝刈りされるのでほとんど効果がない。