def __init__(self, param_bounds): """ Initialise the optimization environment :param param_bounds: Legal parameter bounds """ super(_GAOptimizer, self).__init__() self.param_bounds = param_bounds self.num_params = len(self.param_bounds) self.optimizer = GeneticAlgorithm.Optimizer() self.optimizer.timeout = None self.optimizer.hall_of_fame_size = 5 self.optimizer.max_iterations = 5 self.optimizer.log = self.__log self.optimizer.elite_count = 1 self.optimizer.population_size = 5 self.optimizer.initialization = GeneticAlgorithm.UniformInitialisation( ) self.optimizer.selection = GeneticAlgorithm.TournamentSelection() self.optimizer.selection.tournament_ratio = 0.1 self.optimizer.selection.selection_ratio = 0.75 self.optimizer.crossover = GeneticAlgorithm.OnePointCrossover() self.optimizer.mutation = GeneticAlgorithm.GaussianMutation() self.optimizer.mutation.point_mutation_ratio = 0.15 self.optimizer.mutation.mu = 0.0 self.optimizer.mutation.sigma = 0.01
def main(): print("####### Current time at start = " + str(datetime.datetime.now())) algo = GeneticAlgorithm.GeneticAlgorithm( GeneticAlgorithm.OnePointCrossover(), 0.9, GeneticAlgorithm.RandomCharMutation(), 0.03, GeneticAlgorithm.TournamentSelection(2)) initialPop = getInitialPopulation() finalPopulation = algo.evolve(initialPop, GeneticAlgorithm.FitnessCondition(-30)) best = finalPopulation.getFittestChromosome() print("####### Current time at end = " + str(datetime.datetime.now()))