[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;
}