public string Debug(SuperLightGA ga, float[] genome) { int start = Start; string output = ""; for (int i = 0; i < MainClass.NumberOfSteps; i++) { float g1 = ga.ReadGene(genome, i, 0); float g2 = ga.ReadGene(genome, i, 1); int factor = (int)Math.Round(g1 * MaxJumpDistance); if (g2 < 0.5f) // Subtract { output += string.Format("- {0} ", factor); } else // Add { output += string.Format("+ {0} ", factor); } start = Perform( start, ga.ReadGene(genome, i, 0), ga.ReadGene(genome, i, 1) ); if (start == Target) { break; } } return(output + string.Format("= {0} ", start)); }
public float Evaluate(SuperLightGA ga, float[] genome) { int start = Start; int numberOfSteps; int score = 0; for (numberOfSteps = 0; numberOfSteps < MainClass.NumberOfSteps; numberOfSteps++) { start = Perform( start, ga.ReadGene(genome, numberOfSteps, 0), ga.ReadGene(genome, numberOfSteps, 1) ); if (start == Target) { break; } // Evaluate based on # of jumps and distance from goal score += (numberOfSteps + 1) * Math.Max(0, Math.Abs(Target - start)); } return(score); }