1

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

Prithvi Thakur
  • 263
  • 2
  • 10

1 Answers1

2

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.

zegkljan
  • 8,051
  • 5
  • 34
  • 49
  • hey thanks... :) should I also try changing the type of selection? right now i'm using tournament selection.... increasing the population size did give much better results... – Prithvi Thakur May 21 '15 at 03:28
  • Probably not, but you may try. Tournament selection is super easy to implement so that's why everybody uses it, including me. Other selection mechanisms either have bad properties or are a little bit more difficult to implement. But as it always is with GAs, you must just try what works best. – zegkljan May 21 '15 at 04:38