介绍python中的遗传算法库,并举个例子
时间: 2024-01-14 10:14:11 浏览: 104
遗传算法实例(python实现)
3星 · 编辑精心推荐
Python中常用的遗传算法库是DEAP(Distributed Evolutionary Algorithms in Python)。
DEAP是一个基于Python的开源遗传算法框架,可以用来构建和应用遗传算法和其他进化算法。它提供了许多内置的进化算法操作和多种编程范式,支持并行处理和分布式计算。DEAP的主要特点是易于使用、高效和灵活。
下面是一个简单的DEAP遗传算法示例,用于解决一个TSP(旅行商问题):
```python
import random
import numpy as np
from deap import algorithms, base, creator, tools
# 创建适应度函数
def evalTSP(individual):
distance = 0
for i in range(len(individual)):
j = (i+1) % len(individual)
distance += dist_matrix[individual[i]][individual[j]]
return distance,
# 创建遗传算法工具箱
creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
creator.create("Individual", list, fitness=creator.FitnessMin)
toolbox = base.Toolbox()
toolbox.register("indices", random.sample, range(n), n)
toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.indices)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
toolbox.register("mate", tools.cxOrdered)
toolbox.register("mutate", tools.mutShuffleIndexes, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)
toolbox.register("evaluate", evalTSP)
# 加载数据
dist_matrix = np.array([[0, 1, 2, 3], [1, 0, 4, 5], [2, 4, 0, 6], [3, 5, 6, 0]])
n = len(dist_matrix)
# 运行遗传算法
pop = toolbox.population(n=100)
algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=50, verbose=False)
# 输出结果
best_individual = tools.selBest(pop, k=1)[0]
print("Best individual is ", best_individual)
print("Best fitness is ", evalTSP(best_individual))
```
这个示例演示了如何使用DEAP库解决一个TSP问题。它创建了一个包含100个个体的种群,并在50代内运行遗传算法来寻找最优解。在每一代中,使用选择、交叉和变异操作来更新种群。最后,找到最优个体并输出其路径和总路程。
阅读全文