智能优化算法python代码
时间: 2023-11-08 21:05:00 浏览: 36
以下是一个遗传算法示例的Python代码:
```python
import random
# 要优化的函数
def fitness(individual):
x = individual[0]
y = individual[1]
return (x**2 + y**2)
# 生成随机个体
def create_individual():
x = random.uniform(-10, 10)
y = random.uniform(-10, 10)
return [x, y]
# 交叉操作
def crossover(parent_1, parent_2):
child = [0, 0]
for i in range(len(parent_1)):
prob = random.random()
if prob < 0.5:
child[i] = parent_1[i]
else:
child[i] = parent_2[i]
return child
# 变异操作
def mutate(individual):
mutation_rate = 0.1
for i in range(len(individual)):
prob = random.random()
if prob < mutation_rate:
individual[i] += random.uniform(-1, 1)
return individual
# 遗传算法主程序
def genetic_algorithm():
population_size = 100
max_generations = 100
elitism = 2
# 生成初始种群
population = []
for i in range(population_size):
individual = create_individual()
population.append(individual)
for generation in range(max_generations):
# 计算适应度
fitness_scores = []
for individual in population:
fitness_scores.append(fitness(individual))
# 选择精英个体
elite_population = []
for i in range(elitism):
elite_index = fitness_scores.index(min(fitness_scores))
elite_population.append(population[elite_index])
del fitness_scores[elite_index]
del population[elite_index]
# 选择父代
parent_population = []
for i in range(population_size - elitism):
parent_1 = population[random.randint(0, len(population)-1)]
parent_2 = population[random.randint(0, len(population)-1)]
parent_population.append([parent_1, parent_2])
# 生成子代
offspring_population = []
for parents in parent_population:
child = crossover(parents[0], parents[1])
child = mutate(child)
offspring_population.append(child)
# 合并种群
population = elite_population + offspring_population
# 输出最优解
fitness_scores = []
for individual in population:
fitness_scores.append(fitness(individual))
best_individual_index = fitness_scores.index(min(fitness_scores))
print("最优解:", population[best_individual_index])
genetic_algorithm()
```