How to dumb down/weaken/humanize an engine algorithmically?
Posted: Sun Jan 18, 2015 11:07 pm
I'd be interested to hear if there is any published material on how to make an engine play weaker, especially in such a way that it'll be a good opponent. I haven't found any published material or algorithm descriptions on that.
I know that several engines nowadays allow to weaken their strength. I am aware of
a) Stockfish, which has an uci engine option for engine skill
b) Shredder, which allows to set the elo
c) a more general approach used by the Fritz GUI ("handicap mode", seems to work with any uci-engine).
Stockfish seems to just limit the search depth, consider via multipv several lines, and dependent on the strength level, add some kind of penalty for each line, and then chooses some weaker move.
see
http://sourcecodebrowser.com/stockfish/ ... ource.html
Fritz GUI seems to do similar things.
I have no clue about shredder, but there seems to be an additional pattern matching, that looks for dangerous positions etc.
None of these seem to adjust w.r.t. engine parameters. To mimick human play, for example, I'd presume that humans crush under pressure, i.e. have difficulties to precisely defend when the king is under attack etc.
I did note however subjectively these things:
a) Fritz results quite often in very tactical positions, i.e. after playing a game, I often see a lot of missed opportunities on my side (overlooked tactics).
b) shredder games are quite often very boring
All engines do make very stupid moves. Fritz for example once sacked his queen for nothing, Shredder "forgot" a piece that was attacked by a pawn... all moves, that even a 1200 player would never do. Nevertheless Fritz GUI's implementation seems to create the most interesting games.
I am wondering:
a) what ideas are out there to create engines that make better opponents for humans?
b) in particular, how does fritz gui inner mechanis works. For example, if you set the handicap to 200, how is a move selected? Choosing a move that is around (best_move - 2.00)? That would lead to a very stupid game, and almost immediately loss? When is a better move chosen? etc. etc.
I heard that Chess System Tal created often "interesting" games. Any knowledge on the inner workings?
I know that several engines nowadays allow to weaken their strength. I am aware of
a) Stockfish, which has an uci engine option for engine skill
b) Shredder, which allows to set the elo
c) a more general approach used by the Fritz GUI ("handicap mode", seems to work with any uci-engine).
Stockfish seems to just limit the search depth, consider via multipv several lines, and dependent on the strength level, add some kind of penalty for each line, and then chooses some weaker move.
see
http://sourcecodebrowser.com/stockfish/ ... ource.html
Fritz GUI seems to do similar things.
I have no clue about shredder, but there seems to be an additional pattern matching, that looks for dangerous positions etc.
None of these seem to adjust w.r.t. engine parameters. To mimick human play, for example, I'd presume that humans crush under pressure, i.e. have difficulties to precisely defend when the king is under attack etc.
I did note however subjectively these things:
a) Fritz results quite often in very tactical positions, i.e. after playing a game, I often see a lot of missed opportunities on my side (overlooked tactics).
b) shredder games are quite often very boring
All engines do make very stupid moves. Fritz for example once sacked his queen for nothing, Shredder "forgot" a piece that was attacked by a pawn... all moves, that even a 1200 player would never do. Nevertheless Fritz GUI's implementation seems to create the most interesting games.
I am wondering:
a) what ideas are out there to create engines that make better opponents for humans?
b) in particular, how does fritz gui inner mechanis works. For example, if you set the handicap to 200, how is a move selected? Choosing a move that is around (best_move - 2.00)? That would lead to a very stupid game, and almost immediately loss? When is a better move chosen? etc. etc.
I heard that Chess System Tal created often "interesting" games. Any knowledge on the inner workings?