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
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()
import cProfile from pygenetic import GAEngine from pygenetic import Utils from pygenetic import ChromosomeFactory factory = ChromosomeFactory.ChromosomeRangeFactory(8, 0, 8, data_type=int) 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 ga = GAEngine.GAEngine(factory, 100, fitness_type='min', mut_prob=0.3) ga.addCrossoverHandler(Utils.CrossoverHandlers.PMX, 9) ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct, 4) ga.addCrossoverHandler(Utils.CrossoverHandlers.OX, 3) ga.addMutationHandler(Utils.MutationHandlers.swap) ga.setSelectionHandler(Utils.SelectionHandlers.SUS) ga.setFitnessHandler(Utils.Fitness.TSP, matrix) cProfile.run('ga.evolve(20)')
def test_create_members(population_size): factory = ChromosomeFactory.ChromosomeRangeFactory(noOfGenes=4, minValue=1, maxValue=4) population = Population.Population(factory, population_size) assert len(population.members) == population_size