First the performance with PVS, just to get a point of comparison for the search.
Engine with iterative deepening PVS, cache, futility ,razoring, null move R=3 and LMR.
Reference PVS
Depth Results
1 -> 69
2 -> 99
3 -> 139
4 -> 187
5 -> 211
6 -> 241
7 -> 260
8 -> 272
9 -> 282
10 -> 289
11 -> 294
B* without time limit, node expand limits 500 select phase + 500 verify phase, all ending search criteria was disabled.
Probe Depth Results
1 -> 154
2 -> 222
3 -> 244
4 -> 251
The engine go useless deep, more time/nodes beyond a threshold does not improve results.
Lets go brute...
B* with dithering formula: OptPrb Corrected = OptPrb /(1 + subtree size)
0 -> 216
1 -> 256
2 -> 268
3 -> 274
Multiple Select+Verify phases (40+10 nodes slice)
Probe depth
0 -> 228
1 -> 262
2 -> 260
3 -> 276
Adding separation criteria MinAct = 0.15
OptVal correction formula: Mate in X threat = 1000 – 75 * X (instead of 30000 – X)
As there is a target value defined as an average between a real value and a OptVal, a Mate in X and a Mate in X+1 goes to the same average value, but a Mate in X is far bigger threat than a Mate in X+1. That what I try to correct.
The formula above need revision as a +800 evaluation is not impossible...and a Mate must be far bigger...
The final shape of the evaluation need some additional work...to be continued...
The second correction is the bias introduced by the null move, a small threat is not really a threat.
if( abs(RealVal – OptVal) < NULLMOVEBIAS)
OptVal = RealVal;
Depth Result
0 -> 222
1 -> 269
2 -> 272
3 -> 281
That's all for now
B* Probability Search (long)
Moderators: hgm, Rebel, chrisw
-
- Posts: 90
- Joined: Sun Nov 02, 2008 4:43 pm
- Location: Barcelona
-
- Posts: 12542
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: B* Probability Search (long)
Here is a flow chart of B*:Gerd Isenberg wrote:Hi Antonio,Antonio Torrecillas wrote:Sorry in advance for my spanglish and a so long first post.
I’m looking to do some try on B* Search. As I'm entering terra incognita some comment/advise are welcome.
Right now I have some code to mimic the point 3.6 A Search Example from the paper: “B* Probability Based Search” Hans Berliner, Chris McConnell 22 June 1995.
If somebody else is interested in, I publish this code “as is”. (Quick & dirty implementation) I think the tree code need complete rewrite...
If there is some interest in publish it as a companion code for the paper, say in CPW (Gerd?) feel free to point me the improvement/ correction /comment needed. I’ll rewrite it to get a smarter code for such an “official release”.
I had some swift reads of the Berliner McConnell paper, and I have to admit, to only have a vague understanding on how B* works so far. So your code is interesting and appreciated and may help me (and others) to better understand how it works and to make own experience.
It would be great to write something about B* based on your code in CPW.
Btw. your spanglish seems better than my denglish - i can only survive with online translators and spell checkers
Cheers,
Gerd
http://books.google.com/books?id=uBkOAA ... #PPA191,M1
-
- Posts: 90
- Joined: Sun Nov 02, 2008 4:43 pm
- Location: Barcelona
Re: B* Probability Search (long)
Thanks Dann.
Just to complete the picture, here is an example of a searched tree:
Even though B* will not be competitive, maybe as an analysis tool.
Just to complete the picture, here is an example of a searched tree:
Code: Select all
Probe depth 3, Select Nodes Limit 40, Verify Nodes limit 10
Time used 9906 Nodes Expanded 137
Root 8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - - bm Rxb2; id "WAC.002"
+---+---+---+---+---+---+---+---+
8 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
7 | | . | | . | | . | |-P-|
+---+---+---+---+---+---+---+---+
6 | . | | . | | . |-R-| . | |
+---+---+---+---+---+---+---+---+
5 | | . | | . | |-P-| | . |
+---+---+---+---+---+---+---+---+
4 |-P-| |-P-| | . |<P>| . | |
+---+---+---+---+---+---+---+---+
3 |<P>|-T-| |-P-|<P>|<R>| | . |
+---+---+---+---+---+---+---+---+
2 | . |<P>| . |<T>| . | | . |<P>|
+---+---+---+---+---+---+---+---+
1 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
a b c d e f g h
Selected move b3b2
Root Node Value: -253 Opt 286 Pess -415 Prb 0.957
b3c3 b2c3 551 Opt 523 Pess 523 Prb 0.000
h7h6 d2b2 565 Opt 338 Pess 532 Prb 0.000
f6e7 551 Opt 530 Pess 9999999 Prb 0.000
c4c3 b2c3 -159 Opt -658 Pess -268 Prb 0.073
b3b2 d2b2 838 Opt 962 Pess 750 Prb 0.000
d3d2 b2d2 962 Opt 962 Pess 962 Prb 0.000
h7h6 d2d6 987 Opt 963 Pess 963 Prb 0.000
f6e7 962 Opt 962 Pess 9999999 Prb 0.000
f6e6 838 Opt 750 Pess 9999999 Prb 0.000
h7h6 d2d3 b3a3 e3e4 122 Opt 963 Pess 73 Prb 0.000
h7h5 d2d3 b3a3 102 Opt 63 Pess 9999999 Prb 0.000
f6e6 d2d3 b3a3 e3e4 89 Opt 963 Pess 37 Prb 0.000
b3a3 d2d3 85 Opt -658 Pess -658 Prb 0.536
a3a1 d3d6 139 Opt 286 Pess 61 Prb 0.000
f6e6 85 Opt 37 Pess 9999999 Prb 0.000
b3c3 d2b2 c3a3 b2b6 -159 Opt -240 Pess -240 Prb 0.000
f6f7 b6b7 -150 Opt 286 Pess -232 Prb 0.000
f6e7 b6b7 -159 Opt 286 Pess -226 Prb 0.000
b3b2 d2b2 -253 Opt 105 Pess -415 Prb 0.957
d3d2 b2d2 642 Opt 105 Pess 105 Prb 0.000
c4c3 d2d6 732 Opt 338 Pess 105 Prb 0.000
f6e6 642 Opt 642 Pess 9999999 Prb 0.000
c4c3 -253 Opt -415 Pess 338 Prb 0.957
b2b6 f6e7 -253 Opt -415 Pess 338 Prb 0.957
b6b7 -253 Opt 338 Pess -415 Prb 0.957
e7e6 0 Opt -415 Pess 338 Prb 0.373
b7b6 0 Opt 286 Pess -415 Prb 0.241
e6d5 b6b5 285 Opt 338 Pess -1053 Prb 0.593
d5e6 b5b6 373 Opt 338 Pess -437 Prb 0.000
d5c6 b5f5 371 Opt 338 Pess -1111 Prb 0.574
d3d2 f3e2 532 Opt 338 Pess -1111 Prb 0.000
c3c2 371 Opt -481 Pess 338 Prb 0.259
d5d6 b5b6 285 Opt 338 Pess -415 Prb 0.000
d5c4 285 Opt -1053 Pess 338 Prb 0.593
b5b4 285 Opt 338 Pess -1053 Prb 0.000
b5f5 0 Opt 338 Pess -1274 Prb 0.796
d3d2 f3e2 453 Opt 338 Pess -1274 Prb 0.000
c3c2 f5f8 0 Opt 338 Pess -868 Prb 0.000
e6d7 228 Opt -415 Pess 286 Prb 0.241
b6b5 228 Opt 286 Pess -1053 Prb 0.569
d7c6 b5f5 371 Opt 286 Pess -1053 Prb 0.557
c3c2 228 Opt -481 Pess 286 Prb 0.312
b6b7 0 Opt -2056 Pess -1036 Prb 0.595
d7c8 b7b1 c3c2 b1c1 279 Opt 286 Pess -2056 Prb 0.769
d7c6 268 Opt -1036 Pess -1025 Prb 0.595
b7b8 c3c2 268 Opt -490 Pess 9999999 Prb 0.303
b7b1 d3d2 -108 Opt -1010 Pess 9999999 Prb 0.831
d7e6 0 Opt 0 Pess 9999999 Prb 0.000
b6b4 c3c2 -303 Opt -415 Pess 9999999 Prb 1.000
e6e7 0 Opt 0 Pess 9999999 Prb 0.000
b7c7 -265 Opt -1050 Pess -1050 Prb 1.000
e6d6 c7c3 724 Opt 338 Pess -1050 Prb 0.445
d3d2 f3e2 698 Opt 338 Pess -1030 Prb 0.000
c3c2 e3e4 -265 Opt 338 Pess -441 Prb 0.000
f3f2 c3c2 -422 Opt -625 Pess 9999999 Prb 1.000
f3g2 c3c2 -430 Opt -636 Pess 338 Prb 1.000
e7d6 -253 Opt -415 Pess 338 Prb 0.957
b7b6 -253 Opt -1036 Pess -1045 Prb 0.991
d6d5 b6b5 285 Opt -1053 Pess -1053 Prb 0.578
d5c6 b5f5 371 Opt 9999999 Pess -1053 Prb 0.557
d5d6 285 Opt -415 Pess 9999999 Prb 0.221
d6d7 b6b7 d7c6 284 Opt -1036 Pess 9999999 Prb 0.588
d6c5 240 Opt -1045 Pess 338 Prb 0.611
b6e6 c3c2 240 Opt -673 Pess 338 Prb 0.452
b6b8 c3c2 240 Opt -380 Pess 338 Prb 0.194
b6a6 0 Opt 338 Pess -1295 Prb 0.613
d3d2 f3e2 393 Opt 338 Pess -1295 Prb 0.000
c5b5 a6a8 253 Opt 338 Pess -1020 Prb 0.000
c3c2 a6a8 0 Opt 338 Pess -619 Prb 0.000
b6b1 d3d2 -117 Opt -746 Pess 9999999 Prb 0.773
d6c7 -253 Opt -1045 Pess 338 Prb 0.991
b6b1 -253 Opt 338 Pess -2075 Prb 0.996
d3d2 b1d1 c7b6 127 Opt -393 Pess 338 Prb 0.256
c3c2 -253 Opt -2075 Pess 338 Prb 0.996
b1c1 c7d6 -253 Opt -447 Pess 338 Prb 0.964
b1g1 d3d2 -608 Opt -1159 Pess 338 Prb 1.000
b1h1 d3d2 -642 Opt -1159 Pess 338 Prb 1.000
b6b4 c3c2 -253 Opt -740 Pess 338 Prb 0.986
b6f6 c3c2 -389 Opt -602 Pess 338 Prb 1.000
b6b5 c3c2 -395 Opt -602 Pess 338 Prb 1.000
b7b4 c3c2 -303 Opt -415 Pess 338 Prb 1.000
b7a7 c3c2 -303 Opt -520 Pess 338 Prb 1.000
b7b8 -401 Opt 338 Pess -1034 Prb 1.000
d3d2 f3e2 396 Opt 338 Pess -1034 Prb 0.000
d6c7 b8b1 286 Opt 338 Pess -1017 Prb 0.581
c3c2 b8d8 -401 Opt 338 Pess -490 Prb 0.000
b7f7 c3c2 -409 Opt -635 Pess 338 Prb 1.000
h2h3 c3c2 -416 Opt -622 Pess 338 Prb 1.000
f3f2 c3c2 -424 Opt -630 Pess 338 Prb 1.000
b6a6 c3c2 -303 Opt -512 Pess 338 Prb 1.000
b6c6 -319 Opt -1058 Pess -1058 Prb 1.000
e7d7 c6c3 724 Opt 338 Pess -1058 Prb 0.448
d3d2 f3e2 706 Opt 338 Pess -1027 Prb 0.000
c3c2 f3f2 -319 Opt 338 Pess -437 Prb 0.000
e3e4 c3c2 -405 Opt -554 Pess 9999999 Prb 1.000
f3g2 c3c2 -422 Opt -632 Pess 9999999 Prb 1.000
b2b5 -382 Opt 338 Pess -566 Prb 1.000
f6e6 b5b6 373 Opt 963 Pess -437 Prb 0.000
c3c2 -382 Opt -566 Pess 338 Prb 1.000
b5d5 -382 Opt 338 Pess -566 Prb 0.000
h2h3 d3d2 -623 Opt -1549 Pess 338 Prb 1.000
f3f2 c2c1q -630 Opt -926 Pess 338 Prb 1.000
b2b8 -382 Opt -437 Pess -566 Prb 1.000
f6e6 b8b6 373 Opt 963 Pess -415 Prb 0.000
f6e7 b8b7 e7d6 285 Opt -415 Pess 9999999 Prb 0.221
c3c2 -382 Opt -566 Pess 338 Prb 1.000
b8d8 -382 Opt 338 Pess -566 Prb 0.000
b8a8 c2c1q -520 Opt -1255 Pess 338 Prb 1.000
h2h4 c2c1q -618 Opt -1031 Pess 338 Prb 1.000
h2h3 d3d2 -623 Opt -1563 Pess 338 Prb 1.000
f3f2 c2c1q -630 Opt -874 Pess 338 Prb 1.000
f3g2 c2c1q -640 Opt -874 Pess 338 Prb 1.000
b2b7 c3c2 b7d7 -407 Opt 963 Pess -566 Prb 0.000
b2b4 -407 Opt 338 Pess -566 Prb 1.000
f6e6 b4b6 373 Opt 963 Pess -415 Prb 0.000
f6e7 b4b7 356 Opt 963 Pess -407 Prb 0.000
c3c2 -407 Opt -566 Pess 338 Prb 1.000
b4d4 -407 Opt 338 Pess -566 Prb 0.000
h2h3 c2c1q -622 Opt -1030 Pess 338 Prb 1.000
f3f2 c2c1q -630 Opt -928 Pess 338 Prb 1.000
f3g2 c2c1q -640 Opt -928 Pess 338 Prb 1.000
b2b1 c3c2 -426 Opt -1351 Pess 9999999 Prb 1.000
-
- Posts: 1822
- Joined: Thu Mar 09, 2006 11:54 pm
- Location: The Netherlands
Re: B* Probability Search (long)
Hi,
non-brute force searching attempts are very interesting to do. I did do a B* attempt using CNS-I (conspiracy number search - must be appealing name to most people here).
Things i stumbled upon:
a) when giving emails to others who tried CNS and/or invented different forms of it (CNS-2) like Ulf Lorenz, i got 0 replies back. I just wanted to compare how diep using CNS search did do versus P.Conners, for example. There is just 0 communication with university researchers. They keep results for themselves (same thing with parallel speedups at supercomputers, yet i can explain why you get back 0 data there, whereas my logfiles at supercomputer i consider public so if you request 'em you get them by returning email).
It is very difficult to be busy with a non-brute force searcher if you can't compare with anyone.
b) Nullmove is a big winner algorithm and CAN get used in CNS. Idemdito in other non-brute force searching attempts. A nullmove simply gives a high confidence level that a path is no good to explore further. This really speeded up my CNS attempt
c) it is very complicated to get an accurate mainline, yes even the best move is very complicated to get. I tend to remember P.Conners wanted 2 different lines with each line above a certain bound in order to call something its mainline. That was quite expensive when i tried, as changing the search window is simply really expensive and it also has the big problem of that you lose significance in your evaluation function. There is really no alternative sometimes other than to recapture a piece that was captured by your opponent.
If you expand a node somewhere in the tree, that INSTANTLY has an effect at which move you pick in the root now, the score of the mainline and what the mainline is.
d) Most disappointing is the fact that you really burn a lot of nodes to hopeless lines where in brute force search you simply get a cutoff.
If a line is silly and far away from our root window, yes even if it is 0.2 pawn, i want to give a cutoff. Yet as we have each time a flipping mainline and score belonging to it, we burn a lot of extra nodes
e) total search depth is disappointing. It is true that forced lines you can see right to the end and instantly. Great for specific tricks. Of course i started testing simple tricks first.
A trick that Diep finds with CNS without burning a lot of nodes is Rxc5 from the Larsen100 testset. Brute force it burns up really a lot more nodes.
3r1rk1/1pq1nppp/p7/2pB3Q/P4P2/1P2P3/6PP/2RR2K1 w - - bm Rxc5; id "GMG1.092";
c1c5
Yet this was the only 'victory' i could speak about.
All kind of other tricks, real simple ones, were really complicated to find, despite burning way more nodes.
f) memory management is expensive. I used a memory buffer of 400MB, lotta RAM for those days for a single processor. brute force search is much easier. For CNS i had implemented a big tree concept WITH transpositions.
Maintaining that is not so easy. My solution was a stupid one, just to experiment with it, i simply searched until the RAM was completely filled.
then search stopped.
Now as a replacement scheme that is NOT very clever.
All this slows down search bigtime.
A few years ago i didn't find that very acceptable.
It is here where brute force total annihilates all other forms of search most. The combination of more overhead into silly nodes with more efficient search is deadly.
Selectivity you can get in brute force search by forward pruning, reductions and extensions. That's much easier than doing everything in a non-brute force manner.
Amazingly now if you go play games with it, you will typically see that you aren't gonna lose many games based upon missing tactics. It is relative easy to avoid MISSING tactics.
The real problem what loses you game after game is the idiocy that happens around your mainline. It keeps nonstop doubting and changing its mainline. That is really BAD.
This where in a brute force search, the search really corrects diep's bad tuned eval (note i'm busy with a big project with Renze Steenhuisen to improve its tuning a tad at a processor or 40, that will weed out hopefully some historic idiocy from 10+ years ago in diep's eval).
This is however not true for all evaluations. In ancient times, search was simply not needed for fine grained positional corrections. You can see that in rybka also. If you have a real well tuned evaluatoin function, you can risk doing dubious hard forward pruning last 7 ply or so.
That is very complicated as soon as you already add mobility in the way Diep is doing it. Evaluation doubts more. Search IS needed to correct it bigtime last few plies especially.
All this happens in brute force, and alternatives to it, that correction doesn't happen. That is a BIG eloloss.
That aside from that it wasn't capable of finding some trivial tactics which no brute force search misses.
There is ways around finding tactics i tend to believe. Some clever extension here or there. There is no way to compensate for positional eloloss.
Vincent
non-brute force searching attempts are very interesting to do. I did do a B* attempt using CNS-I (conspiracy number search - must be appealing name to most people here).
Things i stumbled upon:
a) when giving emails to others who tried CNS and/or invented different forms of it (CNS-2) like Ulf Lorenz, i got 0 replies back. I just wanted to compare how diep using CNS search did do versus P.Conners, for example. There is just 0 communication with university researchers. They keep results for themselves (same thing with parallel speedups at supercomputers, yet i can explain why you get back 0 data there, whereas my logfiles at supercomputer i consider public so if you request 'em you get them by returning email).
It is very difficult to be busy with a non-brute force searcher if you can't compare with anyone.
b) Nullmove is a big winner algorithm and CAN get used in CNS. Idemdito in other non-brute force searching attempts. A nullmove simply gives a high confidence level that a path is no good to explore further. This really speeded up my CNS attempt
c) it is very complicated to get an accurate mainline, yes even the best move is very complicated to get. I tend to remember P.Conners wanted 2 different lines with each line above a certain bound in order to call something its mainline. That was quite expensive when i tried, as changing the search window is simply really expensive and it also has the big problem of that you lose significance in your evaluation function. There is really no alternative sometimes other than to recapture a piece that was captured by your opponent.
If you expand a node somewhere in the tree, that INSTANTLY has an effect at which move you pick in the root now, the score of the mainline and what the mainline is.
d) Most disappointing is the fact that you really burn a lot of nodes to hopeless lines where in brute force search you simply get a cutoff.
If a line is silly and far away from our root window, yes even if it is 0.2 pawn, i want to give a cutoff. Yet as we have each time a flipping mainline and score belonging to it, we burn a lot of extra nodes
e) total search depth is disappointing. It is true that forced lines you can see right to the end and instantly. Great for specific tricks. Of course i started testing simple tricks first.
A trick that Diep finds with CNS without burning a lot of nodes is Rxc5 from the Larsen100 testset. Brute force it burns up really a lot more nodes.
3r1rk1/1pq1nppp/p7/2pB3Q/P4P2/1P2P3/6PP/2RR2K1 w - - bm Rxc5; id "GMG1.092";
c1c5
Yet this was the only 'victory' i could speak about.
All kind of other tricks, real simple ones, were really complicated to find, despite burning way more nodes.
f) memory management is expensive. I used a memory buffer of 400MB, lotta RAM for those days for a single processor. brute force search is much easier. For CNS i had implemented a big tree concept WITH transpositions.
Maintaining that is not so easy. My solution was a stupid one, just to experiment with it, i simply searched until the RAM was completely filled.
then search stopped.
Now as a replacement scheme that is NOT very clever.
All this slows down search bigtime.
A few years ago i didn't find that very acceptable.
It is here where brute force total annihilates all other forms of search most. The combination of more overhead into silly nodes with more efficient search is deadly.
Selectivity you can get in brute force search by forward pruning, reductions and extensions. That's much easier than doing everything in a non-brute force manner.
Amazingly now if you go play games with it, you will typically see that you aren't gonna lose many games based upon missing tactics. It is relative easy to avoid MISSING tactics.
The real problem what loses you game after game is the idiocy that happens around your mainline. It keeps nonstop doubting and changing its mainline. That is really BAD.
This where in a brute force search, the search really corrects diep's bad tuned eval (note i'm busy with a big project with Renze Steenhuisen to improve its tuning a tad at a processor or 40, that will weed out hopefully some historic idiocy from 10+ years ago in diep's eval).
This is however not true for all evaluations. In ancient times, search was simply not needed for fine grained positional corrections. You can see that in rybka also. If you have a real well tuned evaluatoin function, you can risk doing dubious hard forward pruning last 7 ply or so.
That is very complicated as soon as you already add mobility in the way Diep is doing it. Evaluation doubts more. Search IS needed to correct it bigtime last few plies especially.
All this happens in brute force, and alternatives to it, that correction doesn't happen. That is a BIG eloloss.
That aside from that it wasn't capable of finding some trivial tactics which no brute force search misses.
There is ways around finding tactics i tend to believe. Some clever extension here or there. There is no way to compensate for positional eloloss.
Vincent
-
- Posts: 90
- Joined: Sun Nov 02, 2008 4:43 pm
- Location: Barcelona
Re: B* Probability Search (long)
Hi Vincent, thanks for your answer,
My experience till now with the algorithm is different , maybe we are speaking about different things. I use B* on top of a standard alpha-beta/PVS search in the same way as quiesce is used in alpha-beta.
Null move in B* probability search is not used as a pruning method, but as a threat detector.
The main line looks pretty stable but as I just do tactical tests...
Memory management is not an issue here...For GMG1.092 you need to expand 1386 nodes with a probe depth of 3, 111 nodes with a probe depth of 4 and just 34 expands with a probe depth = 5.
The big slow down is the cost for each expand. Each nodes are evaluated with a PVS(probe_depth) as real value, and a second PVS(probe_depth) as optimistic evaluation. Two open window search for each node.
The results I have are also mixed, a few simple problems aren't found and other complexes are.To say something, with probe search = 3 you miss tactics in 5 but you find Wac.002 (12-13 ply for my engine).
I'm still debugging the thing but I don't expect it to be competitive.
A+, Antonio.
My experience till now with the algorithm is different , maybe we are speaking about different things. I use B* on top of a standard alpha-beta/PVS search in the same way as quiesce is used in alpha-beta.
Null move in B* probability search is not used as a pruning method, but as a threat detector.
The main line looks pretty stable but as I just do tactical tests...
Memory management is not an issue here...For GMG1.092 you need to expand 1386 nodes with a probe depth of 3, 111 nodes with a probe depth of 4 and just 34 expands with a probe depth = 5.
The big slow down is the cost for each expand. Each nodes are evaluated with a PVS(probe_depth) as real value, and a second PVS(probe_depth) as optimistic evaluation. Two open window search for each node.
The results I have are also mixed, a few simple problems aren't found and other complexes are.To say something, with probe search = 3 you miss tactics in 5 but you find Wac.002 (12-13 ply for my engine).
I'm still debugging the thing but I don't expect it to be competitive.
A+, Antonio.
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: B* Probability Search (long)
Just to be clear, not _all_ university researchers keep results to themselves. I publish everything I do, both here and in the ICGA (among other places). Others do so also.diep wrote:Hi,
non-brute force searching attempts are very interesting to do. I did do a B* attempt using CNS-I (conspiracy number search - must be appealing name to most people here).
Things i stumbled upon:
a) when giving emails to others who tried CNS and/or invented different forms of it (CNS-2) like Ulf Lorenz, i got 0 replies back. I just wanted to compare how diep using CNS search did do versus P.Conners, for example. There is just 0 communication with university researchers. They keep results for themselves (same thing with parallel speedups at supercomputers, yet i can explain why you get back 0 data there, whereas my logfiles at supercomputer i consider public so if you request 'em you get them by returning email).
I don't see the issue here. Crafty finds this instantly and has failed high twice on it by the time it has used 1/2 second, running on my laptop, not anything bigger...
It is very difficult to be busy with a non-brute force searcher if you can't compare with anyone.
b) Nullmove is a big winner algorithm and CAN get used in CNS. Idemdito in other non-brute force searching attempts. A nullmove simply gives a high confidence level that a path is no good to explore further. This really speeded up my CNS attempt
c) it is very complicated to get an accurate mainline, yes even the best move is very complicated to get. I tend to remember P.Conners wanted 2 different lines with each line above a certain bound in order to call something its mainline. That was quite expensive when i tried, as changing the search window is simply really expensive and it also has the big problem of that you lose significance in your evaluation function. There is really no alternative sometimes other than to recapture a piece that was captured by your opponent.
If you expand a node somewhere in the tree, that INSTANTLY has an effect at which move you pick in the root now, the score of the mainline and what the mainline is.
d) Most disappointing is the fact that you really burn a lot of nodes to hopeless lines where in brute force search you simply get a cutoff.
If a line is silly and far away from our root window, yes even if it is 0.2 pawn, i want to give a cutoff. Yet as we have each time a flipping mainline and score belonging to it, we burn a lot of extra nodes
e) total search depth is disappointing. It is true that forced lines you can see right to the end and instantly. Great for specific tricks. Of course i started testing simple tricks first.
A trick that Diep finds with CNS without burning a lot of nodes is Rxc5 from the Larsen100 testset. Brute force it burns up really a lot more nodes.
3r1rk1/1pq1nppp/p7/2pB3Q/P4P2/1P2P3/6PP/2RR2K1 w - - bm Rxc5; id "GMG1.092";
c1c5
Yet this was the only 'victory' i could speak about.
All kind of other tricks, real simple ones, were really complicated to find, despite burning way more nodes.
f) memory management is expensive. I used a memory buffer of 400MB, lotta RAM for those days for a single processor. brute force search is much easier. For CNS i had implemented a big tree concept WITH transpositions.
Maintaining that is not so easy. My solution was a stupid one, just to experiment with it, i simply searched until the RAM was completely filled.
then search stopped.
Now as a replacement scheme that is NOT very clever.
All this slows down search bigtime.
A few years ago i didn't find that very acceptable.
It is here where brute force total annihilates all other forms of search most. The combination of more overhead into silly nodes with more efficient search is deadly.
Selectivity you can get in brute force search by forward pruning, reductions and extensions. That's much easier than doing everything in a non-brute force manner.
Amazingly now if you go play games with it, you will typically see that you aren't gonna lose many games based upon missing tactics. It is relative easy to avoid MISSING tactics.
The real problem what loses you game after game is the idiocy that happens around your mainline. It keeps nonstop doubting and changing its mainline. That is really BAD.
This where in a brute force search, the search really corrects diep's bad tuned eval (note i'm busy with a big project with Renze Steenhuisen to improve its tuning a tad at a processor or 40, that will weed out hopefully some historic idiocy from 10+ years ago in diep's eval).
This is however not true for all evaluations. In ancient times, search was simply not needed for fine grained positional corrections. You can see that in rybka also. If you have a real well tuned evaluatoin function, you can risk doing dubious hard forward pruning last 7 ply or so.
That is very complicated as soon as you already add mobility in the way Diep is doing it. Evaluation doubts more. Search IS needed to correct it bigtime last few plies especially.
All this happens in brute force, and alternatives to it, that correction doesn't happen. That is a BIG eloloss.
That aside from that it wasn't capable of finding some trivial tactics which no brute force search misses.
There is ways around finding tactics i tend to believe. Some clever extension here or there. There is no way to compensate for positional eloloss.
Vincent
-
- Posts: 1822
- Joined: Thu Mar 09, 2006 11:54 pm
- Location: The Netherlands
Re: B* Probability Search (long)
Bob, you post a lot here, you're the last one i mean. Note that you didn't run at the time at the 100-500 cpu range, it is obvious whom i mean i'd saybob wrote:Just to be clear, not _all_ university researchers keep results to themselves. I publish everything I do, both here and in the ICGA (among other places). Others do so also.diep wrote:Hi,
non-brute force searching attempts are very interesting to do. I did do a B* attempt using CNS-I (conspiracy number search - must be appealing name to most people here).
Things i stumbled upon:
a) when giving emails to others who tried CNS and/or invented different forms of it (CNS-2) like Ulf Lorenz, i got 0 replies back. I just wanted to compare how diep using CNS search did do versus P.Conners, for example. There is just 0 communication with university researchers. They keep results for themselves (same thing with parallel speedups at supercomputers, yet i can explain why you get back 0 data there, whereas my logfiles at supercomputer i consider public so if you request 'em you get them by returning email).
Yes the trick is simple as i said. All this non-brute force search is from around previous century and start 21th century.bob wrote:I don't see the issue here. Crafty finds this instantly and has failed high twice on it by the time it has used 1/2 second, running on my laptop, not anything bigger...
It is very difficult to be busy with a non-brute force searcher if you can't compare with anyone.
b) Nullmove is a big winner algorithm and CAN get used in CNS. Idemdito in other non-brute force searching attempts. A nullmove simply gives a high confidence level that a path is no good to explore further. This really speeded up my CNS attempt
c) it is very complicated to get an accurate mainline, yes even the best move is very complicated to get. I tend to remember P.Conners wanted 2 different lines with each line above a certain bound in order to call something its mainline. That was quite expensive when i tried, as changing the search window is simply really expensive and it also has the big problem of that you lose significance in your evaluation function. There is really no alternative sometimes other than to recapture a piece that was captured by your opponent.
If you expand a node somewhere in the tree, that INSTANTLY has an effect at which move you pick in the root now, the score of the mainline and what the mainline is.
d) Most disappointing is the fact that you really burn a lot of nodes to hopeless lines where in brute force search you simply get a cutoff.
If a line is silly and far away from our root window, yes even if it is 0.2 pawn, i want to give a cutoff. Yet as we have each time a flipping mainline and score belonging to it, we burn a lot of extra nodes
e) total search depth is disappointing. It is true that forced lines you can see right to the end and instantly. Great for specific tricks. Of course i started testing simple tricks first.
A trick that Diep finds with CNS without burning a lot of nodes is Rxc5 from the Larsen100 testset. Brute force it burns up really a lot more nodes.
3r1rk1/1pq1nppp/p7/2pB3Q/P4P2/1P2P3/6PP/2RR2K1 w - - bm Rxc5; id "GMG1.092";
c1c5
No matter how simple the trick is, it is about the number of nodes you need to find Rxc5 wins because of the trick:
Rxc5 Qxc5 Bxf7+ Kh8 Qxc5 Rxd1+ Kf2 Rxf7 Qh5 Rd2+ Ke1 g6 and now you have to see Qe5+ to see that white wins the rook.
So it is basically a total forced line from blacks viewpoint seen.
Easy for best first type searchers (whatever name you want to give it).
bob wrote:
Yet this was the only 'victory' i could speak about.
All kind of other tricks, real simple ones, were really complicated to find, despite burning way more nodes.
f) memory management is expensive. I used a memory buffer of 400MB, lotta RAM for those days for a single processor. brute force search is much easier. For CNS i had implemented a big tree concept WITH transpositions.
Maintaining that is not so easy. My solution was a stupid one, just to experiment with it, i simply searched until the RAM was completely filled.
then search stopped.
Now as a replacement scheme that is NOT very clever.
All this slows down search bigtime.
A few years ago i didn't find that very acceptable.
It is here where brute force total annihilates all other forms of search most. The combination of more overhead into silly nodes with more efficient search is deadly.
Selectivity you can get in brute force search by forward pruning, reductions and extensions. That's much easier than doing everything in a non-brute force manner.
Amazingly now if you go play games with it, you will typically see that you aren't gonna lose many games based upon missing tactics. It is relative easy to avoid MISSING tactics.
The real problem what loses you game after game is the idiocy that happens around your mainline. It keeps nonstop doubting and changing its mainline. That is really BAD.
This where in a brute force search, the search really corrects diep's bad tuned eval (note i'm busy with a big project with Renze Steenhuisen to improve its tuning a tad at a processor or 40, that will weed out hopefully some historic idiocy from 10+ years ago in diep's eval).
This is however not true for all evaluations. In ancient times, search was simply not needed for fine grained positional corrections. You can see that in rybka also. If you have a real well tuned evaluatoin function, you can risk doing dubious hard forward pruning last 7 ply or so.
That is very complicated as soon as you already add mobility in the way Diep is doing it. Evaluation doubts more. Search IS needed to correct it bigtime last few plies especially.
All this happens in brute force, and alternatives to it, that correction doesn't happen. That is a BIG eloloss.
That aside from that it wasn't capable of finding some trivial tactics which no brute force search misses.
There is ways around finding tactics i tend to believe. Some clever extension here or there. There is no way to compensate for positional eloloss.
Vincent