5

Since computers have surpassed by now all humans, it should be very easy for it to emulate a strength of an weaker player. So the idea is:

  • Supply a number of games
  • The computer ajusts its options (Rating, Cowardice, Pawn Structure play, etc) to the player

    EDIT:

For people who think the behavior of an engine cannot be changed to fit nearly a human:

http://wbec-ridderkerk.nl/html/UCIProtocol.html

You can set the options to be correct, but I was looking for an program to fit those options more or less.

Also ChessMaster has multiple characters you can play against, and I think they have some well defined traits : Passive, values bishops, etc. I think it is possible to find those preferences if you put enough games.

  • 5
    Easy to emulate the strength of a player, but very hard to play like one! – Wes Oct 14 '14 at 21:44
  • 3
    "it should be very easy" ... except that what you go on to describe involves concrete implementations of notions as vague as a player's cowardice. – ETD Oct 14 '14 at 22:59
  • 2
    Sorry, it's very hard. Actually one of the most difficulty problems in chess programming. – HelloWorld Oct 15 '14 at 0:16
  • 3
    I don't see a question mark in the question text. What is the question here? – JiK Oct 15 '14 at 7:05
10

Firstly, you must understand how an engine plays chess, because if you don't you'll never understand why it's hard. Without going into too much technical details, an engine doesn't think. Even the most powerful chess engine in the world don't know how to play chess, they examine hundreds and thousands of positions. For each position, the engine uses some heuristic to derive a static evaluation for each position. The engine uses a technique known as alpha-beta to derive the overall optimal evaluation.

The key point to note that chess engine doesn't know how to play chess, it's simply a calculator. It doesn't know how to adjust itself from games, simply because it doesn't understand anything about chess.

It's very easy to tune down an engine's strength, but making it to play truly like a human is awfully hard. A chess engine never blunders, never forgets anything, never panic because you launch a king-side attack, never biased towards particular opponents etc. The way computer makes a move is simply very different to how you make a move.

I'll give you an example. Have you tried those weak playing levels in a chess app? Yes, you beat them easily, but that might be because they gave you a pawn for absolutely no reason and not under any pressure. Those engines were programmed to simulate blunders, but they couldn't simulate pressure, they just randomly blunder pawns and pieces. This is not a human play.

Programmers have tried to optimize an engine based on machine learning but with little success.

  • What about chess-db.com? – BCLC Jul 25 '18 at 11:06
  • 1
    @BCLC ? chess-db.com is a database website. – HelloWorld Jul 25 '18 at 11:07
  • chess-db.com/public/play/chess.jsp apparently they have this feature, albeit beta, that is claimed to simulate real players and not just GMs ' This functionallity is in early stage of development. It allows you to play chess against a computer that will closely simulate the play of the selected opponent: Opening repertoire, Elo rating, as well many additional properties of his/her playstyle. ' – BCLC Jul 25 '18 at 11:10
  • 1
    @BCLC I don't know its algorithm well. Never heard chess-db would allow chess playing. What about start a new question on it? – HelloWorld Jul 25 '18 at 11:15
  • thanks for the support. I emailed chess-db twice. I figured to wait to hear from them first or about a week or so – BCLC Jul 25 '18 at 11:39
3

I couldn't make one play like a human. But it could play less than perfect. Have it select its move randomly from the top "n" moves, where lower value of "n" denote higher strength. n=1 would mean the computer would play the best move every time. An n of 2 would mean the machine would select randomly between the best 2 moves.

There would have to be exceptions to allow the machine to make immediate recaptures, etc., so it doesn't simply drop pieces.

I would venture that I, as a "B" player, could not beat Stockfish with n=10.

  • Why the downvote? – Tony Ennis Oct 15 '14 at 2:50
  • 3
    Didn't vote; I guess that this might not answer the question, which asks about playing style. (If there is any question at all; I don't see a question mark in the question text...) – JiK Oct 15 '14 at 7:05
1

I am not really sure I understand your question: are you asking how to do this, or pushing your ideas for others to evaluate? In any case, let me try.

First of all why do people say that computer can not play like a human. To support such claim there should be at least some studies which tells that a human can determine (with some accuracy) whether a game was played by the machine or not. (There was Kasparov accusing Deep Blue team that they used a human to help a machine, but no one proved anything). Something like a Turing test. I have not heard about such studies and I highly doubt that an above average chess player can accurately predict whether the game is played against a computer. For example, can you determine who is a machine here (or may it is just two humans):

[fen ""]
1. e4 e5 2. Nf3 Nc6 3. Nc3 f5 4. exf5 Bc5 5. Nxe5 Qe7 6. f4 Nf6 7. Bb5 Nd4 8. a4 a6 9. Be2 d6 10. Nc4 Bxf5 11. Ne3 O-O 12. Bc4+ Kh8 13. Ne2 Bxc2 14. Nxc2 Ng4 15. Ncxd4 Bxd4 16. Qb3 d5 17. Bxd5 Rae8 18. Bf3 Rxf4 19. Qxb7 Bc5 20. a5 Rff8 21. Qxa6 Qd7 22. h3 Ne5 23. Kd1 Nxf3 24. gxf3 Qd5 25. Kc2 Qxf3 26. Ng3 Qxg3 27. Rhf1 Qxh3 28. Rxf8+ Bxf8 29. Qb5 Re6 30. a6 Qh1 31. Ra4 Re1 32. Ra1 Re6 33. Ra4 Re1 34. Ra1 Re6 35. a7 Rc6+ 36. Kb3 Qf3+ 37. Ka2 Rc5 38. Qa4 Qd5+ 39. Kb1 Qh1 40. Ka2 Qd5+ 41. Kb1 Qh1 42. Ka2 Qd5+ 43. Kb1 1/2-1/2

Theoretically it is not hard to simulate game of a weaker opponent or an opponent with some preferences (we humans have preferences). In all artificial intelligence the move is determined based on a scoring function. So by modifying a scoring function you can achieve the game similar to what you want. For example if you want your machine to be more aggressive (attacking the opponent, sometimes even recklessly) you can modify it in such a way, that it will prefer lines where a lot of things can go wrong for the opponent. Even if with the best play you became a little bit worse.

Because you can modify a scoring function in any possible way, you can resemble the preferences of some humans playing solid/drawish lines, attacking, preferring knights over bishops, two rooks over a queen.

  • 1
    @StudentT are you willing to bet something? And how have you came up with this answer? – Salvador Dali Oct 15 '14 at 0:38
  • 1
    I chose White because of the king position. I ran your game on Houdini, and saw that the fact that king on c2 was winning for White. Very dangerous apparently, but computer was fine. Also, Black had to force a draw, it meant Black was the inferior player - human. Sorry, I could only made the decision only after I ran analysis on it. – HelloWorld Oct 15 '14 at 3:43
  • 1
    Your example actually prove Stockfish can't play like a human. A human player wouldn't go into such a sharp line, moving the king to c2 without some preparation. Look at Peter Leko, do you think he would go into such messy position? – HelloWorld Oct 15 '14 at 4:04
  • 1
    An average human player wouldn't even contempt the possibility of a king-walk like your example. So your example really just confirm my hypothesis. – HelloWorld Oct 15 '14 at 4:05
  • 3
    If I may? Salvador, please note that your post asks "who is a machine here", then in the fourth comment (overall) you ask "who is human here?" -- so the question is ambiguous... – DevSolar Oct 15 '14 at 13:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.