Computer Chess Club Archives


Search

Terms

Messages

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

Author: Heiner Marxen

Date: 04:19:43 06/04/02

Go up one level in this thread


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? Or is
>there a even point at which you stop working on things like search and only
>focus on evaluation?
>
>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.). Do you
>ever reach a point where the only thing left to significantly improve is the
>evaluation function?
>
>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".

"Improving" and "optimization" are kind of synonyms.
The first has more of a "quality" touch, while the second emphazises "speed".

>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?

Dann has already given a long list of topics.  Let me add some:

- overall time management
- time allocation after fail low (in critical sitiations)

Quite important (IMHO) also are some meta-topics:
- debugging support / verification code
- support to measure efficiency (speed) and quality,
  i.e. profiling & test-suite
  Somehow you have to decide, whether a change really is an improvement.
- automate the above

Some time ago Christophe posted a very good article about things like
automated evaluation of program versions.  Try to find it, it was
worth reading.

>Thanks in advance for all of your comments and advice.
>
>Russell

HTH.  HAND!

Heiner



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.