def test_rank(fitness_dict, expected_results): factory = ChromosomeFactory.ChromosomeRangeFactory(noOfGenes=4, minValue=1, maxValue=4) ga = GAEngine.GAEngine(factory, 2, fitness_type=('equal', 4), mut_prob=0.3) ga.population = Population.Population(factory, 2) assert type((Utils.SelectionHandlers.rank(fitness_dict, ga))) == list
def test_false_population_control(): factory = ChromosomeFactory.ChromosomeRangeFactory(noOfGenes=8,minValue=1,maxValue=100) ga = GAEngine.GAEngine(factory,population_size=100,fitness_type='max',mut_prob = 0.3,population_control = False) ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct, 4) ga.addMutationHandler(Utils.MutationHandlers.swap) ga.setSelectionHandler(select_all) ga.setFitnessHandler(lambda x:sum(x)) ga.evolve(1) assert len(ga.population.members) > 100
def evolve(self, noOfGenerations=100): ga = GAEngine.GAEngine(self.factory, population_size=self.population_size, fitness_type='min') ga.setFitnessHandler(ANNTopologyEvolve.fitness, self.X, self.Y, self.hiddenLayers, self.input_dim, self.loss, self.metrics, self.epochs, self.batch_size) ga.setSelectionHandler(Utils.SelectionHandlers.best) ga.addCrossoverHandler(Utils.CrossoverHandlers.onePoint, 1) ga.addMutationHandler(ANNTopologyEvolve.mutation, 1, self.neuronsPerLayer, self.activations, self.optimizers) ga.evolve(noOfGenerations)
from pygenetic import GAEngine, ChromosomeFactory, Utils import matplotlib.pyplot as plt matrix = [[0,172,145,607,329,72,312,120],[172,0,192,494,209,158,216,92],[145,192,0,490,237,75,205,100],[607,494,490,0,286,545,296,489],[329,209,237,286,0,421,49,208],[72,158,75,545,421,0,249,75],[312,216,205,296,49,249,9,194],[120,92,100,489,208,75,194,0]] # best sequence i found: 0 5 2 7 1 6 4 3 factory = ChromosomeFactory.ChromosomeRangeFactory(noOfGenes=8,minValue=0,maxValue=7) ga = GAEngine.GAEngine(factory,10,fitness_type='min',mut_prob = 0.02) ga.addCrossoverHandler(Utils.CrossoverHandlers.PMX, 9) def range_of_generation(fitness_mappings,ga): return abs(fitness_mappings[0][1] - fitness_mappings[-1][1]) ga.addStatistic('range',range_of_generation) ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct, 4) ga.addCrossoverHandler(Utils.CrossoverHandlers.OX, 3) ga.addMutationHandler(Utils.MutationHandlers.swap) ga.setSelectionHandler(Utils.SelectionHandlers.random) ga.setFitnessHandler(Utils.Fitness.TSP, matrix) ga.evolve(20) fig = ga.statistics.plot_statistics(['range']) plt.show() fig = ga.statistics.plot() plt.show()
fitness = 0 for i in range(len(board)): isSafe = True for j in range(len(board)): if i != j: if (board[i] == board[j]) or (abs(board[i] - board[j]) == abs(i - j)): isSafe = False break if (isSafe == True): fitness += 1 return fitness factory = ChromosomeFactory.ChromosomeRangeFactory(noOfGenes=8, minValue=1, maxValue=8) ga = GAEngine.GAEngine(factory, 100, fitness_type=('equal', 8), mut_prob=0.3) ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct, 4) ga.addMutationHandler(Utils.MutationHandlers.swap) ga.setSelectionHandler(Utils.SelectionHandlers.best) ga.setFitnessHandler(fitness) ga.evolve(10) fig = ga.statistics.plot_statistics( ['best-fitness', 'worst-fitness', 'avg-fitness']) plt.show() fig = ga.statistics.plot_statistics(['diversity', 'mutation_rate']) plt.show()