python遗传算法求解的代码
时间: 2023-09-03 15:12:17 浏览: 101
以下是一个基于Python的遗传算法求解的示例代码,用于求解函数$f(x)=x^2$的最小值。
```python
import random
# 遗传算法的参数
POP_SIZE = 100 # 种群大小
CROSS_RATE = 0.8 # 交叉概率
MUTATE_RATE = 0.01 # 变异概率
N_GENERATIONS = 200 # 迭代次数
X_BOUND = [-5, 5] # 自变量取值范围
# 初始化种群
pop = [[random.uniform(*X_BOUND), 0] for _ in range(POP_SIZE)]
# 定义适应度函数
def fitness(x):
return x[0] ** 2
# 进化
for _ in range(N_GENERATIONS):
# 计算适应度
for i in range(POP_SIZE):
pop[i][1] = fitness(pop[i])
# 按适应度排序
pop = sorted(pop, key=lambda x: x[1])
# 选择
mating_pool = pop[:POP_SIZE // 2]
# 交叉
for i in range(POP_SIZE // 2):
if random.random() < CROSS_RATE:
j = random.randint(0, POP_SIZE // 2 - 1)
k = random.randint(0, POP_SIZE // 2 - 1)
while j == k:
k = random.randint(0, POP_SIZE // 2 - 1)
child = [(mating_pool[j][0] + mating_pool[k][0]) / 2, 0]
mating_pool.append(child)
# 变异
for i in range(len(mating_pool)):
if random.random() < MUTATE_RATE:
mating_pool[i][0] += random.uniform(-1, 1)
# 更新种群
pop = mating_pool
# 输出结果
best_individual = sorted(pop, key=lambda x: x[1])[0]
print('最小值:%f,自变量:%f' % (best_individual[1], best_individual[0]))
```
该代码首先通过随机初始化产生了一个种群,然后定义了适应度函数(即$f(x)=x^2$)。接着,进行$N$次迭代,每次迭代分别进行选择、交叉和变异操作,得到新的种群。最后输出最小适应度及其对应的自变量值。
阅读全文