Don wrote:kaissa wrote:Hello,
I need a chess engine that will play so weak that a beginner should have a chance once in a while. It should not play like 2600 for some time and then drop a rook. I need it to play at 1000-1400 all the way. Any chance?
Thanks for your time,
If you want it to play like a 1400 player, it must make a couple of blunders per game in addition to playing something like a 2 or 3 ply search.
However, programs have to much good evaluation to similar the crappy positional play of a weaker player. So it would be playing more like a much stronger player who is not thinking very clearly tactically and making blunders once in a while!
I think you can simulate this somewhat by randomizing the evaluation function. I think Bob Hyatt has some good ideas on how to realistically weaken the play.[/quote
Crafty has this feature built in, but it is not yet clear how well (or actually how poorly) it works. It is quite hard to take a program with a lot of knowledge, and a very fast / deep search, and make it play like a beginner. A beginner is characterized by two distinct features.. (1) he is tactically weak and is not going to be tossing out mates in 15 or 20 and (b) he is positionally weak and won't understand pawn structure, king safety, mobility, space, etc.
Some previous attempts have relied on depth limits. But what you get is a program with GM-like knowledge and idiot-like tactics. That doesn't feel like a beginner because it won't wreck its pawn structure, and so forth.
In Crafty, the "skill command" does both. It introduces a random component into the evaluation which slowly eliminates the concepts of material value and positional value. And at the same time, it reduces the search depth (by slowing the program down, not by making it move quicker) so that we don't see the "beal effect" of a random evaluation still playing good chess.
The only problem is, it is very difficult to calibrate the skill command to Elo. At one point, skill 70 would reduce elo by 200. Skill 50 would reduce it by 400. But that is still way too strong for a beginner. Skill 1 should play like an absolute idiot, but I don't have any opponents weak enough to get a feel for exactly how weak it is...
Would be an interesting experiment to do. And would be a nice publication to produce something that is hardware independent while being able to say something like "skill 1450" and get a 1450-level opponent no matter what the hardware platform.
Not so easy, however. But interesting.