Applying mutation in steady-state genetic algorithm
I’m implementing a steady-state genetic algorithm to perform symbolic regression.
My questions are about the relation between mutation and crossover operators.
I always consult a mutation probability (Pm) before applying mutation and a tournament selection to choose parents based in their error.
- First question:
Mutation must be applied ONLY to children obtained after crossover (or another genetic operator) or can be applied dir开发者_Go百科ectly to a 1 parent to generate a new individual ?
- Second question:
Children obtained after a crossover operation must always try a mutation (of course with Pm)?
Thank you all in advance.
Usually the mating process includes cross-over and mutation, so to answer your question a standard way of doing this is to take the parents, apply cross-over and only then mutate the final result (before calling it a child).
The reason for this is that if you apply mutation to the parents there's basically 'too much mutation' going on (assuming the mutation rate is the same, you're doubling the chance of stuff getting scrambled).
Even if I have never seen it done like that, of course you could do it but you would have to 'rescale' mutation so that it's not disruptive for the evolution process (too much mutation --> random walk).
All the standard evolution rates I've ever used as a reference are given on the child, so that's another reason to go with that.
In each case, you can do either. Different crossover and mutation schemes may work well for different problems; try a variety of things for your problem and see how they perform. (But of course if you (1) say that mutation is only applied to children after crossover and (2) say that children after crossover don't mutate, then the result is that you have no mutation :-), so that combination is probably not a good one.)
As has been mentioned in other answers, either approach is usable and I have seen both implemented in practice. It is a design choice. But, having said that, I'd like to persuade you that it is preferable to only perform one genetic operation at a time.
The property of high 'locality' is desirable for genetic operators the majority of the time. Locality refers to how localised an operator's effect on an individual is - does it radically change it, or does it only make a small adjustment, nudging the individual to an adjacent location in the search space. An operator which has low locality creates large unrelated jumps in the search space, which makes it difficult to make gradual progress, instead relying upon lucky strikes. If you are to apply crossover and mutation in one step, then the changes are effectively combined, creating an operation of lower locality than if they were applied individually.
There are times when you might want this by choice, but normally only in circumstances that the fitness landscape is so rugged that evolutionary algorithms are probably the wrong approach.
精彩评论