bug-gnubg
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gnubg] Re: Different rollouts are good


From: Øystein O Johansen
Subject: Re: [Bug-gnubg] Re: Different rollouts are good
Date: Mon, 30 Sep 2002 13:32:51 +0200

If we first agree to keep a limit to handle only _two_ different search
spacees.

The user must be able to set the two different evaluation classes and the
number of plies whrer to change the search space.
The rollout context struct (in eval.h) must therefore at least one
evalcontext for the late decisions and the rollout context must also
include the limit value whre to change evalcontext.

typedef struct _rolloutcontext {

  evalcontext aecCube[ 2 ], aecChequer [ 2 ]; /* evaluation parameters */
  evalcontext ecLateDecisions;

  unsigned int fCubeful : 1; /* Cubeful rollout */
  unsigned int fVarRedn : 1; /* variance reduction */
  unsigned int fInitial: 1;  /* roll out as opening position */
  unsigned int fRotate : 1;  /* rotate dice of first two rolls */

  unsigned short nTruncate; /* truncation */
  unsigned short nTrials; /* number of rollouts */
  unsigned short nLateDecisionsLimit
  rng rngRollout;
  int nSeed;
} rolloutcontext;

We may also discuss if it is neccesarry to add add an aecLateCube[2] and
aecLateChequer[2]

Now the rest of the changes will be in BasicCubefulRollout () in rollout.c

I suggest this is added in line 262:

  int nTruncate = prc->nTruncate;
  int cGames = prc->nTrials;
  int nLateDecisionsLimit = prc->nLateDecisionsLimit;

Then in line 332 the cube decision has to be split:

if ( iTurn > nLateDecisionsLimit ){
   if ( GeneralCubeDecisionE ( aar, aanBoard[ ici ],
                               pci,
                               &prc->ecLateDecisions ) < 0 )
   return -1;

} else {

   if ( GeneralCubeDecisionE ( aar, aanBoard[ ici ],
                               pci,
                               &prc->aecCube[ pci->fMove ] ) < 0 )
   return -1;
}


   cd = FindCubeDecision ( arDouble, aar, pci );


And also for the chequer play decisions. Split the FindBestMove call in
line 490. I think that should do. (And also the the call in 530 just in
case the player doesn't use variance reduction).

What about the evalcontext for variance reduction aecVarRedn? Do we have to
change this in some kind of way as well?

Now, what about the evaluation at the truncation point? Should this
position be evaluated by the first or LateDecision evalcontext. How much
will it cost in speed of rollout, and how much will gain to use the first
(best) eval context?

For user interface:

set rollout latedecision eval plies ...
set rollout latedecision eval cubeful ..
....
set rollout latedicisions limit 7

?? OK

For the GTK GUI:
An "advanced rollout" button in the dialog. This button opens a new dialog
where the user can set the limit and the evalcontext.

Only suggestions....
-Øystein



-------------------------------------------------------------------
The information contained in this message may be CONFIDENTIAL and is
intended for the addressee only. Any unauthorised use, dissemination of the
information or copying of this message is prohibited. If you are not the
addressee, please notify the sender immediately by return e-mail and delete
this message.
Thank you.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]