Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Algorithms vs. knowledge - What to do next?

Author: Vincent Diepeveen

Date: 07:49:00 06/04/02

Go up one level in this thread


On June 04, 2002 at 08:54:57, José Carlos wrote:

What i read in Dann's words is he is more believing in search
rather than the knowledge. If that's the case then i think he is
wrong.

I do not see how to easily improve search either.

Let's compare diep 1998 with diep 2002.

Of course when takling about eval we are quickly finished. It's
way bigger now and way better. Let's just compare the SEARCH now.

DIEP 2002: 8 probes hashtable, nullmove R=3 always, 2 killermoves,
complex move ordering but not that much changed last years,
some complex extensions but those
do not contribute much to the game, at most solve testsets a bit
sooner. quiescencesearch is pretty complex but compared to 1998
very simple as i do way more there now.

Now DIEP 1998, this is a very complex search. First of all i did
all kind of efforts to not get too undeep. It was getting not enough
depth at tournament level to even see basic tactics which i see.

So i did all kind of difficult forward pruning. Also weird things
like special killertables were used. Special information was gathered
in order to search less last few plies and qsearch was way more
limited. Nearly no check was extended in the main search, because
this was to expensive. Hardly any extension was done there.

Of course it was not a parallel engine, but that's about only thing
which has become more complex in search, though it in fact is still the
same type of search.

In short my search has become much simpler, especially when talking
about quiescencesearch. I'm not blinking with my eyes now to have
a bigger overhead there!

>On June 04, 2002 at 07:13:29, Vincent Diepeveen wrote:
>
>>On June 04, 2002 at 02:26:57, Dann Corbit wrote:
>>
>>>On June 04, 2002 at 02:11:40, Russell Reagan wrote:
>>>
>>>>I've always heard, better algorithms will beat the fastest code using a less
>>>>efficient algorithm any day (IE MinMax vs. Alpha-Beta). My question is, when do
>>>>you stop working on algorithmic type stuff and start working solely on adding
>>>>knowledge to your program, and focus solely on the evaluation function?
>>>
>>>Never.
>>>
>>>>Or is
>>>>there a even point at which you stop working on things like search and only
>>>>focus on evaluation?
>>>
>>>Never.
>>
>>Then you'll never get better with an engine.
>>
>>>>To me, it seems like there is only so much you can do in terms of improving the
>>>>searching methods, improving the efficiency of various other functions that are
>>>>used often (is square attacked, make move, generate legal moves, etc.).
>>>
>>>There is no known hard limit to the search efficiency, other than the search
>>>must visit at least the number of nodes contained in the optimal path.
>>>
>>>>Do you
>>>>ever reach a point where the only thing left to significantly improve is the
>>>>evaluation function?
>>>
>>>Not a chance.
>>
>>You didn't quite follow last so many tournaments?
>>
>>Fritz endgame has been improving. Shredders evaluation is bigtime improved.
>>DIEP's improved. Tiger1 to Tiger2 i only saw a few bugs removed and further
>>work on evaluation (whether that's in this case preprocessing or in the
>>leafeval is not that interesting as well as that there has been done a lot
>>of work here), and the list goes on and on.
>>
>>>>
>>>>If someone could advise a good plan for what to work on, kind of a step by step
>>>>thing, I would love to see what others think of this process. Maybe a sort of
>>>>"basics" check list, like Alpha-beta, transposition table, null move, etc. I'm
>>>>nearing the point at which my engine will be working, and I'm reaching the "what
>>>>next?" stage. An example of what I'm thinking is "I've implemented alpha-beta.
>>>>What am I supposed to do to improve the alpha-beta algorithm?" Perhaps I'm
>>>>misunderstanding what people mean when they talk about "improving algorithms"
>>>>instead of "optimizing".
>>>
>>>1.  Get something working.
>>>2.  Add Alpha-Beta (if your first stab was pure mini-max)
>>>3.  Add hashing
>>>4.  Add null-move
>>>4.  Add PVS or go to MTD(f)
>>>
>>>>I'm kind of looking for some general advice as to what to do after the engine is
>>>>successfully up and running, playing without any major known bugs. Do I take a
>>>>step back and work on improving those often used functions, or do I move ahead
>>>>and begin implementing new things like null move?
>>>
>>>You can do things in parallel.  When you are bored with search, work on eval.
>>>When you are bored with eval, work on search.  A lot of time will be spent
>>>removing bugs.
>
>  Vincent, if I understand Dann correctly, he just means search is never
>perfect. There're always new ideas to try to improve it and no matter whether
>search or eval is more important, search can be improved. We don't have got
>close to perfection in any of the parts of a chess engine.
>  On the other hand, it seems that proffesional programmers are focusing on eval
>lately, probably because their search was already much better than their eval.
>
>  José C.



This page took 0.02 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.