遗传算法
一.基本介绍
遗传算法(Genetic Algorithm,GA),由美国的 John holland于20世纪70年代提出,通过模拟生物进化过程得到一种求解模型的元启发式算法
二.得到新解的方式
共有2种得到新解的方式。
1.交叉操作
(1)顺序类型
给出两个解:X1= 1 3 4 5 6 2 ;X2= 2 3 1 4 5 6。
通过两点交叉进行操作:若选中1和3则互换位置1到3之间的基因。
Xnew1= 【3 1 4】 5 6 2 ;Xnew2= 【1 3 2】 4 5 6 。因为是顺序所以互换的也是顺序,避免不完整。
(2)数值类型
给出两个解:X1= 1 1 2 5 3 2 ;X2= 2 5 3 3 1 4。
通过两点交叉进行操作:若选中1和3则互换位置1到3之间的基因。
Xnew1= 【2 5 3】 5 3 2 ;Xnew2= 【1 1 2】 3 1 4 。因为是顺序可以直接互换对应基因段。
2.变异操作
(1)顺序类型
给出一个解:X1= 1 3 4 5 6 2 。
通过两点互换进行操作:若选中1和3则互换位置1和3的基因。
Xnew1= 【4】3【1】5 3 2 。
(2)数值类型
给出一个解:X1= 1 1 2 5 3 2 。
通过单点交叉进行操作:若选中1则变异位置1的基因,并需要产生移动方向和步长。若方向为+,步长为0.5。
Xnew1= 【1.5】1 2 5 3 2 。
三.接受新解的方式
直接接受
四.算法停止的方式
迭代次数达到设置次数,也可以自行加入其他停止方式,如时间。
五.便于理解-名词解释
(1)染色体
一个染色体代表一个解
(2)基因
代表一个解中的一个维度
(3)种群
n个染色体组成一个种群
(4)选择操作
区别与交叉操作、变异操作产生了新的解,选择操作不产生新的解,会从原有种群中按照一定原则选择等同数量的个体(会重复)。
(5)适应度
适应度只是一个概念,适应度是越大越好,而目标函数根据实际问题来定,需要用目标函数转换成适应度,通常需要用倒数或者乘以-1。
六.整体理解
1.伪代码
设置种群大小psize,迭代次数itermax,交叉概率pco,变异概率pmt
生成初始种群pop(i),i=1,2…psize
计算每个个体的适应度F(i),i=1,2…psize
记录最佳解bestsofar
for iter=1:itermax
通过选择操作 得到新的种群pop(i),i=1,2…psize
for i=1:2:psize
对pop(i),pop(i+1) 进行操作
if rand<pco
通过交叉操作 更新pop(i),pop(i+1)
end
if rand<pmt
通过变异操作 更新pop(i),pop(i+1)
end
end
计算每个个体的适应度F(i),i=1,2…psize
更新最佳解bestsofar
End
输出最佳解
2.流程图
代码链接
链接:https://pan.baidu.com/s/1eBFDPsda1dPxNWJ7kvM1Xg
提取码:ore5