遗传算法Python 教程(1)
遗传算法简介
遗传算法是一种通过种群演化得到最优解的搜索算法。遗传算法受启发与生物演化过程中的一些现象,这些现象包括自然选择,交配,突变,遗传等。本教程将通过Python来展示遗传算法的本质和如何使用遗传算法去解决问题。
遗传算法的一般概念
遗传算法是通过一代一代种群 population 演化来寻找对问题最优解的个体 individual。其中种群中包含了 N 个个体,而每一个个体是问题的可能解。每一次迭代,fitness 函数会计算每一个个体对目标问题解的合适成都然后选择最适合的k个个体为下一代演化的后代。演化过程中会有一定概率的个体相互交配,互换染色体,和突变行为,这一过程可以防止种群在演化过程中的适应度被困在局部最优解。 遗传算法的过程可以被一下步骤描述。
一个随机生成的种群 population; 通过fitness 函数选择种群的后代; 后代 offerspring 在一定概率下交配; 后代 offerspring 在一定概率下 变异; 将后代赋值给种群 population, 重复步骤 (2) 至 (4) 直到迭代次数超过设定值;第一个遗传算法的实现
首先我们实现一个简单的遗传算法。我们期望通过遗传算法演化出一个长度为10 且所有元素都为 1 的 list [1111111111]。在这个简单例子中将只会用到 变异,因为这里我们主要希望展现遗传算法的迭代过程,所以关于交配的方法和更高级的fitness函数的构建将在后续的教程中介绍。
import numpy as np import copy # -- 定义参数 -- populationSize = 50 numGenerations = 100 # *** genomeLength = 10 population = [] # -- 遗传算法需要用到的方法 -- # 变异 def mutate(Wgenome, mutationRate=0.1):for i in 1234567891011121314'