i have a problem understanding evolutionary algorithms. i tried using this technique several times, but i always ran into the same problem: degeneration into simulated annealing.
lets say my initial population, with fitness in brackets, is:
A (7), B (9), C (14), D (19)
after mating and mutation i have following children:
AB (8.3), AC (12.2), AD (14.1), BC(11), BD (14.7), CD (17)
after elimination of the weakest, we get
A, AB, B, AC
next turn, AB will mate again with a result around 8, pushing AC out. next turn, AB again, pushing B out (assuming mutation changes fitness mostly in the 1 range).
now, after only a few turns the pool is populated with the originally fittest candidates (A, B) and mutations of those two (AB). this happens regardless of the size of the initial pool, it just takes a bit longer. say, with an initial population of 50 it takes 50 turns, then all others are eliminated, turning the whole setup in a more complicated simulated annealing. in the beginning i also mated canditates with themselves, worsening the problem.
so, what do i miss? are my mutation rates simply too small and will it go away if i increase them?
here's the project i'm using it for:
http://stefan.schallerl.com/simuan-grid-grad/
yeah, the code is buggy and the interface sucks, but i'm too lazy to fix it right now - and be careful, it may lock up your browser. better use chrome, even thought firefox is not slower than chrome for once (probably the tracing for the image comparison pays off, yay!). if anyone is interested, the code can be found here.
here i just dropped the ev-alg idea and went for simulated annealing.
ps: i'm not even sure about simulated annealing - it is like evolutionary algorithms, just with a population size of one, right?