public void Evaluate_ChromosomeForwardMoveAndCanCaptureAnotherOne_Fitness2() { var board = new CheckersBoard(8); var target = new CheckersFitness(board); var move = new CheckersMove(new CheckersPiece(CheckersPlayer.PlayerOne) { CurrentSquare = new CheckersSquare(3, 2) }, new CheckersSquare(4, 3)); Assert.IsTrue(board.MovePiece(move)); move = new CheckersMove(new CheckersPiece(CheckersPlayer.PlayerTwo) { CurrentSquare = new CheckersSquare(6, 5) }, new CheckersSquare(5, 4)); Assert.IsTrue(board.MovePiece(move)); var chromosome = new CheckersChromosome(2, 8); chromosome.Moves.Clear(); chromosome.Moves.Add(new CheckersMove(new CheckersPiece(CheckersPlayer.PlayerOne) { CurrentSquare = new CheckersSquare(4, 3) }, new CheckersSquare(6, 5))); target.Update(chromosome); Assert.AreEqual(2, target.Evaluate(chromosome)); }
public void Evolve_ManyGenerations_Fast() { int movesAhead = 10; int boardSize = 10; var selection = new EliteSelection(); var crossover = new OrderedCrossover(); var mutation = new TworsMutation(); var chromosome = new CheckersChromosome(movesAhead, boardSize); var fitness = new CheckersFitness(new CheckersBoard(boardSize)); var population = new Population(40, 40, chromosome); var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation); ga.GenerationRan += delegate { if (ga.Population.GenerationsNumber % 100 == 0) { fitness.Update(ga.Population.BestChromosome as CheckersChromosome); } }; ga.Start(); var firstFitness = ((CheckersChromosome)ga.Population.BestChromosome).Fitness; ga.Termination = new GenerationNumberTermination(2001); ga.Start(); var lastFitness = ((CheckersChromosome)ga.Population.BestChromosome).Fitness; Assert.LessOrEqual(firstFitness, lastFitness); }
public void Evaluate_ChromosomeForwardMove_Fitness05() { var target = new CheckersFitness(new CheckersBoard(8)); var chromosome = new CheckersChromosome(2, 8); chromosome.Moves.Clear(); chromosome.Moves.Add(new CheckersMove(new CheckersPiece(CheckersPlayer.PlayerOne) { CurrentSquare = new CheckersSquare(1, 2) }, new CheckersSquare(2, 3))); Assert.AreEqual(0.5, target.Evaluate(chromosome)); }
private void Awake() { var population = new Population(m_populationSize, m_populationSize, new CheckersChromosome(m_movesAhead, m_boardSize)); Fitness = new CheckersFitness(new CheckersBoard(m_boardSize)); GA = new GeneticAlgorithm( population, Fitness, new EliteSelection(), new UniformCrossover(), new UniformMutation()); GA.TaskExecutor = new SmartThreadPoolTaskExecutor(); GA.TaskExecutor.Timeout = System.TimeSpan.FromSeconds(1); }
private void Awake() { Fitness = new CheckersFitness(new CheckersBoard(m_boardSize)); InitializeGA(); }