public Individual crossover(IReadOnlyIndividual i) { int randInt = _rnd.Next(0, this.Genes.Length); string lhs = this.Genes.Substring(0, randInt); string rhs = i.Genes.Substring(randInt); Individual child = new Individual(lhs + rhs); return(child); }
public double CalcFitness(IReadOnlyIndividual indiv, IReadOnlyIndividual goal) { double fitness = 0; int len = goal.Genes.Length; //if (indiv.Genes.Length != len) return -1; for (int i = 0; i < len; ++i) { if (i > indiv.Genes.Length - 1) { break; } if (indiv.Genes[i] == goal.Genes[i]) { ++fitness; } } fitness = fitness / (double)len; return(fitness); }