Arasan 20.1

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Dann Corbit
Posts: 12870
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Arasan 20.1

Post by Dann Corbit »

May as well add one more:

Code: Select all

	int depth_constant = 1024; // depth constant factor
	int depth_multiplier = 64; // depth slope factor
	float ceiling = 3.0; // 3 pawns difference lid 
	float depth_divisor = 256.0; // depth divisor

...

		int R = (int) roundf(((depth_constant + depth_multiplier * depth / DEPTH_INCREMENT) / depth_divisor + std::min(float(node->eval - node->beta) / PAWN_VALUE, ceiling)) * DEPTH_INCREMENT);

Note that I do not intend a final floating point formula.
I just formulated it that way to find the optimal values.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12870
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Arasan 20.1

Post by Dann Corbit »

Maybe:

Code: Select all

		Tune::TuneParam(Tune::DEPTH_CONSTANT, "depth_constant",1000,800,1200, Tune::TuneParam::Any, 1),
		Tune::TuneParam(Tune::DEPTH_MULTIPLIER, "depth_multiplier",64,40,100, Tune::TuneParam::Any, 1),
		Tune::TuneParam(Tune::CEILING, "ceiling", 3, 2, 4, Tune::TuneParam::Any, 1),
		Tune::TuneParam(Tune::DEPTH_DIVISOR, "depth_divisor", 256, 180, 360, Tune::TuneParam::Any, 1),
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
jdart
Posts: 4434
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Arasan 20.1

Post by jdart »

I use a STC/LTC test like Stockfish and the gauntlet test is at fast blitz (not hyper-bullet) TC). Will queue up this test but right now it is testing a version of probcut.

The Tune params array is for eval parameters that can be tuned via gradient descent. Doesn't work for search parameters, at least not in the same way.

--Jon
jdart
Posts: 4434
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Arasan 20.1 (smooth scaling)

Post by jdart »

I have tried the following version, which requires only integer math. This passed STC and LTC (0:60+0.6) self-play tests but failed to improve the gauntlet results (-17 ELO at 2:30+1). Possibly a different parameter set would do better.

--Jon

Code: Select all

diff --git a/src/search.cpp b/src/search.cpp
index ce0fc93..19b32ab 100644
--- a/src/search.cpp
+++ b/src/search.cpp
@@ -118,13 +118,6 @@ static const score_t STATIC_NULL_MARGIN[5] =
  STATIC_NULL_MARGIN_BASE+4*STATIC_NULL_MARGIN_SLOPE+4*4*STATIC_NULL_MARGIN_SLOPE2
 };

-// Null move R value scaling
-static const int NULL_DEPTH_CONSTANT = 3*32;
-static const int NULL_DEPTH_MULTIPLIER = 12;
-static const score_t NULL_CEILING = score_t(3.0*PAWN_VALUE);
-static const int NULL_EVAL_MULTIPLIER = 24;
-static const int NULL_DIVISOR = 32;
-
 static const int QSEARCH_FORWARD_PRUNE_MARGIN = int(0.6*PAWN_VALUE);

 // global vars are updated only once this many nodes (to minimize
@@ -2581,11 +2574,8 @@ score_t Search::search()
         !Scoring::mateScore(node->alpha) &&
         board.state.moveCount <= 98) {
         int nu_depth;
-        // Reduction (R) is variable based on eval and depth (aka
-        // "smooth scaling")
-        int R = (NULL_DEPTH_MULTIPLIER*depth)/NULL_DIVISOR  + DEPTH_INCREMENT*NULL_DEPTH_CONSTANT/NULL_DIVISOR;
-        R += int(DEPTH_INCREMENT*NULL_EVAL_MULTIPLIER*std::min<score_t>(NULL_CEILING,(node->staticEval - node->beta))/(PAWN_VALUE*NULL_DIVISOR));
-        nu_depth = depth - DEPTH_INCREMENT - R;
+        // R=3 + some depth-dependent increment
+        nu_depth = depth - 4*DEPTH_INCREMENT - depth/6;

         // Skip null move if likely to be futile according to hash info
         if (!hashHit || !hashEntry.avoidNull(nu_depth,node->beta)) {
Dann Corbit
Posts: 12870
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Arasan 20.1 (smooth scaling)

Post by Dann Corbit »

I guess your results are about the same as mine, then.

I only tried self play, at fairly rapid pace.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Jamal Bubker
Posts: 328
Joined: Mon May 24, 2010 4:32 pm

Re: Arasan 20.1

Post by Jamal Bubker »

Thank you Jon 8-)