コード例 #1
0
        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]);
        }
コード例 #2
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);
        }
コード例 #3
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);
        }
コード例 #4
0
        public void Constructor_NoArgs_Length9()
        {
            var target = new SudokuPermutationsChromosome();

            Assert.AreEqual(9, target.Length);

            var genes = target.GetGenes();

            Assert.AreEqual(9, genes.Length);
        }