Very interesting - thanks for giving this a shot, Daniel!
In the 3 main parts I outlined the pre-conditions that must be present for the directional chains/triads to be effective. It looks like you accounted for the defending King's position and for the interlocking chains (including the congestion points, forming a barrier) to be present, but what about the material count?
I estimate the total non-pawn material count for the attacking side has to be at least 20-22 points (where Q=10, R=5, B=3.5, N=3.5, P=1) AND the Queens must also be on the board. This is extremely important, or else the directional interlocking chain won't be worth much at all.
We need a lot of pieces to be on the board for the chains to be effective, so that on one hand the attacking side is able to sacrifice material and still have enough firepower to finish off the attack AND (just as important) the defending side will suffer from congestion, where the defending pieces will interfere with their King's escape.
In addition, these pre-conditions, when present, must trigger a further bonus for Kingside pawn storms, encouraging the g- and h-pawns to also join in the attack and either open lines or further extend the existing chain (to f6 or g6).
IF all these conditions are factored in, I would estimate a f5-pawn triad (a chain of at least 3 pawns or longer, d3-e4-f5) to be worth more than an e5-triad, and an f6 or g6-triad to be worth even more. Maybe 25 cp for an e5 triad, 35 cp for f5, and 40+ for f6 and g6, but you have some freedom to tinker with these.
All the basic criteria are mentioned in the 3 parts I already posted. I am going to post an addendum with further (counter)examples, when I have more time.
Regards,
CL
cdani wrote:Finally I tried this on Andscacs, but without luck
Code: Select all
#define pc1 25
#define pc2 20
//pointy chains
if (COL(opponent_king) >= 4) {
if (me == white) {
if ((Pawns(white) & 0x1008040000ULL) == 0x1008040000ULL) { //c3 d4 e5
i += ((Pawns(black) & 0x100800000000ULL) == 0x100800000000ULL) ? pc1 : pc2; //d5 e6
}
if ((Pawns(white) & 0x201008000000ULL) == 0x201008000000ULL) { //d4 e5 f6
i += ((Pawns(black) & E6) == E6) ? pc1 : pc2;
}
if ((Pawns(white) & 0x2010080000ULL) == 0x2010080000ULL) { //d3 e4 f5
i += ((Pawns(black) & 0x1008000000ULL) == 0x1008000000ULL) ? pc1 : pc2; //d4 e5
}
if ((Pawns(white) & 0x402010000000ULL) == 0x402010000000ULL) { //e4 f5 g6
i += ((Pawns(black) & F6) == F6) ? pc1 : pc2;
}
}
else {
if ((Pawns(black) & 0x40810000000ULL) == 0x40810000000ULL) { //c6 d5 e4
i += ((Pawns(white) & 0x8100000ULL) == 0x8100000ULL) ? pc1 : pc2; //d4 e3
}
if ((Pawns(black) & 0x810200000ULL) == 0x810200000ULL) { //d5 e4 f3
i += ((Pawns(white) & E3) == E3) ? pc1 : pc2;
}
if ((Pawns(black) & 0x81020000000ULL) == 0x81020000000ULL) { //d6 e5 f4
i += ((Pawns(white) & 0x810000000ULL) == 0x810000000ULL) ? pc1 : pc2; //d5 e4
}
if ((Pawns(black) & 0x1020400000ULL) == 0x1020400000ULL) { //e5 f4 g3
i += ((Pawns(white) & F3) == F3) ? pc1 : pc2;
}
}
}
Also tried with 15 and 10. May be I will try with even lower bonus.