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
Esempio n. 2
0
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
Esempio n. 3
0
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()
Esempio n. 4
0
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)')
Esempio n. 5
0
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