From f1f887b6d7509b844696b7855d058d02d6ecf295 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 27 Sep 2008 23:13:03 +0100 Subject: [PATCH] Use relative values in piece square tables So that will be automatically changed when pieces values change. Signed-off-by: Marco Costalba --- src/psqtab.h | 352 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 188 insertions(+), 164 deletions(-) rewrite src/psqtab.h (82%) diff --git a/src/psqtab.h b/src/psqtab.h dissimilarity index 82% index 0607c2d..14156ec 100644 --- a/src/psqtab.h +++ b/src/psqtab.h @@ -1,164 +1,188 @@ -/* - Glaurung, a UCI chess playing engine. - Copyright (C) 2004-2008 Tord Romstad - - Glaurung is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Glaurung is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - - -#if !defined(PSQTAB_H_INCLUDED) -#define PSQTAB_H_INCLUDED - -//// -//// Includes -//// - -#include "position.h" - - -//// -//// Variables -//// - -static const int MgPST[][64] = { - { }, - { // Pawn - 0, 0, 0, 0, 0, 0, 0, 0, - 166, 192, 204, 216, 216, 204, 192, 166, - 166, 192, 210, 242, 242, 210, 192, 166, - 166, 192, 220, 268, 268, 220, 192, 166, - 166, 192, 220, 242, 242, 220, 192, 166, - 166, 192, 210, 216, 216, 210, 192, 166, - 166, 192, 204, 216, 216, 204, 192, 166, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - { // Knight - 704, 730, 756, 768, 768, 756, 730, 704, - 743, 768, 794, 807, 807, 794, 768, 743, - 781, 807, 832, 844, 844, 832, 807, 781, - 807, 832, 857, 870, 870, 857, 832, 807, - 820, 844, 870, 883, 883, 870, 844, 820, - 820, 844, 870, 883, 883, 870, 844, 820, - 781, 807, 832, 844, 844, 832, 807, 781, - 650, 768, 794, 807, 807, 794, 768, 650 - }, - { // Bishop - 786, 786, 792, 797, 797, 792, 786, 786, - 812, 832, 827, 832, 832, 827, 832, 812, - 817, 827, 842, 837, 837, 842, 827, 817, - 822, 832, 837, 852, 852, 837, 832, 822, - 822, 832, 837, 852, 852, 837, 832, 822, - 817, 827, 842, 837, 837, 842, 827, 817, - 812, 832, 827, 832, 832, 827, 832, 812, - 812, 812, 817, 822, 822, 817, 812, 812 - }, - { // Rook - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267, - 1267, 1275, 1282, 1289, 1289, 1282, 1275, 1267 - }, - { // Queen - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560 - }, - { // King - 302, 328, 276, 225, 225, 276, 328, 302, - 276, 302, 251, 200, 200, 251, 302, 276, - 225, 251, 200, 149, 149, 200, 251, 225, - 200, 225, 175, 124, 124, 175, 225, 200, - 175, 200, 149, 98, 98, 149, 200, 175, - 149, 175, 124, 72, 72, 124, 175, 149, - 124, 149, 98, 47, 47, 98, 149, 124, - 98, 124, 72, 21, 21, 72, 124, 98, - } -}; - - -static const int EgPST[][64] = { - { }, - { // Pawn - 0, 0, 0, 0, 0, 0, 0, 0, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - { // Knight - 730, 756, 781, 794, 794, 781, 756, 730, - 756, 781, 807, 820, 820, 807, 781, 756, - 781, 807, 832, 844, 844, 832, 807, 781, - 794, 820, 844, 857, 857, 844, 820, 794, - 794, 820, 844, 857, 857, 844, 820, 794, - 781, 807, 832, 844, 844, 832, 807, 781, - 756, 781, 807, 820, 820, 807, 781, 756, - 730, 756, 781, 794, 794, 781, 756, 730 - }, - { // Bishop - 786, 802, 809, 817, 817, 809, 802, 786, - 802, 817, 825, 832, 832, 825, 817, 802, - 809, 825, 832, 839, 839, 832, 825, 809, - 817, 832, 839, 847, 847, 839, 832, 817, - 817, 832, 839, 847, 847, 839, 832, 817, - 809, 825, 832, 839, 839, 832, 825, 809, - 802, 817, 825, 832, 832, 825, 817, 802, - 786, 802, 809, 817, 817, 809, 802, 786 - }, - { // Rook - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282 - }, - { // Queen - 2499, 2520, 2530, 2540, 2540, 2530, 2520, 2499, - 2520, 2540, 2550, 2560, 2560, 2550, 2540, 2520, - 2530, 2550, 2560, 2570, 2570, 2560, 2550, 2530, - 2540, 2560, 2570, 2580, 2580, 2570, 2560, 2540, - 2540, 2560, 2570, 2580, 2580, 2570, 2560, 2540, - 2530, 2550, 2560, 2570, 2570, 2560, 2550, 2530, - 2520, 2540, 2550, 2560, 2560, 2550, 2540, 2520, - 2499, 2520, 2530, 2540, 2540, 2530, 2520, 2499 - }, - { // King - 16, 78, 108, 139, 139, 108, 78, 16, - 78, 139, 170, 200, 200, 170, 139, 78, - 108, 170, 200, 230, 230, 200, 170, 108, - 139, 200, 230, 261, 261, 230, 200, 139, - 139, 200, 230, 261, 261, 230, 200, 139, - 108, 170, 200, 230, 230, 200, 170, 108, - 78, 139, 170, 200, 200, 170, 139, 78, - 16, 78, 108, 139, 139, 108, 78, 16 - } -}; - - -#endif // !defined(PSQTAB_H_INCLUDED) +/* + Glaurung, a UCI chess playing engine. + Copyright (C) 2004-2008 Tord Romstad + + Glaurung is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Glaurung is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#if !defined(PSQTAB_H_INCLUDED) +#define PSQTAB_H_INCLUDED + +//// +//// Includes +//// + +#include "position.h" +#include "value.h" + + +//// +//// Variables +//// + +static const Value MP = PawnValueMidgame; +static const Value MK = KnightValueMidgame; +static const Value MB = BishopValueMidgame; +static const Value MR = RookValueMidgame; +static const Value MQ = QueenValueMidgame; + +static const int MgPST[][64] = { + { }, + {// Pawn + // A B C D E F G H + 0, 0, 0, 0, 0, 0, 0, 0, + MP-38, MP-12, MP- 0, MP+12, MP+12, MP- 0, MP-12, MP-38, + MP-38, MP-12, MP+ 6, MP+38, MP+38, MP+ 6, MP-12, MP-38, + MP-38, MP-12, MP+16, MP+64, MP+64, MP+16, MP-12, MP-38, + MP-38, MP-12, MP+16, MP+38, MP+38, MP+16, MP-12, MP-38, + MP-38, MP-12, MP+ 6, MP+12, MP+12, MP+ 6, MP-12, MP-38, + MP-38, MP-12, MP- 0, MP+12, MP+12, MP- 0, MP-12, MP-38, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + {// Knight + // A B C D E F G H + MK-128, MK-102, MK-76, MK-64, MK-64, MK-76, MK-102, MK-128, + MK- 89, MK- 64, MK-38, MK-25, MK-25, MK-38, MK- 64, MK- 89, + MK- 51, MK- 25, MK- 0, MK+12, MK+12, MK- 0, MK- 25, MK- 51, + MK- 25, MK- 0, MK+25, MK+38, MK+38, MK+25, MK- 0, MK- 25, + MK- 12, MK+ 12, MK+38, MK+51, MK+51, MK+38, MK+ 12, MK- 12, + MK- 12, MK+ 12, MK+38, MK+51, MK+51, MK+38, MK+ 12, MK- 12, + MK- 51, MK- 25, MK- 0, MK+12, MK+12, MK- 0, MK- 25, MK- 51, + MK-182, MK- 64, MK-38, MK-25, MK-25, MK-38, MK- 64, MK-182 + }, + {// Bishop + // A B C D E F G H + MB-46, MB-46, MB-40, MB-35, MB-35, MB-40, MB-46, MB-46, + MB-20, MB- 0, MB- 5, MB- 0, MB- 0, MB- 5, MB- 0, MB-20, + MB-15, MB- 5, MB+10, MB+ 5, MB+ 5, MB+10, MB- 5, MB-15, + MB-10, MB- 0, MB+ 5, MB+20, MB+20, MB+ 5, MB- 0, MB-10, + MB-10, MB- 0, MB+ 5, MB+20, MB+20, MB+ 5, MB- 0, MB-10, + MB-15, MB- 5, MB+10, MB+ 5, MB+ 5, MB+10, MB- 5, MB-15, + MB-20, MB- 0, MB- 5, MB- 0, MB- 0, MB- 5, MB- 0, MB-20, + MB-20, MB-20, MB-15, MB-10, MB-10, MB-15, MB-20, MB-20 + }, + {// Rook + // A B C D E F G H + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18, + MR-18, MR-10, MR-3, MR+4, MR+4, MR-3, MR-10, MR-18 + }, + {// Queen + //A B C D E F G H + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ, + MQ, MQ, MQ, MQ, MQ, MQ, MQ, MQ + }, + {// King + //A B C D E F G H + 302, 328, 276, 225, 225, 276, 328, 302, + 276, 302, 251, 200, 200, 251, 302, 276, + 225, 251, 200, 149, 149, 200, 251, 225, + 200, 225, 175, 124, 124, 175, 225, 200, + 175, 200, 149, 98, 98, 149, 200, 175, + 149, 175, 124, 72, 72, 124, 175, 149, + 124, 149, 98, 47, 47, 98, 149, 124, + 98, 124, 72, 21, 21, 72, 124, 98 + } +}; + +static const Value EP = PawnValueEndgame; +static const Value EK = KnightValueEndgame; +static const Value EB = BishopValueEndgame; +static const Value ER = RookValueEndgame; +static const Value EQ = QueenValueEndgame; + +static const int EgPST[][64] = { + { }, + {// Pawn + //A B C D E F G H + 0, 0, 0, 0, 0, 0, 0, 0, + EP, EP, EP, EP, EP, EP, EP, EP, + EP, EP, EP, EP, EP, EP, EP, EP, + EP, EP, EP, EP, EP, EP, EP, EP, + EP, EP, EP, EP, EP, EP, EP, EP, + EP, EP, EP, EP, EP, EP, EP, EP, + EP, EP, EP, EP, EP, EP, EP, EP, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + {// Knight + // A B C D E F G H + EK-102, EK-76, EK-51, EK-38, EK-38, EK-51, EK-76, EK-102, + EK- 76, EK-51, EK-25, EK-12, EK-12, EK-25, EK-51, EK-76, + EK- 51, EK-25, EK- 0, EK+12, EK+12, EK- 0, EK-25, EK-51, + EK- 38, EK-12, EK+12, EK+25, EK+25, EK+12, EK-12, EK-38, + EK- 38, EK-12, EK+12, EK+25, EK+25, EK+12, EK-12, EK-38, + EK- 51, EK-25, EK- 0, EK+12, EK+12, EK- 0, EK-25, EK-51, + EK- 76, EK-51, EK-25, EK-12, EK-12, EK-25, EK-51, EK-76, + EK-102, EK-76, EK-51, EK-38, EK-38, EK-51, EK-76, EK-102 + }, + {// Bishop + // A B C D E F G H + EB-46, EB-30, EB-23, EB-15, EB-15, EB-23, EB-30, EB-46, + EB-30, EB-15, EB- 7, EB- 0, EB- 0, EB- 7, EB-15, EB-30, + EB-23, EB- 7, EB- 0, EB+ 7, EB+ 7, EB- 0, EB- 7, EB-23, + EB-15, EB- 0, EB+ 7, EB+15, EB+15, EB+ 7, EB- 0, EB-15, + EB-15, EB- 0, EB+ 7, EB+15, EB+15, EB+ 7, EB- 0, EB-15, + EB-23, EB- 7, EB- 0, EB+ 7, EB+ 7, EB- 0, EB- 7, EB-23, + EB-30, EB-15, EB- 7, EB- 0, EB- 0, EB- 7, EB-15, EB-30, + EB-46, EB-30, EB-23, EB-15, EB-15, EB-23, EB-30, EB-46 + }, + {// Rook + // A B C D E F G H + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, + ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3, ER-3 + }, + {// Queen + // A B C D E F G H + EQ-61, EQ-40, EQ-30, EQ-20, EQ-20, EQ-30, EQ-40, EQ-61, + EQ-40, EQ-20, EQ-10, EQ- 0, EQ- 0, EQ-10, EQ-20, EQ-40, + EQ-30, EQ-10, EQ- 0, EQ+10, EQ+10, EQ- 0, EQ-10, EQ-30, + EQ-20, EQ- 0, EQ+10, EQ+20, EQ+20, EQ+10, EQ- 0, EQ-20, + EQ-20, EQ- 0, EQ+10, EQ+20, EQ+20, EQ+10, EQ- 0, EQ-20, + EQ-30, EQ-10, EQ- 0, EQ+10, EQ+10, EQ- 0, EQ-10, EQ-30, + EQ-40, EQ-20, EQ-10, EQ- 0, EQ- 0, EQ-10, EQ-20, EQ-40, + EQ-61, EQ-40, EQ-30, EQ-20, EQ-20, EQ-30, EQ-40, EQ-61 + }, + {// King + //A B C D E F G H + 16, 78, 108, 139, 139, 108, 78, 16, + 78, 139, 170, 200, 200, 170, 139, 78, + 108, 170, 200, 230, 230, 200, 170, 108, + 139, 200, 230, 261, 261, 230, 200, 139, + 139, 200, 230, 261, 261, 230, 200, 139, + 108, 170, 200, 230, 230, 200, 170, 108, + 78, 139, 170, 200, 200, 170, 139, 78, + 16, 78, 108, 139, 139, 108, 78, 16 + } +}; + + +#endif // !defined(PSQTAB_H_INCLUDED) -- 2.11.4.GIT