HAL

Home * Engines * HAL



HAL, (Heuristic Associative Linear-algorithm, HAL-9000, HAL9000) an open source chess program by Stephen F. Wheeler, also dubbed HAL-9000 as pun of HAL 9000, the fictional character in Arthur C. Clarke's Space Odyssey series, first appearing in 2001: A Space Odyssey . HAL was written in Turbo Pascal to run under the MS-DOS command line, and was part of Wheeler's Ph.D. research during the late 80s and early 90s, specifically on linear symbolic problem-solving systems and natural language processing.

=Header= (********************************************************************) (*                                                                 *) (*                             H A L                                *) (*                                                                 *) (*             Heuristic Associative Linear-algorithm               *) (*            -         -           -                              *) (*                                                                  *) (*==================================================================*) (*                                                                  *) (*                  C H E S S   P R O G R A M   3                   *) (*                 -           -               -                   *) (********************************************************************) (*                                                                  *) (*--*) (*                                                                  *) (* Author:  Stephen F. Wheeler, Ph.D.   A.I. Computer Scientist     *) (*                                                                 *) (* Language:  Turbo Pascal v6.0                                     *) (*                                                                 *) (*--*) (*                                                                  *) (*                                                                  *) (* Date Written:                September 8, 1990                   *) (*                                                                 *) (* Date of Last Revision:       May 25, 2010                        *) (*                                                                 *) (* Revisions in This Version:                                       *) (*                                                                 *) (* 1)  In Move_Selector Procedure set -INF and +INF for             *) (*     re-searches for failed-low and failed-high when Level is < 3.*) (*                                                       05/15/10   *) (*                                                                  *) (* 2)  In EVAL Procedure decremented level variable at P^.LX by 1   *) (*    and stored it in an LX variable when level of play was < 3.  *) (*    This corrected the missed checkmate declaration when playing *) (*    at skill levels 1 and 2.                                     *) (*                                                      05/25/10   *) (*                                                                  *) (*                                                                  *) (*--*) (*                  C P 3 V 8 . 9 . 9 . 7 . 2                       *) (*--*) (*                                                                 *) (*==================================================================*) (*                                                                  *) (*        C O M P U T E R   C H E S S   A U T O M A T O N           *) (*                                                                 *) (*    THIS PROGRAM UTILIZES THE ITERATIVE-DEEPENING NEGAMAX         *) (*   FAILSOFT ALPHA-BETA SEARCH ALGORITHM WITH QUIESCENCE, THE     *) (*   KILLER HEURISTIC AND REFUTATION TABLES.                       *) (*                                                                 *) (*==================================================================*) (*                                                                  *) (********************************************************************) =Description=

User Interface
HAL has a command line interface, and supports an interactive English dialogue between the opponent and itself to receive and report its moves and to receive directives, such as skill level. The directives are given to HAL in the form of English sentences, which can be rather free-form in structure, and will even allow for slight misspellings in certain situations. HAL utilizes the long algebraic notation.

Board Representation
HAL's board is represented by an incremental updated 8x8 board, a two-dimensional array of board cells, and a piece-list as array of piece cells indexed by side (1..2) and man index 1..16.

Search
The search algorithm is pure alpha-beta implemented as recursive negamax with fail-soft bounds inside the iterative deepening framework with aspiration windows. Move ordering is improved by the refutation table based on the triangular PV-table, and a sophisticated killer heuristic with up to four killers per ply. Selectivity is due to check extensions and depth limited quiescence search.

Evaluation
Evaluation considers material balance, a material exchange heuristic, and positional heuristic terms for development, king attack, defence, threats, mobility, advancement, captures and checks.

=See also=
 * Marvin Minsky | HAL 9000
 * SAL

=Postings=
 * Off-topic: HAL by Dave Gomboc, CCC, July 19, 2000
 * Frank Poole v HAL 9000 -- or is it CM9000? by John Merlino, CCC, July 10, 2002 » Chessmaster
 * HAL9000 Levels of Play by Stephen F. Wheeler, Chess.com, May 22, 2010
 * HAL9000 Chess Rating? by Stephen F. Wheeler, Chess.com, May 28, 2010
 * HAL 9000 by Master Om, Rybka Forum, June 10, 2010 (Download)

=External Links=
 * HAL 9000 from Wikipedia
 * Poole versus HAL 9000 from Wikipedia
 * Category:HAL 9000 from Wikimedia Commons
 * 2001: A Space Odyssey | HAL 9000 - Wikiquote

=References= Up one level