Horizon Chess

by Ron Murawski with the help of Jim Monaghan

 

 

Basic Information

Horizon is a very competitive WinBoard engine. The effort is now a joint venture by Ron Murawski (programming) and Jim Monaghan (chess advice and testing). Jim is also the creator and final authority on Horizon's opening book.

Horizon plays best at long time control using a large hash table and a fast processor. It plays well enough under all conditions to give other engines problems, especially those with inadequate king safety. It is a dangerous king attacker: Be wary of weakening your king position while playing against it.

Attention: If anyone wishes to become a Horizon beta-tester please email me. You must be willing to play-test the latest beta on your machine against approximately equal opponents (those that fall within 100 points of Horizon on your machine at the time control you choose). When you email your results and pgns back to me I will send you back the latest Horizon beta. I usually code for a week and then test the changes for a week and then decide if I will keep the changes or not. All active beta-testers will be given credit at the HorizonChess website.

(email: HorizonChess@yahoo.com)

 

History

On July 1, 2002, Horizon was exactly one year old. I am counting Horizon's birthday from the day I started writing my first line of code, not from the first release, which was on October 25, 2001 (The same day that Microsoft released Windows XP). Horizon's first release marked it as a promising engine, but it later became a bitter disappointment as I first released the disastrous version 2.0 and then the equally bad 2.01 version without proper testing -- Horizon's reputation suffered due to my ignorance. Now that I have learned that the secret to success is "Test, test, test", Horizon is once again a promising engine. It has improved by leaps and bounds, especially with all the version 3 releases, which have added -- if you believe my claims -- at least 200 points in playing strength. Thanks to all the WinBoarders out there for their interest and thanks to all the people who take the time to play tournaments between engines.

 

Current Version

Current version is: Horizon 3.2 (release date: July 1, 2002)

The estimated strength increase over version 3.1 is about 50 points. The change that most strengthened this version was the total revision of the trade-down code. The new optimizations have speeded up the search, especially early in the game and have also added strength. A new and much larger opening book will be released shortly.

Tech Note:

2002/07/01 version 3.2: Size of hash signature increased from 40 bits to 64 bits to eliminate hash collisions once and for all. Did some code optimizations and added some assembly language routines for speed gains. Trade-down code totally rewritten. Lazy eval tweaked.

Note on playing strength of previous version (3.1):

Using an AMD 1.67GHz CPU, 64 MB hash tables, and a time control of 40 moves in 15 minutes Horizon’s rating was measured at 2340 against a competitive cross-section of opponents over more than 100 games. Changing the time control to game in 2 minutes with an increment of 2 seconds resulted in a rating of 2280, a drop of 60 points. It seems that Horizon requires longer time controls in order to play up to its full potential as well as a fast processor.

 

Download

Horizon Chess Engine (last updated: 2002/07/01)
Horizon Opening Book (last updated: 2002/05/10)

 

Future Plans

There are two major areas of future change. One area involves hashing the pawn structure code. Changes should help depth of search, especially in the endgame. Many of the modifications to the evaluator to accommodate hashing are done, but more changes remain to be done. The second area of proposed change is the addition of more endgame knowledge. This should improve performance in longer games.

 

Instructions

See: Instruct.txt within the Horizon.zip file for complete Horizon instructions.

Directory:

Unzip all files to the directory of your choice such as: C:\Chess\Horizon

 

Winboard.ini additions:

"Horizon" /fd=C:\Chess\Horizon

"Horizon" /sd=C:\Chess\Horizon

 

Horizon.cfg file:

Set Hash Table size

Set location of Nalimov endgame tablebases

Set path to the opening book

Set skill level adjustments

 
Acknowledgements

Horizon runs atop the open-source Beowulf infrastructure. I would like to thank Colin Frayn and Dann Corbit, the creators of the Beowulf project. Horizon would not have been possible without Beowulf. If Horizon plays well, then certainly Colin's and Dann's efforts are in large measure responsible. The only reason Horizon starts life at such an advanced stage is because it is standing on the shoulders of these two giants. I am trying to repay my debt to them by helping wherever I can on the Beowulf project.

Special thanks to:

Colin Frayn, for creating Beowulf and helping me to understand Beowulf's inner workings

Dann Corbit, for creating Beowulf and helping me to understand Beowulf's inner workings

Jim Monaghan, for his tireless help with the eval and for creating the opening book

Vine Smith, for helping with the eval

Bob Hyatt, the dean of chess-programmers, for his wonderful Crafty and all his helpful CCC posts

Bob Jenkins, for writing the Isaac 64-bit pseudo-random number generator and making it public domain

ICD Chess, for hosting the CCC

To all the CCC posters and all the WinBoard forum posters: I may not respond, but I read EVERYTHING!

 

Tech Notes

2002/07/01 version 3.2: Size of hash signature increased from 40 bits to 64 bits to eliminate hash collisions once and for all. Did some code optimizations and added some assembly language routines for speed gains. Trade-down code totally rewritten. Lazy eval tweaked.

2002/05/10 version 3.1: Re-wrote outpost coding. Introduced a fairly large penalty for blockading 7th rank passed pawns. Removed side-to-move bonus as well as a small penalty for blocked pawns. Rook-behind-passed-pawn bonus has been boosted. In the endgame the king becomes active a little sooner. The opening book has been reworked again.

2002/03/30 version 3.0: Many bugs fixed: Pawn islands and open files were not recognized properly, doubled pawns were being scored twice as harshly as intended, weak back rank penalty was sometimes wrong, the endgame logic wasn't kicking in when it was supposed to, and configuration file comments were "live". Much of the code has been optimized. Weak pawn logic added. Center control has been reworked. Pawn blockading bonuses added. Knight/bishop outposts now rewarded. Rook/queen on 8th rank now given a bonus. Rook mobility added. Knight, rook and queen square tables added. More fianchettoed logic added. Horizon thinks 1.5 times as long on first move out of book. The repertoire opening book has been replaced.

2002/01/29 version 2.01: Wrong center control table was used in version 2.0, replaced it. Some king safety and development tweaks added. Horizon thinks twice as long on first move out of book.

2002/01/28 version 2.0: Pawn structure code totally rewritten. Uncoupled all non-pawn logic from pawn code in preparation for pawn hashing. Piece-pawn relationships (ie: doubled rooks on fully-open or half-open files) moved into appropriate piece code section and rewritten. Much work done on fianchettoed-bishop / pawn-structure relationships. Center control totally reworked. For the opening stage of a game, searches are now 2 to 5 times faster(!!!) due to all these changes. King safety is now more aggressive, resulting in a 50% to 75% search-depth speedup for tactically sharp positions. Opening book lines further refined and new lines added.

2002/01/13 version 1.3: Replaced compiler 16-bit pseudo-random number generator with a full 64-bit type and added more bits to hash signature to prevent random moves caused by hash collisions. Reduced the size of hash entries so 36% more positions can now be stored in the same amount of memory. The new code is about 30% faster than the old and at least 256 times less likely to have hash collisions. Passed on the infrastructure improvements to the Beowulf team. Modified center control. Simplified pawn structure code. Improved king safety when fianchettoed. New opening book by Jim Monaghan.

2001/12/06 version 1.2: Pawn structure code made more elaborate. Base of pawn chains is examined in more detail for weaknesses and possible attack. Weak, shielded pawns are not penalized as much as unshielded ones. Pawn distortion is now penalized. Added small bonus for pushing pawns. Prevented rash advancement of king shield pawns. Pawn islands added to scoring. Adjusted bishop vs knight in endgame code. Center control adjusted. Rooks and queens on 7th rank removed from endgame considerations. Early queen detection modified. Reduced connected passed pawn bonus and corrected a bad error in recognizing connectedness. Castled king now slightly discouraged from moving into corner square. Mobility scoring now continues throughout the endgame. Made many small adjustments to bonus/penalty values.

2001/11/1 version 1.1: Beowulf time-control code causes time-losses when playing a conventional clock. Reverted back to original time-control code.

2001/11/1 version 1.0: Horrible bug found: Horizon thought it was always playing the opening! That's why mid-game and endgame play was so mysteriously weak. This bug was introduced back in version 0.5. Beowulf codebase now supports conventional time-control as well as Blitz. Beowulf infrastructure problem where hash was always set to 16MB is now fixed. Changed doubled rooks reward: only given when on semi- or fully-open files. Found and fixed bug: Rooks on h-file were not recognized previously. King safety: pumped it up slightly and made uncastled offense/defense better. Added reward for connected passed pawns.

2001/10/25 version 0.6: First publicly released version. There is no meaningful change from 0.5.

2001/10/16 version 0.5: King safety rewritten yet again. Toned it down so other positional factors have more influence. I finally am somewhat satisfied with its play in normally castled positions. Fixed trapped bishop bug. Tweaked search params for 10-15% speedup. Passed on tweaks to Beowulf team. Incorporated all Beowulf 1.7 infrastructure improvements. Added penalty for having no escape squares for king. Added penalty if king is threatened and queen is on other side of the board. Made pawn structure code more efficient. Changed control-of-center code -- It now has much more importance. There has been a noticeable increase in kNps, depth of search, and playing strength.

2001/10/11 version 0.4: Rewrote king safety again and pumped it up to test its effectiveness. It seems improved. Added fianchettoed bishops to control-of-center code. Found a couple of errors in Beowulf passed pawn code. Passed this knowledge on. Folded in resulting Beowulf passed pawn code. Added mobility scores for knights and bishops. Minor tweaks for efficiency. Noticeably stronger than 0.3. About as strong as GnuChess 5.0

2001/9/20 version 0.3: Incorporated some ideas from Crafty regarding Trojan attacks and bad trades. This has finally discouraged Horizon from unsound attacks and bad trades. King safety was awful, rewrote it and now it’s merely bad. Rewrote pawn structure code – this part is much improved. Added reward for pawns blocking opposing bishops. Finally gave up on detecting pins and lost pieces. It just takes too much time.

2001/8/22 version 0.2: Replacing old, slow code with more traditional evaluation. Not much to distinguish Horizon from Beowulf at this point. This version is much stronger than 0.1, but that’s not saying much.

2001/7/1 version 0.1: First attempt. The engine is not very strong. I’ve broken almost all the rules of chess common wisdom and my ideas don’t work. The search depth is dismal.

 

Links

Beowulf
Dann Corbit
Crafty
George Lyapko’s Blitz ratings
Tim Mann
Frank Quisinsky
WinBoard forum
WinBoard Engine NewsTicker

 

Beta Testers, Past and Present

Jim Monaghan -- 11/2001 to present

Vine Smith -- 07/2001 to 11/2001