예제 #1
0
  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]);
    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"])
        Weights[KingDangerUs] = Weights[KingDangerThem] = (Weights[KingDangerUs] + Weights[KingDangerThem]) / 2;

    const int MaxSlope = 30;
    const int Peak = 1280;

    for (int t = 0, i = 1; i < 100; i++)
    {
        t = std::min(Peak, std::min(int(0.4 * i * i), t + MaxSlope));

        KingDangerTable[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
        KingDangerTable[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
    }

    if (Options["UCI_AnalyseMode"])
        ContemptFactor = VALUE_ZERO;
    else
        ContemptFactor = Options["Contempt Factor"] * PawnValueMg / 100;
  }
예제 #2
0
  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]);
    Weights[KingDangerUs]   = weight_option("Cowardice", "Cowardice", WeightsInternal[KingDangerUs]);
    Weights[KingDangerThem] = weight_option("Aggressiveness", "Aggressiveness", WeightsInternal[KingDangerThem]);

    const int MaxSlope = 30;
    const int Peak = 1280;

    for (int t = 0, i = 1; i < 100; i++)
    {
        t = std::min(Peak, std::min(int(0.4 * i * i), t + MaxSlope));

        KingDangerTable[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
        KingDangerTable[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
    }
  }
예제 #3
0
파일: evaluate.cpp 프로젝트: certik/chess
void read_evaluation_uci_options(Color us) {

    // King safety is asymmetrical. Our king danger level is weighted by
    // "Cowardice" UCI parameter, instead the opponent one by "Aggressiveness".
    const int kingDangerUs   = (us == WHITE ? KingDangerUs   : KingDangerThem);
    const int kingDangerThem = (us == WHITE ? KingDangerThem : KingDangerUs);

    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]);

    // 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"].value<bool>())
        Weights[kingDangerUs] = Weights[kingDangerThem] = (Weights[kingDangerUs] + Weights[kingDangerThem]) / 2;

    init_safety();
}
예제 #4
0
  void init() {

    Weights[Mobility]       = weight_option("Mobility (Midgame)", "Mobility (Endgame)", WeightsInternal[Mobility]);
    Weights[PawnStructure]  = weight_option("Pawn Structure (Midgame)", "Pawn Structure (Endgame)", WeightsInternal[PawnStructure]);
    Weights[PassedPawns]    = weight_option("Passed Pawns (Midgame)", "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]);

    const double MaxSlope = 30;
    const double Peak = 1280;

    for (int t = 0, i = 1; i < 100; ++i)
    {
        t = int(std::min(Peak, std::min(0.4 * i * i, t + MaxSlope)));

        KingDanger[1][i] = apply_weight(make_score(t, 0), Weights[KingDangerUs]);
        KingDanger[0][i] = apply_weight(make_score(t, 0), Weights[KingDangerThem]);
    }
  }