For example, I've a chromosome with 10 genes, the first 5 genes represent a specific property of phenotype and the last 5 genes represent another property of phenotype.

So, I need a crossover operator that performs the cross considering this configuration, where the parent1's first 5 genes are cross with parent2's first 5 genes and the same for the last 5 genes.

Is there any paper or description of a crossover operator to perform cross in this kind of chromosome?

  • 2
    $\begingroup$ I'm struggling to understand your explanation. Currently it sounds identical to a normal cross-over operation to me. Can you give a concrete example of what you mean? $\endgroup$ Aug 21, 2013 at 15:18

1 Answer 1


Let's say you have two parents. For the sake of clarity, let's say that the first five alleles can be either '*' or '-', and the second five either 'x' or 'o'. Our parents might then look like the following.

- - - - - | + + + + +

x x x x x | o o o o o

I'm interpreting the question to mean that you want an operator which only operates on whole phenotypes. As far as I can see, there's only one way to do that, which is to do one-point crossover with the crossover point fixed to the boundary between the two parts.

I question whether this is a good idea. It's a very weak search operator, and in order for it to work reasonably well, I would guess you'd need a very high mutation rate to provide some search power and some sort of elitist selection to keep the mutation from killing your good solutions.

Without more information about your problem, it's hard to say for sure what your needs really are. However, the standard way of handling multiple phenotypic variables is to encode them into a single chromosome, as you've done, but then treat them as one string free of semantics. You just do whatever crossover operator you'd normally do. Yes, that means that your crossover might take part of one property mixed with part of another, but that's what happens in biology as well. In my example, no matter where you put the crossover point, you still get valid offspring. You might do uniform crossover and get children like

- x x - x | o + + o +

x - - x - | + o o + o

but those are perfectly valid offspring. The result is that crossover can explore a much wider part of the search space.

I'm not aware of a reference off the top of my head that compares the two ideas. Probably someone in the early days of GAs has looked at this. But unless you need to cite an authoritative source to justify your decision, I'd say just implement whichever version seems like the right answer for your problem. Both are trivial to code.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.