sorry, I really should have explained it a bit better. I wanted to see if this would work at all so I limited to one move against a static enemy. It was set up to work with classic mod in 250 frame matches. here is how the algorithm works:
(0) It starts by generating 10 random moves (aka individuals)
(1) it checks how good each move is (aka fitness value) by executing it
(2) The fitness value is: toribot_score - ukebot_score
(3) once all 10 individuals have had a turn it then takes the top 30% of the population
(4) These are then recombined using crossover(cutting in half, sticking back together) to make the next 10 individuals for the next round
(5) Some of the individuals are mutated just to keep things interesting
(6) goto (1)
this technique means that it could learn how to play any mod out there, so long as the fitness function is good enough (it doesn't understand disqualification... yet). I left it running over the weekend and it got pretty damn good, 151510 in damage in 1 hit, paste this in to best.txt if you want to see it (151510:4,3,1,2,3,2,3,2,2,1,2,3,2,3,3,3,3,2,3,3,1, 1,0). Compare that to the 20,000 I got from purely random search over last weekend.
So! The next step is to make one that does a combo, I hope to have it out this week. Also if anyone knows how to speed up the game (i've tried messing with reaction_time but with no success) because normally a GA works by evaluating 100's of moves per second, not one every 5 seconds, any help would be greatly appreciated!
Also all the settings described above are completely configurable, the variables are at the top of openerGA.lua and all of them have explanations beside them. If you have any more questions do not hesitate to ask me!