Computer Chess Club Archives


Search

Terms

Messages

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

Author: José Carlos

Date: 05:54:57 06/04/02

Go up one level in this thread


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.01 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.