I have created a Gomoku (5 in a row) AI using Alpha-Beta Pruning. It makes moves on a not-so-stupid level. First, let me vaguely describe the evaluation function of the Alpha-Beta algorithm.
When it receives a board as an input, it first finds all repetitions of stones and gives it a score out of 4 possible values depending on its usefulness as a threat, which is decided by length. And it will return the summation of all the repetition scores.
But, the problem is that I explicitly decided the scores (4 in total), and they don't seem like the best choices.
So, I've decided to implement a genetic algorithm to generate these scores. Each of the genes will be one of 4 scores. So, for example, the chromosome of the hard-coded scores would be $[5, 40000, 10000000, 50000]$.
However, because I'm using the genetic algorithm to create the scores of the evaluation function, I'm not sure how I should implement the genetic fitness function. So, instead, I have thought of the following:
Instead of using a fitness function, I'll just merge the selection process together: If I have 2 chromosomes, A and B, and need to select one, I'll simulate a game using both A and B chromosomes in each AI, and select the chromosome which wins.
Is this a viable replacement to the fitness function?
Because of the characteristics of the Alpha-Beta algorithm, I need to give the max score to the win condition, which in most cases is set to infinity. However, because I can't use infinity, I just used an absurdly large number. Do I also need to add this score to the chromosome? Or because it's insignificant and doesn't change the values of the grading function, leave it as a constant?
When initially creating chromosomes, random generation, following standard distribution is said to be the most optimal. However, genes in my case have a large deviation. Would it still be okay to generate chromosomes randomly?