def main(): # Differential evolution parameters CR = 0.25 F = 1 MU = 15 NGEN = 20 pop = toolbox.population(n=MU); hof = tools.HallOfFame(1) stats = tools.Statistics(lambda ind: ind.fitness.values) stats.register("avg", numpy.mean) stats.register("std", numpy.std) stats.register("min", numpy.min) stats.register("max", numpy.max) logbook = tools.Logbook() logbook.header = "gen", "evals", "std", "min", "avg", "max" # Evaluate the individuals fitnesses = toolbox.map(toolbox.evaluate, pop) for ind, fit in zip(pop, fitnesses): ind.fitness.values = fit record = stats.compile(pop) logbook.record(gen=0, evals=len(pop), **record) #print(logbook.stream) for g in range(1, NGEN): for k, agent in enumerate(pop): a,b,c = toolbox.select(pop) y = toolbox.clone(agent) index = random.randrange(NDIM) for i, value in enumerate(agent): if i == index or random.random() < CR: y[i] = a[i] + F*(b[i]-c[i]) y.fitness.values = toolbox.evaluate(y) if y.fitness > agent.fitness: pop[k] = y hof.update(pop) record = stats.compile(pop) logbook.record(gen=g, evals=len(pop), **record) print(logbook.stream) print("Best individual is ", hof[0], hof[0].fitness.values[0]) train(hof[0], True)
def main(): # Differential evolution parameters CR = 0.25 F = 1 MU = 15 NGEN = 20 pop = toolbox.population(n=MU) hof = tools.HallOfFame(1) stats = tools.Statistics(lambda ind: ind.fitness.values) stats.register("avg", numpy.mean) stats.register("std", numpy.std) stats.register("min", numpy.min) stats.register("max", numpy.max) logbook = tools.Logbook() logbook.header = "gen", "evals", "std", "min", "avg", "max" # Evaluate the individuals fitnesses = toolbox.map(toolbox.evaluate, pop) for ind, fit in zip(pop, fitnesses): ind.fitness.values = fit record = stats.compile(pop) logbook.record(gen=0, evals=len(pop), **record) #print(logbook.stream) for g in range(1, NGEN): for k, agent in enumerate(pop): a, b, c = toolbox.select(pop) y = toolbox.clone(agent) index = random.randrange(NDIM) for i, value in enumerate(agent): if i == index or random.random() < CR: y[i] = a[i] + F * (b[i] - c[i]) y.fitness.values = toolbox.evaluate(y) if y.fitness > agent.fitness: pop[k] = y hof.update(pop) record = stats.compile(pop) logbook.record(gen=g, evals=len(pop), **record) print(logbook.stream) print("Best individual is ", hof[0], hof[0].fitness.values[0]) train(hof[0], True)
def evaluate_nn(individual): if individual[0] < 1 or individual[1] < 1 or individual[1] < 1: return 10000, return train(individual)[0],