Reputation: 273
I am trying to write a genetic algorithm program for paleo-stress inversion i.e. from a given set of data I want to calculate the stress tensor.(Minimization problem)
I have generated a synthetic data set for testing but it is not giving me desired results.
My fitness value converges very quickly in the few initial iterations but it flattens out after some time and doesn't give a fitness lower than that value.
Desired fitness ~ 10^(-6) Fitness that I get ~ 0.015
Also I have noticed that the population of data which I'm working with (population size = 20), most of them take the same value after a few hundred iterations i.e. around 15 values out of the 20 are the same, so i guess crossover will stop producing new offsprings.
The logistics of GA are - Population size 20 Number of iterations 1000 Single Point Crossover Tournament Selection probability of mutation = 1/no. of bits
I've performed programming on matlab
Upvotes: 2
Views: 1661
Reputation: 8391
Well, that just happens with GAs. It's called premature convergence.
The first thing I would try in your case would be increasing the population size dramatically, to e.g. 500 individuals. Such a small population is very likely to become homogeneous. Then I would tweak the parameters (probs of crossover and mutation). If these things don't work well, you might try other techniques like fitness sharing and crowding.
Upvotes: 3