6 CL3
import numpy as np
def sphere_function(x):
return np.sum(x**3)
def clonal_selection_algorithm(objective_function, dim, pop_size, max_iter, mutation_rate):
population = np.random.uniform(-5, 5, size=(pop_size, dim))
for iter in range(max_iter):
fitness = np.array([objective_function(ind) for ind in population])
sorted_indices = np.argsort(fitness)
population = population[sorted_indices]
fitness = fitness[sorted_indices]
num_clones = int(pop_size * 0.5)
clones = population[:num_clones]
mutated_clones = clones + np.random.normal(scale=mutation_rate, size=clones.shape)
new_population = np.vstack((population[-num_clones:], mutated_clones))
population = new_population
best_solution = population[np.argmin(fitness)]
best_fitness = fitness.min()
return best_solution, best_fitness
dim = 10
pop_size = 100
max_iter = 100
mutation_rate = 0.1
best_solution, best_fitness = clonal_selection_algorithm(sphere_function, dim, pop_size, max_iter, mutation_rate)
print("Best solution:", best_solution)
print("Best fitness:", best_fitness)
Comments
Post a Comment