Hi

This is a new release of my chess engine Elephant. 

Elephant 1.06 (20041030)
A winboard chess program
(c) 2003-2004, Harald Luessen, Hamburg, Germany
All rights reserved
harald.luessen@gmx.de

This is a Winboard II engine. I can use it under Winboard, under 
Arena and even as a console program. Please try to play with it 
use it in tournaments and send me comments if it does not work. 
Please tell me if you like it, too. ;-)


Installation:

Elephant is a Windows program. I put the engine file elephant.exe 
in two folders when I play with winboard. I write in the winboard.ini 
file something like 

...
/firstChessProgramNames={GNUChess
"gnuchess xboard" 
"elephant xboard" /fd "elephant_106\bin1" 
}
/secondChessProgramNames={GNUChess
"gnuchess xboard" 
"elephant xboard" /sd "elephant_106\bin2" 
}
...

The engine will write a file "elephant.log" in its current directory. 
I use about 1 MByte of RAM plus the size of the two hash tables. 
This size is 16 MByte + 2 MByte or whatever you write in the 
configuration file "elephant.ini". This file is searched in the 
current directory, that is where the "elephant.exe" is.

Contents of elephant.ini:

; HashSize=1..1024 MBytes
HashSize=16
; PawnHashSize=1..128 MBytes
PawnHashSize=2


About the program:

- Written in Ms Visual C++
- Winboard II compatible
- Bitboard board representation
- PVS search engine
- No opening book
- 1-1024 MByte Hash Table
- Pawn & king hash table
- Adaptive Null move pruning
- Internal iterative deepening
- History heuristic
- Killer heuristic
- Static exchange evaluation
- Move ordering
- Quiescence search with some checks
- Evaluation of material, pawns, king safety, piece squares, mobility and more
- Lazy evaluation
- Some extensions
- Razoring, futile pruning
- Fractional Plies
- Simple time management
- One thread for the engine, one for stdin


History:

This is my third chess program. The first was written in GFA-Basic and 
never played well. The second was written in C on the Atari ST and it 
was working, but very slow. It was never released to the public. Then 
there was a pause of more than 10 years.

I began programming this engine in August 2002, when I found bitboard 
explanations in the german chess magazine "Computer Schach und Spiele". 
I can only work on it in the evening or weekends and there are other 
hobbies too.

I learned a lot from the book "Schach am PC" including the Minimax engine. 
Other origins of my knowledge and inspiration is the internet and usenet. 
I have to thank Bob Hyatt, E. A. Heinz, Bruce Moreland, Tim Mann, Tord 
Romstad, Ed Schrder and many others who write about their ideas and 
algorithms or publish the source code of their engines. But the Elephant 
is my own work and it is no clone of any engine! I have a history of 
nearly 100 zip files of self made source code. I think I will publish 
parts or all of it when the most embarrassing errors are fixed. I have 
no home page yet.


The name Elephant:

The first working title was cbitboards and the files are named bb_*.cpp. 
I needed an international friendly unused name for the engine and I 
chose Elephant because it can be personalized, it refers to my weight, 
elephants are known to be intelligent, they can be visualized as rooks 
on the board and I have seen the impressive animals in LOTR 3.


Usage:

Please use a Winboard GUI or Arena. I don't recommend the console. 


How strong is Elephant?

I don't know exactly. In some first tournaments someone gave it computer 
ELO ratings betweenn 2100 and 2150. It is too slow. On my Pentium 4, 2.6 GHz 
Elephant 1.06 in winboard has these numbers from the opening position:
depth=10 score=0.01 time=6.82s nodes=1456103 nps=213505
  e2-e4  e7-e5 Ng1-f3 Nb8-c6 Nb1-c3 Ng8-f6 Bf1-b5 Bf8-b4   O-O  Bb4xc3 

Olivier Deville has it on the list for ChessWar VI E:
37. ELEPHANT 1.05, Elo=1792.

Karl-Heinz Sntges has this result of Cycle XI-2004 6./7. Bundesliga:
30. Elephant v1.05, Elo = 2211

Leo Dijksman had it listed here in WBEC Ridderkerk edition 8, 5th division:
20. Elephant 1.05, 3.5 / 10
before it was taken out for edition 9 because it lost too many games on time.

The evaluation features and weights and many other technics are implemented 
ad hoc and not tested very much. There is much room for improvement. 


Plans:

- Bugfixes
- Tests and improvements
- Opening book
- Play on internet chess servers (?)
- Better time management
- EGTB (later)
- ?
- Patient testers and supporters are welcome


Last changes:

1.06, 20041030
- changed: fractional plies and extensions
- changed: smaller slider attack table (rotated bitboards)
- changed: slighly improved time management uses more time after fail low
- changed: some evaluation factors
- new: incremental piece counter
- new: simple trojan attack detection
- changed: king safety evaluation
- new: generate checking moves and check evasion moves
- new: piece board[64] as addition to bitboards
- many new features can be switched on and off via #if
- fixed: better null move representation
- new: statistic module for debugging and analysis
- changed: better root move order based on node count
- changed: better move order takes more infos into account
- new: dangerous experiments with move number extension
- changed: make sure the principle variation is in the hash table
- changed: fractional pruning, razoring, extensions and nullmove depend on 
  positional evaluation, king safety or other terms
- changed: details in the quiescence search
- changed: details in repetition detection
- changed: details in input handling
- changed: details in ponder move handling
- new: hashing mate threats
- new: hash recommends null move
- fixed: many bugs

1.05, 20040506
- fixed: hash aging no longer leads to strange mate values
- changed: other popcount function (nearly no effect)
- changed: parts of main loop logic and wait states (tried to fix pondering delay bug)
- changed: removed superfluous code in move ordering
- changed: iterative deepening starts with depth 1 instead of 0
- changed: qsearch in ply 0 and 1 does all moves
- new: a few debug outputs

1.04, 20040421
- fixed: move info output to winboard with less spaces and max. 40 plies
- fixed: exit elephant when winboard pipe is closed or winboard process is gone (I hope it works)

1.03, 20040418
- fixed: output to winboard does no longer exceed 500 byte
- fixed: threefold repetition detection in combination with hash table
- fixed: now reduced CPU usage when the engine is only waiting for input
- fixed: minor problems with the move list
- fixed: bad FEN strings are changed to the opening position and don't lead to fatal errors
- fixed minor bug in internal iterative deepening
- changed: single move extension disabled until problems are solved
- changed: pruning and razoring margins, experiment with history values
- changed: sequence of pruning and evaluation
- changed: detection of null move in the movelist
- changed: king safety and a few minor evaluation terms
- changed: experiment with second hash table access after razoring (strange logic)
- changed: some disabled code
- new: bonus for some endgames
- new: aging the hash table entries
- error: very seldom there is an empty principle variation and an endless loop :-(
- The engine may be weaker than before :-(

1.02, 20040321
- Bugfix in 50 move counter
- Bugfix in ponder mode
- More defensive time management
- Fewer calls of repetition detection (extra calls did not help)
- Nicer scaled history heuristic values

1.01, 20040316
- Start with 19 MByte RAM
- Configuration file elephant.ini
- "Elephant 1.01" as winboard name

1.00, 20040315
- first release


The Author:

I am Harald Len. I live in Hamburg, Germany. I am born 1964. 
As a software developer I build car navigation system databases. 
I have not played more than 50 real chess games in my life and I don't 
know whether I am a reasonable chess player or not. I don't have 
ELO ratings. I don't have or play with new professional chess programs. 
But I like to build own chess programs. I do this with every new 
programming language I want to learn. ;-)

Mail to: harald.luessen@gmx.de

Have fun

Harald
