python遗传优化算法
时间: 2023-09-29 13:10:46 浏览: 46
遗传优化算法是一种模拟自然进化过程的优化算法,它通过模拟自然界中的遗传、交叉和变异等现象来搜索最优解。Python提供了丰富的工具和库来实现遗传优化算法,下面是一个简单的遗传优化算法的实现示例:
```python
import random
# 定义目标函数
def target_func(x):
return x ** 2 + 2 * x + 1
# 初始化种群
def init_population(pop_size, gene_size):
population = []
for i in range(pop_size):
chromosome = [random.randint(0, 1) for j in range(gene_size)]
population.append(chromosome)
return population
# 计算适应度
def fitness(chromosome):
x = int(''.join(map(str, chromosome)), 2)
return target_func(x)
# 选择
def selection(population):
pop_size = len(population)
fitness_values = [fitness(chromosome) for chromosome in population]
total_fitness = sum(fitness_values)
probabilities = [fitness_values[i] / total_fitness for i in range(pop_size)]
cum_probabilities = [sum(probabilities[:i + 1]) for i in range(pop_size)]
new_population = []
for i in range(pop_size):
r = random.random()
for j in range(pop_size):
if r <= cum_probabilities[j]:
new_population.append(population[j])
break
return new_population
# 交叉
def crossover(parent1, parent2):
gene_size = len(parent1)
crossover_point = random.randint(0, gene_size - 1)
child1 = parent1[:crossover_point] + parent2[crossover_point:]
child2 = parent2[:crossover_point] + parent1[crossover_point:]
return child1, child2
# 变异
def mutation(chromosome, mutation_rate):
for i in range(len(chromosome)):
if random.random() < mutation_rate:
chromosome[i] = 1 - chromosome[i]
return chromosome
# 遗传优化算法主函数
def genetic_algorithm(pop_size, gene_size, crossover_rate, mutation_rate, max_iter):
population = init_population(pop_size, gene_size)
for i in range(max_iter):
population = selection(population)
offspring = []
for j in range(0, pop_size, 2):
parent1, parent2 = population[j], population[j + 1]
if random.random() < crossover_rate:
child1, child2 = crossover(parent1, parent2)
offspring += [child1, child2]
else:
offspring += [parent1, parent2]
population = [mutation(chromosome, mutation_rate) for chromosome in offspring]
return max(population, key=fitness)
# 测试
pop_size = 100
gene_size = 10
crossover_rate = 0.8
mutation_rate = 0.1
max_iter = 100
solution = genetic_algorithm(pop_size, gene_size, crossover_rate, mutation_rate, max_iter)
x = int(''.join(map(str, solution)), 2)
print('Solution:', x)
print('Fitness value:', fitness(solution))
```
以上是一个简单的遗传优化算法的Python实现,其中定义了目标函数、初始化种群、计算适应度、选择、交叉、变异和遗传优化算法主函数等函数。通过调整参数和目标函数,可以实现不同的遗传优化算法。