New engine: Mora

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

gonzaloarro
Posts: 12
Joined: Sat Aug 31, 2019 4:23 am
Full name: Gonzalo Arro

New engine: Mora

Post by gonzaloarro »

Hi everyone! :D

My name is Gonzalo and I'm a software engineering student from Argentina. I've always liked chess and programming, so I decided to combine both for my degree final project: MORA Chess Engine.

"MORA" doesn't actually stand for anything, it is just the name of my cat who was happen to be at my desk when I started to code, so I decided to name the engine in her honor haha.

For me this has been the most rewarding project until now; I spent countless hours searching for and fixing bugs, running tournaments to see the ELO gains and so on.

The main goal was for my engine to reach 2000 ELO in the Computer Chess Rating Lists. At the moment, MORA 1.0.0 has a rating of 2175 in CCRL 40/4.

For the moment I'm taking a break after the first release, but maybe in the future I will keep working to gain some adittional ELO points and to improve some code related issues.

If you're interested, you can see the project here: https://github.com/gonzaloarro/MORA-CHESS-ENGINE
User avatar
Graham Banks
Posts: 41415
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: New engine: Mora

Post by Graham Banks »

Welcome.

Now that you've reached your first goal, time to set a new one! :P

I do hope that after your break, you'll resume working on improving MORA further.
gbanksnz at gmail.com
User avatar
mclane
Posts: 18748
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: New engine: Mora

Post by mclane »

welcome.
what are your plans for the future ?
What seems like a fairy tale today may be reality tomorrow.
Here we have a fairy tale of the day after tomorrow....
gonzaloarro
Posts: 12
Joined: Sat Aug 31, 2019 4:23 am
Full name: Gonzalo Arro

Re: New engine: Mora

Post by gonzaloarro »

mclane wrote: Sun Sep 15, 2019 3:20 pm welcome.
what are your plans for the future ?
Thank you! :D

Well, not much really. I think the project has reached its goals and is time for me to start working on other projects. But I do want to add some things before that. I still have to implement the UCI hash command to set the size of the transposition tables. I would also like to do some evaluation parameters tuning, in the current version I just set some values that seemed reasonable but didn't run any tests to measure the effect of different combinations. I also have a clue on one possible bottleneck related to the move representation but I think it would be hard to change that at this point.
The code quality could also be improved, even though this is hard sometimes because you have to be careful not to lose efficiency while doing so.

So basically I don't want to add anything new, but just improve what I've done already.

If I could pass the 2200 mark I would be more than happy.
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: New engine: Mora

Post by MikeB »

gonzaloarro wrote: Sat Sep 14, 2019 4:39 am Hi everyone! :D

My name is Gonzalo and I'm a software engineering student from Argentina. I've always liked chess and programming, so I decided to combine both for my degree final project: MORA Chess Engine.

"MORA" doesn't actually stand for anything, it is just the name of my cat who was happen to be at my desk when I started to code, so I decided to name the engine in her honor haha.

For me this has been the most rewarding project until now; I spent countless hours searching for and fixing bugs, running tournaments to see the ELO gains and so on.

The main goal was for my engine to reach 2000 ELO in the Computer Chess Rating Lists. At the moment, MORA 1.0.0 has a rating of 2175 in CCRL 40/4.

For the moment I'm taking a break after the first release, but maybe in the future I will keep working to gain some adittional ELO points and to improve some code related issues.

If you're interested, you can see the project here: https://github.com/gonzaloarro/MORA-CHESS-ENGINE
Congrats very nice.

Do you know your searches are non-deterministic with one core/thread ( at least for me) .
compiled my own on macOS

Code: Select all

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80909 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 154105 time 74 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 417833 time 192 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1090426 time 491 pv d2d4 d7d5 b1c3 g8f6 c1f4 
info score cp 46 depth 11 nodes 4427450 time 2006 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 49 depth 12 nodes 10780105 time 4912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 
bestmove e2e4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 12 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80913 time 43 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156372 time 79 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 419391 time 199 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1094259 time 507 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 48 depth 11 nodes 2575954 time 1185 pv d2d4 d7d5 b1c3 g8f6 d1d3 b8c6 c1f4 e7e5 d4e5 f6h5 d3d2 
info score cp 38 depth 12 nodes 8126863 time 3741 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 f6e4 c1d2 e4d2 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 1 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80920 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156532 time 73 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 420035 time 186 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1163453 time 505 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4353016 time 1912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 38 depth 12 nodes 14376794 time 6392 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 0 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 0 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 1 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 4 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17151 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80921 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156443 time 75 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 43 depth 9 nodes 411626 time 186 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 g1f3 
info score cp 35 depth 10 nodes 1066008 time 466 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4505905 time 1954 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 
info score cp 46 depth 12 nodes 14149501 time 6187 pv d2d4 d7d5 
bestmove d2d4
Image
gonzaloarro
Posts: 12
Joined: Sat Aug 31, 2019 4:23 am
Full name: Gonzalo Arro

Re: New engine: Mora

Post by gonzaloarro »

MikeB wrote: Wed Sep 18, 2019 12:49 am
Congrats very nice.

Do you know your searches are non-deterministic with one core/thread ( at least for me) .
compiled my own on macOS

Code: Select all

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80909 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 154105 time 74 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 417833 time 192 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1090426 time 491 pv d2d4 d7d5 b1c3 g8f6 c1f4 
info score cp 46 depth 11 nodes 4427450 time 2006 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 49 depth 12 nodes 10780105 time 4912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 
bestmove e2e4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 12 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80913 time 43 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156372 time 79 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 419391 time 199 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1094259 time 507 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 48 depth 11 nodes 2575954 time 1185 pv d2d4 d7d5 b1c3 g8f6 d1d3 b8c6 c1f4 e7e5 d4e5 f6h5 d3d2 
info score cp 38 depth 12 nodes 8126863 time 3741 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 f6e4 c1d2 e4d2 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 1 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80920 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156532 time 73 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 420035 time 186 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1163453 time 505 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4353016 time 1912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 38 depth 12 nodes 14376794 time 6392 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 0 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 0 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 1 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 4 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17151 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80921 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156443 time 75 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 43 depth 9 nodes 411626 time 186 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 g1f3 
info score cp 35 depth 10 nodes 1066008 time 466 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4505905 time 1954 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 
info score cp 46 depth 12 nodes 14149501 time 6187 pv d2d4 d7d5 
bestmove d2d4
I think I know why. It's because the set of Zobrist keys used for hashing are generated at random when the engine starts. For 2 different executions of the program, the entries in the tranposition table are going to be different. The final results should be the same if the engine would inspect the whole search tree no matter the transposition table, but I also used some pruning techniques. So when you combine that with different values from the tranposition table it can finally lead to non deterministic searches.

Non determinism was definitely a big problem when I had to test the engine, but I think it shouldn't affect the strength.
User avatar
Scally
Posts: 232
Joined: Thu Sep 28, 2017 9:34 pm
Location: Bermondsey, London
Full name: Alan Cooper

Re: New engine: Mora

Post by Scally »

Hi,

I compiled Mora for Picochess on the Raspberry Pi a few days ago. A friend ‘4.9’ reviews a game against the TASC dedicated machine on the Hiarcs forum under the latest Pi Updates post easily found online, I’m not sure if links are allowed on here.

Cheers,

Al.
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: New engine: Mora

Post by MikeB »

gonzaloarro wrote: Wed Sep 18, 2019 6:50 am
MikeB wrote: Wed Sep 18, 2019 12:49 am
Congrats very nice.

Do you know your searches are non-deterministic with one core/thread ( at least for me) .
compiled my own on macOS

Code: Select all

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80909 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 154105 time 74 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 417833 time 192 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1090426 time 491 pv d2d4 d7d5 b1c3 g8f6 c1f4 
info score cp 46 depth 11 nodes 4427450 time 2006 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 49 depth 12 nodes 10780105 time 4912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 
bestmove e2e4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 12 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80913 time 43 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156372 time 79 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 419391 time 199 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1094259 time 507 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 48 depth 11 nodes 2575954 time 1185 pv d2d4 d7d5 b1c3 g8f6 d1d3 b8c6 c1f4 e7e5 d4e5 f6h5 d3d2 
info score cp 38 depth 12 nodes 8126863 time 3741 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 f6e4 c1d2 e4d2 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 1 pv e2e4 
info score cp 25 depth 2 nodes 101 time 1 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 1 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 2 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 5 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17150 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80920 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156532 time 73 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 36 depth 9 nodes 420035 time 186 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 c1e3 
info score cp 35 depth 10 nodes 1163453 time 505 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4353016 time 1912 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 b1c3 d5d6 d2d4 g8f6 f1c4 
info score cp 38 depth 12 nodes 14376794 time 6392 pv d2d4 d7d5 b1c3 g8f6 d1d3 e7e6 e2e4 f8b4 e4e5 
bestmove d2d4

go depth 12
info score cp 76 depth 1 nodes 24 time 0 pv e2e4 
info score cp 25 depth 2 nodes 101 time 0 pv e2e4 e7e5 
info score cp 84 depth 3 nodes 300 time 0 pv e2e4 e7e5 d2d4 
info score cp 53 depth 4 nodes 1199 time 1 pv e2e4 e7e5 d2d4 d8f6 
info score cp 53 depth 5 nodes 4374 time 4 pv e2e4 e7e5 d2d4 d8f6 d4e5 
info score cp 32 depth 6 nodes 17151 time 11 pv e2e4 b8c6 b1c3 e7e5 d1g4 d8f6 
info score cp 29 depth 7 nodes 80921 time 40 pv d2d4 d7d5 b1c3 g8f6 g1f3 d8d6 d1d3 
info score cp 29 depth 8 nodes 156443 time 75 pv d2d4 d7d5 b1c3 b8c6 e2e4 d5e4 d4d5 c6b4 
info score cp 43 depth 9 nodes 411626 time 186 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 g1f3 
info score cp 35 depth 10 nodes 1066008 time 466 pv d2d4 d7d5 b1c3 g8f6 c1f4 c8f5 e2e3 b8c6 f1d3 e7e6 
info score cp 46 depth 11 nodes 4505905 time 1954 pv e2e4 d7d5 e4d5 d8d5 g1f3 b8c6 
info score cp 46 depth 12 nodes 14149501 time 6187 pv d2d4 d7d5 
bestmove d2d4
I think I know why. It's because the set of Zobrist keys used for hashing are generated at random when the engine starts. For 2 different executions of the program, the entries in the tranposition table are going to be different. The final results should be the same if the engine would inspect the whole search tree no matter the transposition table, but I also used some pruning techniques. So when you combine that with different values from the tranposition table it can finally lead to non deterministic searches.

Non determinism was definitely a big problem when I had to test the engine, but I think it shouldn't affect the strength.
It does and it will affect strength. Non deterministic searches with one thread have added unintentional randomness to the search. Any type of randomness, even in small amounts, will reduce strength - it may not be a lot, or very measurable unless you play thousands and thousands of games, but it's there. It also introduces additional noise to the search and the results and it will make it harder to make progress. Anyway, I know this a college project and you were successful on your initial goal and you will be working on bigger better things.

A job well done, congrats and good luck in your future endeavors!
Image
gonzaloarro
Posts: 12
Joined: Sat Aug 31, 2019 4:23 am
Full name: Gonzalo Arro

Re: New engine: Mora

Post by gonzaloarro »

Scally wrote: Wed Sep 18, 2019 9:02 am Hi,

I compiled Mora for Picochess on the Raspberry Pi a few days ago. A friend ‘4.9’ reviews a game against the TASC dedicated machine on the Hiarcs forum under the latest Pi Updates post easily found online, I’m not sure if links are allowed on here.

Cheers,

Al.
Thanks for the notice!

I found the post and "4.9" made some interesting observations, I will also take a look at the game played.
gonzaloarro
Posts: 12
Joined: Sat Aug 31, 2019 4:23 am
Full name: Gonzalo Arro

Re: New engine: Mora

Post by gonzaloarro »

MikeB wrote: Wed Sep 18, 2019 5:56 pm
It does and it will affect strength. Non deterministic searches with one thread have added unintentional randomness to the search. Any type of randomness, even in small amounts, will reduce strength - it may not be a lot, or very measurable unless you play thousands and thousands of games, but it's there. It also introduces additional noise to the search and the results and it will make it harder to make progress. Anyway, I know this a college project and you were successful on your initial goal and you will be working on bigger better things.

A job well done, congrats and good luck in your future endeavors!
Thank you for your observation, I was not aware of this.

It shouldn't be that hard to change it in a way that it will always generate the same set of keys. I will add it to my to do list.