Prevention of inbreeding and monoculture in the genetic algorithm (question for beginners)

I am writing a genetic algorithm. My population is rapidly developing a monoculture. I use a small population (32 individuals) with a small number of discrete genes (24 genes per person) and a single-point crossing approach. Combine this with a roulette wheel selection strategy, and it's easy to see how all genetic diversity is lost in just a few tens of generations.

What would I like to know, what is the corresponding answer? I don't have academic level GA knowledge, and only a few solutions come to mind:

  • Use a larger population. (Slow)
  • Use runtime checks to prevent propagation. (Slow)
  • Use more cross points. (not very effective)
  • Raise the number of mutations.

What are some adequate answers to the situation?

+6
source share
2 answers

I would look at a larger population, 32 people were a very small population. I usually run a GA with a population of at least the ^ 2 chromosome range (from experience) to get a good initial distribution of people.

A possible way to speed up work with a large population is to generate different flows (1 per person, possibly in batches) while performing your fitness function (usually this is the most expensive part of GA).

Assuming a population of 32 and a quad-core system generate threads in batches of 8 (2 threads per processor will alternate well), and you can work about 4 * faster.

Therefore, if you have a time limit for GA execution, this may be a solution.

+3
source

You can add to this:

  • Choosing a tournament instead of roulette.
  • island-split multiplayer scheme with migration
  • reboots
  • includes ideas for evaluating distribution algorithms ( EDA ) (domain oversampling close to promising areas for introducing new faces)
+3
source

Source: https://habr.com/ru/post/898095/


All Articles