Skip to content
Browse files

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.
  • Loading branch information...
1 parent 8899220 commit d3fe153fe6fcf36ccfc0a61681c16f1a98fcddf2 @mcostalba committed Apr 7, 2013
Showing with 21 additions and 18 deletions.
  1. +2 −0 polyglot.ini
  2. +17 −18 src/evaluate.cpp
  3. +2 −0 src/ucioption.cpp
View
2 polyglot.ini
@@ -24,6 +24,8 @@ Mobility (Endgame) = 100
Passed Pawns (Middle Game) = 100
Passed Pawns (Endgame) = 100
Space = 100
+Aggressiveness = 100
+Cowardice = 100
Min Split Depth = 4
Max Threads per Split Point = 5
Threads = 1
View
35 src/evaluate.cpp
@@ -75,8 +75,8 @@ namespace {
const int GrainSize = 8;
// Evaluation weights, initialized from UCI options
- enum { Mobility, PassedPawns, Space };
- Score Weights[3];
+ enum { Mobility, PassedPawns, Space, KingDangerUs, KingDangerThem };
+ Score Weights[6];
typedef Value V;
#define S(mg, eg) make_score(mg, eg)
@@ -88,7 +88,7 @@ namespace {
//
// Values modified by Joona Kiiski
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
@@ -197,10 +197,6 @@ namespace {
// the strength of the enemy attack are added up into an integer, which
// 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
const int KingAttackWeights[] = { 0, 0, 2, 2, 3, 5 };
@@ -287,16 +283,19 @@ namespace Eval {
void init() {
- 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[Space] = weight_option("Space", "Space", WeightsInternal[Space]);
-
- int KingDanger[] = { KingDangerWeights[0], KingDangerWeights[1] };
-
- // If running in analysis mode, make sure we use symmetrical king safety.
- // We do so by replacing both KingDanger weights by their average.
+ 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[Space] = weight_option("Space", "Space", WeightsInternal[Space]);
+ Weights[KingDangerUs] = weight_option("Cowardice", "Cowardice", WeightsInternal[KingDangerUs]);
+ Weights[KingDangerThem] = weight_option("Aggressiveness", "Aggressiveness", WeightsInternal[KingDangerThem]);
+
+ // 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. We
+ // do this by replacing both Weights[kingDangerUs] and Weights[kingDangerThem]
+ // by their average.
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 Peak = 1280;
@@ -305,8 +304,8 @@ namespace Eval {
{
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), make_score(KingDanger[1], 0));
+ KingDangerTable[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
+ KingDangerTable[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
}
}
View
2 src/ucioption.cpp
@@ -70,6 +70,8 @@ void init(OptionsMap& o) {
o["Passed Pawns (Middle Game)"] = 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["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["Max Threads per Split Point"] = Option(5, 4, 8, on_threads);
o["Threads"] = Option(cpus, 1, MAX_THREADS, on_threads);

0 comments on commit d3fe153

Please sign in to comment.
Something went wrong with that request. Please try again.