acheeseye / ai-playing-checkers

Other
0 stars 0 forks source link

Draw games not replayable #9

Open acheeseye opened 6 years ago

acheeseye commented 6 years ago

I have not yet tried this, but according to the code, a draw game will fail to replay due to the file parser not finding 100 or -100 at the end of file.

Perhaps draw games can be denoted by +50 and when the file parser sees this it will allow the replay to happen (though not sure if this has consequences with the code).

woodchip-dev commented 6 years ago

A game file is only considered valid if it contains a complete game (i.e. the end of the game was reached) so yes, it is necessary to have an annotation for draws; 50 would be fine to use for that. Do we currently have anything in place that identifies whether conditions for a draw have been fulfilled? And under what conditions do we want to declare a draw?

acheeseye commented 6 years ago

Draw condition is declared by making the 100th move and this is counted inside main’s new state. I have implemented this and so far no issues! I will close this issue now.

woodchip-dev commented 6 years ago

I think we should reopen this. We can't make assumptions on how many moves a game will take. According to this,

"A Draw is declared when neither player can force a win."

It also mentions a 40-move draw rule, which appears to basically be the checkers version of the 50-move draw rule from chess. It would be better to determine a draw that way.

acheeseye commented 6 years ago

Well, the win and loss are made before 100 moves and still get recorded. If we were to try to decide if a player can force a win, we would have to do a depth-first search on all possible moves, which may end up being stuck in an infinite loop since we do not have loop detection (this would also make our training longer). We would also need to make sure that the networks aren't simply just moving pieces back and forth between the same place (due to limited ply), and thus allow a game to go infinitely long. I got the 100 moves from the 1999 Evolving Checkers paper provided by Genetti in google drive (page 5), but we can do 40 moves instead to cut down (probably not much) (or perhaps a lot, depending on the ply) on the training time, though we do have to consider if 40 moves is enough for the network to "exhaust" its knowledge.

woodchip-dev commented 6 years ago

Just to make sure it's clear: it's not 40 total moves, it's after 40 moves have been made with no piece getting jumped and no king being made.

acheeseye commented 6 years ago

Got it, I will see what I can do.