Hacker News new | ask | show | jobs
by thejteam 4396 days ago
What I would love to see is work on chess engines having better strength levels for amateurs. For me at least there is a line where everything below a certain level I can beat 95 percent of the time and everything at or above that level I lose to 95 percent of the time.
5 comments

One of my long-term goals is to write a chess program that plays more like a lower-level human. Every program I've played seems to have the same pattern: play like a master for ten moves, then make an insultingly obvious blunder to let me catch up. Lather, rinse, repeat. It's neither realistic nor fun. Might as well play with a handicap.

Real players at each level tend to have characteristic weaknesses that are expressible in terms of the same factors used in a program's evaluation function. Consider some of the following, which players at a certain level will exhibit and then get past as they improve.

* Bringing the queen out too early.

* Missing pins and discoveries.

* Failing to contest the center.

* Creating bad bishops.

* Bad pawn structure.

* Failing to use the king effectively in the endgame.

These are all quantifiable. They could all be used to create a more realistic and satisfying opponent at 1200, 1500, 1800, etc. All it takes is some basic machine learning applied to a corpus of lower-level games, and a way to plug the discovered patterns into the playing engine.

that's a big problem in scrabble AIs too - there are heuristics for how to dial down the difficulty level, but they mostly involve things like finding the list of best possible moves, and then randomly picking a suboptimal one with how often you do it and how far down the list you go weighted by the handicap level, or constraining the dictionary, or not using lookahead. the problem is that it doesn't always model how actual low-rated scrabble players play, and so does not really make for a satisfying opponent - every now and then you hit a "well, that was stupid" move that just feels implausible for even a weaker human player to make.

the other problem is that the devs of the current top scrabble engines, quackle and elise, are (naturally) focused on getting better and better at playing, not on plausible ways to play badly. it's something i keep meaning to work on when i have some spare time; i have a few ideas, but nothing i've had the time to explore properly.

Shredder (on iOS and Android, at least) has the capacity to tailor it's playing strength based on your success with it. It tries to match your own playing strength to give you a more interesting game. As you win it gets stronger, as you lose it plays weaker.
Try HIARCS which is well known for its very human like play esp at lower levels.
Pole Position mode. The AI quality ramps up when losing and down when winning.