|
| 1 | +#ifndef WEIGHTS_H |
| 2 | +#define WEIGHTS_H |
| 3 | +#include "eval.h" |
| 4 | +namespace engine::eval { |
| 5 | +inline Value tempo = 20; |
| 6 | +inline Value PawnValue = 100; |
| 7 | +inline Value KnightValue = 320; |
| 8 | +inline Value BishopValue = 330; |
| 9 | +inline Value RookValue = 500; |
| 10 | +inline Value QueenValue = 900; |
| 11 | +inline Value fianchettoBonus = 20; |
| 12 | +inline Value trappedBishopPenalty = 60; |
| 13 | +inline Value centerWeight = 5; |
| 14 | +inline Value mopUpKingDistWeight = 5; |
| 15 | +inline Value mopUpEdgeDistWeight = 10; |
| 16 | +inline Value spaceWeight = 2; |
| 17 | +inline Value bishopPairMg = 25; |
| 18 | +inline Value bishopPairEg = 50; |
| 19 | +inline Value rookOpenFileMg = 25; |
| 20 | +inline Value rookOpenFileEg = 20; |
| 21 | +inline Value rookSemiOpenFileMg = 15; |
| 22 | +inline Value rookSemiOpenFileEg = 12; |
| 23 | +inline Value doubledPawnMg = 10; |
| 24 | +inline Value doubledPawnEg = 20; |
| 25 | +inline Value isolatedPawnMg = 15; |
| 26 | +inline Value isolatedPawnEg = 25; |
| 27 | +inline Value kingShelterBaseMg = 20; |
| 28 | +inline Value kingShelterBaseEg = 5; |
| 29 | +inline Value kingShelterDecayMg = 4; |
| 30 | +inline Value kingShelterDecayEg = 1; |
| 31 | +inline Value kqkDistWeight = 15; |
| 32 | +inline Value kqkEdgeWeight = 15; |
| 33 | +inline Value krkDistWeight = 5; |
| 34 | +inline Value krkEdgeWeight = 10; |
| 35 | +inline Value kpkWeight = 15; |
| 36 | +inline Value mgMobilityCnt[7][8] = { |
| 37 | + { 0, 0, 0, 0, 0, 0, 0, 0 }, |
| 38 | + { 0, 0, 0, 0, 0, 0, 0, 0 }, |
| 39 | + { -15, -8, -2, 4, 10, 16, 22, 28 }, |
| 40 | + { -20, -12, -4, 5, 14, 23, 32, 40 }, |
| 41 | + { -25, -15, -5, 5, 15, 25, 35, 45 }, |
| 42 | + { -30, -18, -6, 6, 18, 30, 42, 55 }, |
| 43 | + { -10, -5, 0, 5, 10, 15, 20, 25 } |
| 44 | +}; |
| 45 | +inline Value egMobilityCnt[7][8] = { |
| 46 | + { 0, 0, 0, 0, 0, 0, 0, 0 }, |
| 47 | + { 0, 0, 0, 0, 0, 0, 0, 0 }, |
| 48 | + { -20, -12, -4, 5, 14, 23, 32, 40 }, |
| 49 | + { -25, -15, -5, 5, 16, 27, 38, 50 }, |
| 50 | + { -30, -18, -6, 6, 18, 30, 42, 55 }, |
| 51 | + { -35, -22, -8, 8, 22, 35, 48, 60 }, |
| 52 | + { -15, -8, -2, 4, 10, 16, 22, 28 } |
| 53 | +}; |
| 54 | +inline Value kingTropismMg[7] = { 0, 0, 3, 2, 2, 5, 0 }; |
| 55 | +inline Value kingTropismEg[7] = { 0, 0, 2, 2, 3, 4, 0 }; |
| 56 | +inline Value passedBonusMg[7] = { 0, 5, 15, 40, 80, 140, 200 }; |
| 57 | +inline Value passedBonusEg[7] = { 0, 10, 30, 70, 140, 230, 350 }; |
| 58 | +inline Value mg_knight_table[64] = { -50, -40, -30, -30, -30, -30, -40, -50, -40, -20, 0, 5, 5, 0, -20, -40, |
| 59 | + -30, 5, 10, 15, 15, 10, 5, -30, -30, 0, 15, 20, 20, 15, 0, -30, |
| 60 | + -30, 5, 15, 20, 20, 15, 5, -30, -30, 0, 10, 15, 15, 10, 0, -30, |
| 61 | + -40, -20, 0, 0, 0, 0, -20, -40, -50, -40, -30, -30, -30, -30, -40, -50 }; |
| 62 | +inline Value mg_bishop_table[64] = { -20, -10, -10, -10, -10, -10, -10, -20, -10, 0, 0, 0, 0, 0, 0, -10, |
| 63 | + -10, 0, 10, 10, 10, 10, 0, -10, -10, 0, 5, 10, 10, 5, 0, -10, |
| 64 | + -10, 5, 5, 10, 10, 5, 5, -10, -10, 0, 10, 10, 10, 10, 0, -10, |
| 65 | + -10, 0, 0, 0, 0, 0, 0, -10, -20, -10, -10, -10, -10, -10, -10, -20 }; |
| 66 | +inline Value mg_rook_table[64] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, |
| 67 | + 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, |
| 68 | + 5, 5, 5, 0, 10, 15, 15, 15, 15, 15, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0 }; |
| 69 | +inline Value mg_king_table[64] = { -30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, |
| 70 | + -30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, |
| 71 | + -20, -30, -30, -40, -40, -30, -30, -20, -10, -20, -20, -20, -20, -20, -20, -10, |
| 72 | + 20, 20, 0, 0, 0, 0, 20, 20, 20, 30, 10, 0, 0, 10, 30, 20 }; |
| 73 | +inline Value mg_queen_table[64] = { -20, -10, -10, -5, -5, -10, -10, -20, -10, 0, 5, 0, 0, 0, 0, -10, |
| 74 | + -10, 5, 5, 5, 5, 5, 0, -10, 0, 0, 5, 5, 5, 5, 0, -5, |
| 75 | + -5, 0, 5, 5, 5, 5, 0, -5, -10, 0, 5, 5, 5, 5, 0, -10, |
| 76 | + -10, 0, 0, 0, 0, 0, 0, -10, -20, -10, -10, -5, -5, -10, -10, -20 }; |
| 77 | +inline Value eg_knight_table[64] = { -50, -40, -20, -20, -20, -20, -40, -50, -40, -10, 5, 10, 10, 5, -10, -40, |
| 78 | + -30, 10, 20, 25, 25, 20, 10, -30, -30, 15, 25, 30, 30, 25, 15, -30, |
| 79 | + -30, 15, 25, 30, 30, 25, 15, -30, -30, 10, 20, 25, 25, 20, 10, -30, |
| 80 | + -40, -10, 5, 10, 10, 5, -10, -40, -50, -40, -20, -20, -20, -20, -40, -50 }; |
| 81 | +inline Value eg_bishop_table[64] = { -10, -5, -5, -5, -5, -5, -5, -10, -5, 5, 10, 10, 10, 10, 5, -5, -5, 10, 15, 20, 20, 15, |
| 82 | + 10, -5, -5, 10, 20, 25, 25, 20, 10, -5, -5, 10, 20, 25, 25, 20, 10, -5, -5, 10, 15, 20, |
| 83 | + 20, 15, 10, -5, -5, 5, 10, 10, 10, 10, 5, -5, -10, -5, -5, -5, -5, -5, -5, -10 }; |
| 84 | +inline Value eg_rook_table[64] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 15, 10, 5, 0, 0, 5, 10, 15, 15, 10, |
| 85 | + 5, 0, 0, 5, 10, 15, 15, 10, 5, 0, 10, 15, 20, 25, 25, 20, 15, 10, 10, 15, 20, 25, |
| 86 | + 25, 20, 15, 10, 20, 25, 30, 35, 35, 30, 25, 20, 0, 0, 0, 5, 5, 0, 0, 0 }; |
| 87 | +inline Value eg_king_table[64] = { -50, -40, -30, -20, -20, -30, -40, -50, -40, -20, 0, 10, 10, 0, -20, -40, |
| 88 | + -30, 0, 20, 30, 30, 20, 0, -30, -20, 10, 30, 40, 40, 30, 10, -20, |
| 89 | + -20, 10, 30, 40, 40, 30, 10, -20, -30, 0, 20, 30, 30, 20, 0, -30, |
| 90 | + -40, -20, 0, 10, 10, 0, -20, -40, -50, -40, -30, -20, -20, -30, -40, -50 }; |
| 91 | +inline Value eg_queen_table[64] = { -10, -5, -5, 0, 0, -5, -5, -10, -5, 0, 5, 5, 5, 5, 0, -5, -5, 5, 10, 15, 15, 10, |
| 92 | + 5, -5, -5, 10, 15, 20, 20, 15, 10, -5, -5, 10, 15, 20, 20, 15, 10, -5, -5, 5, 10, 15, |
| 93 | + 15, 10, 5, -5, -5, 0, 5, 5, 5, 5, 0, -5, -10, -5, -5, 0, 0, -5, -5, -10 }; |
| 94 | +inline Value mg_pawn_table[56] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -2, 2, |
| 95 | + 5, 5, 2, -2, -5, -10, -5, 10, 20, 20, 10, -5, -10, -20, -10, 25, 40, 40, 25, |
| 96 | + -10, -20, -35, -20, 50, 80, 80, 50, -20, -35, -55, -40, 90, 130, 130, 90, -40, -55 }; |
| 97 | +inline Value eg_pawn_table[56] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -2, 2, |
| 98 | + 5, 5, 2, -2, -5, -10, -5, 10, 20, 20, 10, -5, -10, -20, -10, 30, 55, 55, 30, |
| 99 | + -10, -20, -35, -20, 70, 110, 110, 70, -20, -35, -60, -45, 120, 180, 180, 120, -45, -60 }; |
| 100 | +inline Value developedMg = 8; |
| 101 | +inline Value developedEg = 4; |
| 102 | +inline Value outpostBonusKnight[2] = { 15, 30 }; |
| 103 | +inline Value outpostBonusBishop[2] = { 10, 25 }; |
| 104 | +inline Value kingProtector[6][2] = { |
| 105 | + { 0, 0 }, |
| 106 | + { 8, 12 }, |
| 107 | + { 5, 10 }, |
| 108 | + { 10, 15 }, |
| 109 | + { 3, 5 }, |
| 110 | + { 0, 0 } |
| 111 | +}; |
| 112 | +inline Value threatByMinor[7][2] = { |
| 113 | + { 0, 0 }, |
| 114 | + { 0, 0 }, |
| 115 | + { 15, 25 }, |
| 116 | + { 15, 25 }, |
| 117 | + { 25, 35 }, |
| 118 | + { 35, 50 } |
| 119 | +}; |
| 120 | +inline Value threatByRook[7][2] = { |
| 121 | + { 0, 0 }, |
| 122 | + { 0, 0 }, |
| 123 | + { 10, 15 }, |
| 124 | + { 10, 15 }, |
| 125 | + { 20, 25 }, |
| 126 | + { 25, 35 } |
| 127 | +}; |
| 128 | +inline Value hangingScore = 70; |
| 129 | +inline Value overloadScore = 25; |
| 130 | +inline Value threatByRankScore = 10; |
| 131 | +inline Value minorImWt = 30; |
| 132 | +inline Value bishopImWt = 15; |
| 133 | +inline Value rookImWt = 20; |
| 134 | +inline Value queenImWt = 50; |
| 135 | +inline Value rammedPawnPenalty = 10; |
| 136 | +inline Value rookOnSeventhBonus = 30; |
| 137 | +inline Value earlyQueenPenalty = 5; |
| 138 | +} // namespace engine::eval |
| 139 | +#endif |
0 commit comments