endgame challenge

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: endgame challenge

Post by bob »

shiv wrote:Sounds interesting and could easily be a new feature in engines.

Is it really hard to have the engine derive the fortress rules by itself? For example, can one code a generic eval function which has some notion of progress made in a position and can autogenerate fortress criterias similar to the ones you mentioned.

The lack of proper evaluation of fortress positions is probably the main weaknesses of engines today.
A search has two choices:

(1) discover that a fortress draws because nothing happens for 50 moves. That's a very deep search;

(2) recognize a fortress in the evaluation so that it can actually use the idea when it helps, and avoid it when it hurts. Otherwise the program just stumbles into the position with no idea and either draws a won game, or loses a drawn game because it doesn't understand.
shiv
Posts: 351
Joined: Sat Apr 01, 2006 2:03 am

Re: endgame challenge

Post by shiv »

bob wrote:
A search has two choices:

(1) discover that a fortress draws because nothing happens for 50 moves. That's a very deep search;

(2) recognize a fortress in the evaluation so that it can actually use the idea when it helps, and avoid it when it hurts. Otherwise the program just stumbles into the position with no idea and either draws a won game, or loses a drawn game because it doesn't understand.
I was wondering about an option 1.5 but which has a pro-active separate fortress eval with a learning function built in that modifies the eval based on partial deep search (eg a notion of cannot really make progress).

For example in the position that looked like a fortress early in this thread, the engine will try to make progress in a 15 move search, if it cannot improve the score, it tries to place white pieces on any square of the board to see if a win is possible. If such a square exists, it will try to see if this square can be reached from the initial position in a forced sequence of moves.

This is more or less like telling the program that the position is a draw as the king is cut off, but the program gets the chance to generalize the logic by itself.

Anyway, this is just a random thought, and requires a bit of fine tuning to implement.