Memetic Algorithm
Example:
from bejoor.genetic import MemeticAlgorithm
def rosenbrock_function(sol):
return sum(100 * (sol[i+1] - sol[i]**2)**2 + (sol[i] - 1)**2 for i in range(len(sol) - 1))
solution_vector = [{"type": "float", "lower_bound": -5, "upper_bound": 10}] * 7
memtic = MemeticAlgorithm(objective_function=rosenbrock_function, solution_vector_size=7,
solution_vector=solution_vector, optimization_side="min",
local_search_iterations=10, population_size=300, epochs=50)
memtic.run()
print(f'Best Global Objective Value: {memtic.global_best_objective_value}')
print(f'Best Global Solution: {memtic.global_best_solution}')
Parameters:
-
objective_function
: Objective function needs to be optimized.
-
solution_vector_size
: Vector size of the candidate solutions.
-
solution_vector
: A vector which determines the types of each variable in solution vectors.
-
optimization_side
: Determines maximize or minimize the objective function.
-
target_objective_value
: Target Objective value.
-
target_objective_lower_bound
: Target Objective lower bound.
-
target_objective_upper_bound
: Target Objective upper bound.
-
population_size
: Number of individuals in the population.
-
epochs
: Number of generations to run the algorithm.
-
local_search_iterations
: Number of local search iterations to improve each solution.
BibTeX citation to the algorithm
@article{moscato1989evolution,
title={On evolution, search, optimization, genetic algorithms and martial arts: Towards memetic algorithms},
author={Moscato, Pablo and others},
journal={Caltech concurrent computation program, C3P Report},
volume={826},
number={1989},
pages={37},
year={1989}
}
More useful resources about the algorithm: