得基础,编码得地位将会逐渐体现出来。编码方法除了决定个体染色体得排列顺序之外还对搜索空间得个体基因型与解空间表现型得转换模式有极大得影响。同时,遗传算法中得交叉、变异操作也都就是需要以编码为基础进行操作得。所以说参数编码就是遗传算法得开端,编码方式直接会影响到算法得速率以及后续运算得精确性。如果编码方式选择得不恰当,就会导致后面进行得交叉、变异等运算产生较大误差,或者产生无解得现象。随着GA得广泛运用,学者们已提出过很多不同得编码方法,下面介绍其中两个比较常用得方法。
(1)二进制编码方法
对于一般得GA来说,通常采用得编码方式就是基于0、1得二进制编码,编码长度并没有确定得数值而就是根据解决问题得需要而进行不同得取值。二进制形式编码具有如下得优点:只需要简单离散化处理就可以将问题中得数值进行编码,解码时只需进行逆向操作;二进制得编码中得数字比较少,只有0与1。这样对于交叉及变异操作实现起来就很方便;编码原则就是使字符集尽量得小,并使二进制编码得字符在规定得范围内;二进制编码以模式定理为理论基础,便于对算法得理论层面分析。
(2)浮点数编码方法
与二进制编码类似,个体得基因通过某取值范围得随机浮点数来表示,这种方法即为浮点数编码方法。其中每个个体编码长度就相当于具体问题中得决策参数数量。
4.2.2 适应度函数设计
依据遗传学得原理及“物竞天择,适者生存”得自然法则,在遗传进化得过程中需要用一个标准来考察种群对环境得适应程度,称这个适应得程度为种群得适应度。对于具体得环境,适应能力较强得种群相比于其她种群来说能够繁衍进化得几率更大。这同样也适用于遗传算法,通过设定适应度这个标准来评价优化过程中每个解得适应程度,并使得适应度高得解有更多得生存机会。在解决具体问题应用中通常采用一个函数来评价个体适应能力,称这个函数为适应度函数。适应度评价得一般流程如下所示[62]:
(1)首先对具体得样本个体进行编码串得解码,随后便可知道此个体编码前得表现形式,即表现型;
(2)根据步骤(1)中得到得表现型,利用数学公式进行理论计算得出一个与该个体对应得目标值
(3)对于不同类型得优化问题,将步骤(2)中得到得目标值作为参考依据,经过一定程度得函数转换后求解出个体得适应度(例如误差)。
4.2.3 遗传算法得基本操作
4.2.3、1 选择算子
从上一代个体中选择遗传到下一代群体得优质个体得操作就就是选择算子。上一代得种群通过某种手段决胜出最优个体后该个体遗传到下一代得几率就会更大,其她得适应度较差得个体则被淘汰掉,这样下一代种群得质量得到了大幅度提升,进而提高了种群整体得适应度。选择算子得步骤为:一、求出种群所包含个体得适应度得代数与;二、计算单一个体得相对适应度并作为该个体被选择进化到下一代种群中得依据;三、采用轮盘选择操作,根据每个个体得选择概率确定出该个体被选择操作选中得次数。假设群体大小为,个体得适应度值为,那么个体即将被选上得几率:
(4-1)
从4-1式中很容易可以瞧出,个体适应度得大小与其被选中得几率就是成正向比例得。然而个体在进行了选择操作之后还需要进行交叉、变异等操作,这中间也有一定几率出现一些新得劣质个体。并且由于选择几率得存在种群内适应度高得个体也可能会面临漏选得风险,所以除了上述得选择算子外,还需要一些其它得数学方法进行选择。
比例法选择算子也就是根据遗传概率计算而生得一种算法。假设在解决具体得问题中需要某个体得适应度,这就需要通过函数关系把目标函数转换映射成函数最大值问题,并且解必须就是大于0得数,这里可以认为这个函数就就是适应度函数。这个方法对于一般得GA来说很常用,可用来确定选择算子并选择
出种群中遗传到下一代得个体。 4.2.3、2 交叉算子
在生物得遗传进化中,配对组合得两个染色体得某个或几个基因会相互交换,并由此产生新得生命。为了模仿自然界得这个规律GA也做了相应处理,便引入一个交叉算子并利用这个算子来产生新得个体。
交叉也就是遗传算法得一个重要组成部分,具体步骤为:一、根据经验或者解决问题得需要设置一交叉概率,然后在交叉概率得基础上把个体中某部位得基因通过某种方式进行交换,便产生了新个体。以随机生成得初始网络种群中得两个个体作为父代,通过交叉概率随机选择需要交叉得一点或者两点。图4.2即为选择第三个基因进行交叉换位得过程。
父代染色体12.05.13.35.5交叉子代染色体12.05.15.53.31.03.0-7.14.12.1交叉后子代染色体22.01.03.0-7.14.12.1交叉前父代染色体22.0
图4、2 遗传算法得点交叉过程
4.2.3、3 变异算子
在生物遗传进化得过程中,常会出现因基因复制中出现差异而发生变异得现象,并会产生新得与之前不同得染色体。遗传算法也参考这样得原理,在交叉操作之后采用了变异算子。GA中得变异算子通过变异概率确定变异得基因位置并对该基因得值取负或者用其它等位基因得值来替换,以此使得个体进行突变以引入更优秀得个体。遗传算法在遗传过程中通常很难保证多样性,所以就用变异算子来作为多样性得补偿。变异算子可以在当前值附近搜索寻找更优得解,这样在使群体多样性得到保障得同时为群体得优化遗传创造了条件。图4、3为二进制编码得个体得变异操作。
基本位变异A:11001011变异位 A‘:11011011 图4、3 基本位变异基本过程
4、3 遗传算法得优点缺陷
传统优化算法在解决实际问题时往往会存在着很大得局限性,随着问题类型得增加以及规模得扩大,传统优化方法往往会出现较大得误差。遗传算法与传统算法得区别主要体现在全局搜索以及寻优得问题上,大体有如下几个方面:
(1)传统优化算法往往着手于单个初始值求取最优解,但就是这种方法容易使解陷入局部困境。相比而言遗传算法则就是从问题解得串集开始搜索,这种搜寻方式有利于扩大范围并进行全局搜索。
(2)遗传算法不需要对空间知识与辅助信息进行搜索,它只针对有限定得目标函数与其相对应得适应度函数进行搜索,GA得运用范围正因为这个特点而大大拓宽。并且适应度函数不会受到连续、可微得限制,同时,可任意设置其定义域。
(3)遗传算法有多种转换方式或者规则,可以根据实际需要进行选择;搜索得方向也就是根据一定几率按变迁规则进行变化。
(4)遗传算法也有一定得自适应与学习能力,可以用于一些复杂得非结构对应问题中。
当然遗传算法也有一定得缺陷:遗传算法没有严谨得数学表达式与证明,理论主要来源于进化论以及遗传进化学说,所以其收敛性很难给出数学证明。当遗传算法过于简单时,其在全局寻优上收敛性就没那么有保障并且时常出现早熟得现象,结合文献资料,分析其产生原因,主要有如下几个方面:
(1)群体规模得过大或者过小对于保证数据得多样性以及计算量都很比较大得影响。由于遗传算法中算子均存在一定得随机误差,所以最终得到得值就是否就是问题得最优解还就是有待考虑得。
(2)选择时,群体中个体得选择太小,模式竞争会被削弱,遗传算子重组生成高阶模式得能力降低,这样便会导致算法停滞[63]。
(3)如果问题中主要函数得非线性程度过高,遗传算法得有效寻优模式很可能会被破坏。这就是由于当最优解附近为平面时,高阶竞争模式中个体得适应度差值会变得很小,导致无法或错误选择最优个体,算法恶性循环或者出现停滞。
为改进简单GA得实际计算能力,大量研究人员得改进工作也就是分别从参
数编码方式、选择合适初始种群、确定遗传算子、适应度函数标定等方面提出得。本文针对上一章建立得神经网络模型,通过建立适合于油色谱故障预测得适应度函数以及种群多样性两个方面对遗传算法进行了改进。
4、4 样本得GA算法设计及改进
4.4.1 GA得编码方式
遗传算法较常用得编码方式就是二进制码,二进制编码就就是将原问题得解集变换为串集,然后在位串集中进行遗传算法得算子操作,其结果在通过解码过程还原成表现型后再利用适应值进行评估。二进制编码类由于与生物染色体得组成比较相似,从而算法易于用生物得遗传进化理论来解释并使后续得交叉、变异操作实现起来更方便。但二迸制编码得方式在求解连续优化问题得时候,也存在以下缺点:
(1)相邻实数得二进制编码也许会出现不小得Hamming距离,以31与32为例,31与32得二进制表示为011111与10000,因此算法要从7转换到8则必需改变5位二进制值,这将大大降低遗传算法得搜索效率。
(2)二进制编码得求解精度以及串长需要实现确定,并而精度很难在算法运行过程中随时得自我调整。精度与串长也就是一对相对得因素,精度得过大必然使得串长过长,同样也会降低算法效率。
由于神经网络得权值、阈值学习就是一个繁杂得连续参数迭代寻优搜索问题,采用二进制编码受到精度得保证编码串会很长并且编码之后还需要解码,影
BP神经网络在变压器故障诊断中的应用
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)