4 ms·
> To throw a consistent amount of compute at each move, the simple thing to do is give the engine consistent amounts of time per move. The simple thing to do i
by TheDong 9mo ago
> To throw a consistent amount of compute at each move, the simple thing to do is give the engine consistent amounts of time per move.
The simple thing to do is give it a limit on the total number of states it can explore in its search.
If your goal is consistency, wall-clock time makes no sense. If I run 'make -j20', should the chess computer become vastly easier because the CPU is being used to compile, not search? Should 'nice -n 20 <chess app pid>' make the chess computer worse?
Should my computer thermal-throttling because it's a hot day make the chess computer worse, so chess is harder in winter?
If the goal is consistency, then wall-clock isn't the simple way to do it.
- shadowpho 9mo ago>If the goal is consistency, then wall-clock isn't the simple way to do it. It’s simpler than doing a limit on number of states, and for some applications consistency isn’t super important. Doing a time limit also enforces bot moving in a reasonable time. It puts a nice limit to set up a compromise between speed and difficulty. Doing state limit with a time limit might be better way to do it, but is harder.
- Dylan16807 9mo ago> It’s simpler than doing a limit on number of states According to who? A counter that you ++ each move sounds a lot easier to me than throwing off a separate thread/callback to handle a timer. > Doing a time limit also enforces bot moving in a reasonable time. It's designed for specific hardware, and will never have to run on anything significantly slower, but might have to run on things significantly faster. It doesn't need a time cutoff that would only matter in weird circumstances and make it do a weirdly bad move. It needs to be ready for the future. > It puts a nice limit to set up a compromise between speed and difficulty. Both methods have that compromise, but using time is way more volatile.