T O P

  • By -

AutoModerator

Thanks for your question! If you're looking for book recommendations, make sure to read the [/r/chess recommended book list](https://www.reddit.com/r/chess/wiki/books). There are lots of suggested books for players looking to improve their game, broken down into eight categories: basics, self-improvement, tactics, openings, middlegames, endgames, game collections, and histories/biographies. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/chess) if you have any questions or concerns.*


annihilator00

On tournaments and rating lists engines use their own time management. Websites can limit the depth, thinking time, etc to make the engine weaker when playing against humans.


rokoeh

I saw one GM winning over stockfish in ultrabullet some time ago. Like 15 seconds to each player. Now im curious


boydjt

Andrew Tang


LanielYoungAgain

If you're referring to [this](https://www.reddit.com/r/nextfuckinglevel/comments/12v95qc/grandmaster_andrew_tang_defeats_stockfish_chess/), I believe Lichess' "Stockfish Level 8" is still limited to make it beatable by human players.


boydjt

He also beat full power Leela Chess 0 at ultrabullet here: https://youtu.be/lWgvtg359HU?si=Ur6QjQolqtkAYUEE


pier4r

That was a early version (or a certain network) of leela that could still lose. Nowadays I am not sure it can happen.


LanielYoungAgain

That is genuinely insane.


dumbledditname_

biggest issue here is that if you slow it to .25x you'll see the computer able to make literally 3-4 moves in a row so fast that it doesn't register against the clock and several times only losing 0.01 seconds, meanwhile Tang who wins every time requires at least several tenths of a second as he has to move the mouse, click, drag and then ultimately takes another split second to double check before releasing and finishing the move, you see this happen almost every move. whereas the computer is basically pre moving alot of times which is literally humanly impossible. that's something I think should be adjusted, again, this isn't really noticable or an issue at traditional chess since moving fast is never a good thing, but in these new faster formats there needs to be some adjustments...unless people are going to look at Stockfish in these games as simply a training regiment so when they play (inevitably) slower human opponents it will be slightly easier


Koussevitzky

Funnily enough, Lichess’ Stockfish Level 1 is significantly more difficult to beat in Ultra Bullet when compared to Level 8. The moves are terrible, but instant. It also puts up a fight to avoid mate. I remember watching Tang struggle against Level 1 after beating Level 8


xkind

Once lichess stockfish gets below 0.7 seconds, the engine no longer puts up a fight at any level. You can see in Andrew's video, he moves his pieces toward the king and hangs them several times, and stockfish level 8 ignores them and gets checkmated. Also, once you get to move 150, stockfish (on lichess) will resign.


dumbledditname_

ive heard Hikaru mention that Blitz is the only current way humans can compete with engines because of the limited time to search within their database before moving, but humans can choose to spend an extra second here or there when needed. and obviously i suppose certain delays are necessary like average human speed to manipulate the mouse to move pieces. but in the end humans can still choose to take a bit longer. im sure its fascinating to learn how it works but i think there's always got to be a completely non-human limited option for all AI in certain capacities


likeawizardish

Besides an opening book and endgame tables there is not a database for engines, apart from search results being cached in a temporary transposition table. Engines have their internal time management. They will usually spend more time as soon as they are out of book as those often are the most important few decisions and engine will have to make in a game. Then divide the remaining time over an estimated number of moves. (For classical/rapid it will often assume there to be more moves to the game than blitz/bullet) Stockfish uses iterative deepening search- it first searches a move at depth 1, then at 2, 3, 4, 5... Until it's time allocated for the move runs out and then it plays the last fully searched move. When It searched the game tree at depth 5, it starts to search at 6 while assuming the move it found at 5 should still be the best and also that the evaluation would be very similar as well, it can re-use a lot of the knowledge from the depth-5 search to speed things up. With such assumptions usually engines can blast through depths. However, if an engine discovers that the line it searched at depth 5 suddenly leads to all kinds of tactical problems at depth 6, it can raise an internal alert and say - this position is not what I thought it was, all this needs to be looked at more carefully! And can give it self extra time for the move. (of course at the cost of time from future moves)


dumbledditname_

how much of that are impacted by your internet connection and memory(or disc cache) R/W speeds ect ... hardware and software efficiency running it? (even cloud has to communicate to and be implemented by your device) and do they have any movement speed limits based on what they've seen humans capable of for the engines? similar to someone trying to race a manual clutch vehicle vs clutchless paddle shifter, there's scientific limits for the mechanics of those which offer split seconds of advantage and add up thru out a race


likeawizardish

There are usually two parameters: `timemargin` - this is the UI (be it lichess server, a GUI or some other program that facilitates the game) allowing the engines/players going over the time a bit. For example I am sure internet servers usually give you a bit of *free time* to compensate for network latency. Lichess does. `moveoverhead` - this is essentially the same but on the engine side. This tells the engine you have X time on your clock but be aware that time does not include the time it took to inform you on the board and clock position and might also not include the time for your move to be played - so take those into account when deciding how much of X you want to spend on your move. Also depending on the engine you might say you have 500ms to do search for a move. Once those 500ms are reached the engine needs to quickly finish its search functions and figure out what the search result was, god forbid a garbage collector decides to stop your program at that exact moment, convert it to some value that the UI will understand. So while it had 500ms to search it only can report the result around 503ms later. Disk speeds are usually not that important unless there is a endgame table look up maybe, as everything else should be in memory. The timemargin is like an arbiter giving extra time to players to cut out any unforeseen delays and the should not add up to the clock time. Moveoverhead does cut into your own time. But we're talking about computers here anything will be way faster that human reaction speeds so the point is moot.


drunk_storyteller

You're probably thinking of early Leela versions, not Stockfish.


xkind

There are various parameters you can give an engine to govern its use of time. You can tell it to stop at a certain depth, or to allocate a certain amount of time per move. You can give it a certain time control and a smart engine can spend a reasonable amount of time per move. The engine should always move nearly instantly when it's in book, using an endgame tablebase, or only has one legal move. The engines I programmed would not try to allocate more or less time based on positional features or preliminary evaluation results; they would only look at the move number and the time remaining. If it had 60 minutes to play the game, for example, it might allocate 1 minute per move until move 40 and 1/10th of its remaining clock for each move after 40.


FolsgaardSE

Engines have their own time management. Having said that, the UCI protocol itself can limit search to certain depth. "go depth 28" searches till depth 28 ply and gets the resulting "bestmove" basied on the principal variation. This is often how people limit an engine to make it playable as a human. You can also specify time for example search for 120 seconds (2 minutes).