钢铁2文档格式.docx
- 文档编号:19921417
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:16
- 大小:159.74KB
钢铁2文档格式.docx
《钢铁2文档格式.docx》由会员分享,可在线阅读,更多相关《钢铁2文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
在进行遗传操作之前,必须将所要求解问题的解编码成二进制。
由于二进制值是离散的整数值,采用二进制编码实际上是对参变量区间进行离散的过程,每一个二进制值对应参变量的变化值。
所以,求解问题的精度由离散的精度决定,也即由参变量区间的大小和二进制码长决定。
假设参变量区间为[a1,a2],如果采用长度为Lx的二进制表示,则编码精度为(a2-a1)/(2Lx-1)。
1.复制算子
复制算子的操作过程是采用某种复制策略把优化的个体(或解)复制至下一代。
复制操作是建立在群体中个体的适应度值评估的基础上,常用的复制策略有赌轮复制策略、排序复制策略、期望值复制策略等。
其中赌轮复制策略是应用最多的复制策略。
在赌轮复制策略中,第i个个体被复制的概率pri为:
(2-1)
其中Fti为第i各个个体的适应度值。
显然,采用赌轮复制策略,适应度值越大的个体被复制的概率越大。
复制算子不产生新的个体,但它可以提高群体的平均适应度值。
2.交叉算子
交叉算子的操作过程是按交叉概率pc从群体中随机选择两个个体,部分交换这两个个体中某些位。
交叉的目的是通过交换两个个体之间的信息以产生更加优秀的个体。
交叉算子是遗传操作的主要算子,交叉操作不能改变群体的平均适应度值,但可以提高某些个体的适应度值。
3.变异算子
变异算子的操作过程是按变异概率pm对群体中个体的某些位进行变异,即1变为0,0变为1。
目前对于变异操作在遗传算法中的所起作用仍有争议,但变异操作对于增加群体的多样性,尤其是遗传操作的后期,所起的作用不容忽视。
对于两个个体相同的情况,交叉操作失效,此时只有通过变异操作使个体得以进化。
在进行完遗传操作后,要想得到原问题的解,还需对二进制编码进行解码,其计算式如下:
(2-2)
式中x:
原问题的解;
gj:
二进制串第j位的位值,为1或0。
二 模式定理
模式定理是遗传算法中的基本理论,提供了解释遗传算法机理的数学工具,还蕴含着发展编码策略和基因操作策略的一些准则。
模式(Schema)即相同的构形,表示基因串中某些特征位相同的结构。
一个模式S包含四个参数:
原始长度Lx,阶J(S),定义长度Ld(S)及模式的维数D(S),Lx是串的长度,J(S)是模式中固定位的个数,Ld(S)是最前和最后固定位间的距离,D(S)表示模式中包含串的个数。
假设第k代遗传时,在群体中有m个某特定模式S,写成m(S,k),复制过程中,含S的串按pr=Ft(S)/Ft的概率复制,其中Ft(S)是含S的串的适应度值,复制数为Xpr;
令
为所含S的串的平均适应度值,则m(S,k+1)为
(2-3)
由于群体的平均适应度值
为
,则
(2-4)
这表明一个特定的模式按照其平均适应度值与群体的平均适应度值之间的比率生长。
假设某一特定模式的适应度值保持在高出群体平均适应度值以上一个c
,c为一固定值,则模式的生长方程变为
(2-5)
若从k=0开始,则可得
(2-6)
由上式可知,在群体平均适应度值以上(以下)的模式将会按指数增长(衰减)的方式被复制。
对于任意模式可计算出其交叉生存概率ps的下界。
由于交叉位置落在定义长度之外时,这个模式就可以生存。
在简单一点交叉算子作用下的生存概率ps=1-Ld(S)/(Lx-1);
交叉位置落在定义长度之内时,则模式易被破坏。
如果交叉本身也是按随机选取方式执行的,即以概率ps进行特定的交配,则生存概率有以下估计
(2-7)
最后来考虑变异算子的作用效果。
变异算子是以概率pm随机地改变一个位上的值,为了使得模式S可以生存下来,所有特定的位必须存活。
因为单个等位基因存活的概率为(1-pm),并且由于每次变异都是独立的,因此,模式S中J(S)个确定位都存活时,这个模式才存活。
因而在变异算子作用下,存活概率为(1-pm)J(S)。
对于很小的pm(pm<
<
1),模式的存活概率可以近似地等于1-J(S)pm。
因此,在复制、交叉和变异算子作用下,一个特定模式S在下一代中期望出现的次数可以近似地表示为
(2-8)
上式即为遗传算法中的模式定理,其说明了具有短的定义长度、低阶并且适应度值在群体平均适应度值以上的模式在遗传算法迭代过程中将按指数增长率被采样。
三 隐含并行性
我们已经知道,一个串实际上隐含着许多个模式,遗传算法实际上是模式的运算。
考虑由长度为Lx的串所构成的规模为X的群体,其中隐含着的模式个数介于2Lx与X2Lx之间。
但是正如模式定理所表明的,并不是所有的模式都以较大的概率被处理。
对于一个长度为Lx的串,定义长度小于等于Ld的模式数为2Ld-1(Lx-Ld+1)。
对于群体数为X,则此类模式总数为X2Ld-1(Lx-Ld+1)。
显然,这个结论在群体规模较大的情况下存在着重复计数的问题。
为了更准确些,取群体数X=2Ld/2,由此希望阶数高于或等于Ld/2的模式最多重复计数一次。
另一方面,考虑到模式数目的分布呈二项式分布,则阶数高于Ld/2的模式与低于Ld/2的模式数目大致相等,各占一半。
如果我们只考虑高阶的部分,则有关模式数的下界为
(2-9)
考虑到X=2Lx/2,则有
(2-10)
即有Xs=O(X3)。
由此得出结论:
遗传算法有效处理的模式总数正比于群体数X的立方,即为O(X3)。
以上叙述表明,每一代中除了仅对X个串的处理外,遗传算法实际上处理了约O(X3)个模式,从而每代只执行与群体规模成比例的计算量,就可以同时达到并行地有效处理大约O(X3)个模式的目的,并且无需额外的存储。
这就是遗传算法的隐含并行性。
遗传算法的隐含并行性决定了遗传算法适合大规模的并行计算,这也是遗传算法优于其他算法之处。
四 适应度函数
遗传算法在进化搜索中基本上不用外部信息,仅需适应度函数值。
适应度函数是要求解问题目标函数的某种映射式。
遗传算法的适应度函数不受连续可微的约束且定义域可以为任意集合,唯一要求是针对输入能计算出可以比较的非负结果。
在具体的应用中,适应度函数的设计要结合求解问题本身的要求而定。
需要强调的是适应度函数值是复制操作的依据,适应度函数的设计直接影响到遗传算法的性能。
1.目标函数映射成适应度函数
如果要求解的是一个最大化问题,为了保证适应度函数的非负性,可采用如下变换式:
(2-11)
u(x)为所求实际问题的目标函数,系数Cmin可以是适当的输入值,也可以是当前代或前k代中的u(x)的最小值。
对于一个最小化问题,为了保证适应度函数的非负性,利用下式对目标函数进行变换:
(2-12)
u(x)为所求问题的目标函数,系数Cmax可以是适当的输入值,也可以是当前代或前k代中的u(x)的最大值,也可采用迄今为止进化过程中u(x)的最大值。
2.适应度函数定标
在遗传算法中,与适应度函数有关的导致算法未成熟收敛的情况有两种:
其一是在遗传进化的初期,若采用赌轮复制策略,一些超常的个体因竞争力太突出会控制复制过程,从而影响算法的全局优化性能;
其二是在遗传进化过程中,群体的平均适应度值已接近最佳个体的适应度值,这样,个体间的竞争力减弱,从而使有目标的优化过程趋于无目标的随机漫游过程。
对于以上两种情况,应对适应度函数进行缩放调整即适应度函数定标来提高遗传算法的效率。
目前,定标方式主要有:
(1)线性定标(linearscaling)
设原适应度函数为Ft,定标后的适应度函数为Ft’,则线性定标可采用下式表示:
(2-13)
系数a和b可以用多种方法设定,但必须满足两个条件:
⏹原适应度平均值要等于定标后的适应度平均值;
⏹定标后适应度函数的最大值Ftmax要等于原适应度函数平均值Ftavg的指定的倍数,即Ftmax=CmultFtavg。
Cmult是为得到所期待的最优个体的复制数,对于X=50~100时,Cmult=1.2~2.0。
(2)乘幂标
该定标方式定义如下:
(2-14)
幂指数a与求解问题有关,而且在算法过程中可以按需要修正。
(3)指数标
(2-15)
这种类型的定标方法的基本思想出自于模拟退火过程[65]。
系数a决定复制的强制性,a越小,复制就越趋向于那些具有较高适应度值的个体。
2-4遗传算法的特点分析
一 遗传算法的特点[66]
遗传算法的特点可以通过与传统的搜索方法的比较充分体现出来。
解析法是常用的搜索方法之一。
它通常是通过求解使目标函数的梯度为零的一组非线性方程来进行搜索。
一般而言,若目标函数连续可微,解的空间方程比较简单,解析法还是可以用的。
但是,若方程的变量有几十个或几百个,或是目标函数不连续可微,解析法就无能为力了。
对于工程和科学中的许多实际问题,找到一个最优解的唯一可靠方法是穷举法。
这种方法简单易行,然而在许多情况下,由于参变量空间太大,以至于在限定的时间内只可能搜索其中极小的一部分,这样就存在一个问题:
怎样组织搜索,才可能有效地确定近似最优解?
很多情况下也不允许一点一点的慢慢求解,且这种方法的实用性和适应性太差。
爬山法也是一种常用的搜索算法:
从某一随机点出发,在选定的方向上进行微小的变动,若得到更优的解,则在这个方向上继续进行搜索,否则,就转到相反的方向。
显然,爬山法和解析法一样是属于局部寻优的搜索方法,对于在搜索空间中存在许多峰值点的复杂的问题,爬山法往往不能得到问题的最优解。
而且,随着参变量空间维数的增大,其拓扑结构也可能更加复杂,这时就不用说寻找正确的峰值点,即使确定上山的方向也会变得越来越困难。
随机搜索方法是一种常用的方法,但它的搜索效率依然不高。
一般而言,只有解在搜索空间形成紧致分布时,它的搜索才有效。
但这一条在实际问题中很难得到满足。
当然,前述的几种传统的搜索方法虽然存在不足,但这些方法在一定的条件下,尤其是将它们混合使用也是有效的。
不过当面临更为复杂的问题时,必须采用象遗传算法这样更好的方法。
与传统的优化算法相比,遗传算法主要有以下几个特点:
(1)遗传算法不是直接作用在参变量集上,而是利用参变量集的某种编码,主要是为便于进行遗传操作;
(2)遗传算法不是从单个点,而是从一个点的群体开始搜索,提高了搜索效率,适合搜索复杂区域中的最优解;
(3)遗传算法利用适应度值信息,无须导数或其他辅助信息,且其适应度函数不仅不受连续可微的限制,而且其定义域可以任意设定;
(4)遗传算法使用的复制、交叉、变异这三个算子都是随机操作,而非确定性规则。
但这并不意味着遗传算法是简单的随机搜索,遗传算法是利用随机工具来指导搜索向着一个最优解前进。
遗传算法象撒网一样,在参变量空间中进行搜索,由串组成的群体在遗传算子的作用下,同时对空间中不同的区域进行采样计算,从而构成一个不断进化的群体序列。
通过保持在解空间不同区域中多个点的搜索,遗传算法能以很大的概率找到全局最优解。
遗传算法的这些特点决定了它在搜索过程中不容易陷入局部最优,即使在所定义的适应度函数是不连续的、非规则的或有噪音的情况下,也能以很大的概率找到整体最优解。
这点是遗传算法优于其他局部搜索算法最重要的一点。
二 对遗传算法的几点讨论
和其他算法一样,遗传算法本身也存在一个参数优化问题。
怎样用好遗传算法,提高它的全局收敛性及收敛速度,避免遗传算法早熟,是研究遗传算法的关键所在。
1.遗传算法关键参数的确定
遗传算法的关键参数主要有:
(1)群体规模X[67,68]
群体规模影响遗传优化的最终结果以及遗传算法的执行效率。
当群体规模X太小时,不能产生充分多的采样点,各个个体之间不能存在充分大的差异,遗传算法的优化性能一般不会太好而且容易导致提前收敛,而采用较大的群体规模,群体中个体的多样性较好,则可减少遗传算法陷入局部最优解的机会,但较大的群体规模意味着计算负担加重,计算复杂度高。
实际应用中一般通过试算确定,一般X取20~160之间。
(2)交叉概率pc
交叉概率pc控制着交叉操作被使用的频度。
较大的交叉概率可增强遗传算法开辟新的搜索区域的能力,但高性能的模式遭到破坏的可能性增大;
若交叉概率太低,遗传算法搜索可能陷入迟钝状态。
一般pc取0.25~0.75之间。
(3)交叉概率pm
变异在遗传算法中属于辅助性的搜索操作,它的主要目的是维持解群体的多样性。
一般低频度的变异可防止群体中重要的、单一的基因的可能丢失,高频度的变异使遗传算法趋于纯粹的随机搜索。
通常取pm从0.005到0.2之间。
(4)代沟wx
代沟wx控制着每一代群体构成中个体被更新的百分比。
代沟方式的选用为遗传算法利用优化过程的历史信息提供了条件,加速了遗传算法的收敛过程。
当wx过小时,可能导致遗传算法的过早的不成熟收敛。
一般取wx从0.30到1.00之间。
2.遗传算法的收敛性[69,70]
遗传算法虽然可以实现均衡的搜索,并且在许多问题的求解中能得到满意的结果。
但是标准遗传算法的收敛速度、全局收敛性等的理论分析尚需进一步分析。
未成熟收敛即早熟是标准遗传算法应用中经常出现且不可忽视的问题。
遗传算法的早熟主要表现在:
(1)群体中所有的个体都陷于同一极值而停止进化,即个体的适应度值最大值和最小值与群体的平均适应度值几乎相等,群体中的个体等概率遗传至下一代;
(2)接近最优解的个体总是被淘汰,进化过程不收敛。
在遗传算法的处理过程的每一个环节都有可能导入产生未成熟收敛的因素,具体表现如下:
(1)在进化的初始阶段,生成具有很高适应度的个体,在基于适应度比例即赌轮选择机制的选择下,其他个体被淘汰,大部分个体都一致;
(2)相同的两个个体实行交叉,从而未能生成新个体。
针对以上情况,需要在编码、适应度函数和遗传操作的设计中考虑抑制未成熟收敛的对策。
现将其归纳如下:
(1)提高变异概率,在进化初始阶段,它可以加强遗传算法的随机搜索能力;
(2)调整复制概率,可以把复制概率本身也作为个体进行优化;
(3)对适应度函数进行合适的定标;
(4)维持群体中个体的多样性,可采用以下方法:
a)增加群体规模,但考虑计算量增加的因素;
b)把群体分割成若干子群体,每个子群体独立地进行选择操作,这样可以使由于出现不适当个体而产生未成熟收敛的现象局部化;
c)把相同的个体单一化,即不允许群体中有若干个相同个体出现;
d)增加配对个体距离,可以减少由于个体相似而使得交叉操作没有产生新个体的情况,作为改进,可用海明距离来判断配对个体的相似度,并由此决定配对与否。
(5)采用最佳个体保存方法产生新一代群体,即把群体中适应度最高的个体不进行配对交叉而直接复制到下一代中。
(6)采用多点交叉,标准遗传算法对于单个染色体只进行单点交叉,采用多点交叉有利于对于一个染色体承载多个变量的问题提高遗传搜索效率。
常用的多点交叉为两点交叉和均匀交叉。
两点交叉就是在染色体中随机选取两点,然后交换两点中的一段基因链。
均匀交叉为从父代染色体中以一定的概率随机选取等位基因而构成两个子代染色体。
(7)采用自适应的交叉概率pc和变异概率pm,即当群体中各个体适应度值趋于一致或趋于局部最优时,使pc和pm增加,而当群体中个体适应度值比较分散时,pc和pm减小。
pc和pm的计算如下[71]:
(2-16)
(2-17)
其中0<
k1,k2,k3,k41.0,Ftmax为群体中的最大适应度值,Ft是用于交叉的两个串中较大的适应度值,Ft是变异串的适应度值,
为群体平均适应度值。
以上几种对策的效果各不相同。
为了有效地克服未成熟收敛,这些对策也许要在进化过程中分阶段使用或交替使用。
2-5混合遗传算法
一 混合遗传算法的基本思想
尽管标准遗传算法相对传统的数值优化方法具有许多优点,尤其是它的群体搜索方式使得其总能以较大的概率找到全局最优解。
但是,遗传算法毕竟产生于机器学习之中,在优化领域也多用于离散变量的优化问题,对于连续变量的优化问题,标准遗传算法由于以上所述各种原因,其局部搜索能力不强,收敛速度有限,并没有显示强大的优越性。
所以,有必要建立一种新的算法,将遗传算法和局部搜索方法结合起来即混合遗传算法,以充分利用遗传算法的全局搜索能力和局部搜索算法的局部搜索能力。
基于此原因,本文将遗传算法与登山搜索法相结合,建立了一种混合遗传算法。
其基本思想是:
利用遗传算法的群体操作能力找出每代中的最优解,然后,以此最优解为起点进行登山搜索以找出更优解,反复迭代,直至找出全局最优解。
二 混合遗传算法的建立过程
下面以一具体的连续函数为例,详细阐述混合遗传算法的建立过程。
求解连续函数
(2-18)
的最小值。
本函数是一个简单的平方求和函数,具有一个极小值,在点xi=0。
求解步骤如下:
(1)采用浮点数编码策略在确定的参数区间内对所需估计的参数进行编码。
尽管二进制编码策略是遗传算法最常用的编码策略,但对于连续问题的求解,首先必须将参数区间离散化,离散化的精度受二进制码串长度的限制。
显然,要求解问题的精度越高,码串越长,带来的问题是计算复杂度和时间复杂度成倍增加。
而采用浮点数编码策略,计算精度随计算机而定,具有编码长度短、通用性好且易理解等优点。
另外,由于传统的局部搜索方法均是采用浮点操作,若采用二进制编码,译码将比较困难。
在编码之前,为了防止因各参数值相差很大而导致编码困难,需先对参数区间进行归一处理,将参数区间[a1,a2]映射为[0,1]:
(2-19)
式中x为模型参数的实际值,x[a1,a2];
y为归一后对应的浮点数,即参数编码,其精度视实际问题而定,y[0,1];
对于精度为10-6的问题,两组参数的归一后的结果如下:
A:
B:
(2)在区间[0,1]内随机生成X个个体,组成初始群体。
将生成个体的小数部分作为染色体存储在字符串中,单个的数字即为基因,染色体的长度为18(等于参数个数单个参数的小数点后位数即精度),如下所示:
5
1
8
4
7
9
6
2
3
并计算各点的适应度值。
为了保证适应度值均大于零,采用下式对目标函数进行变换得到相应的适应度函数:
(2-20)
(3)统计出本代群体中的最优解,并将其直接复制至下一代中,即采用最优保存策略复制个体,这样可以保证算法的全局收敛性;
(4)采用登山搜索方法以本代最优解为起点进行搜索,找出更优解,并将其直接复制至下一代中。
为了提高登山搜索的效率,在登山过程中初始步长的确定借用了模拟退火方法的思想,即迭代初期(温度较高时),采用较大的初始步长,随着迭代的进行(温度降低),初始步长逐渐较小。
计算结果表明,采用登山搜索法可以明显提高每代运算的效率,加快了整个算法的收敛速度;
(5)采用复制、交叉和变异遗传算子对个体进行操作。
复制仍然采用赌轮复制策略。
由于采用浮点编码策略,交叉和变异操作与使用二进制编码策略有所不同。
表2-1为实际计算过程采用两点交叉(两条“”之间)的计算结果。
从表中可以看出,虽然交叉后适应度的平均值没变,但是产生了更加优秀的染色体。
表2-1两点交叉结果
染色体
x0
x1
x2
Fitness
交叉前
A
844813098117326548
3.53089
-4.11528
-1.77615
67.4426
B
176976584551899746
-3.30776
0.86581
4.09341
71.5531
交叉后
844816584517326548
3.53092
0.86545
83.6289
176973098151899746
-3.30780
-4.11493
4.09340
55.3699
变异操作是针对某一染色体的某一基因进行的。
一旦随机选中某一位即基因进行变异时,随机生成一0至9的自然数替代此基因位。
表2-2为实际计算过程中两条染色体变异的结果。
从表中可以看出,变异操作既可以使个体更优秀,也可以使个体变坏。
变异算子主要是起增加群体多样性的作用,尤其是在遗传操作的后期;
表2-2两条染色体变异结果
Fitne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 钢铁