From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Ferret

Ferret ,
a chess engine by Bruce Moreland. Ferret won the Amateur World Microcomputer Chess Champion Title in Paderborn 1995 and was two times winner of the World Microcomputer Speed-Chess Champion, in Jakarta 1996 and Paris 1997. Ferret became runner up at the 14th World Microcomputer Chess Championship, Jakarta 1996 without losing a game. At the 9th World Computer Chess Championship, Paderborn 1999, Ferret was unlucky in not winning a dramatical playoff against Shredder.

Photos & Games


WCCC 1999, Round 6: Ferret - Shredder, Stefan Meyer-Kahlen and Bruce Moreland [2] [3]

[Event "WCCC 1999"]
[Site "Paderborn, Germany"]
[Date "1999.06.18"]
[Round "6"]
[White "Ferret"]
[Black "Shredder"]
[Result "1/2-1/2"]

1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.b4 Bxb4 5.c3 Ba5 6.d4 exd4 7.O-O Nge7 8. cxd4 d5 
9.exd5 Nxd5 10.Ba3 Be6 11.Bb5 Bb4 12.Bxc6+ bxc6 13.Bxb4 Nxb4 14.Qa4 Qd6 15.Nc3 
Nd3 16.d5 Nc5 17.Qxc6+ Qxc6 18.dxc6 Ke7 19.Rfe1 Nd3 20.Re3 Nb4 21.Nd4 Rhd8 22.Rd1 
Kf6 23.a3 Nd5 24.Ne4+ Ke7 25.Ree1 Bg4 26.f3 Bc8 27.Nc5+ Kf6 28.Nb5 Be6 29.Na6 Rac8 
30.Nbxc7 h5 31.h3 h4 32.a4 Nxc7 33.Rxd8 Rxd8 34.Nxc7 Rc8 35.Nxe6 fxe6 36.Rc1 e5 
37.Kf2 Ke6 38.g3 hxg3+ 39.Kxg3 Kd6 40.Rd1+ Ke6 41.Rd7 Rxc6 42.Rxg7 Rc3 43.Rg4 Kf5 
44.h4 Rc1 45.h5 Rc6 46.Rg7 Ra6 47.Rg4 Rc6 48.Rg7 Ra6 49.Rg8 Rb6 50.Kh4 Rb4+ 51.Kg3
Rb6 52.Kh4 Rb4+ 53.Rg4 Rb2 54.Kg3 Rb6 55.a5 Rd6 56.Rg7 Ra6 57.Rg8 Rd6 58.Kh4 Rd4+ 
59.Kg3 Rd6 60.Rb8 Kg5 61.Re8 Rd5 62.a6 Ra5 63.Re7 e4 64.Rxa7 Ra3 65.Kf2 Rxf3+ 
66.Ke2 Kxh5 67.Ra8 Rf7 68.Ke3 Re7 69.Rb8 Kg6 70.Rb6+ Kf5 1/2-1/2

Board Representation

Quote by Bruce Moreland [4]:

Ferret's board representation is an array of 64 squares. Each element is pretty big. Move generation is accomplished by use of a move table, much expanded from the system used in GNU Chess.


By Bruce Moreland

Description of Ferret from Bruce Moreland's site [5] :

Ferret is a "normal" chess program. By that I mean that it uses alpha-beta full-width search, a quiescent search, a transposition hash table, an evaluation function that is called at the tips, and so forth. It uses null-move forward pruning, and for that I am indebted to Chrilly Donninger, who did not invent this technique, but he made it accessible to the amateur community via an ICCA Journal article (Vol. 16 #3, September 1993). 
The program uses numerous common extensions such as check extension, recapture extension, and single-response to check. It also uses a sort of singular-extension that is loosely based upon the extension of this name that appears in Deep Thought and presumably Deep Blue. The evaluation function is designed to catch common features without being slow, but it's slow enough that the program isn't particularly fast.
The program uses endgame databases of my own design and construction, but which aren't any better than the Nalimov, Edwards, or Thompson endgame databases. I wrote my own because I didn't want to take advantage of code written by others, since I felt that the program would be less mine if I did so. The program has a series of special case low-material evaluation functions that it uses when endgame databases are not present, and in some cases when they are. The program is written 100% in C, and is portable to any platform that runs any Windows-based operating system, including multiprocessor machines. 


Description given in 1995 from the ICCA site [6] :

Ferret is a "normal" brute-force program that runs under Windows NT. Techniques and tools used by the program include alpha-beta pruning, selective search extensions, quiescence search limited by a static exchange evaluator, null-move forward pruning, a 50,000-positions opening book, several hash tables and a few simple endgame databases. The program consists of about 20,000 lines of C code and has been compiled using Microsoft Visual C++ 2.0. Ferret searches approximately 18,000-32,000 nodes per second on a Pentium 66. It was written during off-hours over a period of about 4 years, for fun. Ferret finished fifth in Don Beal's uniform platform tournament last September. It has also played several hundred games of blitz chess on the Internet Chess Server, where it has been shown to be competitive among strong human players and various commercial programs. Ferret is copyrighted but its author is not particularly secretive about the program as he feels indebted to the many people who have answered his own questions. 


Description given in 1997 from the ICCA site:

Ferret is a normal chess program. It uses null-move forward pruning and other standard techniques. It is a leaf-node evaluator, and searches 80- 350K nps (120K typical middlegame) on a Pentium Pro 200 mhz machine. 

GNU Chess?

The quote of Monty Newborn in Beyond Deep Blue [7], pg. 29 [8]

Ferret was a derivative of Moreland’s open source engine GNU Chess. 

is not correct, neither was GNU Chess a program by Bruce Moreland, nor was Ferret a derivative of GNU Chess [9]:

The program is 100% original, although at the time I started I had access to the Gnuchess source code. That code was kind of messy and it was its messy state that inspired me to think that I could do better. 

See also

Forum Posts

External Links

Chess Engine



Up one Level