Body: <p>I have a chromosome where each gene contain s set of values. Like the following:</p>
  
  <p>chromosome = [[A,B,C],[C,B,A],[C,D,],[],[E,F]]</p>
  
  <ul>
  <li>The order in each gene values matters. (A,B,C is different to A,C,B)</li>
  <li>Each value should not appear more than once in a gene. ([A,B,B] is not desirable, B is repeated.)</li>
  </ul>
  
  <p>In my current two-point crossover method. The genes values that are crossover is the whole set of values. (E.g the whole of [A,B,C] is crossed to another chromosome)</p>
  
  <p>Soon, I realize my population lacks variations very quickly because the values within a gene always remain the same. Hence, my algorithm is evolving very slowly, and limited by the variation of gene values at initialization stage.  </p>
  
  <p>What crossover can I implement to cross values within the set as well? </p>
  
  <p>I am pretty new to genetic algorithm. Any help will be much appreciated. Thank you. </p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-06-15T10:18:25.043Z
Comments.Text: Why do you cross-over the whole gene? Actually, this is typically the case, but, in your case, that may not be a good idea. Anyway, maybe to solve your problem you can increase the mutation rate (and I assume that during the mutation you mutate individual genes too). Have you already tried something like that?
Comments.UserDisplayName: nbro
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-06-15T14:09:51.853Z
Comments.Text: You probably want to tailor your operators for your problem. Given that each "gene" is a sequence where you don't want repetition, I'd look at operators designed for permutation encodings as a starting place. Something like, "for each gene, apply a separate run of Order Crossover or Cycle Crossover to populate the child's gene" might be a reasonable starting point.
Comments.UserDisplayName: deong
Tags: <genetic-algorithms><evolutionary-algorithms><crossover-operators>
Title: Crossover method for gene value containing a set of values
UserDisplayName: Carol
ThreadText: # Crossover method for gene value containing a set of values
  
  (Asked by: username_0 on 2020-06-15)
  
  I have a chromosome where each gene contain s set of values. Like the following:
  
  chromosome = [[A,B,C],[C,B,A],[C,D,],[],[E,F]]
  
  * The order in each gene values matters. (A,B,C is different to A,C,B)
  * Each value should not appear more than once in a gene. ([A,B,B] is not desirable, B is repeated.)
  
  In my current two-point crossover method. The genes values that are crossover is the whole set of values. (E.g the whole of [A,B,C] is crossed to another chromosome)
  
  Soon, I realize my population lacks variations very quickly because the values within a gene always remain the same. Hence, my algorithm is evolving very slowly, and limited by the variation of gene values at initialization stage.
  
  What crossover can I implement to cross values within the set as well?
  
  I am pretty new to genetic algorithm. Any help will be much appreciated. Thank you.
  
  **Tags:** genetic-algorithms, evolutionary-algorithms, crossover-operators
  
  > **Comments:**
  > **username_1**: Why do you cross-over the whole gene? Actually, this is typically the case, but, in your case, that may not be a good idea. Anyway, maybe to solve your problem you can increase the mutation rate (and I assume that during the mutation you mutate individual genes too). Have you already tried something like that?  
  > **username_2**: You probably want to tailor your operators for your problem. Given that each "gene" is a sequence where you don't want repetition, I'd look at operators designed for permutation encodings as a starting place. Something like, "for each gene, apply a separate run of Order Crossover or Cycle Crossover to populate the child's gene" might be a reasonable starting point.  
  
  ---
  
  ## 0 answers
  
  