收藏 分享(赏)

【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc

上传人:dreamzhangning 文档编号:2961635 上传时间:2018-09-30 格式:DOC 页数:40 大小:383KB
下载 相关 举报
【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc_第1页
第1页 / 共40页
【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc_第2页
第2页 / 共40页
【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc_第3页
第3页 / 共40页
【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc_第4页
第4页 / 共40页
【毕业论文】遗传算法在实际数值函数优化问题中的应用研究.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、核准通过,归档资料。未经允许,请勿外传!遗传算法求中文摘要:本文首先介绍遗传算法的历史背景,基本思想,对遗传算法的常见的编码解码方法进行了深入的阐述,并对算子选择方法进行深入分析和对比,在此基础上把遗传算法应用于求解复杂函数的极值计算。最后在 MATLAB 语言环境下编写程序,对求解函数的最大值进行了仿真,并对调试的结果进行了分析,得出了部分结论。关键词:遗传算法 最优解 算子选择 复杂函数9JWKffwvG#tYM*Jg 均匀交叉示意图11001011 + 11011101 = 11011111 图(3-3)3.4.3 变异算子遗传算法中所谓变异运算是指个体染色体编码串中某些基因座上的基因值

2、用该基因座的其他等位基因替换,从而形成新个体。位点转换算子(Bit Inversion):选择一些位点然后将这些地方的 0,1 互换;图(3-4)在遗传算法中使用变异算子的目的:1 改善遗传算法局部搜索能力2 维持群体多样性,防止出现早熟现象变异算子的常用方法:a、基本位变异:指对个体基因串以变异概率随机指定某一位或几位基因座上的基因值做变异运算b、均匀变异:指分别用符合某一范围内随机数,以某一较小概率来替换个体编码串中各个基因座上的原有基因值。c、 边界变异:边界变异是上述均匀变异操作的一个变形遗传算法。在进行边界变异操作时,随机的取基因座的 2 个对应边界基因值之一去替换原来的基因值。d、

3、非均匀变异:对每个基因座都以相同的概率进行变异运算之后相当于整个解向量在解空间中,作了一个轻微的变动。3.5 遗传算法的其他运行参数(1) 编码串长度 L:使用二进制来表示个体时,编码串长度 L 的选取与问题所要求的求解精度有关。(2) 群体大小 M:表示群体中所含个体的数量。M 取值越小可提运算速度但降低群体多样性。容易引起遗传算法的早熟现象,而当 M 取值较大时降低了遗传算法的运行效率。一般建议范围 20-100。(3) 交叉概率 Pc。交叉操作是遗传算法中产生新个体的主要方法,一般建议范围是0.4-0.99。随着遗传算法在线性能的提高可以增大交叉概率的取值。(4) 变异概率 Pm。一般建

4、议范围是 0.00010.1,随着遗传算法在线性能的下降,可以减小变异概率的取值(5) 终止带宽 T 它表示遗传算法运行到指定的进化代数之后就停止运行并将最佳个体作为所求问题的最优解输出。建议范围是 1001000(6) 代沟 G:表示每一代群体中被替换掉的个体在全部个体中所占的百分比。第四章:用遗传算法求解复杂函数极值问题本课题采用遗传算法求解函数最大值问题,应用常规的二进度编码,利用赌轮算法选择最忧群体,进行交叉变异等遗传操作,最终求出所求函数最大值即最忧解,最后在MATLAB 语言环境下进行调试,更改相关参数,得出几组最忧解图象并进行对比分析。所求问题为 f(x)=x+9*sin(4x)

5、+8*cos(3x)的最大值,其中定义域为 50F(X)= 0, if f(x)+Cmin0 公式(4-3)式中,Cmin 为一个适当地相对比较小的数,它可用下面几种方法之一来选取。(一)预先指定一个较小的数。(二)进化到当前代为止的最小目标函数值。(三)当前代或最近几代群体中的最小目标函数值。方法二:对于求目标函数最小值的优化问题,变换方法为:Cmax-f (X) , if f (X) 2 (个体表现型)00000000 (个体基因型) - 0 (个体表现型)111111111+00000000=11011111 (产生的新个体)种群的各个个体两两配对后以交叉概率 Pc=0.8 随机指定各个

6、基因位进行交叉运算即生成新个体种群。假如邻接基因座之间的关系能够提供比较好的个体性状和较高的个体适应的话则这个单点交叉操作破坏这种个体性状和降低个体适应度的可能性最小变异运算使用第三章的基本位变异算子确定遗根据生物遗传中基因变异的原理,以变异概率 Pm 对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把 1 变为 0,把 0 变为 1。变异概率 Pm 与生物变异极小的情况一致,所以,Pm 的取值较小,一般取 0.01-0.2。经交叉运算得到的新个体基因串种群以变异概率 Pm=0.01 随机指定有一位或几位基因座上的基因值进行变异操作.11011111-11101011 (生

7、成的新个体)以变异概率分别对每个或者几个基因位做变异操作就可以生成新的种群个体。单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。遗传算法的运行参数群体大小:M (20-100)终止代数:T (100-500)交叉概率:Pc (0.4-0.99)变异概率:Pm (0.0001-0.1)4.2 算例验证【问题】求 f(x)= 11*sin(6*x)+7*cos(5*x)的最大值,其中 0=x=2*pi 【分析】选择二进制编码,种群中的个体数目为 20,二

8、进制编码长度为 10,交叉概率为0.8,变异概率为 0.01X(个体表现型值):1.2805 1.2708 1.261 1.261 1.2805 1.3587 1.3392 1.261 1.3685 1.261 1.261 1.1926 1.1632 1.3587 2.4145 2.3754 1.2512 1.3294 1.2317 1.2121Y(目标函数值):17.79 17.694 17.545 17.545 17.79 16.621 17.232 17.545 16.239 17.545 17.545 15.067 13.306 16.621 16.497 16.328 17.343

9、17.459 16.783 16.021FINAL(最优解)= 16.0208由图可见,遗传代数较小时,交叉概率较大时图象局部最优解分散,全局最优解缓慢收敛。【分析】选择二进制编码,种群中的个体数目为 20,二进制编码长度为 10,交叉概率为0.6,变异概率为 0.04X(个体表现型值):1.3099 1.3099 1.3099 1.3587 1.2805 1.2805 2.3851 2.3851 2.3558 1.2805 1.2805 1.2805 1.3196 1.3001 1.3392 1.3392 1.2805 1.2708 1.3099 1.2414Y(目标函数值):17.753

10、17.753 17.753 16.621 17.79 17.79 16.446 16.446 15.94 17.79 17.79 17.79 17.633 17.82 17.232 17.232 17.79 17.694 17.753 17.089FINAL(最优解)= 17.0886由图可见,当交叉概率变小变异概率变大,局部最忧解减少,全局最优解明显。【分析】选择二进制编码,种群中的个体数目为 50,二进制编码长度为 10,交叉概率为0.5,变异概率为 0.08X(个体表现型值):1.2805 1.2805 1.2805 1.3099 1.3099 1.3099 1.3099 1.3099

11、1.3294 1.261 1.3001 1.3099 1.3099 1.3099 1.2708 1.2708 1.3099 1.2708 1.2903 1.2512Y(目标函数值):17.79 17.79 17.79 17.753 17.753 17.753 17.753 17.753 17.459 17.545 17.82 17.753 17.753 17.753 17.694 17.694 17.753 17.694 17.832 17.343FINAL(最优解)= 17.3431由图可见,遗传代数增加,变异概率增加,全局最忧解收敛性最优。程序调试总结:(1) 群体大小 M 较小时可以提高

12、遗传算法的运行速度,但是降低了群体的多样性有可能引起算法的早熟现象,当 M 较大时使得运行效率降低,一般建议范围为 (20100)最佳。(2) 交叉操作是产生新个体的主要方法一般应取值较大,但太大会破坏群体的优良模型,对进化产生不利影响。取值太小产生新个体速度又较慢,一般建议范围(0.40.99)(3) 变异概率 Pm 较大时虽能产生比较多的新个体,但有可能破坏掉较好的模型使得遗传算法的性能近似于随机搜索算法性能,Pm 太小变异操作产生新个体和抑制早熟的能力较差,最佳范围(0.00010.1)第五章 结论本文首先介绍遗传算法历史发展基本原理方法对遗传算法的编码,解码方法进行深入分析,从而确定了

13、用二进制编码方法来求解复杂函数优化问题,通过选泽,交叉,变异等遗传操作,最后用 MATLAB 语言进行调试,改变遗传算法相关参数求出函数最优解并进行对比分析。得出遗传算法不仅可求解简单函数最值问题,而且可以优化许多复杂系统函数问题,它提供了一种系统优化函数的通用框架,它不依赖于问题的具体领域,对问题的种类具有很强的鲁棒性,所以广泛应用于很多科学领域。参考文献1遗传算法原理及应用/周明,孙树栋编著 北京国防工业出版社,1999。62MATLAB 语言/张陪强 主编 合肥中国科学技术出版社 1995 年 11月3遗传算法的基本理论与应用/李敏强 寇纪淞 科学出版社 2003.34MATLAB 语言

14、及实践教程/肖燕彩 清华大学出版社 2004 年 5月 附 录% f(x)=11*sin(6x)+7*cos(5x) x0,2*pi% 2.8 主程序%遗传算法主程序clearclfpopsize=20; %设置初始参数,群体大小chromlength=8; %字符串长度(个体长度),染色体长度pc=0.8; %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可用表达式表示,或从写一个%交叉概率函数,例如用神经网络训练得到的值作为交叉概率pm=0.01; %设置变异概率,同理也可设置为变化的pop=initpop(popsize,chromlength); %运行初始化函数,随机产生

15、初始群体for i=1:20%20 为迭代次数objvalue=calobjvalue(pop);%计算目标函数fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度newpop=selection(pop,fitvalue); %复制newpop=crossover(pop,pc); %交叉newpop=mutation(pop,pc);%变异bestindividual,bestfit=best(pop,fitvalue);%求出群体中适应值最大的个体及其适应值y(i)=max(bestfit);n(i)=i;pop5=bestindividual;x

16、(i)=decodechrom(pop5,1,chromlength)*10/1023;pop=newpop;endy(i)fplot(11*sin(6*x)+7*cos(5*x),0 2*pi)grid onhold onplot(x,y,r*)hold off% 2.1 初始化( 编码)% initpop.m 函数的功能是实现群体的初始化,popsize 表示群体的大小,chromlength 表示染色体的长度(二值数的长度),% 长度大小取决于变量的二进制编码的长度(在本例中取 8 位)。%遗传算法子程序%初始化function pop=initpop(popsize,chromleng

17、th) pop=round(rand(popsize,chromlength); % rand 随机产生每个单元为 0,1 行数为popsize,列数为 chromlength 的矩阵,%roud 对矩阵的每个单元进行圆整。这样产生的初始种群% 2.2 计算目标函数值% 2.2.1 将二进制数转化为十进制数(1)%遗传算法子程序%产生 2n 2(n-1) . 1 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop)px,py=size(pop); %求 pop 行和例数for i=1:pypop1(:,i)=2.(py-1).*pop(:,i); %pop 的每一个行向量(二进制表示), for 循环语句将每个二进制行向量按位置py=py-1; % 乘上权重 end pop2=sum(pop1,2); %求 pop1 的每行之和,即得到每行二进制表示变为十进制表示值,实现二进制到十进制的转变% 2.2.2 将二进制编码转化为十进制数(2)%函数的功能是将染色体(或二进制编码)转换为十进制,参数 spoint 表示待解码的二进制

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报