遗传算法python
时间: 2023-06-28 11:15:32 浏览: 196
智能算法-遗传算法、蚁群算法、粒子群算法实现。实现版本Java,Python,MatLab多版本实现
在 Python 中,可以使用遗传算法库像 DEAP(Distributed Evolutionary Algorithms in Python)来实现遗传算法。
首先需要安装 DEAP 库,可以使用 pip 命令进行安装:
```
pip install deap
```
下面是一个简单的遗传算法示例代码,用于解决一个简单的最小化函数问题:
```python
import random
from deap import base, creator, tools
# 定义一个最小化目标函数
def evaluate(individual):
return sum(individual),
# 定义遗传算法相关参数
creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
creator.create("Individual", list, fitness=creator.FitnessMin)
toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, 10)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
toolbox.register("evaluate", evaluate)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)
# 定义主程序
def main():
pop = toolbox.population(n=50) # 初始化种群
CXPB, MUTPB, NGEN = 0.5, 0.2, 10 # 遗传算法参数
for gen in range(NGEN):
offspring = algorithms.varAnd(pop, toolbox, cxpb=CXPB, mutpb=MUTPB) # 交叉和变异操作,生成新一代种群
fits = toolbox.map(toolbox.evaluate, offspring) # 评估新种群
for fit, ind in zip(fits, offspring):
ind.fitness.values = fit
pop = toolbox.select(offspring, k=len(pop)) # 选择下一代种群
best_ind = tools.selBest(pop, k=1)[0] # 获取最佳个体
print("Best individual is %s, fitness = %f" % (best_ind, best_ind.fitness.values[0]))
if __name__ == "__main__":
main()
```
在这个例子中,我们将目标函数定义为求一个列表中所有元素的和,遗传算法的目标是找到一个列表,使得其中的元素和最小。我们使用 DEAP 库中的基本元素创建了一个适应度类和一个个体类,并定义了遗传算法的基本操作,例如初始化种群、交叉、变异、选择等。主程序中使用遗传算法对种群进行迭代,每一代都进行交叉、变异和选择操作,生成下一代种群,并评估每个个体的适应度值。最后输出最优个体的信息。
阅读全文