info-gnu-chess
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Customizable score weights


From: Xan Gregg
Subject: Re: Customizable score weights
Date: Wed, 12 Feb 2003 20:21:54 -0500

I like the approach, and will look at using it in 5.07. Probably
as easy for me to cut and paste from your e-mail as merge the
changes from 5.05 as 5.06 introduces a lot of change.

Great. Below is the entire changed list of constants in case you do decide to incorporate them. Hopefully, this will save you some tedious editing.

xan

-------- from NEW eval.h --------

typedef struct
{  /* all values in centipawns from perspective of current side */
   int tradePieces;     /* reward for piece trade when ahead in material */
   int tradePawns;      /* reward for pawn trade when behind in material */
   int hungPenalty;     /* penalty for hung pieces */
   int rookMoved;       /* penalty for rook having been moved */
   int kingMoved;       /* penalty for king having been moved */
   int notCastled;      /* penalty for not castling */
int pFactor; /* ~550, larger numbers decrease value of passed pawns */ int earlyMinorRepeat; /* penalty for early repeat of minor piece moves */

   /* pawns */
   int eightPawns;      /* penalty for having all eight pawns */
int stonewall; /* penalty for opponent having stonewall pawns (3 side-by-side) */
   int lockedPawns;     /* penalty for locked pawns (per occurrence) */
   int earlyWingPawnMove;       /* penalty for early wing pawn move */
   int earlyCenterRepeat;       /* */
   int backwardPawnEarly;       /* penalty for backward pawn in opening */
int backwardPawnMiddle; /* penalty for backward pawn in middle game */
   int backwardPawnLate;        /* penalty for backward pawn in end-game */
   int doubledPawnEarly;        /* penalty for doubled pawn in opening */
   int doubledPawnMiddle;       /* penalty for doubled pawn in middle game */
   int doubledPawnLate;         /* penalty for doubled pawn in end-game */
   int pawnBaseAttack;          /* penalty for having pawn base under attack */
int blockedPawn; /* penalty for a blocked d or e pawn on 2nd rank */
   int connectedPassedPawn;     /* reward for connected passed pawns */
   int pawnNearKing;            /* reward for pawn near enemy king */
   int attackWeakPawn;          /* reward for attacking a weak enemy pawn */
   int fianchettoTarget;        /* penalty for being target of fianchetto */

   /* knights */
   int knightOnRim;                     /* penalty for knight on edge of board 
*/
int outpostKnight; /* reward for knight in outpost (no pawns attacks possible) */
   int pinnedKnight;            /* penalty for pinned knight */
   int knightTrapped;           /* penalty for knight unable to move safely */

   /* bishops */
   int doubledBishops;          /* reward for adjacent bishops */
int outpostBishop; /* reward for bishop in outpost (no pawns attacks possible) */
   int fianchetto;                      /* reward for fianchetto bishop */
   int goodEndingBishop;        /* reward (not used) */
   int bishopTrapped;           /* penalty for bishop unable to move safely */
   int pinnedBishop;            /* penalty for pinned bishop */

   /* rooks */
   int rook7Rank;                       /* reward */
   int rooks7Rank;                      /* reward */
   int rookHalfFile;            /* reward */
   int rookOpenFile;            /* reward */
   int rookBehindPP;            /* reward */
   int rookInFrontPP;           /* penalty */
   int pinnedRook;                      /* penalty */
   int rookTrapped;                     /* penalty */
   int rookLiberated;           /* reward for rook out in the open? */

   /* queen */
   int earlyQueenMove;          /* penalty */
   int queenNearKing;           /* reward */
   int pinnedQueen;                     /* penalty */
   int queenNotPresent;         /* penalty */

   /* king */
   int kingOpenFile;            /* penalty */
   int kingOpenFile1;           /* penalty */
   int attackKing;                      /* reward */
   int defendKind;                      /* reward */
   int hOpen;                           /* penalty */
   int gOpen;                           /* penalty */
   int kingDefenderDeficit;     /* penalty */
   int kingBackRankWeak;        /* penalty */
   int rupture;                         /* penalty */

} Profile;

extern Profile profile; /* the current profile in use */

#define TRADEPIECE   profile.tradePieces
#define TRADEPAWNS   profile.tradePawns
#define HUNGPENALTY  profile.hungPenalty
#define ROOKMOVED    profile.rookMoved
#define KINGMOVED    profile.kingMoved
#define NOTCASTLED   profile.notCastled
#define PFACTOR      profile.pFactor
#define EARLYMINORREPEAT profile.earlyMinorRepeat

/***********/
/*  Pawns  */
/***********/
#define EIGHT_PAWNS         profile.eightPawns
#define STONEWALL           profile.stonewall
#define LOCKEDPAWNS         profile.lockedPawns
#define EARLYWINGPAWNMOVE profile.earlyWingPawnMove
#define EARLYCENTERPREPEAT profile.earlyCenterRepeat
#define BACKWARDPAWN    (-profile.backwardPawnEarly-phase)
#define DOUBLEDPAWN     (-profile.doubledPawnEarly-phase)
#define PAWNBASEATAK    profile.pawnBaseAttack
#define BLOCKDEPAWN     profile.blockedPawn
#define CONNECTEDPP         profile.connectedPassedPawn
#define PAWNNEARKING    profile.pawnNearKing
#define ATAKWEAKPAWN    profile.attackWeakPawn
#define FIANCHETTO_TARGET profile.fianchettoTarget


/*************/
/*  Knights  */
/*************/
#define KNIGHTONRIM          profile.knightOnRim
#define OUTPOSTKNIGHT    profile.outpostKnight
#define PINNEDKNIGHT     profile.pinnedKnight
#define KNIGHTTRAPPED    profile.knightTrapped


/*************/
/*  Bishops  */
/*************/
#define DOUBLEDBISHOPS   profile.doubledBishops
#define OUTPOSTBISHOP    profile.outpostBishop
#define FIANCHETTO           profile.fianchetto
#define GOODENDINGBISHOP profile.goodEndingBishop
#define BISHOPTRAPPED    profile.bishopTrapped
#define PINNEDBISHOP     profile.pinnedBishop

/***********/
/*  Rooks  */
/***********/
#define ROOK7RANK      profile.rook7Rank
#define ROOKS7RANK     profile.rooks7Rank
#define ROOKHALFFILE   profile.rookHalfFile
#define ROOKOPENFILE   profile.rookOpenFile
#define ROOKBEHINDPP   profile.rookBehindPP
#define ROOKINFRONTPP  profile.rookInFrontPP
#define PINNEDROOK     profile.pinnedRook
#define ROOKTRAPPED    profile.rookTrapped
#define ROOKLIBERATED  profile.rookLiberated

/***********/
/*  Queen  */
/***********/
#define EARLYQUEENMOVE  profile.earlyQueenMove
#define QUEENNEARKING   profile.queenNearKing
#define PINNEDQUEEN     profile.pinnedQueen
#define QUEEN_NOT_PRESENT profile.queenNotPresent

/**********/
/*  King  */
/**********/
#define KINGOPENFILE   profile.kingOpenFile
#define KINGOPENFILE1  profile.kingOpenFile1
#define ATAKKING       profile.attackKing
#define DEFENDKING     profile.defendKind
#define HOPEN          profile.hOpen
#define GOPEN          profile.gOpen
#define KING_DEFENDER_DEFICIT  profile.kingDefenderDeficit
#define KING_BACK_RANK_WEAK    profile.kingBackRankWeak
#define RUPTURE        profile.rupture

-------- from NEW eval.c --------

Profile defaultProfile; /* profile used for values not otherwise provided */
Profile profile;        /* the current profile in use */

void InitDefaultProfile()
{       /* defaults from 5.05 eval.h */
        defaultProfile.tradePieces = 4;
        defaultProfile.tradePawns = 8;
        defaultProfile.hungPenalty = -20;
        defaultProfile.rookMoved = -20;
        defaultProfile.kingMoved = -20;
        defaultProfile.notCastled = -8;
        defaultProfile.pFactor = 550;
        defaultProfile.earlyMinorRepeat = -7;
   /* pawns */
        defaultProfile.eightPawns = -10;
        defaultProfile.stonewall = -10;
        defaultProfile.lockedPawns = -10;
        defaultProfile.earlyWingPawnMove = -6;
        defaultProfile.earlyCenterRepeat = -6;
        defaultProfile.backwardPawnEarly = -8;
        defaultProfile.backwardPawnMiddle = -11;
        defaultProfile.backwardPawnLate = -15;
        defaultProfile.doubledPawnEarly = -8;
        defaultProfile.doubledPawnMiddle = -11;
        defaultProfile.doubledPawnLate = -15;
        defaultProfile.pawnBaseAttack = -18;
        defaultProfile.blockedPawn = -48;
        defaultProfile.connectedPassedPawn = 50;
        defaultProfile.pawnNearKing = 40;
        defaultProfile.attackWeakPawn = 2;
        defaultProfile.fianchettoTarget = -13;
   /* knights */
        defaultProfile.knightOnRim = -13;
        defaultProfile.outpostKnight = 10;
        defaultProfile.pinnedKnight = -30;
        defaultProfile.knightTrapped = -50;     /* -250; */
   /* bishops */
        defaultProfile.doubledBishops = 18;
        defaultProfile.outpostBishop = 8;
        defaultProfile.fianchetto = 8;
        defaultProfile.goodEndingBishop = 16;
        defaultProfile.bishopTrapped = -50;     /* -250; */
        defaultProfile.pinnedBishop = -30;
   /* rooks */
        defaultProfile.rook7Rank = 30;
        defaultProfile.rooks7Rank = 30;
        defaultProfile.rookHalfFile = 5;
        defaultProfile.rookOpenFile = 6;
        defaultProfile.rookBehindPP = 6;
        defaultProfile.rookInFrontPP = -10;
        defaultProfile.pinnedRook = -50;
        defaultProfile.rookTrapped = -10;
        defaultProfile.rookLiberated = 40;
   /* queen */
        defaultProfile.earlyQueenMove = -40;
        defaultProfile.queenNearKing = 12;
        defaultProfile.pinnedQueen = -90;
        defaultProfile.queenNotPresent = -25;
   /* king */
        defaultProfile.kingOpenFile = -10;
        defaultProfile.kingOpenFile1 = -6;
        defaultProfile.attackKing = 10;
        defaultProfile.defendKind = 6;
        defaultProfile.hOpen = -600;
        defaultProfile.gOpen = -30;
        defaultProfile.kingDefenderDeficit = -50;
        defaultProfile.kingBackRankWeak = -40;
        defaultProfile.rupture = -20;
        
        profile = defaultProfile;
}






reply via email to

[Prev in Thread] Current Thread [Next in Thread]