第三章遗传算法Word格式文档下载.docx
- 文档编号:22440580
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:37.92KB
第三章遗传算法Word格式文档下载.docx
《第三章遗传算法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第三章遗传算法Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
最后值得注意的是,在设计程序时,应该注意到一些隐含的约束,即有些虽然是可行解,但不可能是最优解。
例如数学规划模型
-X2
maxe
XR
其中R=(—是可行域,但是我们知道最优解一定在区间[-5,勺,所以为了减少程序的搜索空间,应当增加约束条件
-5_x_5
这类隐含约束一般不难发现,尤其对实际的管理问题。
因此尽可能的增加隐含条件。
二、初始化过程
定义整数pop-size作为染色体的个数,并且随机的产生pop-size个初始染色体。
一般情况下,由于优化问题的复杂性,解析底产生可行的染色体是困难的。
此时,可以采用下述两种方法之一作为初始过程。
第一种方法:
设决策者能够给出可行域中的一个内点,记为V。
=(x0x0,…乂)。
定义一个足够大的数M,以保证遗传操作遍及整个可行域。
M不仅在初始化过程中使用,而且在变异操作中也使用。
按照下面的方法产生pop-size个染色体。
在只“中随机的选择一个方向d,如果V。
Md满足不等式约束,则将V二V°
・Md作为一个染色体,否则,置M为0和M之间的一个随机数,直到V二V。
Md可行为止。
由于V。
=(x0x0,...,x0)是内点,所以在有限步内,可以找到满足不等式约束的可行解。
重复以上过程pop-size次,从
而产生pop-size个初始染色体Vi,V2,...,Vp°
p』ze。
三、评价函数
评价函数(记为Eval(V))用来对种群中的每个染色体V设定的一个概率,以使该染色体被选择的可能性与种群中其它染色体的适应性成比例,即通过轮盘赌,适应性强的染色体被选择产生后代的机会要大。
第一种方法,设目前该代中的染色体为Vi,V2,...,Vp°
p」ize,可以根据染色体的序进行再生分配,而不是根据其实际的目标值。
无论是何种数学规划都可以作一个合理的假设,即在染色体M,V2,...,Vpopde中,决策者可以给出一个序的关系,使染色体由好到坏进行重排,就是说,一个染色体越好,其序号越小。
设参数a・(0,1)给定,定义基于序的评价函数为
Eval(VJ=a(1_a)"
°
,i=1,2,...,pop-size
i=1意味着染色体是最好的,i=pop-size说明是最差的。
第二种方法是通过对适应度的适当缩放调整(称为适应度定标)来设计评价函数。
用fl,f2,...fpop$ze(即染色体Vi,V2,...,Vpop$ze各自的目标值)来表示
原来的适应度。
Goldberg提出一种线性适应度定标方案,
fr=afi+b,i=1,2,...,pop-size
其中fi,i=1,2,...,pop-size为新的适应度,a和b为参数。
这种方法实际上假定使用者了解目标函数的性质,从而才能设计出合理的参数a和b,这种
情况下,评价函数定义为
pop-size
Eval(V)二'
f/,i=1,2,...,pop「size
j二
四、选择过程
选择过程是以旋转赌轮pop-size次为基础的。
每次旋转都为新的种群选择一个染色体。
赌轮是按每个染色体的适应度进行选择染色体的。
无论使用哪一种评价函数,选择过程总可以写成如下形式:
步骤1对每个染色体Vi,计算累计概率q
qo=°
彳i
qi二'
eval(V」,i=1,2,...,pop「size
j—
步骤2从区间(0,qpop^ize]中产生一个随机数r;
步骤3若q」<rEq,则选择的第i个染色体Vi,其中1兰i兰pop—size;
步骤4重复步骤2和步骤3共pop-size次,这样可以得到pop-size个复制的染色体。
在上述过程中,并没有要求满足条件qpop」ize=1。
实际上,可以用qpop*除以所有的qi,i=1,2,...,pop-size,使qpop』=1,新得到概率同样与适应度成比例。
只要我们不介意概率方面解释上的困难,这一点并没有在遗传过程中产生任何影响。
五、交叉操作
首先定义参数PC作为交叉操作的概率,这个概率说明种群中有期望值为pc,pop-size个染色体来进行交叉操作。
为确定交叉操作的父代,从i=1到pop-size重复一下过程:
从[0,1]中产生随机数r,如果r:
:
:
Pc,则选择Vi作为一个父代。
用
VlV2,V3,...,表示上面选择的父代,并把它们随机的分成下面的对
(V1V2),mm),VM),•…
我们以(Vi;
V2)为例解释怎样对上面所有的对进行交叉操作。
首先,从开区间(0,1)中产生一个随机数c,然后按下列形式在Vi•和,V2之间进行交叉操作,并产生两个后代X和丫
X二CM(1-c)V2,丫=(1-c)ycV2
如果可行域是凸的,这种凸组合交叉运算在两个父代可行的情况下,能够保证两个后代也是可行的。
但是,在许多情况下,可行域不一定是凸的,活很难验证其凸性,此时必须验证每一后代的可行性。
如果两个后代均可行,贝y用它代替其父代。
否则,保留其中可行的(如果存在的话),然后产
生新的随机数c,重新进行交叉操作(交叉操作时,随机数c是新选的,而
父代还用V1和,V2),直到得到两个可行的后代或循环给定次数为止。
无论如
何,仅用可行的后代取代其父代。
六、变异操作
定义参数Pm作为遗传系统中的变异概率,这个概率表明总体中有期望值为Pm,pop-size个染色体用来进行变异操作。
类似于交叉操作中选择父代的过程,由i=1到pop-size,重复下列过程:
从区间[0,1]中产生随机数r,如果r:
Pm,则选择染色体Vi作为变异的父代。
对每一个选择的父代,用V=(X「X2,…,Xn)表示,按下列方法进行变异。
在只"
中随机选择变异方向d,如果V•Md是不可行的,那么,置M为0和M之间的随机数,直到其可行为止。
其中M是初始化过程定义的一个足够大的数。
如果在预先给定的迭代次数之内没有找到可行解,则置M=0。
无论M为何
值,总用X=VMd代替V。
七、遗传算法程序
经过选择、交叉和变异操作,我们得到一个新的种群,准备进行下一代进化。
对上述步骤经过给定的循环次数之后,遗传算法终止。
对一般优化问题,遗传算法可以归纳如下:
遗传算法程序
输入参数pop-size,交叉操作概率pc,变异概率Pm;
通过初始过程产生
pop-size个染色体;
重复
对染色体进行交叉和变异操作;
计算所有染色体的评价函数;
根据某种抽样机制选择染色体;
直到满足终止条件
我们知道,最好的染色体不一定出现在最后一代中,所以在进化开始,必须把最好的染色体保留下来,记为V。
,如果在新的种群中又发现更好的染色体,则用它代替原有的染色体Vo。
在进化完成之后,这个染色体就可以看作是优化问题的解。
八、遗传算法与上升法
上升法是直接法、剃度法和Hessian法的通称。
上升法首先在最优解可能存在的地方选择一个初始点,然后通过分析目标函数的特性,由初始点移到一个新的点,然后再继续这个过程。
为了更好的理解遗传算法,现在把上升法和遗传算法比较。
上升法搜索过程是确定的,通过产生一系列的点收敛到最优解(有时是局部最优解),而遗传算法的搜索过程是随机的,它产生一系列随机种群序列。
二者的主要差异可以归纳如下两点:
(1)上升法的初始点仅有一个,由决策者给出;
遗传算法的初始点有多个,随机产生。
(2)通过分析目标函数的特性,上升法由一点产生一个新点;
遗传算法通过遗传操作,在当前的种群中经过交叉、变异和选择产生下一代种群。
对同一个优化问题,遗传算法所使用的机时比上升法花费的机时要多。
但是遗传算法可以处理一些上升法不能解决的复杂的优化问题。
第三节遗传算法数字例子
遗传算法已被编制成C语言程序。
在下面的例子中,使用的参数为:
种群规模为30,交叉概率为0.2,变异概率为0.5,而评价函数中的参
数a=0.05。
遗传算法对于这些参数的设置是非常鲁棒的,改变这些参数对
所得的结果不会有太大的影响。
例1单目标规划,考虑非凸集合上的优化问题
22
XiX2X3
maxf(X)=
小32^22小23322
2x1x33x1x22x2x3x1x2x3
s.t
222
X-IX2X3_1
XiX2X3-4
Xi,X2,X3-0
已经知道目标函数的最大值为f(X)=0.1537,图中的阴影部分表示可行域在X3-0处的横截面。
从图总可以看到,可行域是非凸的。
下面用遗传算法求解此问题。
用染色体V=(Xi,X2,X3)来作为解的代码。
染色体V=(Xi,X2,X3)的可行性由下面的检验函数经验:
如果(冶wo|x2兰o|x3兰0),返回0;
如果(Xi2x|xf:
1),返回0;
如果(X:
x;
4),返回0;
返回1
其中检验函数值0表示不可行,1表示可行。
容易知道可行域包含于下列超几何体中
门-{(x1,x2,x3)0_%_2,0_x2_2,0_x3_2}。
我们可以很容易从这样的超几何体中抽样,例如取
%二u(0,2),他二u(0,2),X3二u(0,2)
其中函数u(a,b)用来产生区间[a,b]上的均匀分布的随机函数。
如果这个染色体不可行,则拒绝接受,由上面的<=u(0,2),i=1,2,3重新产生一个新的染色体,如果产生的染色体可行,贝能受它作为种群的一名成员。
经过有限次抽样以后,得到30个可行的染色体
%=(0.3903,0.6723,1.2507),V2=(0.9167,0.2930,0.3297)
V3=(0.2373,0.1267,1.7370),V4=(0.8523^0.9683,1.4477)
V5=(0.1280,0.8337,1.1807),Ve=(0.32830.6830,1.8263)
V7=(1.1223,0.6363,1.2303,V8=(0.5020,0.8447,1.0840)
V9=(0.0490,1.7077,0.2813),Vw-(0.5643,0.5450,1.6913)
%=(1.1430,0.6000,0.3623),匕=(1.6243,1.01530.5573)
%=(0.79531.3563,1.1223),V^=(0.1240,1.79030.5593)
V15=(1.2320,0.0733,0.9930),V16=(1.4473,1.3397,0.2947)
V17=(0.3960,0.61731.2623),V18=(0.5420,0.4000,1.6593
V19=(0.1517,1.0047,0.5590),V2°
=(1.2550,1.2957,0.6413)
V21=(0.13130.8217,1.4523),V22=(0.2383,1.2930,0.3637)
V23=(1.3047,0.4163,0.4673),V24=(1.7893,0.5220,0.4343)
V25=(1.191Q0.1460,0.5890),V26=(0.6023,1.3187,0.3897)
V27=(0.9907,0.8447,0.9030),V28=(0.7467,1.2017,1.0873
V29=(0.92631.5153,0.0503),Va^(0.0823,0.1867,1.1217)
直接计算,得到如下的初始适应度的值,即目标函数值
f(V1)=0.0727,f(V2)=0.0674,f(V,^0.0854
f(V』=0.1277,
f(V5)=0.0082,
f(V6)=0.0401
fM)=0.1482,
f(VO=0.0906,
f(V9)=0.0022
g)=0.1144,
f"
J=0.0539,
f(V12)=0.0663
fS)=0.0971,
fS)=0.0068,
f(V15)=0.0294
fM)=0.0197,
fW)=0.0792,
f“8)=0.1269
f(Vw)=0.0170,
fMo)"
.0711,
f%)=0.0071
f(V22)=0.0215,
f(V23)=0.0784,
fMJ=0.0616
f(V25)=0.0560,
f(V26)=0.0327,
f(V27)=0.1275
f(V28)=0.1013,
f(V29)=0.0006,
fMo)=0.0158
从中可以发现,染色体V是其中最好的染色体(f(V7)=0.1482最大),而染色体V29是其中最差的(f(V29)=0.0006最小)。
在此次进化中,保留了染色体V7,记为V。
。
如果在以后的进化过程中,发现比V。
更好的染色体,则用它取代V0。
根据染色体的目标值,由好到坏重新排列染色体如下
£
=(1.1223,0.6363,1.2303)M)
V2=(0.8523,0.9683,1.4477)g
V3=(0.9907,0.8447,0.9030)(V27)
V4=(0.5420,0.4000,1.6593(V18)
V5=(0.5643,0.5450,1.6913)(V10)
V6=(0.7467,1.2017,1.0873)(V28)
V7=(0.7953,1.3563,1.1223)(V13)
V8=(0.5020,0.8447,1.0840)(V8)
V9=(0.2373,0.1267,1.7370)(V3)
V;
=(0.396Q0.61731.2623)(V17)
=(1.3047,0.4163,0.4673)(V23)
V12=(0.3903
0.6723,
1.2507)
S
V13=(1.2550,
1.2957,
0.6413)
(V20)
V14=(0.9167,
0.293Q
0.3297)
(V2)
V15=(1.6243
1.0153,
0.5573)
(V12)
V16=(1.7893
0.5220,
0.4343)
(V24)
V17=(1.1910i
0.1460,
0.5890)
(V25)
V18=(1.1430,
0.6000,
0.3623)
(V11)
V19=(0.3283
0.683Q
1.8263)
(V6)
V20=(0.6023
1.3187,
0.3897)
(V26)
V21=(1.232Q
0.0733,
0.9930)
(V15)
V22=(0.2383
1.2930,
0.3637)
(V22)
V23=(1.4473
1.3397,
0.2947)
(V16)
V24=(0.1517,
1.0047,
0.5590)
(V19)
V25=(0.0823
0.1867,
1.1217)
(V30)
V26=(0.128Q
0.8337,
1.1807)
(V5)
V27=(0.1313
0.8217,
1.4523)
(V21)
V28=(0.124Q
1.7903,
0.5593)
(V14)
V29=(0.0490!
1.7077,
0.2813)
(V9),
V30=(0.9263
1.5153,
0.0503)
(V29)
根据评价函数:
Eval(V)=a(1-
a)i4,i
二1,2,.
其中参数a,(0,1)。
取
a=0.05
,有
..,pop-size
size
Eval(V)二0.05(1-0.05)"
'
i=1,2,...,pop
再由
qo=0
qi=送eval(Vj),i=1,2,...,pop-sizej」
对每个染色体Vi,计算累计概率q:
q=0.0500,
q2=0.0975,
q3=0.1426,q4=0.1855
Cb=0.2262,
q6=0.2649,
q7=0.3017,
q8=0.3366
q=0.3698,
q10=0.4013,
q1=0.4312,
q12=0.4596
qn=0.4867,
q-14=0.5123,
q15=0.5367,
qw=0.5599
q7=0.5819,
q18=0.6028,
血二0.6226,
q20=0.6415
q21=0.6594,
q22=0.6765,
q23=0.6926,
q24=0.7080
q25二0.7226,
q26=0.7365,
q27二0.7497,
q28=0.7622
q29二0.7741,
qa^0.7854
现在准备旋转赌轮30次。
首先由计算机在区间(0,
430]=(0,0.7854]上产生随
机数,得到0.0328,其大于q。
=0,而小于q^0.0500,所以选择染色体V;
(V?
)作为新种群的一名成员。
第二次产生的随机数为0.1284,大于q2=0.0975,
而小于q^0.1426,所以V;
(V27)也被选中,经过30次选择之后,得到一个新的种群
V/(1.12230.6363,1.2303,V?
:
(0.9907,0.8447,0.9030)
V3J(0.7467,1.2017,1.0873),V4=(1.1223,0.63631.2303)
V5=(0.9167,0.2930,0.3297),V^(0.5420,0.4000,1.6593)
V7=(0.9167,0.293Q0.3297),V*=(0.85230.9683,1.4477)
V9=(1.3047,0.41630.4673),V10=(0.9263,1.5153,0.0503
%=(0.0823,0.1867,1.1217),%=(0.5020,0.8447,1.0840)
V13=(0.9263,1.5153,0.0503),V14=(0.92631.5153,0.0503)
V15=(0.3960,0.6173,1.2623,V16=(1.78930.5220,0.4343)
V17=(0.8523,0.96831.4477),=(0.92631.5153,0.0503)
Ve=(0.6023,1.3187,0.3897),V?
=(0.13130.8217,1.4523)
V2;
=(0.9263,1.51530.0503),V22=(1.3047,0.4163,0.4673)
V23=(1.1223,0.63631.2303),V24=(1.62431.0153,0.5573
V25=(1.1910,0.146Q0.5890),V26=(0.9907,0.8447,0.9030)
V27=(0.1517,1.0047,0.5590),V?
/(1.12230.63631.2303)
V29=(0.0490,1.7077,0.2813,Vs。
=(1.62431.0153,0.5573)
接着,对新的种群进行遗传操作,即交叉操作。
交叉概率巳=20%,说明平
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 遗传 算法