Engine: Twisted Logic 20090922
Author: Edsel G. Apostol
E-mail: ed_apostol@yahoo.com
YM: ed_apostol
Skype: edsel.apostol
Home Page: http://www.geocities.com/ed_apostol/index.htm
Release Date: 22 September 2009
First version release: June 02, 2007


This is free software. There is no warranty of any kind. Use at your own risk.


Information:

This engine is a UCI engine written around March 2007 from scratch when the author is just graduating from Computer Engineering in College. The goal of the engine is to be the strongest chess playing entity ( dream big! :-) ). Watch out Rybka!


Strengths:

Passed pawn handling, King safety, Over-all control of the board, very low branching factor (searhes deeper, may perform well on longer time control)


Weaknesses:

Poor endgame play, weak in tactics (may miss some critical lines if the search time is not enough), material exchanges (sometimes undervalues the queen and the rook)


Playing style:
It is a positional engine. It will try to strangle the opponent positionally until the opponents' position collapses. It tends to favor positions where it has an opportunity to attack the opponents king, positions that let it have control of the board by pieces, and positions that it will nurse the pawn to promotion and victory.


Todo:

Add endgame knowledge
Improve tactical prowess
Support SMP


UCI options (I'm too lazy to explain everything, just contact me if there's anything you would like to know):

Hash - the size is in Mb
Pawn Hash - the value of 16 = 1 Mb, 17 = 2 Mb, 18 = 4 Mb and so on
Ponder - thinking on opponents time
OwnBook - using own book, supports Polyglot opening book format
Book File - the book file name, it should be installed on the directory of the executable
Book Move Limit - the number of plies to limit the move
Display Book Moves - an option to display book move percentage, best to use when studying opening theory (hint: set engine to analyze)
Time Buffer - guaranteed time that the engine will not use to avoid time losses
Transposition Table - store and retrieve previously searched positions
Null Move Pruning - use the null move feature
Null Move Verification - verify the null move at lower depth
Null Move Fail High - only do null move when the position's eval is greater than beta
Null Threat - check to see if the null move returns a threat
Zero Recapture Extension - a recapture extension in non PV nodes
Internal Iterative Deepening - do a reduced depth search when there is no transposition move on the current PV node
Internal Iterative Deepening Solid - do a more stable approach to IID
Internal Iterative Deepening Depth - the minnimum depth required to use IID
Delta Pruning - prune moves in quiescent search
Delta Pruning Solid - do a stable approach in doing DP
Delta Pruning Threshold - the value to be considered when pruning moves
Quiescence Check Depth - the depth to generate checks in quiescent search
Selectivity - try being selective
Selectivity Base - the basis on trying to be selective
Selectivity Threshold - the value to consider when doing selectivity
Selectivity Cutoff - another value to consider when doing selectivity
Zero Pruning - do some aggressive pruning
Zero Pruning Base - the basis to do some aggressive pruning
Zero Pruning Threshold - the value to consider when doing the aggressive pruning
Zero Pruning Multiplier - another value to consider
Speculation Aggressive - try to be more aggressive
Extended/Speculation PV - do some search speculation on PV nodes
Extended/Speculation PV Level - how much search speculation to be done
Extended/Speculation - do some search speculation on non PV nodes
Extended/Speculation Base - the basis to do some speculation
Extended/Speculation Level - how much search speculation to be done on non PV nodes
Eval Grain Size - the value is power of 2, makes the eval coarser for faster search
Fill Hash With PV - store the principal variation result of the search in the transposition table
King Attacks Aggression Level - the aggressiveness of the engine, set it higher if you want a head hunter engine
UCI_ShowCurrLine - shows the engine's line of thinking per second
UCI_EngineAbout - the engine name and author


Acknowledgement:

Big thanks to the Team members, this engine wouldn't be this strong without them:
Audy Arandela (USA) - for the valuable tests, for the very strong opening book used in tournaments, for being an operator for online tournaments, for running the engine in online tournaments and in ICC
Tobias Laggeman (Germany) - for playing literally millions of ultra-fast games to find the best settings, he also provide valuable feedback about the engine's weaknesses that needs to be improved

Thanks to Gerd Isenberg for the ideas on sliding move generation.
Thanks to Tord Romstad and Stuart Cracraft for invaluable comments on the source code of my old program.  It certainly helped me a lot in my programming style and techniques. To Tord again for his latest bitboard engine Glaurung where I borrowed/stolen a lot of ideas especially in the move generation.
Thanks to the author of Fruit, Fabien Letouzey, for providing the source code of his program, as I had learned a lot from it.
Thanks to the author of Olithink, Dr. Olivier Brausch, as it was where I learned bitboard when I'm just starting programming.
Thanks to the author of Buzz OS, Pradu Kannan, for the ideas on pawn structure evaluation. 
Thanks to the author of Petir, Peter Alloysius, for the bug report on the search code. I hope I could repay the mutual source code review someday if I have time.
Thanks to John van Spijker for testing on long time controls and providing valuable feedback.
Thanks to Mike Donnig for providing test results on longer time control on fast hardware.
Thanks to Olivier Deville for reporting some bugs.
Thanks to Dennis Mendoza for the compiling advice and moral support (salamat kabayan!).
Thanks to all the people on CCC, Winboard, WBEC forums, etc. I have learned a lot from their posts. 
Thanks to all the programmers who shared their source code. 
Thanks also to all the people who runs various tournament and rating lists that includes my program (CEGT, CCRL, UEL, OW, CW, WBEC, etc.)
Special thanks to Jim Ablett and Graham Banks for the logo of my program, and to the other two please e-mail me so that I could give you proper credit.
Special thanks to Dann Corbit for our little experiment (needs to be continued later), and for the fast 64 bit compile.
Special thanks to Swaminathan for being an operator for Twisted Logic on some online tournaments.
And lastly, thanks to those that I forgot to mention. Now I have covered them all. :-)


History:

version 20090922:
-complete eval rewrite
-improved search

version 20080620:
-fix a major bug in transposition table cut-offs
-fine tuned the search parameters
-rewrote the entire eval, a new set of weights and scoring
-better time management
-speed tweaks and a better compiler
-a lot of minor bug fixes and changes

version 20080404x:
-major changes in search
-major changes in eval
-a lot of bug fixes and speed tweaks

version 20071202x:
-add endgame knowledge
-improve search
-improve eval
-add uci options

version 20070915
-a lot of minor changes in the null move implementation
-a lot of minor changes in hashing keys
-a lot of minor changes in reductions
-a lot of minor changes in the material evaluation

version 20070706
-a major bugfix in the search
-make the prunings and reductions less aggressive, maybe stronger on longer time controls
-known bugs: it often crashes, I hope this release woudn't crash too often as previous versions before

version 20070602
-this is an entirely new engine, I abandoned the old engine as I see no more improvements and it is very buggy
-there is no similarity with the old engine except for the name
-strength would be around 2600 relative to the CCRL rating list, but I am not sure of this.
-this is around two months old since conception, around a little more than one month when it played its first game
-it has a logfile, in case the program behaves badly, just send it to me. 
-it also has an error text file but it is only used for my debugging
-it also has a dumpfile, when you find something in it, please send it to me
