I'm currently writing an Alpha-Beta-Pruning algorithm for a board game. Now I need to come up with a good evaluation function. The game is a bit like snakes and ladders (you have to finish the race first), so for a possible feature list I came up with following:
- field index should be high
- in the lower fields my fuel should be high, when coming to the end it should be low (maximum of '10' required to enter the goal)
- all 'power-ups' must be spent to enter the goal, so prioritize them
- if it is possible to enter the goal (a legit move), do it!
There could be some more for some special cases.
I've read somewhere that it is the best (and easiest) to combine them in a linear function, for example:
i = field index p = power-ups f = fuel -> 0.75 * i - 5 * p - 0.25 * |(f - MAX_FIELD_INDEX/i)|
Since I can't ask an expert and I'm not an expert by myself I have nobody to ask if those parameters are good, if I've forgot something or if I've combined the factors correctly.
The parameters aren't that big of a deal because I could use a genetic algorithm or something else to optimize them.
My problem and question is: What do I have to do to find out how to put together my features optimally (how can I optimize the function / parameter arrangement itself)?