Author: Gerd Isenberg
Date: 06:32:07 01/31/02
Go up one level in this thread
On January 31, 2002 at 05:25:32, Gerd Isenberg wrote: >On January 30, 2002 at 19:56:20, Dieter Buerssner wrote: > >>On January 30, 2002 at 17:59:18, Gerd Isenberg wrote: >> >>>I use some easy generated Bitboards for Pawns, blocked by enemy Pawns (Widder) >>>and Backward Pawns. If most of the pawns are Widder or backward but no Hebel >>>(pawn may capture pawn), the pawn position is considered as blocked. >> >>Gerd, this all sounds very interesting. How do you detect backward pawns and >>"Hebel" (pawn levers?) by Bitboard operations? Would you consider in white >>Pa6,b5, black Pa7 the pawn b5 backward? I thought about some such things, but I >>found it not very easy to find convincing rules without many exceptions and easy >>to calculater for the "blockedness" of the pawn structure. >> >>Regards, >>Dieter > >First there is a set of polymorph functions to detetermin pawn targets and >attacks of either color. Polymorph in the case of having functions which >implicitly use CNodes PawnBitboards of either color, or got the BitBoard as >actual parameter, and the color of pawns of course. > >Another function (GetPawnTargetAttacks(BitBoard bb, unsigned int color)) gets >all pawn attacks from potential targets. This functions is used to determine all >pawns not defendable in at least one pawn push (considers also double pawn >pushes from the second/seventh rank, anding with all Pawns which are not >currently defended by own pawns. > >With this set of pawns i look whether their targets are dominated by enemy pawn >controls. This is done by anding this set with the set of ((enemy pawn controls >and not own pawn controls) or (enemy pawn controls twice and not own pawn >controls twice)). If i use this result set as a source for GetAllTargets with >opposite color, i get the BitBoard of "backward" pawns. > >As you may see this implementation is a little pragmatic - but mostly used to >get a hint of blocking positions (together with Widders). > >In pawn evaluation i do something more, specially handling backward candidates, >if they already reached ememies Side or considering also pawns as backward, if >they have one save target but are backward then. >There is also a set of "open" pawns to determine open backwards (echte Hinker) >and candidates. > >Determing a set of hebelpawns for one side is quite simple: > AllPawnAttacks(cl^1) & GetPawnBB(cl); > >Determing a set of Widders: >AllSinglePawnTargets(AllSinglePawnTargets(cl) & GetPawnBB(cl^1), cl^1) > & GetPawnBB(cl) & ~GetHebelBB(.., cl); > >Regards, >Gerd I'm at work and do not have a view in my sources actually. As i remember now, the part, determing blocked pawn positions is slightly different, as i told in the posts before, even if the statements of determing backward-, hebel- and widder pawns are correct. But i also consider (double)pawns, blocked by own widders. The potential of defending pawns by pawn pushes doesn't matter first. I use all single targets of none hebel pawns. Then i look, whether these targets are blocked by enemy pawns, or dominated by enemy pawn controls, and last, blocked by own pawns which are aleady member of this target set. When the remainig set, determined from the "forbidden or unsafe" targets via AllSinglePawnTargets with opposite color, is equal to the set of all pawns of the color, which simply means "there is no or no safe pawn push and no hebel", the pawn position is considered as blocked from colors point of view. This implies, that looking for pawn push defenders before, to determine backwards is not neccassary here, because all pawns are backward or blocked now. Gerd
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.