public void Solve() { SudokuBoard sudokuBoard = Transform(Sudoku); IChromosome chromosome = new SudokuPermutationsChromosome(sudokuBoard); var fitness = new SudokuFitness(sudokuBoard); var selection = new EliteSelection(); var crossover = new UniformCrossover(); var mutation = new UniformMutation(); var population = new Population(5000, 5000, chromosome); var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation) { Termination = new OrTermination(new ITermination[] { new FitnessThresholdTermination(0), new GenerationNumberTermination(100) }) }; ga.Start(); var bestIndividual = ((ISudokuChromosome)ga.Population.BestChromosome); var solutions = bestIndividual.GetSudokus(); Sudoku = Transform(solutions[0]); }
public void Evolve_SimpleSudokuPermutationsChromosome_Solved() { var sudoku = SudokuTestHelper.CreateBoard(); IChromosome chromosome = new SudokuPermutationsChromosome(sudoku); var fitness = SudokuTestHelper.Eval(chromosome, sudoku, 1000, 0, 50); Assert.AreEqual(fitness, 0); }
public void Evolve_RandomPermutationsChromosome_EasySudoku_Solved() { var sudoku = SudokuTestHelper.CreateBoard(SudokuTestDifficulty.Easy); IChromosome chromosome = new SudokuPermutationsChromosome(sudoku); var fitness = SudokuTestHelper.Eval(chromosome, sudoku, 1000, 0, 40); Assert.AreEqual(0, fitness); }
public void Constructor_NoArgs_Length9() { var target = new SudokuPermutationsChromosome(); Assert.AreEqual(9, target.Length); var genes = target.GetGenes(); Assert.AreEqual(9, genes.Length); }