Selective Futlity Condition at Quiescence Nodes

Programming Topics (Computer Chess) and technical aspects as test techniques, book building, program tuning etc

Moderator: Andres Valverde

Re: Selective Futlity Condition at Quiescence Nodes

Postby diepeveen » 08 Dec 2005, 17:21

Uri Blass wrote:
diepeveen wrote:
Daniel Shawul wrote:How much "tactics" can the evaluation do? If we say a good eval is worth one ply, we can do a 1 ply search for depthleft 4,3,2 and qsearch for depthleft = 1. This will be slower in general than just using plain R=3 with a fat eval, but it will surely cover up for most of the bad effects of nullmoving at the tips. I think it might be safer to cover search problems with search.
I understand that your approach is to use R=3 everywhere with good eval and no dubious stuff. Which approach wins, i have no idea :)
daniel


about winning approach: Zappa became world champion with this 'diep' approach. So there is your proof.

Vincent


The question is if zappa does not do pruning stuff except null move pruning.

one idea that I remember from anatony posts is that when the evaluation is bad relative to alpha and the remaining depth is 1 you can generate only captures and promotions and checking moves and not try more moves.

If he is using this idea in zappa then it means that zappa does not try all moves in the last ply so he is using tricks except null move pruning.

Uri


The world champs zappa version didn't use any other forward pruning else but nullmove.

That's why it got 14 ply at 4 processors first move out of book,
versus shredder and junior 20 ply.

Fruit single cpu already gets 17 ply.

Look, fruit without history pruning can get hands down 15 ply single cpu. It gives it only 1.5 ply or so.

So if you remember a posting one day doesn't mean he used that.

A suggestion is a suggestion nothing else. I remember i suggested many forward pruning concepts. Sure i tried many, but currently in diep. The only thing inside it, is nullmove.

Read my lips, whatever Zappa releases with, in tournaments he'll just use nullmove and nothing else.

Please don't do too many of the above nonsense postings. If you seem to remember something or not, i have no time to react on such beginners postings.

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby Uri Blass » 08 Dec 2005, 17:37

diepeveen wrote:
Uri Blass wrote:
diepeveen wrote:
Daniel Shawul wrote:How much "tactics" can the evaluation do? If we say a good eval is worth one ply, we can do a 1 ply search for depthleft 4,3,2 and qsearch for depthleft = 1. This will be slower in general than just using plain R=3 with a fat eval, but it will surely cover up for most of the bad effects of nullmoving at the tips. I think it might be safer to cover search problems with search.
I understand that your approach is to use R=3 everywhere with good eval and no dubious stuff. Which approach wins, i have no idea :)
daniel


Your assumption is wrong.

You ask: "how much tactics can eval do?"

That is a good question. Then you answer that with: "1 ply".

This is wrong.

Without eval you see 0 tactics.

Just kick out your evaluation function and search material only.

Now go try find the simplest trick, for example:

1.e4,e5 2.nf3,nc6 3.Bc4,Nd4

a) when does it see that Nxe5 is *losing*?

b) after Nxe5 when do you see Qg5 is *winning* the game?

You know. Simpler as this there is not.

Now let's discuss more advanced tricks. Just material only.
r1b2rk1/1p1nbppp/pq1p4/3B4/P2NP3/2N1p3/1PP3PP/R2Q1R1K w - - bm Rxf7;
f1f7

A simple trick from Nolot testset.

Do you honestely believe that a material only searcher will easily find Rxf7?

If so, at what search depth?

You seem to have the wrong concept why chessprograms find tactics.

Vincent


I think that Daniel means how much complicated evaluation save relative to cheap evaluation and not relative to no material evaluation.

Fruit can find Rxf7 at depth 12 and I think that lazy evaluation is not going to prevent fruit from finding it at depth 12.

Uri


Where is your proof?


I cannot have lazy evaluation in fruit2.2.1 but
Note that Gambit Fruit4bx needs depth 14 to find it and with quick futility eval that is off by default it can find is also at the same depth.

9/24 0:00 -0.22 1.Bb3 Bg5 2.a5 Qd8 3.Nf3 Bf4 4.Nd5 Bh6 5.Qd4 (559.209)
10/26 0:01 -0.16 1.Bb3 Nf6 2.Qd3 Qc5 3.Qxe3 Ng4 4.Qd3 Bf6 5.Rad1 Bd7 (1.203.639) 615
11/28 0:03 -0.07 1.Bb3 Nf6 2.Qd3 Qc5 3.Qxe3 Ng4 4.Qd3 Ne5 5.Qe3 Bg4 6.Bd5 (2.334.255) 626
11/45 0:09 +0.24++ 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Nf6 8.Qxf8+ Ng8 9.Nxg8 b5 10.axb5 Bg4 (6.419.385) 687
12/50 0:15 0.00 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Qf6 8.Rxf6 gxf6 9.Kg1 Kg7 10.Nf5+ Kg8 11.Ne7+ Kg7 (11.434.087) 723
13/52 0:31 +0.21 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Qf6 8.Rxf6 gxf6 9.Kg1 Kg7 10.Nf5+ Kg8 11.e5 Nxe5 12.Ne7+ Kg7 13.Nxc8 (23.760.133) 741
14/52 1:16 +0.35 1.Bxf7+ Rxf7 2.Rxf7 Bf6 3.Nd5 Qxb2 4.Rb1 Qa2 5.Nxf6+ Nxf6 6.Re7 Ng4 7.Kg1 Nf2 8.Qe1 Kf8 9.Rc7 Nxe4 10.a5 (56.784.849) 745
14/52 1:51 +0.61++ 1.Rxf7 Rxf7 2.Bxf7+ Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Nf6 (81.587.258) 731

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby diepeveen » 08 Dec 2005, 17:43

Uri Blass wrote:
diepeveen wrote:
Uri Blass wrote:
diepeveen wrote:
Daniel Shawul wrote:How much "tactics" can the evaluation do? If we say a good eval is worth one ply, we can do a 1 ply search for depthleft 4,3,2 and qsearch for depthleft = 1. This will be slower in general than just using plain R=3 with a fat eval, but it will surely cover up for most of the bad effects of nullmoving at the tips. I think it might be safer to cover search problems with search.
I understand that your approach is to use R=3 everywhere with good eval and no dubious stuff. Which approach wins, i have no idea :)
daniel


Your assumption is wrong.

You ask: "how much tactics can eval do?"

That is a good question. Then you answer that with: "1 ply".

This is wrong.

Without eval you see 0 tactics.

Just kick out your evaluation function and search material only.

Now go try find the simplest trick, for example:

1.e4,e5 2.nf3,nc6 3.Bc4,Nd4

a) when does it see that Nxe5 is *losing*?

b) after Nxe5 when do you see Qg5 is *winning* the game?

You know. Simpler as this there is not.

Now let's discuss more advanced tricks. Just material only.
r1b2rk1/1p1nbppp/pq1p4/3B4/P2NP3/2N1p3/1PP3PP/R2Q1R1K w - - bm Rxf7;
f1f7

A simple trick from Nolot testset.

Do you honestely believe that a material only searcher will easily find Rxf7?

If so, at what search depth?

You seem to have the wrong concept why chessprograms find tactics.

Vincent


I think that Daniel means how much complicated evaluation save relative to cheap evaluation and not relative to no material evaluation.

Fruit can find Rxf7 at depth 12 and I think that lazy evaluation is not going to prevent fruit from finding it at depth 12.

Uri


Where is your proof?


I cannot have lazy evaluation in fruit2.2.1 but
Note that Gambit Fruit4bx needs depth 14 to find it and with quick futility eval that is off by default it can find is also at the same depth.

9/24 0:00 -0.22 1.Bb3 Bg5 2.a5 Qd8 3.Nf3 Bf4 4.Nd5 Bh6 5.Qd4 (559.209)
10/26 0:01 -0.16 1.Bb3 Nf6 2.Qd3 Qc5 3.Qxe3 Ng4 4.Qd3 Bf6 5.Rad1 Bd7 (1.203.639) 615
11/28 0:03 -0.07 1.Bb3 Nf6 2.Qd3 Qc5 3.Qxe3 Ng4 4.Qd3 Ne5 5.Qe3 Bg4 6.Bd5 (2.334.255) 626
11/45 0:09 +0.24++ 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Nf6 8.Qxf8+ Ng8 9.Nxg8 b5 10.axb5 Bg4 (6.419.385) 687
12/50 0:15 0.00 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Qf6 8.Rxf6 gxf6 9.Kg1 Kg7 10.Nf5+ Kg8 11.Ne7+ Kg7 (11.434.087) 723
13/52 0:31 +0.21 1.Bxf7+ Rxf7 2.Rxf7 Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Qf6 8.Rxf6 gxf6 9.Kg1 Kg7 10.Nf5+ Kg8 11.e5 Nxe5 12.Ne7+ Kg7 13.Nxc8 (23.760.133) 741
14/52 1:16 +0.35 1.Bxf7+ Rxf7 2.Rxf7 Bf6 3.Nd5 Qxb2 4.Rb1 Qa2 5.Nxf6+ Nxf6 6.Re7 Ng4 7.Kg1 Nf2 8.Qe1 Kf8 9.Rc7 Nxe4 10.a5 (56.784.849) 745
14/52 1:51 +0.61++ 1.Rxf7 Rxf7 2.Bxf7+ Kxf7 3.Qh5+ Kg8 4.Qe8+ Bf8 5.Nd5 Qxd4 6.Ne7+ Kh8 7.Rf1 Nf6 (81.587.258) 731

Uri


Tiger is a program searching at 5 million nps or something. It's not printing all nodes its searching, according to some professional programmers who have been professional guessing what it is doing.

So the default version is already using lazy eval kind of. So turning lazy eval on with Tiger isn't changing much. Just might change some window border i guess.

In short this is not a proof. Because something that is already using forms of fast crappy search at 5 million nps, you turn on something from which it is utmost unclear what it's doing, except that we know for sure tiger isn't a program that is not doing full evaluation of a node.

It's too fast to even do that :)

In other words, get yourself some big program that gets low nps and turn on lazy eval there.

Shredder for example has a big eval.

Turn on lazy eval there please. Of course you may also try to turn it on in Fritz9 or Diep.

:)

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby Uri Blass » 08 Dec 2005, 17:57

Note only that I did not mention tiger but latest version of GambitFruit that come with source.

It does not search 5M nodes per second.

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby diepeveen » 08 Dec 2005, 18:21

Uri Blass wrote:Note only that I did not mention tiger but latest version of GambitFruit that come with source.

It does not search 5M nodes per second.

Uri


Fruit has near to no kingsafety of course, let alone big parameters for it and no big chessknowledge, as a result of that it will never win good games. Only if some opponent really fucks up it will win a game. I doubt it will ever win a tournament if Fabien doesn't improve its chessknowledge.

When he will do that, also the history pruning will cripple it positional more, so Fabien has several problems to solve as soon as he starts adding chessknowledge.

Even then there is no proof from your side. All programs when they progress their evaluation function figure out they cannot use lazy eval for different reasons, most importantly because you find majority of positions based upon big evaluation terms.

Fruit will be no exception here of course when it gets a kingsafety and improves a lot.

You are just busy with software from the past in this respect, not proving anything except that outdated software with tiny simple evals had sometimes a use for lazy eval.

That explicitly proves my point that as soon as a program gets serious and its eval raises that there is no longer an interesting usage for a lazy eval, as it positional and tactical cripples a program incredible.

Now you will show up with some old Nimzo 1998 and a Deep blue 1997 and probably more software from years ago.

You are just busy proving the opposite. Finding a program with near to no eval and then turning on lazy eval to find 1 tactical shot.

In todays software you can't even turn on lazy eval, because it doesn't get used.

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby Uri Blass » 08 Dec 2005, 20:25

I can only say that discussion with you is pointless.
You talk about a program that you did not develop and I do not trust you to know what it has or has not.

It is a fact that fruit performs better than diep in every tournament and that fruit got second place after zappa in 2 tournaments.

The difference between first place and second place in tournament can be explained by parallel search or better book of zappa and it is not clear that zappa is better than fruit.

Your words are not convincing and
I plan not to waste time on responding more in this thread to your posts.

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

Re: Selective Futlity Condition at Quiescence Nodes

Postby smcracraft » 12 Feb 2006, 20:12

Volker B?hm wrote:In my opigion you can do one of those in q-search

cureval = eval()

loop through moves

1. if SEE(move) <0 then prune
2. if cureval + mat(move) + delta < alpha then prune
3. if cureval + SEE(move) + bigger_delta < alpha then prune


greetings volker


What is mat(move)?
smcracraft
 
Posts: 65
Joined: 15 Jan 2006, 05:38

Re: Selective Futlity Condition at Quiescence Nodes

Postby Sven Schüle » 13 Feb 2006, 13:47

smcracraft wrote:
Volker B?hm wrote:In my opigion you can do one of those in q-search

cureval = eval()

loop through moves

1. if SEE(move) <0 then prune
2. if cureval + mat(move) + delta < alpha then prune
3. if cureval + SEE(move) + bigger_delta < alpha then prune


greetings volker


What is mat(move)?

Probably the immediate material gain by making this move when looking only at the move itself (i.e., zero except for captures and promotions), in contrast to SEE(move) which also includes the influence of other pieces.

Sven
User avatar
Sven Schüle
 
Posts: 240
Joined: 26 Sep 2004, 20:19
Location: Berlin, Germany

Re: Selective Futlity Condition at Quiescence Nodes

Postby smcracraft » 14 Feb 2006, 00:27

Sven Sch?le wrote:
smcracraft wrote:
Volker B?hm wrote:In my opigion you can do one of those in q-search

cureval = eval()

loop through moves

1. if SEE(move) <0 then prune
2. if cureval + mat(move) + delta < alpha then prune
3. if cureval + SEE(move) + bigger_delta < alpha then prune


greetings volker


What is mat(move)?

Probably the immediate material gain by making this move when looking only at the move itself (i.e., zero except for captures and promotions), in contrast to SEE(move) which also includes the influence of other pieces.

Sven


Okay so it sounds like, mat(move) is what the specific move captures,
i.e. the value of the captured piece.

?
smcracraft
 
Posts: 65
Joined: 15 Jan 2006, 05:38

Previous

Return to Programming and Technical Discussions

Who is online

Users browsing this forum: No registered users and 2 guests