混合遗传算法python代码
时间: 2023-09-17 09:08:33 浏览: 59
当然可以!下面是一个简单的混合遗传算法的Python代码示例:
```python
import random
# 适应度函数
def fitness_function(solution):
# 计算适应度值
fitness = sum(solution)
return fitness
# 初始化种群
def initialize_population(population_size, chromosome_length):
population = []
for _ in range(population_size):
chromosome = [random.randint(0, 1) for _ in range(chromosome_length)]
population.append(chromosome)
return population
# 选择操作
def selection(population, num_parents):
parents = []
for _ in range(num_parents):
# 随机选择一个个体作为父母
parent = random.choice(population)
parents.append(parent)
return parents
# 交叉操作
def crossover(parents, num_offsprings):
offsprings = []
while len(offsprings) < num_offsprings:
parent1 = random.choice(parents)
parent2 = random.choice(parents)
offspring = parent1[:len(parent1)//2] + parent2[len(parent2)//2:]
offsprings.append(offspring)
return offsprings
# 变异操作
def mutation(offsprings, mutation_rate):
for i in range(len(offsprings)):
if random.random() < mutation_rate:
index = random.randint(0, len(offsprings[i])-1)
offsprings[i][index] = 1 - offsprings[i][index]
return offsprings
# 替换操作
def replace(population, offsprings):
population.extend(offsprings)
population.sort(key=lambda x: fitness_function(x), reverse=True)
return population[:len(population)-len(offsprings)]
# 混合遗传算法
def genetic_algorithm(population_size, chromosome_length, num_parents,
num_offsprings, mutation_rate, num_generations):
# 初始化种群
population = initialize_population(population_size, chromosome_length)
for generation in range(num_generations):
# 选择操作
parents = selection(population, num_parents)
# 交叉操作
offsprings = crossover(parents, num_offsprings)
# 变异操作
offsprings = mutation(offsprings, mutation_rate)
# 替换操作
population = replace(population, offsprings)
# 输出每一代的最优解
best_solution = population[0]
best_fitness = fitness_function(best_solution)
print(f"Generation {generation + 1} - Best Fitness: {best_fitness}")
return population[0]
# 参数设置
population_size = 50
chromosome_length = 10
num_parents = 10
num_offsprings = 20
mutation_rate = 0.1
num_generations = 100
# 运行遗传算法
best_solution = genetic_algorithm(population_size, chromosome_length, num_parents,
num_offsprings, mutation_rate, num_generations)
print("Best Solution:", best_solution)
```
这是一个简单的二进制编码的混合遗传算法示例,你可以根据自己的需求进行修改和扩展。希望对你有帮助!