1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 08:43:09 +00:00

Re-add 'Cowardice' and 'Aggressiveness' UCI options

I have lost my bet with Jean-Paul, so now I re-add
the two options...and I am glad of it :-)

No functional change.
This commit is contained in:
Marco Costalba 2013-04-07 10:25:21 +02:00
parent 889922041b
commit d3fe153fe6
3 changed files with 20 additions and 17 deletions

View file

@ -24,6 +24,8 @@ Mobility (Endgame) = 100
Passed Pawns (Middle Game) = 100 Passed Pawns (Middle Game) = 100
Passed Pawns (Endgame) = 100 Passed Pawns (Endgame) = 100
Space = 100 Space = 100
Aggressiveness = 100
Cowardice = 100
Min Split Depth = 4 Min Split Depth = 4
Max Threads per Split Point = 5 Max Threads per Split Point = 5
Threads = 1 Threads = 1

View file

@ -75,8 +75,8 @@ namespace {
const int GrainSize = 8; const int GrainSize = 8;
// Evaluation weights, initialized from UCI options // Evaluation weights, initialized from UCI options
enum { Mobility, PassedPawns, Space }; enum { Mobility, PassedPawns, Space, KingDangerUs, KingDangerThem };
Score Weights[3]; Score Weights[6];
typedef Value V; typedef Value V;
#define S(mg, eg) make_score(mg, eg) #define S(mg, eg) make_score(mg, eg)
@ -88,7 +88,7 @@ namespace {
// //
// Values modified by Joona Kiiski // Values modified by Joona Kiiski
const Score WeightsInternal[] = { const Score WeightsInternal[] = {
S(252, 344), S(216, 266), S(46, 0) S(252, 344), S(216, 266), S(46, 0), S(247, 0), S(259, 0)
}; };
// MobilityBonus[PieceType][attacked] contains mobility bonuses for middle and // MobilityBonus[PieceType][attacked] contains mobility bonuses for middle and
@ -197,10 +197,6 @@ namespace {
// the strength of the enemy attack are added up into an integer, which // the strength of the enemy attack are added up into an integer, which
// is used as an index to KingDangerTable[]. // is used as an index to KingDangerTable[].
// //
// King safety evaluation is asymmetrical and different for us (root color)
// and for our opponent. These values are used to init KingDangerTable.
const int KingDangerWeights[] = { 259, 247 };
// KingAttackWeights[PieceType] contains king attack weights by piece type // KingAttackWeights[PieceType] contains king attack weights by piece type
const int KingAttackWeights[] = { 0, 0, 2, 2, 3, 5 }; const int KingAttackWeights[] = { 0, 0, 2, 2, 3, 5 };
@ -290,13 +286,16 @@ namespace Eval {
Weights[Mobility] = weight_option("Mobility (Middle Game)", "Mobility (Endgame)", WeightsInternal[Mobility]); Weights[Mobility] = weight_option("Mobility (Middle Game)", "Mobility (Endgame)", WeightsInternal[Mobility]);
Weights[PassedPawns] = weight_option("Passed Pawns (Middle Game)", "Passed Pawns (Endgame)", WeightsInternal[PassedPawns]); Weights[PassedPawns] = weight_option("Passed Pawns (Middle Game)", "Passed Pawns (Endgame)", WeightsInternal[PassedPawns]);
Weights[Space] = weight_option("Space", "Space", WeightsInternal[Space]); Weights[Space] = weight_option("Space", "Space", WeightsInternal[Space]);
Weights[KingDangerUs] = weight_option("Cowardice", "Cowardice", WeightsInternal[KingDangerUs]);
Weights[KingDangerThem] = weight_option("Aggressiveness", "Aggressiveness", WeightsInternal[KingDangerThem]);
int KingDanger[] = { KingDangerWeights[0], KingDangerWeights[1] }; // King safety is asymmetrical. Our king danger level is weighted by
// "Cowardice" UCI parameter, instead the opponent one by "Aggressiveness".
// If running in analysis mode, make sure we use symmetrical king safety. // If running in analysis mode, make sure we use symmetrical king safety. We
// We do so by replacing both KingDanger weights by their average. // do this by replacing both Weights[kingDangerUs] and Weights[kingDangerThem]
// by their average.
if (Options["UCI_AnalyseMode"]) if (Options["UCI_AnalyseMode"])
KingDanger[0] = KingDanger[1] = (KingDanger[0] + KingDanger[1]) / 2; Weights[KingDangerUs] = Weights[KingDangerThem] = (Weights[KingDangerUs] + Weights[KingDangerThem]) / 2;
const int MaxSlope = 30; const int MaxSlope = 30;
const int Peak = 1280; const int Peak = 1280;
@ -305,8 +304,8 @@ namespace Eval {
{ {
t = std::min(Peak, std::min(int(0.4 * i * i), t + MaxSlope)); t = std::min(Peak, std::min(int(0.4 * i * i), t + MaxSlope));
KingDangerTable[0][i] = apply_weight(make_score(t, 0), make_score(KingDanger[0], 0)); KingDangerTable[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
KingDangerTable[1][i] = apply_weight(make_score(t, 0), make_score(KingDanger[1], 0)); KingDangerTable[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
} }
} }

View file

@ -70,6 +70,8 @@ void init(OptionsMap& o) {
o["Passed Pawns (Middle Game)"] = Option(100, 0, 200, on_eval); o["Passed Pawns (Middle Game)"] = Option(100, 0, 200, on_eval);
o["Passed Pawns (Endgame)"] = Option(100, 0, 200, on_eval); o["Passed Pawns (Endgame)"] = Option(100, 0, 200, on_eval);
o["Space"] = Option(100, 0, 200, on_eval); o["Space"] = Option(100, 0, 200, on_eval);
o["Aggressiveness"] = Option(100, 0, 200, on_eval);
o["Cowardice"] = Option(100, 0, 200, on_eval);
o["Min Split Depth"] = Option(msd, 4, 12, on_threads); o["Min Split Depth"] = Option(msd, 4, 12, on_threads);
o["Max Threads per Split Point"] = Option(5, 4, 8, on_threads); o["Max Threads per Split Point"] = Option(5, 4, 8, on_threads);
o["Threads"] = Option(cpus, 1, MAX_THREADS, on_threads); o["Threads"] = Option(cpus, 1, MAX_THREADS, on_threads);