Evaluating bad bishops

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

Moderator: Andres Valverde

Evaluating bad bishops

Postby Tord Romstad » 15 May 2006, 23:02

Hi all,

Working on the evaluation function is boring, but unfortunately my little toy engine has advanced to the stage where some basic positional understanding seems necessary for further progress. One of the many missing pieces of knowledge is that Glaurung knows nothing about the concept of bad bishops. It does have a simple mobility eval, but mobility by itself isn't good enough. A bishop which is hampered by a lot of friendly pawns on its own colour tends to be a more permanent and serious problem than a bishop which simply happens to have poor mobility.

Despite several attempts, I have never managed to find a good way to evaluate bad bishops. My first and most simple attempt was to simply count the number of pawns on the bishop's colour, and use the number as the index to a BadBishopPenalty[] array. Later I have tried several similar but more complicated schemes, where I assign higher weights to central pawns and/or blocked pawns. To my frustration, I have never managed to make this work. Glaurung has always scored slightly better without such a bad bishop eval. There are some positions where the bad bishop eval works, but too often Glaurung has problems distinguishing a genuinly bad bishop from a bishop which does a vital job in protecting a friendly pawn chain.

What do the rest of you do? Does anyone have a simple, but effective way of evaluating bad bishops?

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

Re: Evaluating bad bishops

Postby Gerd Isenberg » 15 May 2006, 23:29

Hi Tord,
after some recent games of IsiChess with terrible problems with bad queen bishop (Jonny and Gandalf) in semi slave with e6, c6 pawns, i also have to reconsider my bad bishop code. The pawns were not backward but defended by pawns - neither statically blocked, but "dynamicly". I think this is an important pawn-bishop pattern to generalize.

Gerd
Gerd Isenberg
 
Posts: 285
Joined: 31 Jan 2005, 20:31
Location: Hattingen, Germany

Re: Evaluating bad bishops

Postby Klaus Friedel » 15 May 2006, 23:34

I added bad bishop evaluation in latest Snitch.
I use the simplest form: Every (own) pawn on bishops color gives a slight penalty (0.04).
Snitch performed slightly better.
But only 200 games played are not enough to be confident.
I'm the same impatient tester as you are ;-)

Klaus Friedel
Klaus Friedel
 
Posts: 31
Joined: 28 Sep 2004, 18:33

Re: Evaluating bad bishops

Postby Dann Corbit » 16 May 2006, 06:45

For a bishop to be bad, it has to be isolated from the opponent's king by an impenetrable wall (generally composed of your own pawns). If you have a knight, you may be able to break the wall.

Some bad bishop data:

Code: Select all

[Event "It"]
[Site "Leningrad RUS"]
[Date "1939.??.??"]
[Round "?"]
[White "Flohr, Salo"]
[Black "Bondarevsky, Igor"]
[Result "1-0"]
[ECO "A90"]
[Variation "Dutch: Dutch-Indian, Alekhine Variation"]
[PlyCount "154"]

1.d4 e6 2.c4 f5 3.g3 Nf6 4.Bg2 Bb4+ 5.Bd2 Be7 6.Qb3 d5 7.Nf3 c6 8.O-O O-O
9.Bb4 Ne4 10.Nbd2 Nd7 11.Bxe7 Qxe7 12.Rac1 Kh8 13.Qe3 Ndf6 14.Ne5 Nxd2 15.
Qxd2 Bd7 16.a3 Be8 17.Qe3 Kg8 18.Nd3 dxc4 19.Rxc4 Rd8 20.Ne5 Nd5 21.Bxd5
exd5 22.Rc3 f4 23.gxf4 Qh4 24.Qg3 Qxf4 25.Qxf4 Rxf4 26.e3 Rf6 27.Rb3 Rb8
28.f3 Kf8 29.Kf2 Rh6 30.Kg3 Ke7 31.Rc3 Rd8 32.h4 Bd7 33.Rc2 g5 34.hxg5
Rh3+ 35.Kg2 Rh5 36.Rh1 Rxg5+ 37.Kf1 Bf5 38.Rg2 Rdg8 39.Rxg5 Rxg5 40.Kf2
Kf6 41.Rh4 Rg7 42.b4 Kg5 43.Rh1 Kf6 44.Rh2 Rg5 45.a4 Rg7 46.a5 Rc7 47.Rh6+
Bg6 48.Rh1 Bf5 49.Rc1 a6 50.Rh1 Rg7 51.Rh2 Rc7 52.Rh6+ Bg6 53.Rh4 Bf5 54.
e4 dxe4 55.fxe4 Bg6 56.Rf4+ Ke6 57.Ke3 Rg7 58.Nd3 Kd6 59.Nc5 Re7 60.Rf8
Kc7 61.e5 Re8 62.Rxe8 Bxe8 63.Kf4 b6 64.Na4 bxa5 65.bxa5 Bf7 66.Nc5 Bc4
67.Kg5 Be2 68.Kh6 Kd8 69.Kxh7 Ke7 70.Kg6 Bf1 71.Kf5 Bh3+ 72.Ke4 Bg2+ 73.
Ke3 Bf1 74.Kd2 Kf7 75.Kc3 Kg6 76.Kb4 Kf5 77.Nb7 1-0

[Event "Winterthur"]
[Site "Winterthur"]
[Date "1931.??.??"]
[Round "?"]
[White "Henneberger, Walter"]
[Black "A Nimzovitch"]
[Result "0-1"]
[ECO "B15s"]
[Variation "Caro-Kann: 4.Nxe4 Nf6 5.Ng3"]
[PlyCount "152"]

1.e4 c6 2.d4 d5 3.Nc3 dxe4 4.Nxe4 Nf6 5.Ng3 c5 6.Bb5+ Bd7 7.Bxd7+ Nbxd7 8.
Nf3 Qa5+ 9.c3 Qa6 10.Qe2 Qxe2+ 11.Nxe2 Rc8 12.O-O e6 13.Bf4 Be7 14.Rfe1
Nd5 15.Bg3 c4 16.Ne5 Nxe5 17.Bxe5 f6 18.Bg3 g5 19.f4 h6 20.Rad1 Kf7 21.Rd2
b5 22.Rf1 Rhe8 23.Rf3 g4 24.Rf1 f5 25.Bf2 Rg8 26.g3 h5 27.Kg2 Bd6 28.Rc1
h4 29.Rdd1 Rh8 30.Rd2 Ke7 31.Rdc2 Kd7 32.Re1 Rh7 33.Ra1 hxg3 34.hxg3 a5
35.Rcc1 Rch8 36.Rh1 Rxh1 37.Rxh1 Rxh1 38.Kxh1 b4 39.Kg2 a4 40.cxb4 Bxb4
41.Kf1 Kc6 42.Be1 Kb5 43.Nc3+ Bxc3 44.bxc3 Kc6 45.Ke2 Nf6 46.Ke3 Ne4 47.
Ke2 Kd5 48.Ke3 Kd6 49.Ke2 Kc6 50.Ke3 Kd5 51.Ke2 Nd6 52.Ke3 Nb5 53.Bd2 Na3
54.Bc1 Nb1 55.Bb2 a3 56.Ba1 Kd6 57.Ke2 Kc6 58.Kd1 Kd5 59.Kc2 Ke4 60.Kxb1
Kf3 61.Bb2 axb2 62.a4 Kxg3 63.a5 Kh2 64.a6 g3 65.a7 g2 66.a8=Q g1=Q+ 67.
Kxb2 Qg2+ 68.Qxg2+ Kxg2 69.Ka3 Kf3 70.Kb4 Kxf4 71.Kxc4 Ke3 72.d5 exd5+ 73.
Kxd5 f4 74.c4 f3 75.c5 f2 76.c6 f1=Q 0-1

[Event "04"]
[Site "Carlsbad CZE"]
[Date "1911.??.??"]
[Round "?"]
[White "Burn, Amos"]
[Black "Alekhine, Alexander"]
[Result "1-0"]
[ECO "C13g"]
[Variation "French: Classical, Tartakower, 6.Bxe7"]
[PlyCount "164"]

1.e4 e6 2.d4 d5 3.Nc3 Nf6 4.Bg5 Be7 5.e5 Ne4 6.Bxe7 Qxe7 7.Bd3 Nxc3 8.bxc3
c5 9.Nf3 Nc6 10.O-O c4 11.Be2 Bd7 12.Qd2 b5 13.Ne1 a5 14.a3 O-O 15.f4 b4
16.axb4 axb4 17.Rxa8 Rxa8 18.cxb4 Qxb4 19.c3 Qb3 20.Bd1 Ra2 21.Qc1 Qb6 22.
Rf2 Qa7 23.Rxa2 Qxa2 24.Nc2 h6 25.Qa1 Qxa1 26.Nxa1 Na7 27.Kf2 Bc6 28.Ke3
Nb5 29.Kd2 Kf8 30.Nc2 Ke7 31.Ne3 f5 32.Bf3 Kd7 33.g4 fxg4 34.Bxg4 g6 35.
Bd1 Ke7 36.Ng4 h5 37.Ne3 Kf7 38.Ng2 Kg7 39.Nh4 Be8 40.Nf3 Kf7 41.Kc2 Bd7
42.Kb2 Na7 43.Ka3 Nc6 44.Ba4 Ke7 45.Nh4 Kf7 46.Bxc6 Bxc6 47.Kb4 Be8 48.Nf3
Ke7 49.Ng5 Bc6 50.Ka3 Bd7 51.Kb2 Ba4 52.Kc1 Bb3 53.Nf3 Ba4 54.Nh4 Kf7 55.
Ng2 Bd7 56.h4 Be8 57.Kb2 Ba4 58.Ne3 Ke7 59.Ka3 Bc6 60.Kb4 Kd7 61.Ka5 Kc7
62.Nc2 Kb7 63.Nb4 Bd7 64.Na6 Be8 65.Nc5+ Kc6 66.Nxe6 Bd7 67.Ng5 Bf5 68.Kb4
Bg4 69.Ka3 Kd7 70.Nf7 Be6 71.Nd6 Kc6 72.Kb2 Bg4 73.Kc2 Kd7 74.Kd2 Ke6 75.
Ke3 Bh3 76.f5+ gxf5 77.Kf4 Bg4 78.Kg5 Bh3 79.Ne8 Kf7 80.Nf6 f4 81.Kxf4 Be6
82.Kg5 1-0

[Event "RUS"]
[Site "Ch Moscow Moscow  (01)"]
[Date "1949.??.??"]
[Round "?"]
[White "Averbakh, Yuri L"]
[Black "Lilienthal, Andor"]
[Result "1-0"]
[ECO "E90k"]
[Variation "King's Indian: 5.Nf3 O-O 6.h3"]
[PlyCount "82"]

1.d4 Nf6 2.c4 d6 3.Nf3 g6 4.Nc3 Bg7 5.e4 O-O 6.h3 Nc6 7.d5 Nb8 8.Be2 e6 9.
O-O exd5 10.exd5 Re8 11.Be3 Nbd7 12.Rc1 Nc5 13.Nd4 Nfe4 14.Nxe4 Nxe4 15.b3
Ng3 16.Re1 Nxe2+ 17.Rxe2 Bd7 18.Qd2 a6 19.Rce1 Qh4 20.Nf3 Qh5 21.Bd4 Rxe2
22.Qxe2 Bxd4 23.Nxd4 Qxe2 24.Rxe2 Kf8 25.f3 c5 26.dxc6 bxc6 27.Rd2 Ke7 28.
Ne2 Be6 29.Kf2 d5 30.c5 Kd7 31.Nd4 f6 32.Re2 Bf7 33.f4 Rg8 34.g3 h5 35.Re3
Re8 36.Rxe8 Bxe8 37.g4 hxg4 38.hxg4 Kc7 39.Kg3 Bd7 40.g5 fxg5 41.fxg5 Bc8
1-0

[Event "It"]
[Site "Moscow RUS"]
[Date "1935.??.??"]
[Round "?"]
[White "Flohr, Salo"]
[Black "Capablanca, Jose"]
[Result "1/2-1/2"]
[ECO "D62"]
[Variation "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5 Nxd5 9.Bxe7 Qxe7"]
[PlyCount "104"]

1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Nf3 Nbd7 5.Bg5 Be7 6.e3 O-O 7.Qc2 c5 8.cxd5
Nxd5 9.Bxe7 Qxe7 10.Nxd5 exd5 11.Bd3 cxd4 12.Nxd4 Qb4+ 13.Qd2 Nc5 14.Bb5
Qxd2+ 15.Kxd2 a6 16.Bd3 Be6 17.Rac1 Rfc8 18.Rc2 Nxd3 19.Kxd3 Rxc2 20.Kxc2
Kf8 21.Kd2 Rc8 22.Rc1 Rxc1 23.Kxc1 Ke7 24.Kd2 Kd6 25.Kc3 b6 26.f4 Bd7 27.
Nf3 f6 28.Kd4 a5 29.Nd2 Bc8 30.Nb1 Be6 31.Nc3 Kc6 32.a3 h6 33.g3 h5 34.b4
axb4 35.axb4 Kd6 36.b5 g6 37.Na4 Kc7 38.Nc3 Kd6 39.f5 gxf5 40.Ne2 Bd7 41.
Nf4 Be8 42.Nxd5 Bxb5 43.Nxb6 Bc6 44.Nc4+ Ke6 45.Nb2 Bb5 46.Nd1 Be2 47.Nf2
Bf1 48.Nd3 Bxd3 49.Kxd3 Ke5 50.Ke2 Ke4 51.h3 Kd5 52.Kf3 Ke5 1/2-1/2

[Event "Nottingham"]
[Site "Nottingham ENG"]
[Date "1936.??.??"]
[Round "?"]
[White "Capablanca"]
[Black "Reshevsky"]
[Result "1-0"]
[ECO "E03"]
[Variation "QGA: Mannheim, 4...Nbd7"]
[PlyCount "116"]

1.d4 d5 2.Nf3 Nf6 3.c4 dxc4 4.Qa4+ Nbd7 5.Qxc4 e6 6.g3 a6 7.Bg2 b5 8.Qc6
Ra7 9.Bf4 Bb7 10.Qc1 c5 11.dxc5 Bxc5 12.O-O O-O 13.Nbd2 Qe7 14.Nb3 Bb6 15.
Be3 Rc8 16.Qd2 Ne4 17.Qd3 Ndc5 18.Nxc5 Nxc5 19.Qd1 Ba8 20.Rc1 Rac7 21.b3
Nd7 22.Rxc7 Rxc7 23.Bxb6 Nxb6 24.Qd4 Nd5 25.Rd1 f6 26.Ne1 Bb7 27.Bxd5 exd5
28.e3 Qe4 29.h4 a5 30.f3 Qxd4 31.Rxd4 Rc1 32.Kf2 Ra1 33.Rd2 a4 34.Nd3 Rb1
35.Rb2 Rxb2+ 36.Nxb2 Bc6 37.Nd3 g5 38.hxg5 fxg5 39.Nb4 axb3 40.axb3 Bb7
41.g4 Kg7 42.Ke2 Kg6 43.Kd3 h5 44.gxh5+ Kxh5 45.Kd4 Kh4 46.Nxd5 Kg3 47.f4
g4 48.f5 Bc8 49.Ke5 Bd7 50.e4 Be8 51.Kd4 Kf3 52.e5 g3 53.Ne3 Kf4 54.e6 g2
55.Nxg2+ Kxf5 56.Kd5 Kg4 57.Ne3+ Kf4 58.Kd4 1-0

[Event "Buenos Aires  Rd: 2"]
[Site "Buenos Aires  Rd: 2"]
[Date "1970.??.??"]
[Round "?"]
[White "Damjanovic, Mato"]
[Black "Fischer, Robert"]
[Result "0-1"]
[ECO "B36p"]
[Variation "Sicilian: Maroczy Bind, 5...Nf6"]
[PlyCount "156"]

1.d4 Nf6 2.c4 c5 3.Nf3 cxd4 4.Nxd4 Nc6 5.Nc3 g6 6.e4 d6 7.Be2 Nxd4 8.Qxd4
Bg7 9.Be3 O-O 10.Qd2 Be6 11.f3 Rc8 12.Nd5 Nd7 13.O-O Nc5 14.Rac1 a5 15.b3
Bxd5 16.cxd5 Qb6 17.Rc4 Qa7 18.Rc2 Bh6 19.f4 Rc7 20.g3 b6 21.Rfc1 Bg7 22.
Bb5 Qa8 23.Qe2 e5 24.dxe6 fxe6 25.Rd1 Rd8 26.Bd4 Bxd4+ 27.Rxd4 e5 28.fxe5
dxe5 29.Rxd8+ Qxd8 30.Bc4+ Kg7 31.Bd5 Nd7 32.Qf2 Rxc2 33.Qxc2 b5 34.Kg2 b4
35.Qc6 Nf6 36.Kf3 Qd7 37.Qxd7+ Nxd7 38.Ke3 Kf6 39.Kd3 Nb6 40.Bc6 Ke7 41.h4
h6 42.Ke3 Nc8 43.Kd3 Nd6 44.Ke3 Kd8 45.Kd3 Kc7 46.Ba4 Kb6 47.Ke3 Kc5 48.
Bd7 Kb6 49.Ba4 Kc7 50.Kd3 Kd8 51.Bc6 Ke7 52.Ke3 Ke6 53.Kf3 Kf6 54.g4 g5
55.h5 Ke7 56.Ke3 Kd8 57.Kd3 Kc7 58.Ba4 Kb6 59.Bd7 Kc5 60.Ba4 Nc8 61.Be8
Ne7 62.Ke3 Ng8 63.Bd7 Nf6 64.Bf5 Kb5 65.Kd3 a4 66.bxa4+ Kxa4 67.Kc4 Ka3
68.Kc5 Kxa2 69.Kxb4 Kb2 70.Kc5 Kc3 71.Kd6 Kd4 72.Ke6 Nxe4 73.Kf7 Nf2 74.
Kg6 e4 75.Kxh6 e3 76.Kg7 e2 77.h6 e1=Q 78.h7 0-1

[Event "Palma de Mallorca iz"]
[Site "Palma de Mallorca iz"]
[Date "1970.??.??"]
[Round "7"]
[White "Ujtumen, Tudev"]
[Black "Geller, Efim P"]
[Result "0-1"]
[ECO "B87"]
[Variation "Sicilian: Sozin-Najdorf, 7.Bb3 b5"]
[PlyCount "106"]

1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6 6.Bc4 e6 7.Bb3 b5 8.f3 Be7
9.Be3 O-O 10.Qd2 Bd7 11.g4 b4 12.Nce2 a5 13.g5 Ne8 14.Bc4 a4 15.Ng3 Nc6
16.Nxc6 Bxc6 17.Rd1 Qc7 18.b3 axb3 19.axb3 Ra2 20.O-O d5 21.Bd3 dxe4 22.
Nxe4 Bxe4 23.fxe4 Bc5 24.Rf2 Qa7 25.Bxc5 Qxc5 26.Rf1 Nd6 27.Kh1 Ra5 28.Qf4
Nc8 29.Bc4 Qe5 30.h4 Nd6 31.Bd3 Rfa8 32.Kg2 Qxf4 33.Rxf4 e5 34.R4f2 Ra1
35.Kf3 Kf8 36.Rxa1 Rxa1 37.Rf1 Rxf1+ 38.Bxf1 Ke7 39.Ke3 f6 40.gxf6+ Kxf6
41.Be2 g6 42.Kd3 h5 43.c3 bxc3 44.Kxc3 Nxe4+ 45.Kc4 Ng3 46.Bf3 e4 47.Bg2
Ke5 48.b4 Nf5 49.b5 Nd6+ 50.Kc5 Nxb5 51.Kxb5 Kd4 52.Bf1 Ke3 53.Bg2 Kd3 0-1

[Event "Moscow-Wch I Unzicker,W"]
[Site "Moscow-Wch I Unzicker,W"]
[Date "1984.??.??"]
[Round "9"]
[White "Karpov, Anatoly"]
[Black "Kasparov, Garry"]
[Result "1-0"]
[WhiteElo "2700"]
[BlackElo "2710"]
[ECO "D34v"]
[Opening "QGD"]
[Variation "Tarrasch, Prague variation, 9.Bg5"]
[PlyCount "140"]

1.d4 d5 2.c4 e6 3.Nf3 c5 4.cxd5 exd5 5.g3 Nf6 6.Bg2 Be7 7.O-O O-O 8.Nc3
Nc6 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Qb3 Na5 13.Qc2 Bg4 14.Nf5 Rc8 15.
Bd4 Bc5 16.Bxc5 Rxc5 17.Ne3 Be6 18.Rad1 Qc8 19.Qa4 Rd8 20.Rd3 a6 21.Rfd1
Nc4 22.Nxc4 Rxc4 23.Qa5 Rc5 24.Qb6 Rd7 25.Rd4 Qc7 26.Qxc7 Rdxc7 27.h3 h5
28.a3 g6 29.e3 Kg7 30.Kh2 Rc4 31.Bf3 b5 32.Kg2 R7c5 33.Rxc4 Rxc4 34.Rd4
Kf8 35.Be2 Rxd4 36.exd4 Ke7 37.Na2 Bc8 38.Nb4 Kd6 39.f3 Ng8 40.h4 Nh6 41.
Kf2 Nf5 42.Nc2 f6 43.Bd3 g5 44.Bxf5 Bxf5 45.Ne3 Bb1 46.b4 gxh4 47.Ng2
hxg3+ 48.Kxg3 Ke6 49.Nf4+ Kf5 50.Nxh5 Ke6 51.Nf4+ Kd6 52.Kg4 Bc2 53.Kh5
Bd1 54.Kg6 Ke7 55.Nxd5+ Ke6 56.Nc7+ Kd7 57.Nxa6 Bxf3 58.Kxf6 Kd6 59.Kf5
Kd5 60.Kf4 Bh1 61.Ke3 Kc4 62.Nc5 Bc6 63.Nd3 Bg2 64.Ne5+ Kc3 65.Ng6 Kc4 66.
Ne7 Bb7 67.Nf5 Bg2 68.Nd6+ Kb3 69.Nxb5 Ka4 70.Nd6 1-0

[Event "Semmering"]
[Site "Semmering AUT"]
[Date "1937.??.??"]
[Round "?"]
[White "Eliskases, Erich"]
[Black "Flohr, Salo"]
[Result "0-1"]
[ECO "D93"]
[Variation "Grunfeld: 5.Bf4 O-O 6.e3 c5"]
[PlyCount "114"]

1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.Bf4 Bg7 5.e3 O-O 6.Nf3 c5 7.cxd5 Nxd5 8.Be5
Nxc3 9.bxc3 cxd4 10.Bxg7 Kxg7 11.cxd4 Qa5+ 12.Qd2 Nc6 13.Be2 Rd8 14.Qxa5
Nxa5 15.O-O Be6 16.e4 Bg4 17.Rfd1 e6 18.Kf1 Bxf3 19.Bxf3 Rac8 20.Rd2 e5
21.d5 Nc4 22.Re2 Nd6 23.Rb1 Rc4 24.g3 Rdc8 25.Bg2 Rc1+ 26.Rxc1 Rxc1+ 27.
Re1 Rxe1+ 28.Kxe1 f5 29.f3 fxe4 30.fxe4 b5 31.Kd2 a5 32.Kd3 Kf6 33.Bf3 Ke7
34.h4 h6 35.Bd1 Kd8 36.a4 bxa4 37.Bxa4 Kc7 38.Bc2 Kb6 39.Kc3 Kb5 40.Kb3
Kc5 41.Ka4 Nc4 42.Bb3 Nd2 43.Bc2 Nf1 44.Kxa5 Nxg3 45.Ka4 Nh5 46.Kb3 Kd4
47.Kb4 Nf6 48.d6 g5 49.hxg5 hxg5 50.Kb5 g4 51.Bd1 g3 52.Bf3 Ke3 53.Bh1 Kf2
54.Kc6 g2 55.Bxg2 Kxg2 56.d7 Nxd7 57.Kxd7 Kf3 0-1

[Event "Ch Great Britain"]
[Site "Great Britain"]
[Date "1982.??.??"]
[Round "?"]
[White "Keene, Raymond D"]
[Black "Miles, Anthony J"]
[Result "0-1"]
[WhiteElo "2505"]
[BlackElo "2575"]
[ECO "E15c"]
[Variation "Queen's Indian: 4.g3 Bb4+ 5.Bd2 Bxd2+ 6.Qxd2 Ba6"]
[PlyCount "80"]

1.d4 Nf6 2.c4 e6 3.Nf3 b6 4.g3 Bb4+ 5.Bd2 Bxd2+ 6.Qxd2 Ba6 7.Na3 O-O 8.Bg2
c6 9.O-O d5 10.Ne5 Nfd7 11.Nxd7 Nxd7 12.Rac1 Rc8 13.cxd5 cxd5 14.Rxc8 Qxc8
15.Rc1 Qb8 16.e3 Nf6 17.Bf1 Ne4 18.Qc2 Rc8 19.Bxa6 Rxc2 20.Rxc2 Nd6 21.Nb5
Nxb5 22.Rc8+ Qxc8 23.Bxc8 Nd6 24.Ba6 b5 25.b3 Kf8 26.a4 Ke7 27.axb5 Ne4
28.b6 axb6 29.Bd3 Nd2 30.b4 Nf3+ 31.Kh1 h6 32.Be2 Nd2 33.Kg2 Kd6 34.b5 e5
35.Bd1 Ke6 36.f3 Nc4 37.Kf2 Nd6 38.dxe5 Kxe5 39.f4+ Ke6 40.Bb3 Ne4+ 0-1

[Event "Ohrid"]
[Site "Ohrid MKD"]
[Date "1972.??.??"]
[Round "?"]
[White "Matulovic, Milan"]
[Black "Korchnoi, Viktor"]
[Result "0-1"]
[WhiteElo "2525"]
[BlackElo "2640"]
[ECO "C06m"]
[Variation "French: Tarrasch, Closed, 8...f6 9.exf6"]
[PlyCount "114"]

1.e4 e6 2.d4 d5 3.Nd2 Nf6 4.e5 Nfd7 5.Bd3 c5 6.c3 Nc6 7.Ne2 cxd4 8.cxd4 f6
9.exf6 Qxf6 10.Nf3 e5 11.dxe5 Ndxe5 12.Nxe5 Bb4+ 13.Bd2 Bxd2+ 14.Qxd2 Qxe5
15.O-O O-O 16.Bb5 Bg4 17.f3 Be6 18.Rfe1 Qd6 19.Rac1 Rf6 20.Bxc6 bxc6 21.
Qc3 Bd7 22.Qc5 Qxc5+ 23.Rxc5 Re8 24.Kf2 Rfe6 25.Rcc1 Kf7 26.Nf4 Rxe1 27.
Rxe1 Rxe1 28.Kxe1 Bf5 29.h4 a5 30.Kd2 d4 31.a3 c5 32.g4 Bg6 33.h5 Bb1 34.
g5 h6 35.gxh6 gxh6 36.Ne2 a4 37.Ng3 Ke6 38.f4 Kd5 39.Kc1 Bd3 40.Kd2 Bb1
41.Kc1 Bd3 42.Kd2 c4 43.Kc1 c3 44.Nh1 Kc4 45.Ng3 Kb3 46.bxc3 dxc3 47.f5
Kxa3 48.f6 Bc4 49.Nf5 Kb4 50.Nd4 a3 51.Kb1 Bf7 52.Nc6+ Kc5 53.Ne5 a2+ 54.
Ka1 c2 55.Nd3+ Kd4 56.Nc1 Ke5 57.Nd3+ 0-1

[Event "Amsterdam AVRO KEY"]
[Site "Amsterdam AVRO KEY"]
[Date "1938.??.??"]
[Round "?"]
[White "Fine, Ruben"]
[Black "Botvinnik, Mikhail URS"]
[Result "1-0"]
[ECO "C17b"]
[Variation "French: Winawer, Advance, 5.dxc5"]
[PlyCount "70"]

1.e4 e6 2.d4 d5 3.Nc3 Bb4 4.e5 c5 5.dxc5 Ne7 6.Nf3 Nbc6 7.Bd3 d4 8.a3 Ba5
9.b4 Nxb4 10.axb4 Bxb4 11.Bb5+ Nc6 12.Bxc6+ bxc6 13.Ra4 Bxc3+ 14.Bd2 f6
15.O-O O-O 16.Bxc3 dxc3 17.Qe1 a5 18.Qxc3 Ba6 19.Rfa1 Bb5 20.Rd4 Qe7 21.
Rd6 a4 22.Qe3 Ra7 23.Nd2 a3 24.c4 Ba4 25.exf6 Qxf6 26.Rxa3 Re8 27.h3 Raa8
28.Nf3 Qb2 29.Ne5 Qb1+ 30.Kh2 Qf5 31.Qg3 1-0

[Event "02, Moscow tt"]
[Site "02, Moscow tt"]
[Date "1972.??.??"]
[Round "?"]
[White "Karpov, Anatoly"]
[Black "Taimanov, Mark E"]
[Result "1-0"]
[WhiteElo "2630"]
[BlackElo "2590"]
[ECO "B42f"]
[Variation "Sicilian: Kan, Polugaevsky Variation"]
[PlyCount "80"]

1.e4 c5 2.Nf3 e6 3.d4 cxd4 4.Nxd4 a6 5.Bd3 Bc5 6.Nb3 Bb6 7.O-O Ne7 8.Qe2
Nbc6 9.Be3 Ne5 10.c4 Bxe3 11.Qxe3 Qc7 12.c5 Nxd3 13.Qxd3 b6 14.cxb6 Qxb6
15.N1d2 d5 16.e5 Bd7 17.Rfc1 O-O 18.Qd4 Qb8 19.Nf3 Nc6 20.Qe3 Rc8 21.Rc5
a5 22.Rac1 a4 23.Nbd4 Na5 24.Rxc8+ Bxc8 25.b3 Bd7 26.h4 h6 27.g4 Qb7 28.h5
Nc6 29.g5 Nxd4 30.Nxd4 hxg5 31.Qxg5 Kh7 32.Rc3 Qb4 33.Rg3 Rg8 34.Nf3 axb3
35.axb3 Qxb3 36.Qc1 Qa2 37.Ng5+ Kh8 38.Nxf7+ Kh7 39.Qg5 Qb1+ 40.Kh2 1-0

[Event "It"]
[Site "Manila (Philippines)"]
[Date "1973.??.??"]
[Round "?"]
[White "Quinteros, Miguel A"]
[Black "Larsen, Bent"]
[Result "0-1"]
[WhiteElo "2520"]
[BlackElo "2620"]
[ECO "C75"]
[Variation "Spanish: Modern Steinitz, Rubinstein Variation"]
[PlyCount "74"]

1.e4 e5 2.Nf3 Nc6 3.Bb5 Nge7 4.c3 a6 5.Ba4 d6 6.d4 Bd7 7.h4 h6 8.h5 exd4
9.Nxd4 Nxd4 10.cxd4 d5 11.e5 Bxa4 12.Qxa4+ Nc6 13.Be3 Qd7 14.Nc3 Bb4 15.
Qc2 O-O 16.O-O-O Bxc3 17.Qxc3 f6 18.f4 a5 19.a3 a4 20.Kb1 Na5 21.Qd3 Nc4
22.Bd2 fxe5 23.dxe5 Rad8 24.Bc1 b5 25.Rhe1 Rfe8 26.Qf3 c5 27.Rd3 d4 28.
Red1 Na5 29.g4 Nb3 30.Re1 c4 31.Rdd1 b4 32.axb4 d3 33.Bd2 a3 34.bxa3 Nd4
35.Qf2 Qa4 36.Bc3 Ne2 37.Bb2 Qc2+ 0-1
Dann Corbit
 

Re: Evaluating bad bishops

Postby Nicola Rizzuti » 16 May 2006, 09:39

Hi!
IMHO there isn't a strict definition of 'bad bishop'. So you can think it like a 'mobility problem' or like a 'piece restricted in his half board'.

I remember an old trick of Don Dailey used in Cilckchess:
if bishop hasn't a way to move to 'enemy 3rd rank' (6th rank if you are white) then it is a bad bishop. There was a counting rule for colors of pawns too: friendly pawns on the same color hurt the bishop, but enemy pawns on the same color are good.

Instead in Mizar i use a 'mobility approach': if mobility is less of 20% than theoretical mobility in that square, it is a bad piece (i have attack info and i use it for knights too).

I think that there isn't a 'right way': you can have a well tuned mobility evaluation or well tuned piece square table and so my approach can hurt your evaluation.

Nicola
User avatar
Nicola Rizzuti
 
Posts: 10
Joined: 16 Oct 2004, 09:43
Location: Italy

Re: Evaluating bad bishops

Postby Oliver Uwira » 16 May 2006, 10:11

Hi Tord,

yesterday I suffered this catastrophy:

Code: Select all
[Event "Frankfurt Championship 2006"]
[Site "Frankfurt"]
[Date "2006.05.15"]
[Round "4"]
[White "Oliver Uwira"]
[WhiteElo "2257"]
[Black "Razaul Kabir"]
[BlackElo "2096"]
[Result "0-1"]
[ECO "E24"]
[Opening "Nimzo-Indian"]
[Variation "S?misch, 5...b6 6.f3"]


1.d4 Nf6 2.c4 e6 3.Nc3 Bb4 4.a3 Bxc3+ 5.bxc3 b6 6.f3 Bb7 7.e4 d6 8.Bd3 Nbd7
9.Ne2 O-O 10.O-O e5 11.Ng3 Re8 12.Be3 c5 13.d5 Nf8 14.f4 Ng6 15.f5 Nf8 16.Bg5 N8d7
17.Nh5 h6 18.Bh4 Kh7 19.g4 Rh8 20.Ra2 Kg8 21.Rg2 Kf8 22.Kh1 Rh7 23.Rfg1 Ke7 24.g5? hxg5
25.R2xg5 Qh8! 26.Qf3 Rg8 27.Bc2 Ba6 28.Ba4 Nxh5 29.Rxh5+ Nf6 30.Rxh7 Qxh7 31.Bxf6+ Kxf6  *


[diag]6r1/p4ppq/bp1p1k2/2pPpP2/B1P1P3/P1P2Q2/7P/6RK w - - 0 32 [/diag]
6r1/p4ppq/bp1p1k2/2pPpP2/B1P1P3/P1P2Q2/7P/6RK w - - 0 32

I couldn't adapt to the fact that I blundered my attacking position away and did now reject 32.Rg6+! which forces a draw (I still wanted to win... *idiot*)

Anyway, I believe this is an interesting position because the bad bishop is decisive here but a long term plan for black is required to convert the advantage into a win... force to exchange queens, eat all the white pawns etc.)

If an engine simply counted the moves for the white bishop it would not necessarily think that white is worse, I believe. If it counted the number of pawns that are blocked on white squares and considered the fact that black also has a white-squared bishop left it would surely come to the correct conclusion.

The reason why I'm writing this is that the situation in the semi-slav or in the Moldovan variation (1.d4 d5 2.c4 c6 3.Nf3 Nf6 4.Nc3 a6 and now especially 5.c5) is different. Black has plenty of hooks for developing counterplay so the bad bishop doesn't hurt.

What should an engine do then? My idea is the following.

First, it seems to be important to gather knowledge about counterplay hooks. If the opponent has to bother about the defense of an own weekness (like in the advance variation of the French, where a white pawn on d4 has become weak) there might not be too much activity left for him to exploit the restrained bishop.

Second and somehow an inference of the first point is to assign penalties for exchanges of the more active pieces (again from the advance French if black has the white-squared bishop and a knight I would give a HUGE penalty for exchanging the knight because it's able to attack the weakness d4)

That was the problem with my blunder 24.g5? above. I was forced to exchange the knight under disadvantageous circumstances.

Third, for evaluating endgames or late middlegames, one should try to implement the "one-weekness-rule", meaning that normally a single weekness is defendable but if there are two weeknesses the side with a space advantage or mobility advantage (like having a knight against a bad bishop) is normally able to outplay the defender.

I believe that you are evaluating every node with Glaurung so you could probably keep track of your important pieces, levers and invasion squares.

I plan to do something like this with my new engine, but I don't know if it can work the way I described because my old engine just had a very dumb evaluation and therefore I'm lacking the experience...

Viele Gr??e,
Oliver
Oliver Uwira
 
Posts: 31
Joined: 21 Apr 2006, 12:43
Location: Frankfurt, Germany

Re: Evaluating bad bishops

Postby H.G.Muller » 16 May 2006, 11:32

Please note that I have not implemented any bad-Bishop code yet myself, so the following are just ideas:

Together with passed Pawns Bishops are the most notable cases of non-additivity of positional evaluation. The quality of a Bishop is very much determined by the Pawn structure as by its current location on th board. It is not so much a measure not of the instantaneous mobility (how many squares you can access in a single move) as well how many squares you can access in several moves. Pawns that stand in the way are obstacles, but if they can be moved out of the way, not too bad ones. They still add one move to the accessibility of the squares behind them, though.

So it is very important not to just count the number of Pawns on the color of the Bishop, but also judge how permanently these Pawns are locked in place. This depends very much on the location of enemy Pawns as well. Pawns blocked by Pawns are the worst, backward Pawns are also pretty bad. If a Pawn is not blocked by a Pawn, but by a Piece, it matters if you have Pawns that could attack the square in front of the Pawn, but even then it is worse than a Pawn that you could simply move forward without degrading your Pawn structure a lot (or giving the opponent a passer!).

So you would really have to approach it from the Pawn structure, identify the degree of locking of every Pawn first, and then weight that locking with the centralization (a locked a or h Pawn would do little harm, a locked d or e Pawn that is far advanced neither).
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Evaluating bad bishops

Postby Tord Romstad » 16 May 2006, 22:37

Hi Oliver,

This was a fantastic post of yours. Your input is highly appreciated, and has given me lots of ideas and food for thought. In fact, it is the first post I've ever read on this forum which contained so many points of interest that I decided to print it out. :D

I will need lots of time, thought and experimentation before I can make any intelligent remarks about the contents of your post. For now, I will just give you a simple warning:

Oliver Uwira wrote:I plan to do something like this with my new engine, but I don't know if it can work the way I described because my old engine just had a very dumb evaluation and therefore I'm lacking the experience...


Be very careful. When writing a new engine, the temptation to quickly add lots of advanced knowledge to the evaluation function is very big (probably even more so for a strong chess player like you). This is a really bad idea, and is almost guaranteed to result in a messy and buggy eval which is almost impossible to tune well (I learned this the hard way).

It is better to start with a very simple and rudimentary eval, so simple that you feel 100% sure it has no bugs. Start playing a few games with this simple eval, and observe the weaknesses. If it looks like some of the weaknesses can be fixed by tuning the few simple parameters you have, try to do so. When you finally have reached the stage where it seems impossible to achieve anything significant by tuning alone, pick the most significant remaining weakness, and try to add a single new evaluation term in order to fix this weakness alone. Test carefully in order to make sure you haven't introduced any new bugs, and that the change really is an improvement. It is surprising how often "obvious" improvements in the eval turns out to make the program weaker.

Finally, I would also like to thank the other contributors in this thread! This is truly a great forum.

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

Re: Evaluating bad bishops

Postby Oliver Uwira » 16 May 2006, 23:37

Tord Romstad wrote:Hi Oliver,

This was a fantastic post of yours. Your input is highly appreciated, and has given me lots of ideas and food for thought. In fact, it is the first post I've ever read on this forum which contained so many points of interest that I decided to print it out. :D


Thanks for the compliment. It seems like I have finally arrived in this forum. :) :)

An interesting point that somewhat relates to this issue is that I have discussed the matter of chess programming with a friend a couple of weeks ago, where he asked me what would be necessary to compete with the top engines. I answered that in my opinion a perfect project team would consist of a fairly strong chess player who is studying or studies computer science, a skilled programmer who could implement the chess players ideas efficiently and last but not least a mathematician who would be able to optimize or analyse the chosen algorithms. Maybe I'll be able to come up with a team like that one day... my problem is that I probably understand more about chess than about programming....

Tord Romstad wrote:I will need lots of time, thought and experimentation before I can make any intelligent remarks about the contents of your post. For now, I will just give you a simple warning:

Oliver Uwira wrote:I plan to do something like this with my new engine, but I don't know if it can work the way I described because my old engine just had a very dumb evaluation and therefore I'm lacking the experience...


Be very careful. When writing a new engine, the temptation to quickly add lots of advanced knowledge to the evaluation function is very big (probably even more so for a strong chess player like you). This is a really bad idea, and is almost guaranteed to result in a messy and buggy eval which is almost impossible to tune well (I learned this the hard way).


I've learned it the hard way as well, as my old engine was just a toy with which I tried everything I soaked up about chess programming and eventually it became such a mess that I decided to completely start over. The only thing I ever got right was IID but all the other sneaky tricks I was keen to try just backfired brutally...

Now I'm just ready with testing my new move generator and the hashing scheme and I hope I'll be able to resist the temptation to rush into the action like I did 2 years ago...

Tord Romstad wrote:Finally, I would also like to thank the other contributors in this thread! This is truly a great forum.

Tord :D :D


There's nothing left than to fully agree.

Viele Gr??e,
Oliver
Oliver Uwira
 
Posts: 31
Joined: 21 Apr 2006, 12:43
Location: Frankfurt, Germany

Re: Evaluating bad bishops

Postby Klaus Friedel » 17 May 2006, 07:24

Oliver Uwira wrote:An interesting point that somewhat relates to this issue is that I have discussed the matter of chess programming with a friend a couple of weeks ago, where he asked me what would be necessary to compete with the top engines. I answered that in my opinion a perfect project team would consist of a fairly strong chess player who is studying or studies computer science, a skilled programmer who could implement the chess players ideas efficiently and last but not least a mathematician who would be able to optimize or analyse the chosen algorithms. Maybe I'll be able to come up with a team like that one day... my problem is that I probably understand more about chess than about programming....

Viele Gr??e,
Oliver


Don't forget to convince a pedantic bookkeeper to join your team. You need someone to test your engine !
Writing a good chess engine is so much about trial and error an an huge amount of testing...

Klaus
Klaus Friedel
 
Posts: 31
Joined: 28 Sep 2004, 18:33

Re: Evaluating bad bishops

Postby Oliver Uwira » 17 May 2006, 08:25

Klaus Friedel wrote:Don't forget to convince a pedantic bookkeeper to join your team. You need someone to test your engine !
Writing a good chess engine is so much about trial and error an an huge amount of testing...
Klaus


Maybe this could also be a job for the mathematician... :D
Oliver Uwira
 
Posts: 31
Joined: 21 Apr 2006, 12:43
Location: Frankfurt, Germany

Re: Evaluating bad bishops

Postby Tord Romstad » 18 May 2006, 11:19

Oliver Uwira wrote:An interesting point that somewhat relates to this issue is that I have discussed the matter of chess programming with a friend a couple of weeks ago, where he asked me what would be necessary to compete with the top engines. I answered that in my opinion a perfect project team would consist of a fairly strong chess player who is studying or studies computer science, a skilled programmer who could implement the chess players ideas efficiently and last but not least a mathematician who would be able to optimize or analyse the chosen algorithms. Maybe I'll be able to come up with a team like that one day... my problem is that I probably understand more about chess than about programming....


I am an awful chess player and I don't know much about programming, but I am a fairly competent mathematician. If we can just find a skilled programmer, we have a dream team. :)

Tord Romstad wrote:Be very careful. When writing a new engine, the temptation to quickly add lots of advanced knowledge to the evaluation function is very big (probably even more so for a strong chess player like you). This is a really bad idea, and is almost guaranteed to result in a messy and buggy eval which is almost impossible to tune well (I learned this the hard way).


I've learned it the hard way as well, as my old engine was just a toy with which I tried everything I soaked up about chess programming and eventually it became such a mess that I decided to completely start over. The only thing I ever got right was IID but all the other sneaky tricks I was keen to try just backfired brutally...

Now I'm just ready with testing my new move generator and the hashing scheme and I hope I'll be able to resist the temptation to rush into the action like I did 2 years ago... [/quote]

This all sounds remarkably similar to my own story. Fortunately, my second attempt was much more successful than the first. :)

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

Re: Evaluating bad bishops

Postby Uri Blass » 18 May 2006, 16:18

Tord Romstad wrote:
Oliver Uwira wrote:An interesting point that somewhat relates to this issue is that I have discussed the matter of chess programming with a friend a couple of weeks ago, where he asked me what would be necessary to compete with the top engines. I answered that in my opinion a perfect project team would consist of a fairly strong chess player who is studying or studies computer science, a skilled programmer who could implement the chess players ideas efficiently and last but not least a mathematician who would be able to optimize or analyse the chosen algorithms. Maybe I'll be able to come up with a team like that one day... my problem is that I probably understand more about chess than about programming....


I am an awful chess player and I don't know much about programming, but I am a fairly competent mathematician. If we can just find a skilled programmer, we have a dream team. :)

Tord


I think that you are too modest.
I remember from another discussion that you got 5th place in the norway youth chess championship and my guess is that if you decide to play in tournaments you can probably get fide rating near 2000 without training but with trying to do your best in games.

I agree that there are better chess players and better programmers than you but you are probably better than most people in both subjects.

You are probably relatively better in mathematics than in chess or in programming but it does not mean that you are awful chess player.

Chess players that can beat fruit or glaurung in fast time control like 5 minutes/40 moves when the programs play without a knight are not so awful.

awful players even if they know that they need to trade pieces are going simply to blunder and give pieces for free.

Note that I am also relatively good in mathematics relative to other subjects and if I can be in such a team then certainly I need to get the job of the mathematician(programming is relatively what I do not know and there are many ideas that I even did not try in my chess program).

I think that talent to solve mathematical problems is an important advantage for a team because there is a good chance that a person who has a talent to solve mathematical problems will also have good ideas to suggest.


Some information about history result of me in a big competition(I guess that tord could do even better than me).

I scored 122 out of 150 in the american school mathematical examinations in 1986 when I was 18 years old and I remember it was something like place 100 out of more than 100,000 who took the exam.

I promoted to the second stage by scoring at least 100 but did not participate in it because my schoold got the exam too late and it was clear that I will not be able to participate in the american olympiad even if I promote(I know that 100 promote to the american olympiad so I think that I had 50% chances to promote and this was also my impression later when I looked at the exams of the second stage).

I remember that 6 schools in Israel took the exam in that year and only one person scored 132 that is better than me and he was also at grade 10 when I was at grade 12.


I found some information in google about the exam here
http://www.amt.canberra.edu.au/mc012.html

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

Re: Evaluating bad bishops

Postby kvuzon » 03 Jul 2008, 10:18

Terribly sorry to bump this thread but I hope it's better than to start a new one.
Wouldn't just giving your pawns on the opposite colour to your only remaining bishop a higher value than your other pawns without other rules be good enough? A simple evaluation gives deeper search and if the pawns are at the wrong squares they give a lower value therefore the program will not place them there? The proper value of the pawns are a bit difficult to predict so testing would be needed.

Or have you tested these scenarios well enough to be sure they require extensive knowledge?

Regards.
kvuzon
 
Posts: 3
Joined: 29 Jun 2008, 06:22

Re: Evaluating bad bishops

Postby Harald Johnsen » 03 Jul 2008, 13:54

I don't think that there is 'bad' bishops, it has more to do with weak squares. So you can not just look at pawns and bishops, other pieces are important too. Advancing pawns leave weakness in their wake, those weakness are less a problem when you can control those weak square with pieces (bishop/knight).
You can have weak squares wihout any bishop on the board.

For pawns on bishop path, you have mobility, blocked piece detection (with patterns or flood fill) and other heuristics to handle that.

HJ.
User avatar
Harald Johnsen
 
Posts: 43
Joined: 20 Aug 2007, 17:01
Location: France

Re: Evaluating bad bishops

Postby H.G.Muller » 03 Jul 2008, 14:58

In Joker I have an evaluation term that reduces the Bishop value in proportion to the number of own Pawns (as suggested by Kaufman), but I count Pawns on its own color more than on the opposite color to weight in the good- vs bad-Bishop effect.

Of course making the Bishop value dependent on number of Pawns, is equivalent to making Pawn value dependent on nr of Bishops: both cause a term in the evaluation that is proportional to the product of the number of Bishops and Pawns.
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Evaluating bad bishops

Postby kvuzon » 03 Jul 2008, 16:02

Thank you for your answers. I probably formulated myself badly as I wasn't interested in starting a discussion about theory. I just wondered if what I suggested above (I do not claim that I invented the idea nor anything else) would give good play in practice or if it had been tried with bad result.

Regards.
kvuzon
 
Posts: 3
Joined: 29 Jun 2008, 06:22


Return to Programming and Technical Discussions

Who is online

Users browsing this forum: No registered users and 39 guests