chess22k v1.0

Code, algorithms, languages, construction...
Post Reply
sandermvdb
Posts: 24
Joined: Wed Jun 01, 2016 3:52 pm

chess22k v1.0

Post by sandermvdb » Fri Jan 13, 2017 10:26 am

I just released the first version of my engine on Github on which I have been working for about a year. See:
https://github.com/sandermvdb/chess22k

This has been my 2nd engine. About three years ago I started building an engine which the basic knowledge I had; I could program and I could play chess. This engine could only search till a depth of about 6 plies and I soon found out that if I wanted to build a good engine, the foundation had to be different. So therefore I started about half a year later with my current engine.

A good initial source of information was the following thesis (Nesik):
http://www.top-5000.nl/ps/SomeAspectsOf ... amming.pdf

It felt really good when at a certain point my engine was better than Nesik. I had beaten my master :)

Other usefull sources I've used are Mediocre (also written in Java):
http://mediocrechess.blogspot.nl/

And Madchess (site seems not to be complete anymore):
http://www.madchess.net/

I've used ChessArena a lot to test my engine. One of the included engines is Anmon, which has an elo of about 2500. Most of the time I'd thought that this engine/elo was way out of reach and I will never forget the moment I first beat Anmon! An example:
https://en.lichess.org/Mc5hWy4s/black

At the moment I am also using CuteChess to test engines multi-threaded.

What do you think? :)

H.G.Muller
Posts: 190
Joined: Sun Jul 14, 2013 10:00 am
Real Name: H.G. Muller

Re: chess22k v1.0

Post by H.G.Muller » Sat Jan 14, 2017 9:55 am

Very nice. But remember that this is a hobby that you almost exclusively do for your own satisfaction. The demand for engines that play orthodox Chess is close to zero, (and there already are thousands on offer), unless they are within a couple of Elo from Stockfish. There is a (quite small) community of engine testers, who use any engine to play against other engines.

sandermvdb
Posts: 24
Joined: Wed Jun 01, 2016 3:52 pm

Re: chess22k v1.0

Post by sandermvdb » Sat Jan 14, 2017 4:13 pm

H.G.Muller wrote:Very nice. But remember that this is a hobby that you almost exclusively do for your own satisfaction. The demand for engines that play orthodox Chess is close to zero, (and there already are thousands on offer), unless they are within a couple of Elo from Stockfish. There is a (quite small) community of engine testers, who use any engine to play against other engines.
I think you can read in my post that I've had enough satisfaction :)
It would indeed be really nice to get on the CCRL-list. Any idea how that is achieved?

H.G.Muller
Posts: 190
Joined: Sun Jul 14, 2013 10:00 am
Real Name: H.G. Muller

Re: chess22k v1.0

Post by H.G.Muller » Sun Jan 15, 2017 11:17 am

I guess announcing the release in a place where CCRL testers regularly read (such as talkchess.com) should be sufficient.

notachessplayer
Posts: 30
Joined: Thu Dec 29, 2016 10:13 pm

Re: chess22k v1.0

Post by notachessplayer » Wed Jan 18, 2017 10:16 pm

Kudos, seems like a very well written program.

Did you get your evaluation tables from other sources or from your own game knowledge?

Also, I've been wanting to cache moves generated at the corresponding hashing key (and why not in a persisent table) to gain a lot of time during the search, but it has proven unreliable because of collisions (using 56 bits). I didn't find it in your code, so I assume you don't do it neither? Or did I see it wrong?
I have solutions to this problem, but they're not as elegant and as fast as I would hope.

sandermvdb
Posts: 24
Joined: Wed Jun 01, 2016 3:52 pm

Re: chess22k v1.0

Post by sandermvdb » Thu Jan 19, 2017 7:08 pm

notachessplayer wrote:Kudos, seems like a very well written program.

Did you get your evaluation tables from other sources or from your own game knowledge?

Also, I've been wanting to cache moves generated at the corresponding hashing key (and why not in a persisent table) to gain a lot of time during the search, but it has proven unreliable because of collisions (using 56 bits). I didn't find it in your code, so I assume you don't do it neither? Or did I see it wrong?
I have solutions to this problem, but they're not as elegant and as fast as I would hope.
Tx for the kudos :)

The evaluation tables were originally from another source (don't know which :oops: ) but I have updated them so they better 'fit' my engine. For instance if you want to stimulate castling, there are several ways of doing that. I also think these numbers can be optimized a lot.

I have never looked at caching generated moves because I have never read about that. And to be honest, I generate moves incrementally (hash-move, attack-moves, killer-moves, etc) so I don't think it would improve the search a lot. Offcourse this also depends on your move-generation speed.

Post Reply