From Chessprogramming wiki
Revision as of 22:25, 26 December 2020 by GerdIsenberg (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Home * Engines * Francesca

a chess engine by Tom King, written in C, which uses many state of the art chess-programming techniques. Francesca played five World Microcomputer Chess Championships from 1995 until 2000, including the WCCC 1999 with 4 out of 7, and wins against former champion MChess and draws against the massive parallel programs Zugwang and CilkChess. In 2000 Francesca was released as Chess Engine Communication Protocol compatible chess engine [2] and was further improved as Francesca MAD (Manic, Aggressive, Dynamic) [3].


Descriptions given from the ICGA tournament site [4] .


Francesca follows the trend of programs since the late 1970s. It uses iterative deepening alpha-beta search to determine which move to make. The search is selective rather than brute-force. Null moves, and a home- grown forward pruning mechanism are used to help accelerate the search. In addition, a hash table is used to aid move ordering, and save searching of subtrees that have already been visited in the search.
The evaluation function is simple, but it knows something about pawn structure, king safety, and piece placement. There is always a tradeoff between knowledge and speed, and Francesca falls into the category of a "fast, dumb" searcher, rather than a "slow, smart" searcher. 


Francesca is an amateur program. It follows the trends of most chess programs since the 1970's and uses many of the state-of-the-art techniques: aspiration alpha-beta, null moves, other forward pruning mechanisms, a large transposition table, an evaluation hash table, large opening book etc.
Prior to 1998, Francesca relied mainly on piece-square values and a fast search to play good chess. In 1998, the evalution code was completely rewritten, and all evaluation is now done in the leaves of the search tree. This has produced stronger play; although 1999 Francesca is slower in nodes per second than 1997 Francesca, she plays a more interesting and challenging game. 

History of Francesca

From Tom King's personal website [5] :

In the Autumn of 1991, I had the chance to try out my creation on a 386SX PC, running at 16Mhz. It seemed so fast compared with the Amiga! Before long I bought myself a 486DX PC, running at 33Mhz, and began developing Francesca in earnest.
Little by little, Francesca's playing standard improved. Null moves added a turbo charger to an otherwise unremarkable chess engine, and evaluation by piece-value squares increased the NPS figure and search depth. There were still problems, and after the WMCCC in 1995 (Paderborn), I bit the bullet, and added hash tables. Improving move order and history tables, along with the new hash tables meant that Francesca 1996 was over 10 times quicker at searching through the plies than Francesca 1995. And it showed, Francesca gaining a very respectable 9th place at the WMCCC 1996 in Jakarta.
Between Jakarta and the WMCCC 1997 in Paris, there were few changes - some evaluation changes, some bug fixes, and some optimizations. And some bugs, too. Francesca struggled against some opponents she really should have beaten.
The problems at Paris made me realize that a change in direction was required. I rewrote the entire evaluation function, changing Francesca from a simple piece-value squares searcher to a full leaf evaluator. The benefits were immediate, obvious, and immense. Suddenly, Francesca was playing more interesting, challenging chess. I had the opportunity to enter her into the 1998 Spanish computer chess championship, and she came within an ace of winning the whole competition! 

Selected Games

WCCC 1999, round 3, Francesca - MChess [6]

[Event "WCCC 1999"]
[Site "Paderborn, Germany"]
[Date "1999.06.15"]
[Round "3"]
[White "Francesca"]
[Black "MChess"]
[Result "1-0"]

1.e4 e6 2.d4 d5 3.Nc3 Bb4 4.e5 c5 5.a3 Bxc3+ 6.bxc3 Ne7 7.Qg4 Qc7 8.Qxg7 Rg8 
9.Qxh7 cxd4 10.Ne2 Nbc6 11.f4 Bd7 12.Qd3 dxc3 13.Be3 d4 14.Nxd4 Nxd4 15.Bxd4 
Bc6 16.Qxc3 Nd5 17.Qd2 Rg4 18.Be2 Rxg2 19.Rg1 Rxg1+ 20.Bxg1 O-O-O 21.Rd1 Rg8 
22.Bf2 Ba4 23.Rb1 Rd8 24.c4 Ne7 25.Qc3 Nd5 26.Qf3 Ne7 27.Rb4 Bc6 28.Qe3 b6 
29.Qb3 Qd7 30.Qc2 Nf5 31.c5 b5 32.Qd1 Qe8 33.Qc2 Qd7 34.Qa2 Bb7 35.Qc2 Qc6 
36.Bf1 Qf3 37.c6 Ne3 38.cxb7+ Kb8 39.Bxe3 Qxe3+ 40.Qe2 Qc1+ 41.Kf2 Rd2 42.h3 
Rxe2+ 43.Bxe2 a6 44.Bf3 Qxa3 45.Re4 Qc5+ 46.Kg3 b4 47.Re1 a5 48.Rd1 Qc7 49.h4 
Ka7 50.h5 a4 51.h6 f6 52.Rd4 Qe7 53.Rc4 fxe5 54.Rc8 Qxb7 55.Bxb7 1-0  

Forum Posts

2000 ...

2010 ...

2020 ...

External Links

Chess Engine



Up one Level