1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Another PSQT tuning round

This time with a new algorithm by Joona.

It works basically like this:

repeat
{
   1) pick 8000 random positions from qsearch
   2) "go depth 8" to get the true evaluation.
   3) "eval" to get the stand pat score
   4) Adjusting parameters one by one to minimize deltasum between
true evaluation and stand  pat scores.
}

* Good news: method seems to converge
* Bad news: Point where it converges is not optimum.

So it's more or less trial and error... sometimes works, sometimes
doesn't. It can give you the right direction, but if you let it run
too long, it fails. Far from scientific ;)

After 14800 games with 5s/game
Orig - Mod: 3318 - 3570 - 7626 (+6 elo)

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Joona Kiiski 2010-03-17 08:32:26 +02:00 committed by Marco Costalba
parent 4d170725ab
commit b24a2dfc72

View file

@ -29,74 +29,62 @@
////
//// Constants modified by Joona Kiiski
//// Values tuned by Joona Kiiski
////
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] = {
static const int MgPST[][64] = { // [piece][square]
{},
{ // Pawn
// A B C D E F G H
0, 0, 0, 0, 0, 0, 0, 0,
MP-28, MP-6, MP+ 4, MP+14, MP+14, MP+ 4, MP-6, MP-28,
MP-28, MP-6, MP+ 9, MP+36, MP+36, MP+ 9, MP-6, MP-28,
MP-28, MP-6, MP+17, MP+58, MP+58, MP+17, MP-6, MP-28,
MP-28, MP-6, MP+17, MP+36, MP+36, MP+17, MP-6, MP-28,
MP-28, MP-6, MP+ 9, MP+14, MP+14, MP+ 9, MP-6, MP-28,
MP-28, MP-6, MP+ 4, MP+14, MP+14, MP+ 4, MP-6, MP-28,
0, 0, 0, 0, 0, 0, 0, 0
4, 5, 7, 8, 8, 7, 5, 4,
162, 183, 194, 204, 204, 194, 183, 162,
164, 185, 201, 227, 227, 201, 185, 164,
165, 186, 210, 247, 247, 210, 186, 165,
166, 187, 211, 229, 229, 211, 187, 166,
167, 188, 204, 209, 209, 204, 188, 167,
168, 189, 200, 210, 210, 200, 189, 168,
8, 9, 11, 12, 12, 11, 9, 8
},
{ // Knight
// A B C D E F G H
MK-135, MK-107, MK-80, MK-67, MK-67, MK-80, MK-107, MK-135,
MK- 93, MK- 67, MK-39, MK-25, MK-25, MK-39, MK- 67, MK- 93,
MK- 53, MK- 25, MK+ 1, MK+13, MK+13, MK+ 1, MK- 25, MK- 53,
MK- 25, MK+ 1, MK+27, MK+41, MK+41, MK+27, MK+ 1, MK- 25,
MK- 11, MK+ 13, MK+41, MK+55, MK+55, MK+41, MK+ 13, MK- 11,
MK- 11, MK+ 13, MK+41, MK+55, MK+55, MK+41, MK+ 13, MK- 11,
MK- 53, MK- 25, MK+ 1, MK+13, MK+13, MK+ 1, MK- 25, MK- 53,
MK-193, MK- 67, MK-39, MK-25, MK-25, MK-39, MK- 67, MK-193
675, 709, 742, 759, 759, 742, 709, 675,
721, 752, 785, 802, 802, 785, 752, 721,
765, 797, 827, 841, 841, 827, 797, 765,
794, 823, 853, 869, 869, 853, 823, 794,
808, 834, 865, 881, 881, 865, 834, 808,
807, 833, 864, 879, 879, 864, 833, 807,
764, 794, 823, 837, 837, 823, 794, 764,
624, 752, 783, 799, 799, 783, 752, 624
},
{ // Bishop
// A B C D E F G H
MB-40, MB-40, MB-35, MB-30, MB-30, MB-35, MB-40, MB-40,
MB-17, MB+ 0, MB- 4, MB+ 0, MB+ 0, MB- 4, MB+ 0, MB-17,
MB-13, MB- 4, MB+ 8, MB+ 4, MB+ 4, MB+ 8, MB- 4, MB-13,
MB- 8, MB+ 0, MB+ 4, MB+17, MB+17, MB+ 4, MB+ 0, MB- 8,
MB- 8, MB+ 0, MB+ 4, MB+17, MB+17, MB+ 4, MB+ 0, MB- 8,
MB-13, MB- 4, MB+ 8, MB+ 4, MB+ 4, MB+ 8, MB- 4, MB-13,
MB-17, MB+ 0, MB- 4, MB+ 0, MB+ 0, MB- 4, MB+ 0, MB-17,
MB-17, MB-17, MB-13, MB- 8, MB- 8, MB-13, MB-17, MB-17
795, 792, 796, 800, 800, 796, 792, 795,
824, 845, 841, 844, 844, 841, 845, 824,
830, 841, 855, 848, 848, 855, 841, 830,
835, 844, 848, 867, 867, 848, 844, 835,
834, 843, 847, 866, 866, 847, 843, 834,
827, 838, 852, 845, 845, 852, 838, 827,
821, 841, 837, 840, 840, 837, 841, 821,
821, 820, 824, 830, 830, 824, 820, 821
},
{ // Rook
// A B C D E F G H
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12,
MR-12, MR-7, MR-2, MR+2, MR+2, MR-2, MR-7, MR-12
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258,
1258, 1263, 1268, 1272, 1272, 1268, 1263, 1258
},
{ // Queen
// A B C D E F G H
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8,
MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8, MQ+8
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529,
2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529
},
{ // King
//A B C D E F G H
287, 311, 262, 214, 214, 262, 311, 287,
262, 287, 238, 190, 190, 238, 287, 262,
214, 238, 190, 142, 142, 190, 238, 214,
@ -108,71 +96,59 @@ static const int MgPST[][64] = {
}
};
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] = {
static const int EgPST[][64] = { // [piece][square]
{},
{ // Pawn
// A B C D E F G H
0, 0, 0, 0, 0, 0, 0, 0,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8, EP-8,
0, 0, 0, 0, 0, 0, 0, 0
2, 0, -2, -4, -4, -2, 0, 2,
253, 251, 249, 247, 247, 249, 251, 253,
253, 251, 249, 247, 247, 249, 251, 253,
253, 251, 249, 247, 247, 249, 251, 253,
254, 252, 250, 248, 248, 250, 252, 254,
254, 252, 250, 248, 248, 250, 252, 254,
254, 252, 250, 248, 248, 250, 252, 254,
4, 2, 0, -2, -2, 0, 2, 4
},
{ // Knight
// A B C D E F G H
EK-104, EK-79, EK-55, EK-42, EK-42, EK-55, EK-79, EK-104,
EK- 79, EK-55, EK-30, EK-17, EK-17, EK-30, EK-55, EK- 79,
EK- 55, EK-30, EK- 6, EK+ 5, EK+ 5, EK- 6, EK-30, EK- 55,
EK- 42, EK-17, EK+ 5, EK+18, EK+18, EK+ 5, EK-17, EK- 42,
EK- 42, EK-17, EK+ 5, EK+18, EK+18, EK+ 5, EK-17, EK- 42,
EK- 55, EK-30, EK- 6, EK+ 5, EK+ 5, EK- 6, EK-30, EK- 55,
EK- 79, EK-55, EK-30, EK-17, EK-17, EK-30, EK-55, EK- 79,
EK-104, EK-79, EK-55, EK-42, EK-42, EK-55, EK-79, EK-104
741, 765, 791, 806, 806, 791, 765, 741,
766, 790, 818, 834, 834, 818, 790, 766,
790, 816, 844, 858, 858, 844, 816, 790,
803, 830, 855, 873, 873, 855, 830, 803,
803, 830, 855, 873, 873, 855, 830, 803,
790, 816, 844, 858, 858, 844, 816, 790,
766, 790, 818, 834, 834, 818, 790, 766,
741, 765, 791, 806, 806, 791, 765, 741
},
{ // Bishop
// A B C D E F G H
EB-59, EB-42, EB-35, EB-26, EB-26, EB-35, EB-42, EB-59,
EB-42, EB-26, EB-18, EB-11, EB-11, EB-18, EB-26, EB-42,
EB-35, EB-18, EB-11, EB- 4, EB- 4, EB-11, EB-18, EB-35,
EB-26, EB-11, EB- 4, EB+ 4, EB+ 4, EB- 4, EB-11, EB-26,
EB-26, EB-11, EB- 4, EB+ 4, EB+ 4, EB- 4, EB-11, EB-26,
EB-35, EB-18, EB-11, EB- 4, EB- 4, EB-11, EB-18, EB-35,
EB-42, EB-26, EB-18, EB-11, EB-11, EB-18, EB-26, EB-42,
EB-59, EB-42, EB-35, EB-26, EB-26, EB-35, EB-42, EB-59
798, 816, 826, 836, 836, 826, 816, 798,
814, 831, 841, 849, 849, 841, 831, 814,
820, 838, 847, 856, 856, 847, 838, 820,
829, 845, 855, 865, 865, 855, 845, 829,
830, 846, 856, 866, 866, 856, 846, 830,
821, 840, 850, 859, 859, 850, 840, 821,
815, 833, 844, 853, 853, 844, 833, 815,
798, 817, 828, 839, 839, 828, 817, 798
},
{ // 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
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281
},
{ // Queen
// A B C D E F G H
EQ-80, EQ-54, EQ-42, EQ-30, EQ-30, EQ-42, EQ-54, EQ-80,
EQ-54, EQ-30, EQ-18, EQ- 6, EQ- 6, EQ-18, EQ-30, EQ-54,
EQ-42, EQ-18, EQ- 6, EQ+ 6, EQ+ 6, EQ- 6, EQ-18, EQ-42,
EQ-30, EQ- 6, EQ+ 6, EQ+18, EQ+18, EQ+ 6, EQ- 6, EQ-30,
EQ-30, EQ- 6, EQ+ 6, EQ+18, EQ+18, EQ+ 6, EQ- 6, EQ-30,
EQ-42, EQ-18, EQ- 6, EQ+ 6, EQ+ 6, EQ- 6, EQ-18, EQ-42,
EQ-54, EQ-30, EQ-18, EQ- 6, EQ- 6, EQ-18, EQ-30, EQ-54,
EQ-80, EQ-54, EQ-42, EQ-30, EQ-30, EQ-42, EQ-54, EQ-80
2478, 2504, 2516, 2528, 2528, 2516, 2504, 2478,
2504, 2528, 2540, 2552, 2552, 2540, 2528, 2504,
2516, 2540, 2552, 2564, 2564, 2552, 2540, 2516,
2528, 2552, 2564, 2576, 2576, 2564, 2552, 2528,
2528, 2552, 2564, 2576, 2576, 2564, 2552, 2528,
2516, 2540, 2552, 2564, 2564, 2552, 2540, 2516,
2504, 2528, 2540, 2552, 2552, 2540, 2528, 2504,
2478, 2504, 2516, 2528, 2528, 2516, 2504, 2478
},
{ // King
//A B C D E F G H
18, 77, 105, 135, 135, 105, 77, 18,
77, 135, 165, 193, 193, 165, 135, 77,
105, 165, 193, 222, 222, 193, 165, 105,
@ -184,5 +160,4 @@ static const int EgPST[][64] = {
}
};
#endif // !defined(PSQTAB_H_INCLUDED)