Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about generating incremental move generator

Author: Alessandro Damiani

Date: 04:55:14 10/25/02

Go up one level in this thread


On October 25, 2002 at 07:44:52, Uri Blass wrote:

>On October 25, 2002 at 07:35:13, Alessandro Damiani wrote:
>
>>On October 25, 2002 at 07:19:52, Uri Blass wrote:
>>
>>>On October 25, 2002 at 07:08:13, Alessandro Damiani wrote:
>>>
>>>>>>The implementation of generating moves in chunks is easily done by encapsulating
>>>>>>all work in a method that returns the next move:
>>>>>>
>>>>>>    Move nextMove(int ply, ...)
>>>>>>
>>>>>>The value 0 is returned, if there is no move anymore.
>>>>>>
>>>>>>The method nextMove() has a state for each ply: in which generation phase it
>>>>>>currently is. For instance, our move ordering is
>>>>>>
>>>>>>    1. hashmove
>>>>>>    2. winning captures
>>>>>>    3. killer 1
>>>>>>    4. killer 2
>>>>>>    5. equal captures
>>>>>>    6. non captures
>>>>>>    7. losing captures
>>>>>>
>>>>>>We define the following phases:
>>>>>>
>>>>>>    PHASE_HASHMOVE        0
>>>>>>    PHASE_GENCAPTURES     1
>>>>>>    PHASE_POSCAPTURES     2
>>>>>>    PHASE_KILLER_1        3
>>>>>>    PHASE_KILLER_2        4
>>>>>>    PHASE_EQUALCAPTURES   5
>>>>>>    PHASE_GENNONCAPTURES  6
>>>>>>    PHASE_NONCAPTURES     7
>>>>>>    PHASE_NEGCAPTURES     8
>>>>>
>>>>>Today I also have phases nit clearly less phases than you.
>>>>>
>>>>
>>>>As I stated above, this is just an example. I have got more phases.
>>>>
>>>>Just to be clear: only phase 1 and phase 6 generate moves (in this example).
>>>
>>>I understand now but I still do not understand.
>>>You do not generate moves in phasehashmove?
>>>
>>>what do you do exactly
>>>Do you say that
>>>you check if the hash move is legal and if it is legal you generate it?
>>>
>>>What do you do in phase 1?
>>>Do you compare all moves with the hash move to promise that you do not have it
>>>again in your list or do you generate it again and only in the sort move you
>>>ignore it.
>>
>>Below is an excerpt from my engine Fortress.
>>
>>Just to make you understand my notation: I emulate OO in C. So I access method
>>isValid() of module Move by writing Move_isValid().
>>
>>--- nextMove(ply, ...) ---
>>
>>    ...
>>    Move m;
>>
>>    switch (phase[ply]) {
>>    case PHASE_HASHMOVE:
>>        phase[ply]= PHASE_GENCAPTURES;
>>
>>        // establish invariant: last[ply] points behind the last entry in the
>>        // move list
>>        MoveGenerator_last[ply]= MoveGenerator_last[ply-1];
>>
>>        m= MoveGenerator_hashMove[ply];
>>
>>        if (Move_isValid(m))
>>            return m;
>>
>>        // it applies: !Move_isValid(m)
>>        // continue with next phase:
>>
>>    case PHASE_GENCAPTURES:
>>        ...
>>
>>--------------------------
>>
>>You notice the following:
>>- I don't generate the hashmove, since I get it from the hashtable
>>- I test for validity of the hashmove with method isValid(Move m)
>>
>>The same method is used for killer moves, since they already exist. I don't need
>>to generate them.
>>
>>As you can see, this is optimal: if the hashmove produces a beta cut-off no move
>>is generated. Method isValid() is fast with bitboards. ;)
>>
>>Alessandro
>
>I understand but what do you do if the hash move does not give you a cutoff.
>
>Do you generate it and compare your move to the hash move to be sure that
>you do not search it again?
>

I just replied to Dave's post concerning this (see Dave's post in this thread).

>Another question:
>Do you work on improving fortress?
>

Yes, I work on a new release of Fortress since about one year. But, since I only
spend a few hours per week on it, it will take some time before a new version
will be published.


>I find that Fortress was not updated in Leo's tournament and he used exactly the
>same version in the 3th edition and the 2nd edition.
>

Yes, the latest version is 1.6.2. BTW this version has an instable king safety
evaluation. That's why it sacrifices material for nothing than a fake smile. Or
did I just taught it how I play? :)

Alessandro



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.