ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:2.25MB ,
资源ID:6141129      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6141129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(遗传算法及其改进措施.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

遗传算法及其改进措施.docx

1、遗传算法及其改进措施优化算法大作业一、题目本文利用遗传算法,依次完成下面三个目标函数的寻优:1Generalized Rosen brocks valley Function2 Generalized Rastrigins Function3 Schaffers Function二、本文思路遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法,本文利用遗传算法分别对上述三种函数进行全局寻优,具体思路如下:1. 编码与解码1) 编码:假设某一参数的取值范围是umin, umax,我们用长度为l的二进制编码符号串来表示该参数,则它总共能够产生2l 种不同的编码,编码

2、的长度越长,对应的精度越高。 第一题变量的取值范围是-2.048,2.048,本文采取十位数的编码,那么精度为: 第二题变量的取值范围是-5.12,5.12,本文采取的是十二位数的编码,那么精度为: 第三题变量的取值范围是-4,4,本文采取的是十三位数的编码,那么精度为:2) 解码:假设某一个个体的编码是,那么对应的解码公式为:2. 个体适应度评价1) 当优化目标是求函数最大值,并且目标函数总取正值时,可以直接设定个体的适应度F(X)就等于相应的目标函数值f(X),即:其中是函数最小值估计。2) 对于求目标函数最小值的优化问题,理论上只需简单地对其增加一个负号就可将其转化为求目标函数最大值的优

3、化问题,即其中是函数的最大值估计。3. 复制、交叉、变异1) 比例算子:个体被选中并遗传到下一代的概率与个体的适应度成正比,本文采取的的赌轮盘选择法选,该方法较容易实现,易于编程。2) 交叉算子:交叉是遗传算法产生新个体的主要手段,通过交叉子代的基因值不同于父代,从而可以出现适应度更高的个体,本文采用的是单点交叉算子。3) 变异算子:变异也是产生新个体的一种方法,对于遗传算法中二进制编码符号串所表示的个体,若需要进行变异操作的某一基因座上的原有基因值为0,则变异操作将基因值变为1,反之,若原有的基因值为1,则变异操作将其变为0。三、程序流程对于一个需要进行优化的实际问题,一般可按下述步骤构造遗

4、传算法:第一步:确定决策变量及各种约束条件,即确定出个体的表现型X和问题的解空间;第二步:建立优化模型,即确定出目标函数的类型及数学描述形式或量化方法;第三步:确定表示可行解的染色体编码方法,即确定出个体的基因型x及遗传算法的搜索空间;第四步:确定解码方法,即确定出由个体基因型x到个体表现型X的对应关系或转换方法;第五步:确定个体适应度的量化评价方法,即确定出由目标函数值到个体适应度的转换规则;第六步:设计遗传算子,即确定选择运算、交叉运算、变异运算等遗传算子的具体操作方法。第七步:确定遗传算法的有关运行参数,即M,G,Pc,Pm等参数。具体程序流程图见下图所示:图1遗传算法流程图四、优化过程

5、1. 第一题图2 Rosen brock函数图像图3遗传算法迭代寻优过程程序运行结果如下:最优点函数取值2. 第二题图4:Rastrigin函数图像图5:遗传算法迭代寻优过程程序运行结果如下:最优点函数取值3. 第三题图6 Schaffer函数图像图7遗传算法迭代寻优过程程序运行结果如下:最优点函数取值由仿真结果可知,随着进化过程的进行,群体中适应度较低的一些个体被逐渐淘汰掉,而适应度较高的一些个体会越来越多,并且它们都集中在所求问题的最优点附近,从而搜索到问题的最优解。五、问题的发现与改进1. 问题一:局部最优解从第三题的函数图像中可以看出,该函数有无限多个局部极大值点,只有一个全局最优点,

6、此函数最导致峰周围有一圈脊,上面的取值均为0.990283。从上面的优化过程可以看出,当随机选定初始种群后,随着迭代次数的增加,种群最终都集中在了这一圈脊上,也就是寻优过程陷入了局部最优点,并没有找到函数的的最优点。对于遗传算法中的上述问题,我们采用的解决方案如下。解决方法1:等值线法初始种群的选取对函数能不能找到最优点有着重要的影响,本文通过分析函数的等值线缩小初始种群的随机产生范围,从而让种群朝着全局最优点进化。在Matlab下画出函数的等值线如下图:图8目标函数的等值线图从图中可以看出,以中心最优点为圆心,围绕着中心点分布着多条等值线,从中心的红色区域向外到蓝色区域,目标函数值先减小再增

7、加最后又减小,所以本文以中间红色区域到蓝色区域中选取合适的等值线截面,并在该面上随机产生初始种群,这样可以有效防止迭代陷入局部最优解。改进后的寻优结果:图9改进后的遗传算法寻优过程图6中的最终种群进化到了函数一圈“脊”上,但是这只是函数的局部最优点,而从图9可以清楚地看到,种群进化到最后都集中在了中心凸起点的附近,这也是函数的最大值点,可见改进后的遗传算法有效的解决了局部最优点的问题,顺利找到了函数的全局最优解。解决方法2:模拟退火算法模拟退火算法是模仿了自然界退火现象,利用了物理中固体物质的退火过程与一般问题的相似性,从某一初始温度开始,伴随着温度的不断下降,结合概率突跳特性在解空间中随机寻

8、找全局最优解,它能有效的克服寻优陷入局部最小值的优化方法。其具体算法原理本文不详述,只给出采用模拟退火算法的实现过程如下图所示:图10 模拟推过算法实现过程相关参数选择为:初始温度Temperature=30步长因子StepFactor=0.002容差Tolerance=1e-7马可夫链长度MarkovLength=1000衰减参数DecayScale=0.95程序运行结果为(程序见附录):最优点函数取值寻优过程如下:图11 模拟退火算法的寻优过程从上面的寻优结果可以看出,模拟退火算法解决了本例中遗传算法寻优陷入局部最优解的问题,最终找到了Schaffer Function函数的全局唯一最优解

9、。问题二:寻优速度基本的遗传算法中产生优良个体的主要手段是同过交叉重组,但这样并不能保证产生新个体的速度,即迭代寻优的速度很慢,考虑到为了保证较高的精度,本文的基因编码分别是十位、十二位与十三位,那么对于二元函数,染色体的长度就是二十、二十四与二十六,因此可以在交叉重组时,将较长的染色体分为若干段,并对每一小段进行两两配对交叉重组,这样相当于每个染色体在一次的迭代过程中参与了几次交叉重组,大大加快了新个体的产生速度。本文即将染色体分为了两段,进行交叉重组(程序见附录),加快了寻优速度。六程序附录1 遗传算法主程序%遗传算法主程序%clear %清除普通变量,不清除全局变量clfpopsize=

10、80; %种群大小chromlength=26; %字符串长度(个体染色体长度)pc=0.6;pm=0.001;% global Numv=2;pop=initpop(popsize,chromlength)for i=1:200 %200为迭代次数objvalue=calobjvalue(pop); %计算函数值fitvalue=calfitvalue(objvalue); %计算个体适应度avefitvalue(i)=sum(fitvalue)/popsize;newpop=selection(pop,fitvalue);% 选择newpop=crossover_multiv(newpop

11、,pc);newpop=mutation(newpop,pm); bestindividual,bestfit=best(pop,fitvalue); z(i)=max(bestfit) %个体适应度的最大值n(i)=i; x(i)=decodechrom(bestindividual,1,chromlength/2)*8/8191-4 %将二进制的数转换为十进制数然后归一化到0-10之间y(i)=decodechrom(bestindividual,(chromlength/2+1),chromlength/2)*8/8191-4pop=newpop;endfigure(1);i=1:1:2

12、00;hold on;plot(i,avefitvalue)plot(i,z)xlabel(迭代次数);ylabel(函数值);legend(种群平均适应度,种群最大适应度);figure(2);plot3(x,y,z,r+)hold onx1=-4:0.1:4;x2=-4:0.1:4;xx,yy=meshgrid(x1,x2);z1=xx.2+yy.2;z=0.5-(sin(sqrt(z1).2-0.5)./(1+0.001*(z1).2);mesh(xx,yy,z)grid on;2 种群初始化函数%初始化%function pop=initpop(popsize,chromlength)

13、pop=round(rand(popsize,chromlength);3计算个体适应度函数%计算个体的适应度function fitvalue=calfitvalue(objvalue) %这里的objvalue是一个列向量globalCmin; Cmin=0;% display(objvalue);px,py=size(objvalue); %这里px是种群大小,py=1 fori=1:px if objvalue(i)+Cmin0 %计算出的目标函数值小于0则适应度为0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=temp;end%

14、display(fitvalue);fitvalue=fitvalue; %将行向量转化为列向量4选择复制函数%选择复制%functionnewpop=selection(pop,fitvalue)totalfit=sum(fitvalue); %求所有适应度之和fitvalue=fitvalue/totalfit%单个个体被选择的概率fitvalue=cumsum(fitvalue) %累计概率px,py=size(pop);ms=sort(rand(px,1)fitin=1;newin=1;whilenewin=pxif (ms(newin)fitvalue(fitin)newpop(ne

15、win,:)=pop(fitin,:); newin=newin+1;elsefitin=fitin+1;endend5交叉重组函数%交叉重组%functionnewpop=crossover_multiv(pop,pc)px,py=size(pop); pop1=ones(px,py); pop2=pop;fori=1:2:px-1if(randpc)cpoint=round(rand*(py-1) % cpoint为交叉点 pop1(i,:)=pop2(i,1:cpoint) pop2(i+1,cpoint+1:py) pop1(i+1,:)=pop2(i+1,1:cpoint) pop2

16、(i,cpoint+1:py)else pop1(i,:)=pop2(i,1:py) %若不交叉则直接复制到下一代 pop1(i+1,:)=pop2(i+1,1:py)endendnewpop=pop1;6变异函数%变异函数%functionnewpop=mutation(pop,pm)px,py=size(pop);newpop=ones(size(pop);fori=1:pxif(randpm)mpoint=round(rand*py);ifmpointTolerance Temperature=DecayScale*TemperatureAcceptPoints=0.0; %在当前温度T

17、下迭代马尔科夫链长度的次数fori=0:1:MarkovLength %第一步:在此点附近随机选取下一点 p=0;while p=0;NextX=PreX+StepFactor*XMAX*(rand-0.5)NextY=PreY+StepFactor*YMAX*(rand-0.5) if p=(NextX= -XMAX &NextX= -YMAX &NextYObjectFunction(NextX,NextY)PreBestX=BestX;PreBestY=BestY; %先把上一个最优点保留下来BestX=NextX;BestY=NextY; %此为新的最优解end %第三步:进行Metr

18、oplis过程if(ObjectFunction(PreX,PreY)-ObjectFunction(NextX,NextY)0) %接收此点,即下一个迭代点以新接受的点开始PreX=NextX;PreY=NextY;AccpetPoints=AcceptPoints+1else changer=-1*(ObjectFunction(NextX,NextY)-ObjectFunction(PreX,PreY)/Temperature; %/还是./的问题rnd=rand; p1=exp(changer);double(p1);if p1rand %PreX=NextX;PreY=NextY;A

19、cceptPoints=AcceptPoints+1endendend k=k+1;x(k)=BestX;y(k)=BestY;z(k)=ObjectFunction(BestX,BestY);z(k)=-z(k)mm=abs( ObjectFunction( BestX,BestY)-ObjectFunction (PreBestX, PreBestY);enddisp(最小值在点:);BestXBestYdisp( 最小值为:);ObjectFunction(BestX, BestY)i=1:1:kplot(i,z,r) title(模拟退火寻优过程);xlabel(迭代次数);ylabel(寻优过程);hold onend

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1