Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: SEE Function

Author: Robert Hyatt

Date: 20:13:14 03/31/00

Go up one level in this thread


On March 31, 2000 at 18:26:07, KarinsDad wrote:

>On March 31, 2000 at 18:16:26, William Bryant wrote:
>
>>On March 31, 2000 at 15:44:04, KarinsDad wrote:
>>
>>>On March 31, 2000 at 15:14:32, James Robertson wrote:
>>>
>>>[snip]
>>>
>>>>Look at Crafty. It has a beautiful SEE function. I believe it was borrowed from
>>>>the programmers of COKO who developed that particular algorithm. You'll have to
>>>>talk to Dr. Hyatt for details though.
>>>>
>>>>James
>>>
>>>I did do that. However, I did not have the time to investigate it to the nth
>>>degree and I could not quickly find out what I wanted to know, hence, the reason
>>>for the question here on the message board.
>>>
>>>KarinsDad :)
>>
>>I don't know if Fathom is bitboard based or not.  It took the ideas presented
>>in Crafty's bitboard implementation of SEE and wrote one for Screamer which uses
>>a mailbox approach.  It is not as computationally 'free', but the improvement in
>>move ordering I think is worth the expense.
>>
>>I will email you the code if interested.
>>
>>It is the same ideas without the advantage of bitboard ease of move selection
>>and generation.
>>
>>William
>>wbryant@ix.netcom.com
>
>
>Fathom is bitboard based.
>
>Actually, I would prefer a general synopsis of how, when, and why as opposed to
>code. I am trying to combine my SEE functionality with a set of square control
>eval functionality, so I want it for scoring as well as move ordering. I wanted
>to know if people kept track of battery pieces; if they use it just near the
>root (ala Crafty's Enprise function), everywhere, or only on the leaves, etc.
>
>KarinsDad :)


My EnPrise() function is just a special-case version of Swap().  Swap() assumes
that no move has been played.  It is passed a from square, a to square, and
returns the answer to the question "If I move from <from> to <to> what is the
expected material gain or loss?"  EnPrise() does the same computation, but
doesn't assume a move is being made... it asks (instead) "Can the piece on
<target> be profitably captured by the opponent or not, and if so, what is the
expected material loss?"

They are similar.  Swap() is called _everywhere_ to sort captures.  Normal
search.  Q-search.  It does handle battery conditions correctly, as one of
the hard things to do is to handle "order" correctly. IE a queen in front of
a bishop has to be used _before_ the bishop is used...

I am certainly willing to discuss this in detail if anyone is interested...  It
is not very complicated, except for the minimaxing at the bottom of swap...



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.