Re: New engine releases
Posted: Fri Mar 02, 2018 5:01 pm
Yesterday Skiull 0.4 x64 was available, but today this edition disappeared. I wrote an email to Tony, but can send to you this version of course.
Norbert
Norbert
Don't use the 0.4, it has a bug in the move stage , right now I'm testing it with the fix, I will publish it when the bug it's goneGuenther wrote:not yet mentioned:
Code: Select all
Dumb 1.1 Trappist rev36 (new) => discovered and compiled by 'linuxchess' Skiull 0.4
Code: Select all
Monolith 0.4
Devel 2.0000
RuyDos 1.1.6 (*dev version)
Nemorino 4.09 (*dev version)
Zevra is already on 1.8.4 for a whileSzG wrote:Abbess 2018.02.07
Zevra 1.8.3 r636
Code: Select all
Detroid 0.9 released 10 days ago
Well the readme says it is inspired by Stockfish, which is no problem in itself...
Code: Select all
const CENTER: BitBoard = BitBoard((FILE_D | FILE_E) & (RANK_4 | RANK_5));
const QUEEN_SIDE: BitBoard = BitBoard(FILE_A | FILE_B | FILE_C | FILE_D);
const CENTER_FILES: BitBoard = BitBoard(FILE_C | FILE_D | FILE_E | FILE_F);
const KING_SIDE: BitBoard = BitBoard(FILE_E | FILE_F | FILE_G | FILE_H);
const KING_FLANK: [BitBoard; FILE_CNT] = [QUEEN_SIDE, QUEEN_SIDE, QUEEN_SIDE, CENTER_FILES, CENTER_FILES, KING_SIDE, KING_SIDE, KING_SIDE];
const KING_ATTACKS_WEIGHT: [i32; PIECE_TYPE_CNT] = [0, 0, 78, 56, 45, 11, 0, 0];
const MOBILITY_BONUS: [[Score; 32]; PIECE_TYPE_CNT] = [
[ Score::ZERO; 32], // No Piece
[ Score::ZERO; 32], // Pawns
[ Score(-75,-76), Score(-57,-54), Score( -9,-28), Score( -2,-10), Score( 6, 5), Score( 14, 12), // Knights
Score( 22, 26), Score( 29, 29), Score( 36, 29), Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO
],
[ Score(-48,-59), Score(-20,-23), Score( 16, -3), Score( 26, 13), Score( 38, 24), Score( 51, 42), // Bishops
Score( 55, 54), Score( 63, 57), Score( 63, 65), Score( 68, 73), Score( 81, 78), Score( 81, 86),
Score( 91, 88), Score( 98, 97), Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO
],
[ Score(-58,-76), Score(-27,-18), Score(-15, 28), Score(-10, 55), Score( -5, 69), Score( -2, 82), // Rooks
Score( 9,112), Score( 16,118), Score( 30,132), Score( 29,142), Score( 32,155), Score( 38,165),
Score( 46,166), Score( 48,169), Score( 58,171), Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO
],
[ Score(-39,-36), Score(-21,-15), Score( 3, 8), Score( 3, 18), Score( 14, 34), Score( 22, 54), // Queens
Score( 28, 61), Score( 41, 73), Score( 43, 79), Score( 48, 92), Score( 56, 94), Score( 60,104),
Score( 60,113), Score( 66,120), Score( 67,123), Score( 70,126), Score( 71,133), Score( 73,136),
Score( 79,140), Score( 88,143), Score( 88,148), Score( 99,166), Score(102,170), Score(102,175),
Score(106,184), Score(109,191), Score(113,206), Score(116,212), Score::ZERO, Score::ZERO,
Score::ZERO, Score::ZERO
],
[ Score::ZERO; 32], // King
[ Score::ZERO; 32] // All piece
];
const KING_PROTECTOR: [Score; PIECE_TYPE_CNT] = [Score(0,0), Score(0,0), Score(-3, -5), Score(-4, -3), Score(-3, 0), Score(-1, 1), Score(0,0), Score(0,0)];
// Outpost[knight/bishop][supported by pawn] contains bonuses for minor
// pieces if they can reach an outpost square, bigger if that square is
// supported by a pawn. If the minor piece occupies an outpost square
// then score is doubled.
const OUTPOST: [[Score; 2]; 2] = [
[ Score(22, 6), Score(36,12) ], // Knight
[ Score( 9, 2), Score(15, 5) ] // Bishop
];
const ROOK_ON_FILE: [Score; 2] = [Score(20, 7), Score(45, 20)];
// ThreatByMinor/ByRook[attacked PieceType] contains bonuses according to
// which piece type attacks which one. Attacks on lesser pieces which are
// pawn-defended are not considered.
const THREAT_BY_MINOR: [Score; PIECE_TYPE_CNT] = [
Score(0, 0), Score(0, 0), Score(0, 33), Score(45, 43), Score(46, 47), Score(72, 107), Score(48, 118), Score(0, 0)
];
const THREAT_BY_ROOK: [Score; PIECE_TYPE_CNT] = [
Score(0, 0), Score(0, 0), Score(0, 25), Score(40, 62), Score(40, 59), Score(0, 34), Score(35, 48), Score(0, 0),
];
// ThreatByKing[on one/on many] contains bonuses for king attacks on
// pawns or pieces which are not pawn-defended.
const THREAT_BY_KING: [Score; 2] = [Score(3, 62), Score(9, 138) ];
// Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns.
// We don't use a Score because we process the two components independently.
const PASSED: [[Value; RANK_CNT]; 2] = [
[ 0, 5, 5, 31, 73, 166, 252, 0 ],
[ 0, 7, 14, 38, 73, 166, 252, 0 ]
];
// PassedFile[File] contains a bonus according to the file of a passed pawn
const PASSED_FILE: [Score; FILE_CNT] = [
Score( 9, 10), Score( 2, 10), Score( 1, -8), Score(-20,-12),
Score(-20,-12), Score( 1, -8), Score( 2, 10), Score( 9, 10)
];
const RANK_FACTOR: [i32; RANK_CNT] = [ 0, 0, 0, 2, 6, 11, 16, 0];
// Assorted bonuses and penalties used by evaluation
const MINOR_BEHIND_PAWN: Score = Score( 16, 0);
const BISHOP_PAWNS : Score = Score( 8, 12);
const LONG_RANGED_BISHOP : Score = Score( 22, 0);
const ROOK_ON_PAWN : Score = Score( 8, 24);
const TRAPPED_ROOK : Score = Score( 92, 0);
const WEAK_QUEEN : Score = Score( 50, 10);
const CLOSE_ENEMIES : Score = Score( 7, 0);
const PAWNLESS_FLANK : Score = Score( 20, 80);
const THREAT_BY_SAFE_PAWN : Score = Score(192,175);
const THREAT_BY_RANK : Score = Score( 16, 3);
const HANGING : Score = Score( 48, 27);
const WEAK_UNOPOSSED_PAWN : Score = Score( 5, 25);
const THREAT_BY_PAWN_PUSH : Score = Score( 38, 22);
const THREAT_BY_ATTACK_ON_QUEEN : Score = Score( 38, 22);
const HINDER_PASSED_PAWN : Score = Score( 7, 0);
const TRAPPED_BISHOP_A1H1 : Score = Score( 50, 50);
// Penalties for enemy's safe checks
const QUEEN_SAFE_CHECK: i32 = 780;
const ROOK_SAFE_CHECK: i32 = 880;
const BISHOP_SAFE_CHECK: i32 = 435;
const KNIGHT_SAFE_CHECK: i32 = 790;
Code: Select all
constexpr Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB;
constexpr Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB;
constexpr Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB;
constexpr Bitboard Center = (FileDBB | FileEBB) & (Rank4BB | Rank5BB);
constexpr Bitboard KingFlank[FILE_NB] = {
QueenSide, QueenSide, QueenSide,
CenterFiles, CenterFiles,
KingSide, KingSide, KingSide
};
// Threshold for lazy and space evaluation
constexpr Value LazyThreshold = Value(1500);
constexpr Value SpaceThreshold = Value(12222);
// KingAttackWeights[PieceType] contains king attack weights by piece type
constexpr int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 };
// Penalties for enemy's safe checks
constexpr int QueenSafeCheck = 780;
constexpr int RookSafeCheck = 880;
constexpr int BishopSafeCheck = 435;
constexpr int KnightSafeCheck = 790;
#define S(mg, eg) make_score(mg, eg)
// MobilityBonus[PieceType-2][attacked] contains bonuses for middle and end game,
// indexed by piece type and number of attacked squares in the mobility area.
constexpr Score MobilityBonus[][32] = {
{ S(-75,-76), S(-57,-54), S( -9,-28), S( -2,-10), S( 6, 5), S( 14, 12), // Knights
S( 22, 26), S( 29, 29), S( 36, 29) },
{ S(-48,-59), S(-20,-23), S( 16, -3), S( 26, 13), S( 38, 24), S( 51, 42), // Bishops
S( 55, 54), S( 63, 57), S( 63, 65), S( 68, 73), S( 81, 78), S( 81, 86),
S( 91, 88), S( 98, 97) },
{ S(-58,-76), S(-27,-18), S(-15, 28), S(-10, 55), S( -5, 69), S( -2, 82), // Rooks
S( 9,112), S( 16,118), S( 30,132), S( 29,142), S( 32,155), S( 38,165),
S( 46,166), S( 48,169), S( 58,171) },
{ S(-39,-36), S(-21,-15), S( 3, 8), S( 3, 18), S( 14, 34), S( 22, 54), // Queens
S( 28, 61), S( 41, 73), S( 43, 79), S( 48, 92), S( 56, 94), S( 60,104),
S( 60,113), S( 66,120), S( 67,123), S( 70,126), S( 71,133), S( 73,136),
S( 79,140), S( 88,143), S( 88,148), S( 99,166), S(102,170), S(102,175),
S(106,184), S(109,191), S(113,206), S(116,212) }
};
// Outpost[knight/bishop][supported by pawn] contains bonuses for minor
// pieces if they occupy or can reach an outpost square, bigger if that
// square is supported by a pawn.
constexpr Score Outpost[][2] = {
{ S(22, 6), S(36,12) }, // Knight
{ S( 9, 2), S(15, 5) } // Bishop
};
// RookOnFile[semiopen/open] contains bonuses for each rook when there is
// no (friendly) pawn on the rook file.
constexpr Score RookOnFile[] = { S(20, 7), S(45, 20) };
// ThreatByMinor/ByRook[attacked PieceType] contains bonuses according to
// which piece type attacks which one. Attacks on lesser pieces which are
// pawn-defended are not considered.
constexpr Score ThreatByMinor[PIECE_TYPE_NB] = {
S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(47, 120)
};
constexpr Score ThreatByRook[PIECE_TYPE_NB] = {
S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(36, 38)
};
// ThreatByKing[on one/on many] contains bonuses for king attacks on
// pawns or pieces which are not pawn-defended.
constexpr Score ThreatByKing[] = { S(3, 65), S(9, 145) };
// PassedRank[Rank] contains a bonus according to the rank of a passed pawn
constexpr Score PassedRank[RANK_NB] = {
S(0, 0), S(5, 7), S(5, 13), S(32, 42), S(70, 70), S(172, 170), S(217, 269)
};
// PassedFile[File] contains a bonus according to the file of a passed pawn
constexpr Score PassedFile[FILE_NB] = {
S( 9, 10), S(2, 10), S(1, -8), S(-20,-12),
S(-20,-12), S(1, -8), S(2, 10), S( 9, 10)
};
// PassedDanger[Rank] contains a term to weight the passed score
constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 2, 7, 12, 19 };
// KingProtector[PieceType-2] contains a penalty according to distance from king
constexpr Score KingProtector[] = { S(3, 5), S(4, 3), S(3, 0), S(1, -1) };
// Assorted bonuses and penalties
constexpr Score BishopPawns = S( 8, 12);
constexpr Score CloseEnemies = S( 7, 0);
constexpr Score Connectivity = S( 3, 1);
constexpr Score CorneredBishop = S( 50, 50);
constexpr Score Hanging = S( 52, 30);
constexpr Score HinderPassedPawn = S( 8, 1);
constexpr Score KnightOnQueen = S( 21, 11);
constexpr Score LongDiagonalBishop = S( 22, 0);
constexpr Score MinorBehindPawn = S( 16, 0);
constexpr Score PawnlessFlank = S( 20, 80);
constexpr Score RookOnPawn = S( 8, 24);
constexpr Score SliderOnQueen = S( 42, 21);
constexpr Score ThreatByPawnPush = S( 47, 26);
constexpr Score ThreatByRank = S( 16, 3);
constexpr Score ThreatBySafePawn = S(175,168);
constexpr Score TrappedRook = S( 92, 0);
constexpr Score WeakQueen = S( 50, 10);
constexpr Score WeakUnopposedPawn = S( 5, 25);