From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Sierżant

Sierżant [1]

Sierżant, (Sierzant)
a WinBoard compliant chess engine by Mariusz Rostek, written in C++ and first released in November 2004. Sierżant was described in Mariusz' 2008 Diploma thesis [2]. It is the successor of the weaker Szeregowiec, and predecessor of the stronger Porucznik - in dependence to the Polish Armed Forces ranking.

Tournament Play

As "house program" of the Technical University of Łódź, Sierżant was active in four consecutive Polish Computer Chess Championships, the PCCC 2004, PCCC 2005, PCCC 2006 and the international IOPCCC 2007.

Selected Games

PCCC 2006, round 3, Sierżant - nanoSzachy [3]

[Event "5th PCCC 2006"]
[Site "Lodz"]
[Date "2006.09.16"]
[Round "3"]
[White "Sierzant"]
[Black "nanoSzachy"]
[Result "1-0"]

1.c4 e6 2.Nc3 d5 3.d4 Nf6 4.cxd5 exd5 5.Bg5 Nbd7 6.e3 Be7 7.Qc2 c6 8.Bd3 O-O 
9.Nf3 Re8 10.h3 Nf8 11.Bf4 Ng6 12.Bh2 Ne4 13.Nxe4 dxe4 14.Bxe4 Qa5+ 15.Kf1 Be6 
16.Ne5 Rad8 17.b3 Bf6 18.Nxg6 hxg6 19.Rc1 Qa3 20.Rb1 Qa6+ 21.Kg1 Qa3 22.Bf4 Bd5 
23.Bd3 Rd7 24.e4 Be6 25.d5 cxd5 26.Bb5 dxe4 27.Bxd7 Bxd7 28.Rd1 Bf5 29.g4 Rc8 
30.Qe2 Be6 31.g5 Bc3 32.Qxe4 Qxa2 33.Qxb7 Qxb3 34.Qxb3 Bxb3 35.Rc1 Rc4 36.Kg2 
a5 37.Rb1 Bc2 38.Rb8+ Kh7 39.Rc1 Bd4 40.f3 f6 41.h4 a4 42.Re1 Bf5 43.Ree8 Rc2+ 
44.Kh1 Bc8 45.Rbxc8 Rxc8 46.Rxc8 Bf2 47.Rc2 Be1 48.Re2 Bc3 49.Bd6 Ba5 50.Kg2 
Bb6 51.Re7 Bd4 52.Re4 Bc3 53.Rxa4 Kg8 54.Rc4 Bb2 55.Rc2 Bd4 56.Rd2 Bc3 57.Rc2 
Bd4 58.Rc4 Bb2 59.f4 Kh8 60.Be7 Kg8 61.Rc7 fxg5 62.hxg5 Kh7 63.Bf6 Bxf6 64.gxf6 
Kg8 65.fxg7 Kh7 66.Kf3 g5 67.f5 Kg8 68.Kg4 Kh7 69.Kxg5 Kg8 70.f6 Kh7 71.Kf5 Kg8
72.Rc8+ Kh7 73.g8=Q+ Kh6 1-0


Board Representation

The board is represented by a 10x10 array, move generation is done in conjunction with piece lists and Table-driven Move Generation.


Sierżant performs PVS alpha-beta with null-move pruning and razoring inside an iterative deepening loop, and extends consecutive checks up to five times inside one variation. Despite it has no transposition table, additive 32-bit Zobrist keys are used to detect repetitions. After first playing the principal variation from the previous iteration, move ordering is improved by the killer heuristic and MVV-LVA for captures. To compare the quality of move ordering, a beta-cutoff ratio L1/L2 >= 1.0 (the smaller, the better) is determined as follows:

int alphabeta (ply, depth, alpha, beta) {
  for (a = 1; a <= NMoves; a++) {
     make ();
     value = -alphabeta( ... );
     unmake ();
     if (value >= beta) {
       L1 += a;
       L2 += 1;
       return beta;


The material balance is calculated incrementally and passed as parameter to the recursive alpha-beta routine. Positional considerations, notably piece-square tables including king safety versus king centralization and pawn structure related stuff, are dependent on the game phase, pre-determined at the root before starting the search, that is opening, middle and endgame, separated by the total amount of material on the board.

See also


Forum Posts

External Links

Chess Engine

Program szachowy Sierzant28 - download
Program szachowy Sierżant - Heurystyki


Sergeant - Wikipedia


Up one Level