The use of mutations in a stationary genetic algorithm

Im implements a robust genetic algorithm to perform symbolic regression.

My questions are about the relationship between mutation and crossover operators.

I always advise the probability of a mutation (Pm) before applying a mutation and choosing a tournament to choose parents based on their mistake.

  • First question:

Should a mutation be applied ONLY to children received after a crossover (or other genetic operator), or can it be applied directly to 1 parent person to create a new person?

  • Second question:

Should children received after crossover surgery always try to mutate (of course, with Pm)?

Thanks to everyone in advance.

+4
source share
3 answers

Usually the pairing process involves cross and mutation, so to answer your question, the standard way to do this is to take the parents, apply the cross transition and only then change the final result (before calling it a child).

The reason for this is that if you apply the mutation to your parents, there is basically “too many mutations” (assuming the mutation speed is the same, you double the likelihood that the material will be scrambled).

Even if I never saw this to be the case, of course, you could do it, but you will have to “rescale” the mutation so that it does not distort the evolutionary process (too many mutations → random walk).

All the standard evolution coefficients that I have ever used as a reference are for a child, so there’s another reason for this.

+4
source

In each case, you can do it. Different crossover and mutation patterns may work well for various problems; try many things for your problem and see how they work. (But, of course, if you (1) say that the mutation applies only to children after the crossover and (2) say that children after the crossover do not mutate, then the result is that you do not have a mutation :-), so the combination probably not very good.)

0
source

As mentioned in other answers, any approach can be used, and I saw how they were implemented in practice. This is a design choice. But having said that, I would like to convince you that it is preferable to perform only one genetic operation at a time.

The property of high "locality" is desirable for genetic operators most of the time. Locality is how the operator’s effect is localized to an individual person — whether he changes it radically or makes only a small adjustment, pushing the person to an adjacent location in the search space. An operator with low locality creates large unconnected jumps in the search space, which complicates the gradual progress, instead relying on successful hits. If you need to apply crossover and mutation in one step, then the changes are effectively combined, creating an operation with lower locality than if they were applied individually.

There are times when you may want this of your choice, but usually only in circumstances where the fitness landscape is so strong that evolutionary algorithms are probably the wrong approach.

0
source

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


All Articles