Making dumb dumber

Discussion of chess software programming and technical issues.

Moderators: hgm, Dann Corbit, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
User avatar
hgm
Posts: 26134
Joined: Fri Mar 10, 2006 9:06 am
Location: Amsterdam
Full name: H G Muller
Contact:

Re: Making dumb dumber

Post by hgm » Fri Mar 05, 2021 2:37 pm

I must have misunderstood your remark "draw because of rules or material", by thinking "by rules" meant 3-fold repetitions and such. But in the code you show is indeed tested in the parent. But this would not cause an early exit of anything. It seems it still makes the move, though. I do it more like this:

Code: Select all

for m in move_loop {
	// do move loop stuff
	
	let evaluation = if !draw() {
		make_move(m)
		-alpha_beta(d -1, -b, -a)
		unmake(m)
	} else {
		DRAW
	}
}
[/quote]

abulmo2
Posts: 338
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Making dumb dumber

Post by abulmo2 » Sun Mar 07, 2021 5:52 pm

hgm wrote:
Thu Mar 04, 2021 8:17 am
If I understood Marcel correctly, then in any case he doesn't count nodes where a stand-pat cutoff occurs. I am not sure that this completely coincides with the concept of 'terminal node'.
You are right. I forgot the terminology. The right name is leaf node for nodes that return an "inexact" evaluation and 'terminal node' for the nodes that terminated the game (checkmate or draw). As I understood, Marcel counted none of them.
Richard Delorme

abulmo2
Posts: 338
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Making dumb dumber

Post by abulmo2 » Sun Mar 07, 2021 5:55 pm

lithander wrote:
Thu Mar 04, 2021 5:39 pm
Hmm... maybe you shouldn't have dumbed down the time control code, too! ;)
Yes, I have been optimistic by not polling time in qsearch. This is fixed (with another bug costing a bunch of Elo) now in Dumber 1.1:
https://github.com/abulmo/Dumb/releases/tag/dumber-1.1
Richard Delorme

abulmo2
Posts: 338
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Making dumb dumber

Post by abulmo2 » Sun Mar 07, 2021 5:58 pm

lithander wrote:
Thu Mar 04, 2021 5:32 pm
Much appreciated! Even though, if it's 100 ELO stronger than rustic, it's not quite in reach for my engine just yet!
abulmo2 wrote:
Thu Mar 04, 2021 12:17 am
So you do not count terminal nodes?
It may be a stupid question but do you count every node evaluated in QSearch or stop counting as soon as you reach depth 0 and start QSearch?
I count every nodes, ie interior, terminal and leaf nodes: https://www.chessprogramming.org/Node
Richard Delorme

User avatar
lithander
Posts: 161
Joined: Sun Dec 27, 2020 1:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Making dumb dumber

Post by lithander » Mon Mar 08, 2021 1:02 am

abulmo2 wrote:
Sun Mar 07, 2021 5:55 pm
Yes, I have been optimistic by not polling time in qsearch. This is fixed (with another bug costing a bunch of Elo) now in Dumber 1.1:
https://github.com/abulmo/Dumb/releases/tag/dumber-1.1
I'm still getting

Code: Select all

[Termination "time forfeit"]
[TimeControl "40/5+0.5"]
...in CuteChess. Considering that you report 10x more NPS than me that shouldn't be too fast for Dumber!^^
Minimal Chess. My very first chess engine! Details on Youtube & Github

abulmo2
Posts: 338
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Making dumb dumber

Post by abulmo2 » Wed Mar 10, 2021 8:01 am

lithander wrote:
Mon Mar 08, 2021 1:02 am
abulmo2 wrote:
Sun Mar 07, 2021 5:55 pm
Yes, I have been optimistic by not polling time in qsearch. This is fixed (with another bug costing a bunch of Elo) now in Dumber 1.1:
https://github.com/abulmo/Dumb/releases/tag/dumber-1.1
I'm still getting

Code: Select all

[Termination "time forfeit"]
[TimeControl "40/5+0.5"]
...in CuteChess. Considering that you report 10x more NPS than me that shouldn't be too fast for Dumber!^^
Thanks for the bug report. Dumber did not handle time increments correctly. The bug is corrected in version 1.2 and I removed older buggy versions.
Here is a fast tournament with your time control and no time losses from dumber

Code: Select all

  # PLAYER                : RATING  ERROR   POINTS  PLAYED    (%)
   1 dumber-1.2            : 1918.5   70.4    265.5     300   88.5%
   2 tscp181               : 1692.0   64.9    186.5     300   62.2%
   3 rustic.alpha1         : 1581.6   63.8    147.0     300   49.0%
   4 MinimalChessEngine    :  683.6  166.0      1.0     300    0.3%

White advantage = 18.96
Draw rate (equal opponents) = 10.28 %
Richard Delorme

User avatar
lithander
Posts: 161
Joined: Sun Dec 27, 2020 1:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Making dumb dumber

Post by lithander » Wed Mar 10, 2021 12:58 pm

I suppose in your tournament you used version 0.2.1 of MinimalChess?

Code: Select all

Score of MinimalChess 0.3 vs dumber-1.2: 45 - 892 - 63  [0.076] 1000
...      MinimalChess 0.3 playing White: 27 - 451 - 22  [0.076] 500
...      MinimalChess 0.3 playing Black: 18 - 441 - 41  [0.077] 500
...      White vs Black: 468 - 469 - 63  [0.499] 1000
Elo difference: -432.7 +/- 36.1, LOS: 0.0 %, DrawRatio: 6.3 %
I just played 1000 games on 3+0.5 time controls and not a single game was lost on time or otherwise terminated. Also, considering the limited feature set of Dumber it's performance is very impressive! Well done! :)
Minimal Chess. My very first chess engine! Details on Youtube & Github

Carlos777
Posts: 788
Joined: Sun Dec 13, 2009 5:09 pm

Re: Making dumb dumber

Post by Carlos777 » Thu Mar 11, 2021 4:17 pm

abulmo2 wrote:
Wed Mar 10, 2021 8:01 am
lithander wrote:
Mon Mar 08, 2021 1:02 am
abulmo2 wrote:
Sun Mar 07, 2021 5:55 pm
Yes, I have been optimistic by not polling time in qsearch. This is fixed (with another bug costing a bunch of Elo) now in Dumber 1.1:
https://github.com/abulmo/Dumb/releases/tag/dumber-1.1
I'm still getting

Code: Select all

[Termination "time forfeit"]
[TimeControl "40/5+0.5"]
...in CuteChess. Considering that you report 10x more NPS than me that shouldn't be too fast for Dumber!^^
Thanks for the bug report. Dumber did not handle time increments correctly. The bug is corrected in version 1.2 and I removed older buggy versions.
Here is a fast tournament with your time control and no time losses from dumber

Code: Select all

  # PLAYER                : RATING  ERROR   POINTS  PLAYED    (%)
   1 dumber-1.2            : 1918.5   70.4    265.5     300   88.5%
   2 tscp181               : 1692.0   64.9    186.5     300   62.2%
   3 rustic.alpha1         : 1581.6   63.8    147.0     300   49.0%
   4 MinimalChessEngine    :  683.6  166.0      1.0     300    0.3%

White advantage = 18.96
Draw rate (equal opponents) = 10.28 %
Hi Richard,

Could you compile a Windows binary compatible with old PC's? Mine is an AMD Phenom II x4. At least from Dumb 1.5 to 1.8 binaries are compatible with it.

User avatar
mvanthoor
Posts: 986
Joined: Wed Jul 03, 2019 2:42 pm
Location: Netherlands
Full name: Marcel Vanthoor
Contact:

Re: Making dumb dumber

Post by mvanthoor » Fri Mar 12, 2021 2:08 am

lithander wrote:
Wed Mar 10, 2021 12:58 pm
I just played 1000 games on 3+0.5 time controls and not a single game was lost on time or otherwise terminated. Also, considering the limited feature set of Dumber it's performance is very impressive! Well done! :)
+432 for Dumber. If the rating that was calculated for MMC in my gauntlets is anywhere near accurate, Dumber performs around 2000 Elo. What does it *exactly* have as a feature set? PVMove ordering, MVV-LVA, Killer, History heuristics, and a tuned (but not tapered) evaluation, with only PST's and material? (Or does it have other evaluation terms?) If that is all, I wonder if I can actually reach 2000 Elo with only that feature set in Rustic. I'd be happy if I can reach 2000 WITH a hash table.

Dumber seems to be very fast, being able to search to about 9 ply in the midgame. Must be the move sorting :)
Author of Rustic.
Releases | Code | Docs

abulmo2
Posts: 338
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Making dumb dumber

Post by abulmo2 » Fri Mar 12, 2021 6:21 am

Carlos777 wrote:
Thu Mar 11, 2021 4:17 pm

Hi Richard,

Could you compile a Windows binary compatible with old PC's? Mine is an AMD Phenom II x4. At least from Dumb 1.5 to 1.8 binaries are compatible with it.
Do you mean a compilation to a 32-bit executable? The 64-bit executable targeted core2 CPU which are pretty old already.
Richard Delorme

Post Reply