I never finished this email.

I'm wondering how you handle the eye thing.  I don't allow the program
to move to a single point eye but you said nothing about this.   But if
you  skip over that point now it might become legal later.   

Those eyes must be put back into the pool.   To get truly random
behavior this has to be handled just right and could get slightly
tricky.   

Whenever a capture happens, things get a bit tricky with regard to moves
to empty intersections that were not legal.  

- Don



On Fri, 2006-12-08 at 14:52 -0500, Don Dailey wrote:
> Łukasz Lew,
> 
> I'm trying to implement this now.   I think I see why our average moves
> per game do not match.
> 
> First of all, suicide is illegal in my program, I do not allow it.  
> 
> On Thu, 2006-12-07 at 16:05 +0100, Łukasz Lew wrote:
> > I really do randomize a whole vector of empty intersections before the 
> > playout.
> > When I get new empty intersection I just pick random place in vector,
> > move it to the end,
> > and use the place for new intersection.
> > 
> > Here is the code:
> > 
> >   void add_rnd (v::t v) {
> >     int ii;
> > 
> >     empty_v_cnt++;
> > 
> >     ii = pm::rand () % empty_v_cnt;         // TODO improve speed "%"
> >     tab[empty_v_cnt-1] = tab[ii];
> >     tab[ii] = v;
> >     assertc (mc_legal_ac, empty_v_cnt <= max_size*max_size);
> >   }
> > 
> > I play the playout until there are no more legal moves. I allow ko
> > recapture and large suicides. I have problem with signle stone
> > suicides.
> > So when one happens (I can only detect it by actually playing the
> > stone), I just take next empty intersection.
> > 
> > "Circular" reduces frequency of such wasteful events.
> > It means that I check next empty intersection in the vector starting
> > from the place I finished last time.
> > 
> > I hope this is clear now. If not, just ask :)
> > 
> > Lukasz Lew
> > 
> > On 12/6/06, Don Dailey <[EMAIL PROTECTED]> wrote:
> > > On Mon, 2006-12-04 at 18:32 +0100, Łukasz Lew wrote:
> > > > I deal with eyes by randomizing list of empty intersections before the
> > > > playout, and while searching non-eye I go through them in circular
> > > > manner.
> > >
> > > What do you mean by circular and what does this have to do with eyes?
> > > I'm looking to speed my random player up a little bit more.   Here is
> > > what I've been doing for the last year or two:
> > >
> > > I collect all the empty intersections into an array and I randomize them
> > > as I go.   When a capture happens, it screws up your list - you must
> > > either add those intersections back to the pool of empty intersections
> > > or just reinitialize the list.   Right now I'm just reinitializing the
> > > list from scratch again - probably not the fastest way.
> > >
> > > I could of course randomize the list of empty intersections with a
> > > Fisher-Yates shuffle FIRST and then traverse the list in order till
> > > there is a capture but I think this is more work on the average because
> > > if you scramble a big list and the next move is a capture,  you have to
> > > rework the list anyway and randomize again.    I guess you might call
> > > what I do a "lazy" shuffle - you don't do the work unless you need to.
> > > (However, if I knew I would always need the whole list, it probably
> > > produces a little bit faster code to scramble them all at once in a
> > > tight little shuffle loop.)
> > >
> > > The actually procedure for "incremental randomization" is that I pick
> > > randomly from the empty list and then "fix the list back up" by swapping
> > > this out of the way with the first element in the list (which gets moved
> > > out of the picture because I bump up the "list start" pointer.)
> > >
> > > - Don
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > computer-go mailing list
> > > computer-go@computer-go.org
> > > http://www.computer-go.org/mailman/listinfo/computer-go/
> > >
> 
> _______________________________________________
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/

_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to