Rajah

Home * Engines * Rajah

Rajah (RajahX), a chess program by Valavan Manohararajah. Its development started from scratch in early 1996. Rajah played the DOCCC 1996 and the Aegon 1997, and its design, like many programs influenced by Chess 4.5, was described in ICCA Journal, Vol. 20, No. 2. Rajah is a leaf-evaluator and performs no pre-processing at the root or interiour of the tree. Rajah was further subject of research in the author's 2001 M.Sc. thesis on parallel alpha-beta search from University of Toronto.

=Photos= Peng Zhaoqin facing Rajah by Valavan Manohararajah, Aegon 1997

=Search= Rajah uses a full width principal variation search followed by quiescence search, where the move generator only generates captures and promotions to a queen, where a first layer in pruning removes any capture that fails to bring the material score above a value based on alpha. A second layer in QS performs SEE, to prune all moves with a SEE values less than zero. Additionally, Rajah applies Null Move Pruning similar as described by Donninger in 1993 with a depth reduction of two. It extends checks, recapturers and passed pawn moves to the 7th and 8th rank. Extension are switched off, when the search depth exceeds two times the current iteration depth.

The transposition table is used in both full width and quiescence search, the replacement strategy is the one given by Dennis Breuker et al. in 1994. The killer heuristic and history heuristic is used in the full-width search only. =0x88= Rajah's board representation relies on 0x88, to take advantage of testing those two bits in target square traversal of move generation , and specially for the unique square difference property for attack detection. In his article, Valavan gives the C source snippet of a typical inner loop in move generation, e.g. a white bishop moving diagonally up: target_sq = current_sq; while (1) { target_sq += 15; /* the move up and left */ if ( target_sq & 0x88 ) break; /* check for out of bounds condition */ if ( board[target_sq] == empty) { /* add a non-capture move to the move list */ } else { if ( board[target_sq] & black_piece {      /* add a capture move to the move list */    }    break;  } }

=Publications=
 * Jaap van den Herik (1997). Augmentes Ideas. Editorial ICCA Journal, Vol. 20, No. 1
 * Valavan Manohararajah (1997). Rajah: The Design of a Chess Program. ICCA Journal, Vol. 20, No. 2
 * Valavan Manohararajah (2001). Parallel Alpha-Beta Search on Shared Memory Multiprocessors. M.Sc. thesis, pdf

=Forum Posts=
 * X88 board representations by Valavan Manohararajah, rgcc, April 17, 1996 » 0x88
 * Computer Chess Hardware Design by Valavan Manohararajah, rgcc, March 30, 1997
 * Misinformation about RAJAH in the ICCA by Valavan Manohararajah, rgcc, April 5, 1997
 * Re: Computerised Chess Games by Valavan Manohararajah, rgcc, April 07, 1997
 * Re: Mobility in evaluation functions- how much is it worth? by Valavan Manohararajah, rgcc, June 08, 1997 » Mobility
 * Re: GNU Chess for Pilot? by Valavan Manohararajah, rgcc, July 09, 1997 » GNU Chess
 * Anyone want to represent Rajah at the WMCCC? by Valavan Manohararajah, rgcc, August 14, 1997

=References=

Up one level