func main() { clearImages() startX := fieldWidth / 2 startY := fieldHeight / 2 flowerPoints := createFlowerPoints() calc := func(candidate string) int { field := NewField(fieldWidth, fieldHeight, flowerPoints) bee := NewBee(startX, startY) program := evaluate(candidate, bee, field, startX, startY) fitness := getFitness(field.numberOfFlowersFound, program.numberOfInstructions()) return fitness } start := time.Now() disp := func(candidate string) { field := NewField(fieldWidth, fieldHeight, flowerPoints) bee := NewBee(startX, startY) program := evaluate(candidate, bee, field, startX, startY) fitness := getFitness(field.numberOfFlowersFound, program.numberOfInstructions()) display(bee, flowerPoints, program, fitness, startX, startY, time.Since(start)) } var solver = new(genetic.Solver) solver.MaxSecondsToRunWithoutImprovement = 3 solver.MaxRoundsWithoutImprovement = 3 solver.PrintDiagnosticInfo = true solver.NumberOfConcurrentEvolvers = 1 // 3 // solver.MaxProcs = 12 var best = solver.GetBestUsingHillClimbing(calc, disp, geneSet, maxBeeActions, 4, maxFitness) fmt.Print("\nFinal: ") disp(best) }