Glaurung BFP

Discussions about Winboard/Xboard. News about engines or programs to use with these GUIs (e.g. tournament managers or adapters) belong in this sub forum.

Moderator: Andres Valverde

Re: Glaurung BFP

Postby Uri Blass » 28 Jun 2005, 09:47

Hi Fabien,
It does not help me much to understand exactly what glaurung is doing.

I understand that futility pruning is to prune moves that are probably bad.
I have futility pruning in movei based on this definition but I have my conditions to decide based on evaluation and other factors if moves are bad.

I do not know what is exactly meant by extended futility pruning.
If I remember correctly futility pruning is only when the remaining depth is 1 when extended futility pruning is also when the remaining depth is higher(with different conditions) but I am not sure.

Uri
User avatar
Uri Blass
 
Posts: 727
Joined: 09 Oct 2004, 05:59
Location: Tel-Aviv

Re: Glaurung BFP

Postby Vadim Bykov » 28 Jun 2005, 11:03

How I understand (apologizes for bad Englsih)
more futility pruning means more tactical blunders.
When postion is good, goal is keep this advantage. Engine search less deeper, but see most tactical threats.
When postion is bad, engine search more deeper. Question is , how deeper it searches?
Vadim Bykov
 
Posts: 7
Joined: 10 Nov 2004, 11:48
Location: Russia

Re: Glaurung BFP

Postby diepeveen » 28 Jun 2005, 11:29

Hello,

First of all the idea looks very original from Tord. However when i look in glaurung source code i identify a lot of dubious things.

First of all he's toying everywhere with a factor 2 in a very weird way.

So my first suggestion is kick out the division by 2 everywhere and re-adjust the futility margins. I'll just focus upon middlegame now as of course that's where most things gets decided.

I hope Tord realizes that by dividing his evaluation by factor 2, that the futility margin gets bigger effectively:

e = eval
s = estimated move score
m = futility margin
1.0 = 1 pawn

In glaurung prune if no check nor promotion :
0.5 e + 0.5 s < 0.5 alfa - 1.0 if < 2 ply to go
0.5 e + 0.5 s < 0.5 alfa - 3.0 if < 3 ply to go

<==>

e + s < alfa - 2.0 if < 2 ply
e + s < alfa - 6.0 if < 3 ply

If you ask me the problem is the wrong margins chosen.

2 pawns is far too little and that 6 pawns is far too much.
try 3 pawns at <2 ply depthleft and 4 pawns or so at <3 ply depthleft.

Apart from some PSQ eval, only captures get some extra bonus in the futility code. Now if we change e+s to 2(e+s) then all what happens is that we won't be capturing back if we have a very ugly score.

That saves out of course massive search of nodes at < 3 ply.

Now of course the additional problem in glaurung is that the above futility margins i quote are based upon pawn=100.

In Glaurung a pawn is 256.

So for glaurung what you need is different futility margins and *badly*.

3.0 * 2.56 = 7.68 at < 2 ply
4.0 * 2.56 = 10.24 at < 2 ply

Or easier a futility margin of 0x300 and 0x400 in Glaurung.

You cannot mix hexadecimal pawn values with non-hexadecimal futility margins. That just won't work. Then mix it by dividing scores by 2 everywhere and so on.

No good idea. The weak part of a chessprogram is always the human interpreting his own code (or in this case a human interpreting someone ELSES code).

You must keep things understandable for yourself. Not go divide by 2 everywhere.

Just kick that out first and readjust futility margins to normal values.

If you look at Ed's homepage he will have also written down there futility margins of 3.0 - 5.0 for the last 3 ply (actually he very hard prunes there based upon these values). This where in Rebel a pawn is not 1.0 but more like 0.7-1.0 (like in Fruit 2.1).

Second advice to Tord for glaurung is readjust the weightings. 3.4 for a piece is far too little. If you look in fruit you will see it has pieces = 4.1 nearly and a rook at 6.25 pawn for the decisive middlegame.

That is very close to the nimzo98 values which most commercial programs use too. Actually in Fritz & Shredder i suspect piece = 4.2 to 4.6 and rook = 6.2 to 6.8 sooner that last than the first.

In testgames diep against commercials, they NEVER ever give away an exchange because it gives pawns bonus to have exchange up for them.

Vincent
diepeveen
 
Posts: 116
Joined: 28 Jun 2005, 01:09
Location: Netherlands

Re: Glaurung BFP

Postby Norm Pollock » 28 Jun 2005, 15:11

Mihail Croitor wrote:Glaurung BFP had problems with time?! when remain 20 secs, it begin to play so bad.

trn 2 min/game
Code: Select all
glaurung

???? ????????    Fru   Gla  Gla  Gla  Points    S-B     %
1 Fruit 2.0      XXXX 11?? 1110 110? 8.5 / 12  45.00  70.83%
2 Glaurung 0.2.1 00?? XXXX 0110 11?1 6.5 / 12  31.00  54.17%
3 Glaurung 0.2.3 0001 1001 XXXX 1??1 6.0 / 12  30.50  50.00%
4 Glaurung BFP   001? 00?0 0??0 XXXX 3.0 / 12  22.00  25.00%




24 ?????? ?? 24 ???????
???????: 2 ?????/??????
??????: C:\Chess\Shredder\trn\glaurung.pgn
www.shredderchess.com

if need games, mail me


Tord,

I've noticed that Glaurung "squirrels" its time when time left is under a minute. It is so intent on saving time that it does not put enough time into each move. But this only seems to happen when there is less than a minute left. BTW, I'm only referring to fischer incremental time. I do not know if this also occurs with standard time, it might or might not.

-Norm
Norm Pollock
 
Posts: 217
Joined: 27 Sep 2004, 02:52

Re: Glaurung BFP

Postby Tord Romstad » 28 Jun 2005, 15:57

Hi Vincent,

Nice to see you here! :D
diepeveen wrote:Hello,

First of all the idea looks very original from Tord.

Except that it isn't really an idea at all, but just a clumsily introduced bug which somehow seems to be an improvement.

However when i look in glaurung source code i identify a lot of dubious things.

Be happy that you haven't seen the code of my old engine. The nightmares would haunt you for the rest of your life. :)

I hope Tord realizes that by dividing his evaluation by factor 2, that the futility margin gets bigger effectively:

e = eval
s = estimated move score
m = futility margin
1.0 = 1 pawn

In glaurung prune if no check nor promotion :
0.5 e + 0.5 s < 0.5 alfa - 1.0 if < 2 ply to go
0.5 e + 0.5 s < 0.5 alfa - 3.0 if < 3 ply to go

<==>

e + s < alfa - 2.0 if < 2 ply
e + s < alfa - 6.0 if < 3 ply

If you ask me the problem is the wrong margins chosen.

2 pawns is far too little and that 6 pawns is far too much.
try 3 pawns at <2 ply depthleft and 4 pawns or so at <3 ply depthleft.

The margins are just as I intended. 2 pawns when depth < 2 ply and 6 pawns when depth < 3 ply is exactly what I wanted to do. Whether these values are optional is of course a different question. My experience is that values less than 6 pawns are tactically too risky for extended futility pruning, but perhaps you are right that 2 pawns is not enough when depth < 2 ply. Probably worth testing; thanks for suggesting it.

Futility pruning and similar tricks should probably be re-tested occasionally. They tend to work well in young engines with very primitive evaluation functions, but could very possibly hurt the positional play when the engine grows more mature.

You cannot mix hexadecimal pawn values with non-hexadecimal futility margins. That just won't work. Then mix it by dividing scores by 2 everywhere and so on.

No good idea. The weak part of a chessprogram is always the human interpreting his own code (or in this case a human interpreting someone ELSES code).

You definitely have a point. This is potentially confusing. I don't think I have managed to confuse myself yet, but I want my code to be easy to read and experiment with for other people as well. I should probably address this issue the next time I do a major cleanup of my code (quite soon, I think - Glaurung's source code is beginning to look more messy than I like).

Second advice to Tord for glaurung is readjust the weightings. 3.4 for a piece is far too little. If you look in fruit you will see it has pieces = 4.1 nearly and a rook at 6.25 pawn for the decisive middlegame.

Thanks again - I'll experiment with bigger piece values and see how it works.

Tord
User avatar
Tord Romstad
 
Posts: 639
Joined: 09 Oct 2004, 12:49
Location: Oslo, Norway

Re: Glaurung BFP

Postby Tord Romstad » 28 Jun 2005, 16:02

Norm Pollock wrote:
Mihail Croitor wrote:Glaurung BFP had problems with time?! when remain 20 secs, it begin to play so bad.

trn 2 min/game
Code: Select all
glaurung

???? ????????    Fru   Gla  Gla  Gla  Points    S-B     %
1 Fruit 2.0      XXXX 11?? 1110 110? 8.5 / 12  45.00  70.83%
2 Glaurung 0.2.1 00?? XXXX 0110 11?1 6.5 / 12  31.00  54.17%
3 Glaurung 0.2.3 0001 1001 XXXX 1??1 6.0 / 12  30.50  50.00%
4 Glaurung BFP   001? 00?0 0??0 XXXX 3.0 / 12  22.00  25.00%




24 ?????? ?? 24 ???????
???????: 2 ?????/??????
??????: C:\Chess\Shredder\trn\glaurung.pgn
www.shredderchess.com

if need games, mail me


Tord,

I've noticed that Glaurung "squirrels" its time when time left is under a minute. It is so intent on saving time that it does not put enough time into each move. But this only seems to happen when there is less than a minute left. BTW, I'm only referring to fischer incremental time. I do not know if this also occurs with standard time, it might or might not.

Thanks to both of you for pointing out this problem. I wasn't aware of it. The problem is probably even worse at time controls without increments. I never test without increments myself.

Finally, I would once again like to thank everybody who has helped me test Glaurung BFP. Your help is mhighly appreciated. I now feel confident that BFP is indeed a bit stronger than 0.2.3. I will probably release Glaurung 0.2.4 (with improved pawn storm evaluation, some new endgame knowledge, and perhaps a few other little improvements) within a week or two.

Tord
User avatar
Tord Romstad
 
Posts: 639
Joined: 09 Oct 2004, 12:49
Location: Oslo, Norway

Re: Glaurung BFP

Postby diepeveen » 28 Jun 2005, 23:16

[quote="Vadim Bykov"]
How I understand (apologizes for bad Englsih)
more futility pruning means more tactical blunders.
When postion is good, goal is keep this advantage. Engine search less deeper, but see most tactical threats.
When postion is bad, engine search more deeper. Question is , how deeper it searches?
[/quote]

No worries. Same language problem here with English :)
German and Dutch superior languages for technical descriptions and intelligent conversations to provide the Sehnsucht that the programmers have.

Every social expression in German/Dutch is having opposite meaning and translation in English/American.

Note have also have a white Canadian Shepherd dog here. Nice dog. German better than Dutch to command and drill dogs especially :)

So no need to apologize for bad english. Language is bad for algorithmic explanations. Period. Like Spanish and Italian, the english perhaps good for singing popsongs :)

Yet i try in English here. No option.

Oh about futility. Well in general when you do prune everything except positional interesting moves, that is positional good. It gives 2-3 ply extra when forward pruning last 3 ply.

Problem is, to not get tactical at crafty level, you have to see those last 3 plies some tactics (except when you get 20 ply of course in middlegame like the Hydra which sees nothing tactical in hardware).

Additional which value to return?

If you return alfa when pruning fails then obviously that will mess up the move ordering at bigger depthleft plies.

So far my experiments here have failed in life. Either it was tactical to weak, or it just messed up move ordering too much.

The problem of just seeing tactical moves last 3 plies with futility is that it plays 150-180 rating points positional worse the Diep.

On average searches 2 ply deeper when you do some work there.

This 150-180 rating points is statistical significant. it is based upon 500 games with and 500 games without.

time control: 40 in 2 up to 8 hours a game at a single cpu K7 against another single cpu k7.

Test done in 2001 by Jan Louwman over period of 3 months at in total 30 computers.

Proof very hard that just seeing deeper tactics is not working.

Seeing deeper positional is working. Problem is fix tactics then.
diepeveen
 
Posts: 116
Joined: 28 Jun 2005, 01:09
Location: Netherlands

Re: Glaurung BFP

Postby Alessandro Scotti » 28 Jun 2005, 23:42

diepeveen wrote:Like Spanish and Italian, the english perhaps good for singing popsongs :)


Apparently, it was also good enough for Shakespeare. You may have a point with Italian though, as I can easily imagine Dante eating a pizza and singing his verses on a mandolino tune...
User avatar
Alessandro Scotti
 
Posts: 306
Joined: 20 Nov 2004, 00:10
Location: Rome, Italy

Re: Glaurung BFP

Postby Jaime Benito de Valle » 29 Jun 2005, 01:00

Like Spanish and Italian, the english perhaps good for singing popsongs Smile


Well... if Alessandro gets "touched" by this sentence, I guess so can I, being Spanish as I am. Just for fun I'll let you picture Cervantes bullfighting and singing Flamenco while writting. By the way, Cervantes died 10 days before Shakespeare. (ALL OFF-TOPIC)
Jaime Benito de Valle Ruiz
User avatar
Jaime Benito de Valle
 
Posts: 27
Joined: 14 Dec 2004, 21:02
Location: Lincoln, England

Previous

Return to Winboard and related Topics

Who is online

Users browsing this forum: No registered users and 36 guests