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
Пример #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
Пример #3
0
 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)
Пример #4
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()
Пример #5
0
    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()