Ejemplo n.º 1
0
  /**
   * One-point crossover
   *
   * @param cr1 index of parent 1 in poblation
   * @param cr2 index of parent 2 in poblation
   */
  public void onePointCrossover(int cr1, int cr2) {
    RuleSet rule1 = poblacion[cr1];
    RuleSet rule2 = poblacion[cr2];

    // there are 3*number of attribute elements, plus class value in each cromosome
    int cutpoint = Randomize.Randint(0, n_genes);
    int cutpoint_rule = cutpoint / (3 * nAtt + 1);
    int cutpoint_variable = cutpoint % (3 * nAtt + 1);

    // rule1 is replaced from cutpoint (inclusive) to the end of his rule set
    rule1.copyFromPointtoEnd(rule2, cutpoint_rule, cutpoint_variable);
    // rule2 is replaced from the begining of his rule set to cutpoint (not inclusive)
    rule2.copyFromBegintoPoint(rule1, cutpoint_rule, cutpoint_variable);
    // childs must be evaluated
    rule1.setEvaluated(false);
    rule2.setEvaluated(false);
  }