Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: strange Q search of Rebel

Author: Anthony Cozzie

Date: 09:14:59 12/26/03

Go up one level in this thread


On December 26, 2003 at 03:45:23, rasjid chan wrote:

>On December 25, 2003 at 22:40:52, Jaime Benito de Valle Ruiz wrote:
>
>>On December 25, 2003 at 06:29:31, rasjid chan wrote:
>>
>>>The QS as described in Ed's article seems a little strange.
>>>There are crucial differences with the simple QS as in TSCP :-
>>>1) simple QS automatiaclly fails high if evaluation score
>>>	(not lazy score) >= beta.
>>>Rebel's sets certain conditions on fail high.
>>>2) simple QS simply calls QS if score < beta
>>>and sets alpha to score if greater
>>>(Ed's article did not specify setting alpha).
>>> the more controversial element -
>>> Rebel's QS returns score ( or lazy score) if score <= alpha
>>>
>>>I have now fully implemented attack tables and am testing lazy
>>>evaluation by first calling eval() at depth == 1. My current eval()
>>>is a little elaborate compared to the raw eval() of TSCP.
>>>If I stay strictly to simple QS it plays normally at about the level
>>>of TSCP. The nps is about 60000 during middle game on a P4 1.4 GH,
>>>1/3 that of TSCP.
>>>
>>>Any attempt to fail low as in 2) above makes it play very
>>>badly.I wonder if anyone has a QS that fails low on score <= alpha
>>>and yet has a workable QS.
>>>
>>>I am not sure if I interpreted anything again with gross silliness.
>>>
>>>Rasjid
>>
>>Rebel's page gives only hints on how the program is structured, not on how every
>>function is implemented. Still, it's an extremely useful webpage full of
>>invaluable ideas for programmers (thanks, ed!!!).
>>Something that you've probably heard before, and will hear in the future is, "it
>>might, or might not work your your engine, so... try it!". I personally listen
>>to all ideas, and try lots of them whenever I can, but some of them don't work
>>for me... and some of them, well... maybe I don't fully understand how they
>>work, who knows? The fun of programming a chess engine lies precisely in this
>>endless trial-and-error game that is adjusting and debugging your program. I
>>think I've reached a stage where (except for some exceptions) the future
>>strength of my program depends on my personal decisions, and other people's
>>advices are only good if I make radical changes to my own program. Still it's
>>worth discussing these things with other people.
>>The Qsearch is a quite delicate point, if you ask me: Many "respectful"
>>programmers will tell you that you only need to consider "good captures" and
>>"winning captures", and ignore the rest. Others will tell you that you should
>>include checks as well. That's the choice: A Qsearch can grow out of control if
>>you're not careful. I'm still amazed by the Chessmaster, that considers checks
>>in Qsearch (if I'm not mistaked), and still plays an amazingly strong consistant
>>chess without analyzing a huge-uncontrolled tree. For positions where the king's
>>safety it's at stake, this program has "NO MATCH" (it finds the devastating move
>>in almost no time), but it's not so 100% reliable for other positions. It's with
>>no doubt one of the strongest programs available, but maybe this "exhaustive
>>Qsearch" reduces its search to the point that, statistically, it becomes a
>>slower program against other machines; who knows?
>>As I said before, try, and decide.
>>Among all the tests I've done, the best statistical results are when I use a
>>smart SEE, combined with a futile algorithms to prune "useless" captures. Check
>>extensions make my program twice or even more slower... and make it weaker. But,
>>as I said, it's only my experience.
>>
>> Jaime
>
>Thanks for your reply.
>
>For your info, Ed's article is the one i've been looking for for a very
>long time; that which explains the very heart of a strong
>chess program and it immediately cleared many doubts I had in the past.
>Simple statement like "... the purpose of QS is to determine a reliable
>score at the leaf nodes...and nothing else .." made me remember forgeting
>and go back to basic.The only sources I have so far is TSCP and Gerbil
>whose 0x88 I used, but they are very basic program.I know crafty is top
>class, but I never know how to learn from codes ;incidentally I remember
>browsing through crafty's code to look for anything unusual and found
>none that I could remember, everything implemented seemed
>what had been dicussed before in internet articles, any secrets within
>escaped me.
>
>I am aware what may be implemented in Rebel may not worked with others
>as things may complement. eg. about returning score <= alpha in QS is
>VERY OK in theory, why search further when you know the leaf score is less
>than alpha ?... !provided your eval() function is inspired by the gods
>when you don't need alpha-beta. I currently have no hint and understanding
>yet of why QS may fail low when score <= alpha, my past experience too showed
>it is not workable (maybe !). But still ED's article opens up many
>things and actually my initial understanding is many and most of the ideas
>in Ed's are very helpful.
>
>
>Thanks.
>Rasjid


You must have read the article wrong.  Returning when score < alpha is the same
as having no qsearch at all.

anthony



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.