Page 3 of 4

Re: Making dumb dumber

Posted: Fri Mar 05, 2021 3:37 pm
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]

Re: Making dumb dumber

Posted: Sun Mar 07, 2021 6:52 pm
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.

Re: Making dumb dumber

Posted: Sun Mar 07, 2021 6:55 pm
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

Re: Making dumb dumber

Posted: Sun Mar 07, 2021 6:58 pm
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

Re: Making dumb dumber

Posted: Mon Mar 08, 2021 2:02 am
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!^^

Re: Making dumb dumber

Posted: Wed Mar 10, 2021 9:01 am
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 %

Re: Making dumb dumber

Posted: Wed Mar 10, 2021 1:58 pm
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! :)

Re: Making dumb dumber

Posted: Thu Mar 11, 2021 5:17 pm
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.

Re: Making dumb dumber

Posted: Fri Mar 12, 2021 3:08 am
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 :)

Re: Making dumb dumber

Posted: Fri Mar 12, 2021 7:21 am
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.