Im creating a Tetris player using genetic algorithms, and facing some issues. I've read a lot of related works, but they don't give me enough details on the GA.
The problem is that my agent seems to get stucked very fast...Im using a evaluation function take covers 4 features:height, covered holes, flatness and number of cleared rows. I read some paper that uses the same evaluation, and is capable of doing thousands of rows.
After 600 generations, with a population of 100 agents, the best one is capable of doing only 260 rows on average, that's lame. All agents are playing the same piece sequence.
Details of my GA:
generations:600 population:100
genes: Array of 4 float values, between 0 and 1.
Uniform crossover happens at a certain probability, and swaps genes between two parents, with a certain probability.
Mutation occurs at a certain probability, here i've tried 3 different approaches:swap genes, replace the gene with a random value, or add some noise value to the gene.
I have a elite rate of 50%, and noticed that some good agents are being selected and given birth to worse agents, contaminating the population.
Selection is roulette wheel...
If someone could give me details on the best way to crossover and mutate, i appreciate!
Thanks, and sorry for the long post!