FOREST is an Othello program which dates back to 1978. Initially, it was written in an obscure teaching language and was laboriously running on the mini-computer at my school, featuring a 16 bits CPU and 4 kb of RAM. The program's name, FOREST, is due to the large number of trees it conceals. The program evolved a lot in the late 90's, the golden age of Othello programs, and its version 3.7 came with lots of functionalities that made it successful among the community of Othello players. Then it entered a long pause, my professional activities having taken over that hobby.
But in 2017, with the resurgence of Artificial Intelligence, I thought Othello would be an excellent opportunity to apply Deep Learning techniques and tools. I started revamping FOREST, simplifying its over-complicated user interface, removing obsolete or un-necessary features, modernizing the alpha-beta algorithms with Negascout, and tuning its old evaluation function while developing a new one based on a neural network. That long renovation work lasted about 18 months and led to the versions 4.0 to 4.5 of the program.
The development of the neural network took much longer than expected, because there is no rule to design the right neural network, tune its hyper-parameters, and obtain a good balance between accuracy and sophistication. The neural network is developed with the Keras and TensorFlow™ deep learning frameworks, and then re-coded in C in the program to maximize performances at run-time. The supervised training phase is made on a library of about 1.000.000 games and tens of millions of positions of which the exact result is known. The version 8.x of FOREST uses a relatively simple neural network, combined with an alpha-beta of depth 13, which provides strength similar to what traditional programs do with a 24 moves depth alpha-beta. FOREST, which was an average player in its previous versions, is now catching up with strong brute-force programs such as Zebra, Edax, or Ntest.
Another area of progress is the opening library, which is essential to allow the program to reach the mid-game phase in a balanced position, and then make the difference before the end-game phase which is deterministic. Until FOREST 4.3, the opening library was based on the Thor database, which contains 100.000+ games played by human players and computers since the 80'. But the Thor database contains lots of non-optimal games played by average human players or programs, which makes it difficult to extract a good opening library from it. Now, I am using a new Monte-Carlo algorithm with FOREST playing against itself.
Copyright© 1994-2023 Olivier Casile
FOREST 9.5 functions:
|
FOREST is a 64 bits program requiring a PC with an Intel or AMD CPU, 4 Gb of RAM or more, and a Microsoft Windows™ x64 operating system version 10 or upper.
Since its version 4.5, FOREST internally represents game board as Bitboards, and uses the Popcnt machine instruction to count discs. Since the version 6.0, it also uses the vector instruction set AVX2. The consequence of that evolution is that FOREST cannot anymore run on processors not supporting those instructions (CPU′s anterior to the Intel Haswell generation of 2012, and AMD processors anterior to the Excavator generation of 2015). FOREST is testing the support for the Popcnt and AVX2 instructions when it starts and will tell you if they are absent. At last, in its latest version, FOREST uses multi-threading to accelerate computations and augment its depth of analysis. It then requires a processor with at least 4 logical cores to execute.
FOREST is a "portable" program not requiring any installation utility. It is generally available as a Zip file that you just need to expand in a folder of your choice. From that folder you can then directly execute the FOREST.exe file, or even define a shortcut to that executable file that you will put on your Windows desktop or pin to your task bar. FOREST uses the Windows registry to remember its position on the screen and the settings you will define.
FOREST will automatically select its user interface language (English or French) according to your system settings
Although I do not intentionally put any virus or adware in the FOREST executable, you should anyway double-check with your own anti-virus.
You can contact me for support, or for sending comments and feedback, which I will greatly appreciate.
More and more developers and data scientists are programming in Python, and have been asking me for a Python extension allowing to call the FOREST API to evaluate or solve positions. It happens that I have developed such an extension for my own research (using Cython), so I can make it available for all.
That Python extension provides FOREST API's for calling FOREST's Value and Policy neural network, for evaluating the value of positions with an alpha-beta search, and for solving end-game positions by Win-Loss-Draw or exact score. The solvers are not the fastest ones available (EDAX is definitively faster), but they solve positions up to 25 empty squares in a reasonable amount of time. Just extract the Zip file and read the self-explanatory Python sample to understand how to use the FOREST API.
For those who want to understand how FOREST is programmed, how its Artificial Intelligence works, and what techniques and tools I used to develop it, here you go.
Last update: Nov 19th 2024