Making dumb dumber

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Making dumb dumber

Post by hgm »

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: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Making dumb dumber

Post by abulmo2 »

hgm wrote: Thu Mar 04, 2021 9: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: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Making dumb dumber

Post by abulmo2 »

lithander wrote: Thu Mar 04, 2021 6: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: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Making dumb dumber

Post by abulmo2 »

lithander wrote: Thu Mar 04, 2021 6: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 1: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: 880
Joined: Sun Dec 27, 2020 2:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Making dumb dumber

Post by lithander »

abulmo2 wrote: Sun Mar 07, 2021 6: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 (simple, open source, C#) - Youtube & Github
Leorik (competitive, in active development, C#) - Github & Lichess
abulmo2
Posts: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Making dumb dumber

Post by abulmo2 »

lithander wrote: Mon Mar 08, 2021 2:02 am
abulmo2 wrote: Sun Mar 07, 2021 6: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: 880
Joined: Sun Dec 27, 2020 2:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Making dumb dumber

Post by lithander »

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 (simple, open source, C#) - Youtube & Github
Leorik (competitive, in active development, C#) - Github & Lichess
Carlos777
Posts: 1727
Joined: Sun Dec 13, 2009 6:09 pm

Re: Making dumb dumber

Post by Carlos777 »

abulmo2 wrote: Wed Mar 10, 2021 9:01 am
lithander wrote: Mon Mar 08, 2021 2:02 am
abulmo2 wrote: Sun Mar 07, 2021 6: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: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Making dumb dumber

Post by mvanthoor »

lithander wrote: Wed Mar 10, 2021 1: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, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
abulmo2
Posts: 433
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Making dumb dumber

Post by abulmo2 »

Carlos777 wrote: Thu Mar 11, 2021 5: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