基于改进遗传算法的连续函数优化 联系客服

发布时间 : 星期四 文章基于改进遗传算法的连续函数优化更新完毕开始阅读17cea286710abb68a98271fe910ef12d2bf9a916

基于改进遗传算法的连续函数优化

摘要:为了进一步避免连续函数优化过程中的“早熟收敛”和“搜索迟钝”,在简单遗传算法基础上提出了划分寻优区间、基于排序和最佳保留的轮盘赌选择算子,可以用来提高遗传算法的运行效率和收敛速度,达到了既能够选出最好个体又能够保证种群多样性的效果;同时采用择优交叉算子和二元变异算子,这样既保证了种群的收敛性,又可在陷入局部最优时为种群引入新基因。仿真实验表明,与简单遗传算法相比,改进后的遗传算法能有效地提高遗传算法的收敛速度和避免陷入局部最优。

关键词:遗传算法;轮盘赌选择算子;最佳保留;择优交叉;连续函数优化 遗传算法(geneticalgorithm简称GA)是近年来迅速发展起来的一种全新的随机搜索与优化算法。其基本思想是基于Darwin的进化论和mendel的遗传学说。遗传算法最早由美国holand教授提出。遗传算法提供了一种求解复杂系统优化问题的通用框架,可以不用依赖于问题的具体领域,对解决问题的种类有很强的鲁棒性,所以应用广泛,其中函数优化是遗传算法的经典应用领域。但是在算法的具体实施过程中,经常遇到诸如收敛速度慢和早熟等问题,这使得在计算中需要很长时间才能找到最优解,而且很容易陷入局部极值。本文对简单遗传算法加以改进,引入划分寻优区间、排序和最佳保留的轮盘选择算子、择优交叉算子、二元变异算子等,以提高遗传算法的收敛速度和避免陷入局部最优,来获得连续函数的最优解。 一、遗传算法基本原理

遗传算法是一种基于生物进化原理构想出来的搜索最优解的仿生算法,它模拟基因重组与进化的自然过程。与传统搜索算法不同,遗传算法从一组随机产生的初始解(称为群体),开始搜索过程。首先把待解决问题参数编码成基因,群体中的每个个体是问题的一个解,称为染色体。这些染色体在后续迭代中不断进化,称为遗传。遗传算法主要通过选择算子、交叉算子和变异算子实现。交叉或变异运算生成下一代染色体,称为后代。染色体的好坏用适应度来衡量。根据适应度的大小从上一代和后代中选择一定数量的个体,作为下一代群体,再继续进化,这样经过若干代之后,算法收敛于最好的染色体,它很可能就是问题的最优解或次优解。遗传算法中使用适应度这个概念来度量群体中的各个个体的在优化计算中有可能到达最优解的优良程度。度量个体适应度的函数称为适应度函数。适应度函数的定义一般与具体求解问题有关。习惯上,适应度值越大,表示解的质量越好。对于求最小值问题,可以通过变换转化为求最大值问题。 1.1简单遗传算法(sinplegeneticalgorithm,SGA)

SGA应用于求最优解的过程中,通过把要求解的参数编码转换为生物进化过程中的染色体,并且依据各个个体的适应值的大小,进行选择、交叉和变异操作,从而得到新的个体,重复进行这些操作直到达到算法结束条件,其算法的流程如图1所示。

1.2简单遗传算法的数学模型

简单遗传算法的数学模型可以表示为SGA=(C,E,P0,M,Φ,Γ,Ψ,T)(1)式中:C个体的编码方法;E个体适应度评价函数;P0初始种群;M种群大小;Φ选择算子;Γ交叉算子;Ψ变异算子;T遗传运算终止条件。 二、改进的遗传算法(improved genetical gorithm,IGA) 2.1划分寻优区间

对于连续函数的优化问题,可以根据函数图像特点,把寻优区间划分成若干个子区间,这样可以将遗传算法运行m次,最后选取m个区间中的最优个体做作为求解结果,具体做法为:寻优区间[a,b],并把寻优空间划分成m个子区间:

b?a 1) A=[a,a+i],i=1,?,m (2)

mb?a 2)sovel=max[a,a+i],i=1,?m (3)

m这样可以极大地提高遗传算法的寻优能力,对m个寻优区间的结果合并,可以避免陷入局部最优,提高遗传算法的运行效率和收敛速度。 2.2基于排序和最佳保留的轮盘赌选择算子

令M为种群大小,每个个体i的适应度为Fi,首先对所有个体按其适应度值从大到小排序,然后用排在前面10%适应度较高的个体代替排在后面适应度较低的10%个体,并把适应度较高的10%的个体直接选择进入下一代,最后再进行轮盘赌选择。

设父代种群A={a0,?,aM},其中每个个体的适应度大小为Fai,子

代群体初始状态设为x={ },则改进选择算子的具体执行过程为:

1)将所有个体按其适应度值由大到小排序,排序后的种群为A1={b1,?,bM},其中Fbi>Fbi?1。 (4)

2)选择排在前面的10%适应度较高的个体代替排在后面适应度较小的10%个体组成新的种群A2={C1,?,CM},并把适应度高的10%的个体直接选择到下一代。

3)计算出群体A2中所有个体的适应度的总和

M?Fi?1Mbi(i=1,...M)。

4)计算出每个个体被选取的概率 Pbi=Fbi/?Fbi,(k=1,...M) (5)

k?1 5)转动使用轮盘赌选择90%M轮。

6)合并并存储所有新选出来的个体,然后返回。 2.3改进的交叉算子(择优交叉算子)

简单遗传算法(SGA)一般采用是单点交叉算子。即随机挑选经过选择操作后的种群中的2个个体作为交叉对象,随机产生交叉点位置,并在交叉点位置互换基因码,形成新的个体。由于其随机性,容易产生过早收敛,因此可以采用择优交叉算子。具体做法:在随机选择出父本和母本以后,按照一定的交叉方法进行N次交叉,产生2N个个体,再从这2N个个体中挑选出最优的2个个体加入到新的种群中。这样既保存了父本和母本的基因,又在进化的过程中大大地提高了种群的中个体的平均性能。

2.4改进的变异算子(二元变异算子)

变异操作的目的是改善算法的局部搜索能力,维持种群的多样性,同时防止早熟收敛现象的发生。根据模式定理,在基本遗传算法中,当种群即将收敛时,基因模式趋同,导致整个种群多样性下降,这时本应采用较高的变异概率来提高种群多样性,但简单遗传算法使用固定的变异概率,这样随世代数增加,种群的多样性差,造成局部或全局搜索能力有限,特别对多峰函数的搜索更易陷入局部最优解。由于本算法在划分寻优区间的基础上采用基于排序和最佳保留的轮盘赌选择算子和改进的择优交叉算子,有效地保证了收敛性,因此可以采用文献中的二元变异。具体做法为:传统的变异算子只需要对一条染色体进行操作,所执行的操作是一元取反操作,与传统变异算子不同,二元变异算子采用的是2条“染色体”进行参与,具体操作为个体11010和01101,同或运算结果为01000,异或运算结果为10111。因为“同或/异或”的逻辑运算规律,运算后的2种逻辑状态是互补的,也就是说同一基因位上的不同种类的基因经过变异后同时存在,从而可以有效避免基因位的缺失。 三、实验分析

本文选取3个测试函数,对其求极值来测试算法的收敛性能。包括简单一元函数、多元单峰 函数(Dejong)、多元多峰函数(shubert),这3个测试函数分别为:

f1(x)=xsin(10?x),x?[-1,2] (6)

f2(x)=?xi2 ,-512?xi?512 (7)

i?155nf3(x)=?icos[(i+1)x+i]* ?icos[(i+1)x2+i]

i?1i?1其中

-10≤x1,x2≤10 (8)

图2~4分别为3个函数的图像。首先可以从三维图上了解3个函数的特点:

f1是一个一元多峰函数,有若干极大值点;f2即Dejong函数,可以看出Dejong

函数是一个多元单峰函数,只有1个的全局极小值点在(0,?,0);f3即Shubert函数,是一个多元多峰函数,该函数有较多局部极小点。另外,3个函数都是多峰值,都有可能出现早熟、收敛速度慢等问题。其中表1是3个测试函数的特点比较。