遗传算法及其育种Word下载.docx
《遗传算法及其育种Word下载.docx》由会员分享,可在线阅读,更多相关《遗传算法及其育种Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
![遗传算法及其育种Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/29/ccf739dc-adad-486c-8185-f04e27e50736/ccf739dc-adad-486c-8185-f04e27e507361.gif)
为所有自变量上限的最大值,
为所有自变量下限的最小值。
编码后,二进制串与自变量的十进制数值的映射关系[3]为
式中,M为二进制串对应的十进制数值。
最后,随机产生N组初始个体(长度为L的二进制字符串),即随机生成N组初始解,为使初始解尽可能分布在解空间的各个角落,N必须足够大,一般N=20~150。
用(3)式算出各个初始解的十进制值,代入适应度函数
(1)计算出个体的适应度。
就可开始遗传操作,遗传操作分:
选择复制、交叉、变异三个步骤。
⑵选择复制
选择复制的目的是选择适应度大的优秀个体,淘汰部分个体,实现“优胜劣汰”。
选择的方法常用轮盘赌法,即按个体适应度占总适应度的比例把整个轮盘划分给各个个体,然后再随机地转动轮盘,随机地选取个体。
如图1所示,由于适应度大的个体在轮盘中所占的区域大,故被选中的概率也大,保护了优秀个体。
由于优秀个体被大量复制,搜索可以较快地收敛到稳定状态。
同时,选择是随机进行的,因此适应度小的个体也有可能被选中,部分地保持了个体的多样性。
图1轮盘赌法选择
⑶交叉
交叉是将选择出来的群体按一定的交叉概率随机地选择出一部分个体,随机地两两配对,并按选定的交叉方式,把成对的个体的基因部分地进行交换,形成新的个体。
如图2所示,交叉点也是随机选取的。
交叉操作使群体在继承父代的基因的同时又不完全等同于父代,有可能产生更优秀的个体,使搜索向最优解靠近。
图2交叉操作示例
⑷变异
交叉操作是父代基因的重组,基因全部来源于父代,经过多次交叉后,就很难产生新的个体了。
变异是以较小的概率随机地改变一个串位的值。
如对于二进制串,就是将随机选取的串位的值由1变成0或者由0变成1。
变异操作不依赖于父代的基因,更容易产生新的个体,保持群体的多样性。
为了使搜索能够收敛,搜索初期变异率不能太高。
通过不断重复以上的遗传操作,优秀个体的适应度越来越高,直到一个或者多个个体达到最优解。
若相同的个体越来越多,直到所有个体均相同,即使这时没有达到全局最优,搜索也很难进行下去,搜索到的就是局部最优。
2.2基础遗传算法的局限
⑴容易陷入局部最优
遗传算法的选择复制操作会使优秀个体大量复制,这样种群中会出现许多相同的个体,而相同个体之间即使进行交叉操作也不会产生新的个体。
另外,变异出来的更优秀个体由于数量少,很容易在选择复制操作中被淘汰,因此,搜索容易陷入局部最优
⑵搜索效率低
对于基础遗传算法,优秀个体的存活和发展要靠相同个体的规模来保证,而这种规模反过来又成了新的优秀个体发展起来的障碍,由于轮盘的大部分区域已被旧的优秀个体占据,因此新的优秀个体存活并发展起来的概率很小,过程也较漫长。
这种由机制的缺陷所产生的竞争及内耗是不可避免的。
这和生物界自然进化过程缓慢的道理是一样的。
所以遗传算法的搜索效率不是最高的。
⑶具有三种操作,运算量大
遗传算法具有选择、交叉、变异三种操作,特别是选择和交叉操作,需要多个操作步骤,实现程序较长,运行时间也较长,因此不便于复杂问题的求解。
7育种算法的应用实例
育种算法不是针对某一特定函数提出的,因此算法具有普遍意义,适用于各种优化问题。
用育种算法进行了许多函数的优化计算,效果均非常良好,下面是其中两例。
例1具有针状全局最优的函数如下
图2例1的函数图
该函数的函数图形如图2所示,在(50,50)处取得全局最大值1.1512,其第二极大值为1.12837,它是一个多峰值函数,采用传统优化方法几乎不能找到全局最优点,一些改进[3]遗传算法同样也找不到全局最优。
微粒群算法限定繁殖1500代,实验100次,有10次可以找到全局最优,平均最优值达到1.12903,至1.145平均需要40949.3代[3]。
采用单种子育种算法,取L=14,N=100,限定繁殖100代,实验100次有29次找到全局最优,平均最优值达到1.133,最大值1.1494。
采用三种子育种算法取C=-99,L=15,N=99,不保留热点,限定繁殖800代,实验100次有80次找到全局最优,平均最优值达到1.144,最大值1.1503。
性能得到了大幅提高。
例2优化问题如下:
该例的极值如麦田的麦芒一样不计其数,要找出其中最矮的一株其难度是可想而知的。
取调用函数次数=140000次,连续十次实验的结果如下:
差分进化算法搜索到的最小值为-10.78783,平均值为-10.51465。
微粒群算法搜索到的最小值为-10.76252,平均值为-10.39754。
三种子育种算法(N=199,L=16,C=-99,调用函数次数=50000次)搜索到的最小值为-10.7977,平均值为-10.2557。
若调用函数次数增大到140000次,育种算法搜索到的最小值为-10.86433,平均值为-10.537。
例3测试函数如下:
用育种算法搜索在D=4,无约束和约束条件为
时,函数的全局最优。
取自变量的分辩率为0.01,算出二进制串长度为10,群体规模为100。
共实验100次,搜索到的极值点为X1=X3=7.609,X2=X4=11.222,最大值为7.62,平均迭代次数20,平均用时1秒。
对于有约束的搜索,可以把约束条件作为一个判断条件,插入程序中,当约束条件不满足时,令对应个体的适应度为一个很小的值,这样就把不满足约束条件的解排除了。
该例有约束条件时搜索到的极值点为:
X1=X3=7,X2=X4=3,最大值为:
4.84,平均迭代次数:
77,平均用时:
4秒。
例4用DeJong测试平台中的一个典型函数[3]
进行遗传算法和育种算法优化实验,共实验100次。
遗传算法采用轮盘赌法+保留优秀个体法选择,变异率可变。
实验结果如表1所示,育种算法搜索到的全部为全局最优(3905.926),且平均代数远低于遗传算法的平均代数,平均用时0.5秒。
例5分别用基础遗传算法、自适应遗传算法和育种算法对标准测试函数[2]
进行优化实验,共实验100组。
实验结果如表2所示,基础遗传算法无一次搜索到全局最优,自适应遗传算法和育种算法全部搜索到全局最优,但是自适应遗传算法代数较多,平均为453代,育种算法平均只有29代,平均用时0.2秒。
例6分别用微粒群[6]算法和育种算法对测试函数
进行优化实验,共实验100次。
取搜索终止条件为函数值大于等于0.99。
实验结果表明,微粒群算法平均代数为1589代。
育种算法取个体长度L=12,群体规模N=100。
则搜索到的函数值平均为0.993,平均代数仅74代,平均用时2秒。
另外,分别取控制参数C=-10和C=0,搜索到的最小值为-0.93928。
方程
的根有多组,其中一组为X1=17.993,X2=49.511。
例7
求:
Minf(x)=
约束:
,计算
的十进制值:
Fori=3To4
M=0
Fork=1To12
M=M+ZQ(i,j,k)*2^(12-k) '
ZQ(i,j,k)个体基因
Nextk'
二进制转换成十进制
X(i)=-10+M*(10-(-10))/(2^12-1) '
计算自变量的十进制值
Nexti
因为
,所以x1单独计算:
M=M+ZQ(1,j,k)*2^(12-k)'
Nextk
X
(1)=0.0001+M*10/(2^12-1)
'
将
放开,
只受等式约束,不受区间约束。
即令
效果好一些
X
(2)=(1-X(3)*X(4)*X(4))/X
(1)
在程序中加入约束条件和函数,X(0)存放函数值
X(0)=X
(1)^0.5+X
(2)*X(3)^2+X(4)
IfX
(1)+X
(2)*X(4)<
0OrX
(1)+X
(2)*X(4)>
10Then Goto L1
IfX(4)+X
(1)*X(3)<
0OrX(4)+X
(1)*X(3)>
10Then Goto L1
'
不满足约束条件时跳出程序,则该组变量取值被排除。
设种群规模N=99,个体长度L=12,调用函数次数=20000的搜索结果:
例8:
minf=(((L-L2)/2)^2+h^2)^0.5*A1+0.5*L2*A2;
两个等式约束:
1.((L-L2)/2)/(24*E*I)*(3*L^2-4*((L-L2)/2)^2)*((((L-L2)/2)^2+h^2)^(-0.5)-(x^2+y^2)^(-0.5))*y*E*A1=k
2.(((((L-L2)/2)^2+h^2)^(-0.5)-(x^2+y^2)^(-0.5))*x*E*A1-2*(((L-L2)/2)-x)/L2*E*A2)*(y+((((L-L2)/2)+L2)^2*((L-L2)/2)^2/(3*L)+((L-L2)/2)^2*(4*((L-L2)/2)^3+10*((L-L2)/2)^2*L2+6*((L-L2)/2)*L2^2+L2^3)/(6*L^2))/(E*I)*((((L-L2)/2)^2+h^2)^(-0.5)-(x^2+y^2)^(-0.5))*y*E*A1)=(x-((L-L2)/2))*((((L-L2)/2)^2+h^2)^(-0.5)-(x^2+y^2)^(-0.5))*y*E*A1
四个不等式约束:
1.(((L-L2)/2)^2+h^2)^(0.5)-(x^2+y^2)^(0.5)<
2.(x^2+y^2)^(0.5)-(((L-L2)/2)^2+h^2)^(0.5)-(((L-L2)/2)^2+h^2)^(0.5)*q/E<
3.x-((L-L2)/2)<
4.((L-L2)/2)-x-L2*q/(2*E)<
说明:
L2、h、A1、A2为自变量;
x、y是可由等式约束决定的自变量的函数;
L、E、I、k、q为参数。
解:
取参数L=1.2:
E=20:
I=5000:
k=5:
q=250
L2=X
(1):
h=X
(2):
z=X(3):
P=X(4)‘Z=x;
P=y
‘从两个等式约束中解出A1,A2。
B=((L-L2)/2)/(24*E*I)*(3*L^2-4*((L-L2)/2)^2)*((((L-L2)/2)^2+h^2)^(-0.5)-(z^
2+J^2)^(-0.5))*J*E
IfB=0ThenGoTol1
A1=k/B
Ifabs(A1)>
1000ThenGoTol1'
限定-1000<
A1<
1000
C=(P+((((L-L2)/2)+L2)^2*((L-L2)/2)^2/(3*L)+((L-L2)/2)^2*(4*((L-L2)/2)^3+10*((L-L2)/2)^2*L2+6*((L-L2)/2)*L2^2+L2^3)/(6*L^2))/(E*I)*((((L-L2)/2)^2+h^2)^(-0.5)-(z^2+P^2)^(-0.5))*P*E*A1)
IfC=0ThenGoTol1
D=(z-((L-L2)/2))*((((L-L2)/2)^2+h^2)^(-0.5)-(z^2+P^2)^(-0.5))*P*E*A1
F=2*(((L-L2)/2)-z)/L2*E
G=((((L-L2)/2)^2+h^2)^(-0.5)-(z^2+P^2)^(-0.5))*z*E*A1-D/C
IfF=0ThenGoTol1
A2=G/F
Ifabs(A2)>
A2<
请在下面输入约束条件和函数,X(0)存放函数值
If(((L-L2)/2)^2+h^2)^(0.5)-(z^2+P^2)^(0.5)>
0ThenGoTol1
If(z^2+P^2)^(0.5)-(((L-L2)/2)^2+h^2)^(0.5)-(((L-L2)/2)^2+h^2)^(0.5)*q/E>
0Then GoTol1
Ifz-((L-L2)/2)>
If((L-L2)/2)-z-L2*q/(2*E)>
X(0)=(((L-L2)/2)^2+h^2)^0.5*A1+0.5*L2*A2
结果:
L2、h、x、y限定在±
10;
A1、A2限定在±
10000。
个体长度L=12;
种群规模N=99,调用函数次数200000次
min=-4533.337
例9:
max F=1,次大0.9905
a=Abs(X
(1)):
b=Abs(X
(2)):
r=Sqr(a*a+b*b)
max X(0)=0.5-(((Sin(r))^2)-0.5)/(1+0.001*r)^2
N=120'
种群大小(个体组数,一组2个个体)
L=14'
每一个体的长度,二进制串的位数
Xmin=-100'
自变量的最小值
Xmax=100'
自变量的最大值
ccc=0'
指定值(函数中间值或±
无穷大)
miny=2.8*(2*k
(1)+4*k
(2)+8*k(3))+3.5*(2*k(4)+4*k(5)+8*k(6))+4.6*(2*k(7)+4*k(8)+8*k(9))
约束条件是:
2*k
(1)+4*k
(2)+8*k(3)>
=0
2*k(4)+4*k(5)+8*k(6)>
2*k(7)+4*k(8)+8*k(9)>
2*k
(1)+4*k
(2)+8*k(3)+2*k(4)+4*k(5)+8*k(6)+2*k(7)+4*k(8)+8*k(9)=1
从以上两个例可以看出,与遗传算法及其改进算法相比,单种子育种算法其优化性能已经得到了很大提高,而多种子育种算法在处理复杂的多峰值函数上表现出比单种子育种算法更大的优越性。
另外,只要繁殖代数足够,育种算法最后总能找到全局最优,这与遗传算法落入局部最优不易摆脱相比具有很大的优越性。
例10用育种算法求解售货商问题。
设有9个城市,售货商从0号城市出发要把货物送到其他8个城市,且每个城市只能达到一次,最后回到0号城市,各城市之间的距离矩阵L如下。
求售货商的送货次序,使总的路程最短。
该例售货商有数万种送货方案可共选择,若采用单纯的随机搜索,十次均搜索到最优路径,平均需要计算总距离16812次。
用育种算法以8个城市为候选库,随机抽取送货城市,可得到送货次序行向量,把行向量看做生物个体,用育种算法的方法,就可找到最短的路径。
以路径最短为选种条件,取种群规模N=20,搜索到的全局最优如图5所示。
优化十次共用时2秒钟,十次全部搜索到最优排列,总路程23,有四条最短路径,其中的一种为:
0→5→3→1→7→8→6→2→4→0。
十次优化中,计算总距离次数最少的仅280次,最多的也不过4280次,平均1232次。
因此育种算法使搜索效率提高了13倍多。
图5TSP问题的求解结果