Evaluation Function for Checkers
**My First Post :)**
Can anyone help me out with a strong evaluation function for a checkers game?
thanks kaddy69
What language are you using? Also, what do you mean by a "strong evaluation" function? I don't think I've heard that term used.
http://www.roboguy.net(WIP) - lisperati - SICP - Haskell - Python - OCaml - Lambda the Ultimate - Good Math, Bad Math - Wiki (not Wikipedia) - Pure - Term-Rewriting Functional Language
December 06, 2005 08:45 PM
I'm using C#. I mean a "good" evaluation function. Nothing that trivial.
kaddy69
kaddy69
He probably means an evaluation function that would make for a strong checkers program (if matched by a decent search algorithm, I guess). I wrote a strong Spanish checkers program once, so I might be able to help with the general idea.
Start counting material. Give 1000 (arbitrary number that sets the scale for all other scores) points for every pawn you have and something like 1400 points for every king (this depends on what version of checkers you are programming for, and you can adjust it later on). Then make the pawns in the center be worth a little more than the ones on the sides. Pawns on the first row are probably worth a little extra as well, except the one in the corner (this was the case in Spanish checkers).
Learn how to play the game, or find an expert to help you. Play some games with your program and it will be painfully obvious that you are missing some things. There are particular structures that are strong. I only know how to play Spanish checkers well, and the structures will be different for other variants. I found that most of these structures could be defined as a "mask", a board and a score. Making a list of these structures you can encode many checkers concepts.
The scores you give for different concepts have to be revisited periodically. You will often give too many points for some concept and then see that your program sacrifices other advantages in the position to achieve something else. This is where you need the checkers expert that can tell you "the program likes the center too much", and will come up with some test positions where the program does the wrong thing.
You could try some mechanism to assign weights to the evaluation factors automatically, but this requires huge databases, a lot of processing time or a combination of both. I don't know of anyone that has written a strong checkers or chess program using learned weights. However, it's an interesting idea and you are welcome to try.
You will also need to know your endgames. In Spanish checkers, two kings don't beat one king except in some very short-term traps, so that should evaluate to zero. However, endgame evaluation is not all that important, since you should be using endgame databases. You can find information on endgame databases googling for "Chinook", a very strong checkers program written at the University of Alberta.
Start counting material. Give 1000 (arbitrary number that sets the scale for all other scores) points for every pawn you have and something like 1400 points for every king (this depends on what version of checkers you are programming for, and you can adjust it later on). Then make the pawns in the center be worth a little more than the ones on the sides. Pawns on the first row are probably worth a little extra as well, except the one in the corner (this was the case in Spanish checkers).
Learn how to play the game, or find an expert to help you. Play some games with your program and it will be painfully obvious that you are missing some things. There are particular structures that are strong. I only know how to play Spanish checkers well, and the structures will be different for other variants. I found that most of these structures could be defined as a "mask", a board and a score. Making a list of these structures you can encode many checkers concepts.
The scores you give for different concepts have to be revisited periodically. You will often give too many points for some concept and then see that your program sacrifices other advantages in the position to achieve something else. This is where you need the checkers expert that can tell you "the program likes the center too much", and will come up with some test positions where the program does the wrong thing.
You could try some mechanism to assign weights to the evaluation factors automatically, but this requires huge databases, a lot of processing time or a combination of both. I don't know of anyone that has written a strong checkers or chess program using learned weights. However, it's an interesting idea and you are welcome to try.
You will also need to know your endgames. In Spanish checkers, two kings don't beat one king except in some very short-term traps, so that should evaluate to zero. However, endgame evaluation is not all that important, since you should be using endgame databases. You can find information on endgame databases googling for "Chinook", a very strong checkers program written at the University of Alberta.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement