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.