EubosChess

Moderators: Elijah, Igbo, timetraveller

timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

Author: Chris Bolt

v1.0.3


A basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing). This is my first chess engine, my first full Java project, my first open source contribution...

Current release version 1.0.3

You can get a binary from the bin folder, alongside a batch file for running Eubos from Arena.

You must have installed Java version 8 on the PC to use Eubos (get it from java.com)

To install Eubos as an engine in Area:

-Select Engines > Install New Engine
-In the file browser dialog that appears, change the drop down to *.bat
-Navigate to the Eubos binary location, select the StartEubos.bat
-Select UCI protocol to communicate with Eubos
-That's it!


Homepage
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.0.5

-Though still slow, Eubos is now twice as fast as it was in v1.0.2.
-I have made a number of optimisations in the move list generation, hashing, perform and undo move functions, as well as reducing the number of times the costly isSquareAttacked routine is called.

Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.0.7

Fixed a bug that would cause Eubos to send the best move found as whatever Move was found first at the current ply, in certain circumstances when the timed search was interrupted. This defect effectively meant it was searching for less time than was availlable, so it has produced a reasonable increase in strength.
Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.1.0

As v1.0.9 but with an extra yield point in the main search thread and explicit garbage collection disabled. This improves VM scheduler latency and search throughput on both Heroku and on my test machines.
Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.1.3

Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.1.4

Now running nearly twice as fast as v1.0.6.
Bug fixes when scoring mate positions in the hash table; Eubos now finds deeper mating sequences, for example Mate-in-7+, reliably.

Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v1.1.6

This release adds Killer moves to the move ordering. The most recent two quiet move refutations at each ply of the tree are used as Killers.

In this release I also optimised move generation and move ordering to deliver a significant improvement against perft benchmarks.

I also discovered and corrected a fairly serious defect which caused losing captures with check to be searched before winning captures.
Eubos now has a 56% win rate against Tarrash Toy Engine (ELO 1489). I estimate an ELO of 1500.


Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v2.0

This is a major new Eubos release:
-The engine now supports multi-threaded execution
-The evaluation function is improved:
King safety now takes account of king placement on open lines, that are exploitable by the opponent
Piece mobility is improved following removal of a premature optimisation
-The quiescence search is improved:
It no longer searches checks, which caused a branch explosion issue, highlighted by multithreaded mode
A defect in setting the PAT score is corrected

Download
timetraveller
Global moderators
Points: 6 232,00 
Forum Contributions
Posts: 2134
Joined: 01/11/2019, 14:27
Status: Offline (Active 5 Hours, 24 Minutes ago)
Topics: 349
Reputation: 369
Location: Biergarten
Has thanked: 1885 times
Been thanked: 4054 times

EubosChess

Post by timetraveller »

v2.2

-Bug fix to fix a defect in backing up the best score to alpha in extended search.
-Revised the King Safety algorithm.
-Various small improvements to UCI info message sending and clock time management.


https://github.com/cjbolt/EubosChess/releases/tag/v2.2
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

v2.3
Thanks to the Author Chris Bolt cjbolt smile218

A Java chess engine. Uses UCI protocol. Playable on lichess.

Homepage : https://github.com/cjbolt/EubosChess

Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.3

- Added Aspiration Windows to the search algorithm.
- Otherwise minor optimisations and refactoring.
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

v2.4
Thanks to the Author Chris Bolt cjbolt :sun_bespectacled:

Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.4

- Simplified the negamax search function and removed some specific code from older Eubos versions which was making the search inefficient.
- Refactored the isAttacked() and Piece mobility calculation functions to use dumb7Fill algorithm. This has also increased the efficiency of Eubos.
- Reworked Transposition table to cull least used 20% of Transpositions only after best move calculation is completed.
The evaluation function is unaltered since Eubos v2.2.
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

V 2.5
Thanks to the Author Chris Bolt smile218

Download : https://workupload.com/file/w7u8uG28uef

Eubos - a basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing).
Author: Chris Bolt Rating CEDR=2736
v.2.5
This is mainly a release focused on delivering optimisation of the move generation and transposition hashing:
Reworked 3-fold draw checker to use an array based implementation indexed by ply, as opposed to a hash map keyed by Zobrist hash, this is more efficient.

Reworked the transposition table to use a primitive open hash set using the fastutils Java package (that is the reason for the increase in the size of the Eubs.jar file). This allows a more efficient linked hash map implementation, where the full hash table can be utilised (previously the hash utilisation varied between 35% to 80% based on the Transposition ageing).

Reworked the MoveList generation so that static arrays are used instead of dynamically creating and destroying objects at each node of the search.

However there are a few algorithmic changes:
Dumb7Fill based King Safety evaluation (scored as per the previous algorithm)

Allow transposition hits that are drawing due to three-fold to cause refutations (previously they were re-searched)
To install Eubos as an engine in Arena:
1. Select Engines > Install New Engine
2. In the file browser dialog that appears, change the drop down to *.bat
3. Navigate to the Eubos binary location, select the Eubos.bat
4. Select UCI protocol to communicate with Eubos
5. That's it!
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

v2.6
Thanks to the Author Chris Bolt cjbolt smile16

A Java chess engine. Uses UCI protocol. Playable on lichess .

Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.6

Homepage / Instructions : https://github.com/cjbolt/EubosChess

The release was pushed forward due to a defect in v2.5. If you tried to use Eubos on a multi-core system, by default it would run as multithreaded. I don't normally test this configuration, and as a result, I had missed that the refactor I did to remove dynamic allocation of Move Lists caused a crash when running with more than one search thread.

I have temporarily removed the capability to run configure or run multithreaded searches.

Apart from that, I have a couple of algorithmic improvements and optimisations:

- Material balance and piece square tables are now incrementally updated
- Lazy evaluation is employed in the opening and middlegame, though only beta refutations are checked at present
- The pseudo-legal move generation has been greatly optimised (yielding a 20% increase in speed!)
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

v2.7
Thanks to the Author Chris Bolt cjbolt :sun_bespectacled:

A Java chess engine. Uses UCI protocol. Playable on lichess.

Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.7

Homepage / Instructions : https://github.com/cjbolt/EubosChess

Additions :
- Tapered Eval
- Incremental updates for PST
- PST per game phase for Rooks, Pawns

Optimisation :
- Mainly to the Move List generation
EzioMagnifico
Forum Contributions
Points: 34 888,00 
Posts: 3216
Joined: 01/01/2020, 8:40
Status: Offline (Active 8 Hours, 33 Minutes ago)
Topics: 400
Reputation: 18630
Location: Somewhere in time .
Has thanked: 10415 times
Been thanked: 18555 times

Re: EubosChess

Post by EzioMagnifico »

v2.8
Thanks to the Author Chris Bolt cjbolt dance4

Eubos chess is a multi-threaded Java chess engine. It was self-built and is playable online 24/7 via lichess (https://lichess.org/@/eubos - it is hosted on Heroku). It is rated around 1890 ELO against other engines, not humans (this is at blitz 2+1 time control, see http://ccrl.chessdom.com/ccrl/404/). It uses the UCI protocol.

Download : https://github.com/cjbolt/EubosChess/releases/tag/V2.8

This is mainly a bug fix release.

I found a subtle defect where the best move at a ply from the principal continuation could become corrupted. In practice, this meant that Eubos would sometimes search the naive best move from a static move order rather than the historical best move from the previous depth of the iterative deepening. If this happened to be a losing capture that caused an aspiration window fail, then this could cause a bad move to be returned from the search, if Eubos ran out of time.

I estimate that fixing this defect adds at least 30 Elo points to the engine's strength.

I have also implemented revisions to the move ordering and evaluation function. Most notably scoring passed pawns on game phase as well as rank, so they become more valuable when there is less material.

I also use progressive widening of aspiration windows in the search in version 2.8.

Full Changelog: v2.7...V2.8
Post Reply

Return to “Other Free Engines”