2022年遗传算法用于函数优化.docx

上传人:H****o 文档编号:57641895 上传时间:2022-11-05 格式:DOCX 页数:23 大小:539.23KB
返回 下载 相关 举报
2022年遗传算法用于函数优化.docx_第1页
第1页 / 共23页
2022年遗传算法用于函数优化.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《2022年遗传算法用于函数优化.docx》由会员分享,可在线阅读,更多相关《2022年遗传算法用于函数优化.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选学习资料 - - - - - - - - - 遗传算法用于函数优化求解一、试验目的本试验要求在把握遗传算法的基本思想、原理和算法流程的基础上, 能够针对指定的单变量优化目标函数, 设计相应的遗传算法优化程序, 并求得全局最优 解;二、试验要求针对目标函数y1x2 1 ,x0, 2,设计利用遗传算法进行优化求解的程序,绘制迭代过程中最优解的变化情形,并分别转变算法中的编码位数、种群规模、交叉和变异概率,分析这些变量对算法精度及收敛性的影响;三、试验步骤 1 、初始化种群, 确定种群规模 M=20,编码位数 n=5 和编码机制 二进制编 码 ;初始化种群: E = roundrandM,nix

2、;2i1*iy为第 i 位二进制代码;yy i每个编码对应的二进制数值:二进制数 y 转换为十进制数 x:xmaxx minyxmin;2n12、依据给定的目标函数,运算各个种群的适应度值;3、采纳轮盘挑选法对种群进行挑选复制;4、设定交叉概率为 0.9 ,进行遗传操作交叉 ;5、设定变异概率 0.05 ,进行遗传操作变异 ;6、产生下一代种群,与终止条件比较,不满意返回到步骤 2 直到满意条件 退出;算法的流程如图 7.1 所示;名师归纳总结 - - - - - - -第 1 页,共 13 页精选学习资料 - - - - - - - - - 开头初始化种群编码运算适应度函数挑选、复制交叉、变

3、异到达系统指标?YN迭代次数达上限?输出结果终止图 7.1 算法流程图四、试验结果及分析我们采纳遗传算法来寻求目标函数的最大值;初始化样本个数为 20 个,编码位数为 5 位,采纳二进制编码,交叉概率为0.9 ,变异概率为 0.05 ,最大迭代次数为 1000 次,初始样本随机挑选, 当父代与子代间适应度变化小于 0.001 时,到达系统指标; MATLAB模拟运行输出迭代种群的平均适应度变化、种群的最优解与最差解, 绘出图像见图 1,运算运行时间的平均值 见表 1,由表可知,平均运行时间约为 0.65 秒左右,速度较快;由图可知,前期平均适应度是不断上升的,到达肯定程度后即平均适应度在0.9

4、 以上后,就基本处于波动平稳状态;名师归纳总结 - - - - - - -第 2 页,共 13 页精选学习资料 - - - - - - - - - 通过对遗传算法的分析, 这是由于种群内的全部个体几乎都已经接近最优值,上升空间比较小,且由于有变异的可能性,所以平均适应度在后期处于波动状态;由图可发觉,每代的最大值都差不多,几乎都是1,但每代的最小值的变化就比较多了,但从趋势可以基本看出,最小值在逐步变大,向最大值靠拢;由于要找 的最优解是最大值, 所以在迭代过程中, 最小值剔除几率最大, 它的基因难以遗 传下来,因此最小值会逐步变大;图 1 表 1次数第一次其次次第三次第四次第五次平均时间 s

5、最大值10.99619610.80860.9961最小值0.85940.85940.3398转变初始种群的规模, 其他参数不变, 多次运行程序, 观看初始种群规模大小对此算法的影响;图2 为种群规模为 10 时,种群适应度的变化及每代最大值和最小值, 由图可看到, 平均适应度大的趋势是上升的,虽然过程中有些由于变异引起的曲折, 每代的最大值基本相像, 但最小值是近似地随着平均适应度的曲线变化的,可以估计,最小值影响了平均适应度;表2 是种群规模为 10 时,其名师归纳总结 - - - - - - -第 3 页,共 13 页精选学习资料 - - - - - - - - - 每次运行时间和得到的最

6、终最大值最小值,由表可见,运行平均时间为 0.6s 左右,最终获得的最大值和最小值差距微小,且获得最大值与实际目标函数的最大值差距较大; 图 3 与表 3 为种群规模为 200 时的情形, 从图中可发觉, 平均适应 度上升较缓,波动较小,且每代最大值最小值差距较大,又由表 3 可看出,其运行时间为 0.75s 左右,每次运行最终最大值几乎都为1,最小值接近 0,与目标函数的最大值基本相同; 比照种群规模分别为 10 图 2,表 2 ,20图 1,表 1,200图 3,表 3,可以发觉,种群规模越大,平均适应度的波动越小,上升坡度越平缓, 且最终获得的最大值和最小值的差异越大,最大值越接近目标函

7、数的实际最大值; 由此可分析出, 当种群规模小时, 单个个体的基因对整个群体的适 应度影响比较大, 因此只有当整个群体中适应度最差的个体也到达一个较高适应 度后,才到达系统标准 ,退出循环, 而这样,最终的最小值就会接近最大值,种群内部每个个体的差异很小, 最大值很难到达目标函数的最大值;而当种群规 模大时,单个个体的基因对整个群体的适应度就没有那么大的影响,只要大多数 个体的基因到达较高适应度, 就能够满意系统标准, 退出循环, 因此每次迭代的最高适应度的个体与最低适应度的个体几乎可以共存,最终获得的最大值几乎就是目标函数的最大值,最小值也接近目标函数的小的值;图 2名师归纳总结 - - -

8、 - - - -第 4 页,共 13 页精选学习资料 - - - - - - - - - 表 2次数 M=10 第一次其次次第三次第四次第五次平均时间 s最大值最小值图 3表 3次数M=200 第一次其次次第三次第四次第五次平均时间 s最大值111111最小值20,降低交叉的概率为00初始种群的规模为0.4 ,其他参数不变, 多次运行程序,观看结果见图 4,表 4;比照见图 1,表 1,发觉种群平均适应度的变化曲线没有太大差异, 都是波动上升的,所用时间差异也不大, 都为 0.64s 左右,最终获得的最大值也差异不大, 唯独差异较大的是最终获得的最小值,交叉概率低的最小值大于交叉概率高的最小值

9、;这是由于子代是由父代中适应度高的个体进行交叉变异而来,变异概率极低 ,可忽视,当交叉概率低时,子代个体基 本是由父代中适应度高的个体 即目标函数值大的个体 复制粘贴而来, 所以最名师归纳总结 - - - - - - -第 5 页,共 13 页精选学习资料 - - - - - - - - - 终获得的最小值比较大, 而交叉概率高时, 子代个体多是由父代优秀个体交叉变换而来,可能会使某些子代适应度略微降低,率低的时候,最终获得的最小值比较小;图 4 表 4某些又略微上升, 所以相比交叉概次数第一次其次次第三次第四次第五次平均时间 s最大值0.85940.93751最小值初始种群的规模为20,交叉

10、的概率为 0.9 ,变异概率增加至 0.5 ,其他参数不变,多次运行程序,观看结果见图 5,表 5;由图 5 发觉,平均适应度始终处于在 0.7 和 0.9 之间上下猛烈波动的情形, 没有不断上升的趋势, 说明变异几率太大,导致种群无法收敛于一个稳固的最正确状态,由表 5 可知,转变变异概率对运行时间, 最终能到达的最大值影响不大,但影响了最小值, 由于变异的概率高,所以种群不断地有适应度极低的变异个体显现,所以最终的最小值较小,但也导致了种群无法收敛的情形;收敛到最优解邻近;由此可知, 变异概率不能太大, 不然种群无法名师归纳总结 - - - - - - -第 6 页,共 13 页精选学习资

11、料 - - - - - - - - - 图 5 表 5次数第一次其次次第三次第四次第五次平均时间 s最大值961111最小值0.121100.3398初始种群的规模为 20,交叉的概率为 0.9 ,变异概率为 0.05 ,转变编码位数 分别为 8位、5位、3位,其他参数不变, 多次运行程序, 观看结果 见图 6,表6,图7,表 7;图 6及表6是编码位数为 3位时的情形,图 1及表 1的编码位数为 5位,图7及表 7是编码位数为 8位时的情形;由图 6、图 1、图7的平均适应度比照发觉,虽然适应度曲线基本是上升趋势,但编码位数为 3时,波动较大, 而编码位数为 5和8时,适应度曲线相像,波动都

12、较小;比照每代的最大值最小值发觉,最小值对波动的影响都比较大;由表6、表 1、表 7发觉,运行的平均时间都差不多,都是0.6s 多,每次运行最终获得的最大值也差不多,但最小值就差异较大; 当编码位数较少时,最小值较小,编码位数较多时,最小值较大;这是由于当编码位数少时,目标函数 y=1-x-12的x取值就比较有限, 比方编码位数为 3时,x最多只能在 0到2之间匀称取 8个数,而当编码位数为 8时,能最多取 256个数,取的数越名师归纳总结 - - - - - - -第 7 页,共 13 页精选学习资料 - - - - - - - - - 多,个体与个体间的最小差异就越小,因此编码位数多时,

13、平均适应度的波动会比较小,且最终到达的整体平均适应度相对较高,最终最小值也比较大; 而编码位数少时正好相反;但比照编码位数分别为5和8的情形,我们发觉编码位数也不是越多越好, 它们最终到达的最大值基本相像,适应度曲线也相像, 由此可知道,编码位数到达肯定程度后不会再对平均适应度造成很大影响,而编码位数少时,对我们来说,复杂程度也比较低,所以编码位数挑选适中较好;图 6表 6次数第一次其次次第三次第四次第五次平均时间 s名师归纳总结 最大值1111第 8 页,共 13 页最小值00 .4375- - - - - - -精选学习资料 - - - - - - - - - 图 7 表 7次数第一次其次

14、次第三次第四次第五次平均时间 s4130.84120.8350352最大值947最小值0.91264通过试验比照分析发觉, 种群规模是影响适应度及最终获得的最优解的一个 重要因素, 当种群规模大时, 适应度曲线的上升程度比较平缓,且获得的最优值 更接近实际的最优解; 另外,变异概率不能过大, 否就适应度曲线没有上升的趋 势,始终处于波动状态,种群无法收敛于最优解邻近;编码位数不宜过少,不然 适应度曲线波动较大, 不那么简单收敛, 最终到达的整体适应度较低, 编码位数 也不应过多,适中最好;五、MATLAB 编程代码 function genetic1 %遗传算法 %目标函数 y=1-x-12;

15、 名师归纳总结 M=20; %种群规模第 9 页,共 13 页编码位数%n=5; %编码位数n=8; %- - - - - - -精选学习资料 - - - - - - - - - p_crossover=0.9; % 交叉概率p_mutation=0.05; % 变异概率parent_adptability=; % 父代种群适应度children_adptability=; % 子代种群适应度variance_adptability=0; % 适应度变化adptability=; % 每次迭代适应度times=1000; % 最大迭代次数time=0; % 实际迭代次数y_sum=; y_mi

16、n=; y_max=; %y_y=; E = roundrandM,n;% 初始化种群x=; % 存相应的十进制%-求适应度 - for j=1:M % 二进制转十进制 e=0; for i=1:n e=Ej,i+e*2; end %e=e/16; % 使x 在【 0 ,2】之间 e=e/128; % 使x 在【 0 ,2】之间 x=x;e; end y=1-x-1.2; % 目标函数%y_y=y_y,y; ysum=0; for j=1:M % 求和 ysum=yj,1+ysum; end parent_adptability=y./ysum;% 父代的适应度parent_ave=ysum/

17、M; % 父代的目标函数平均值adptability=adptability;parent_ave; y_max=y_max;maxy; y_min=y_min;miny; %-end- %-遗传算法 - for k=1:times %-挑选 - y_E = randM,1; % 随机数 M个 y_distributeProbability=; for j=1:M % 概率分区【 0 ,1 】 y_probability=0; for i=1:j 名师归纳总结 - - - - - - -第 10 页,共 13 页精选学习资料 - - - - - - - - - y_probability=pa

18、rent_adptabilityi,1+ y_probability; end y_distributeProbability=y_distributeProbability;y_probability; end %y_distributeProbability E_new=; for j=1:M % 挑选个体 for i=1:M if y_Ej,1p_crossover % 交叉 E_new_new=E_new_new;E_newj,:;E_newj+M/2,:; continue; else A=E_newj,:; E_newj+M/2,:; E_newj,1:2=E_newj+M/2,1

19、:2; E_newj+M/2,1:2=A1,1:2; E_newj,:; E_newj+M/2,:; E_new_new=E_new_new;E_newj,:;E_newj+M/2,:; end ifb1p_mutation % 变异 ; else b1=floorb1*k+1; ifE_new_newj,b1=0 E_new_newj,b1=1; else E_new_newj,b1=0; end end 名师归纳总结 - - - - - - -第 11 页,共 13 页精选学习资料 - - - - - - - - - ifb2p_mutation ; else b2=floorb2*k+1

20、; ifE_new_newj+1,b2=0 E_new_newj+1,b2=1; else E_new_newj+1,b2=0; end end end %-求适应度 - x=; for j=1:M % 二进制转十进制 e=0; for i=1:n e=E_new_newj,i+e*2; end %e=e/16; e=e/128; % 使x 在【 0 ,2 】之间 x=x;e; end y=1-x-1.2; ysum=0; for j=1:M % 求和 ysum=yj,1+ysum; end children_adptability=y./ysum;% 子代适应度 children_ave=y

21、sum/M; % 子代目标函数平均值 adptability=adptability;children_ave; y_max=y_max;maxy; y_min=y_min;miny; %-退出条件及下次迭代预备- variance_adptability=abschildren_ave-parent_ave;% 两代的变化率 if variance_adptability0.001 % 退出条件 break; end parent_adptability=children_adptability; parent_ave=children_ave; time=time+1; E=E_new_n

22、ew; %plotx,y,c.;% 画分类结果图end 名师归纳总结 - - - - - - -第 12 页,共 13 页精选学习资料 - - - - - - - - - time1=1:time+2; subplot2,1,1 plottime1,adptability;% 画平均适应度折线图 grid on; title平均适应度折线图; 迭代次数 ; xlabelylabel平均适应度 ; x=1:M; subplot2,1,2 plottime1,y_max,r*,time1,y_min,b* legend最大值 ,最小值 ; title每代最大值最小值散点图代数 ; xlabelylabely=1-x-12; maxy miny名师归纳总结 - - - - - - -第 13 页,共 13 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁