《2022年遗传算法搜索最优解 .pdf》由会员分享,可在线阅读,更多相关《2022年遗传算法搜索最优解 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验一:基于遗传算法的函数优化1、实验目的1) 掌握 Matlab 子函数的编写与调用。2) 理解基本遗传算法的原理, 并利用程序实现利用遗传算法优化非线性函数的解。2、实验内容与实验要求1) 掌握基本遗传算法方法原理。2) 掌握 matlab子函数的编写方法及调用方法。3) 根据基本遗传算法方法原理,编写Matlab 程序,优化非线性函数的解。4) 设 f(x) = -x2 - 4x + 1 ,求 max f(x), x-2, 2,解的精度保留二位小数3、遗传算法原理遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优
2、的个体,利用遗传算子 (选择、交叉和变异 )对这些个体进行组合, 产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 4、主程序及子函数:主函数 : clearclcmy_scale=80; %种群规模gen_len=22; %基因长度M=100; %迭代次数pc=0.7; %交叉概率pm=0.05; %变异概率new_scale=produscale(my_scale,g
3、en_len); %产生初始种群fitfit=; fittimer=; best_f1=;best_x1=; for i=1:M my_f=cal_my_f(new_scale); %计算函数值 my_fit=cal_my_fit(my_f); %计算适应度值 next_scale=my_sellect(new_scale,my_fit); %采用赌轮盘法选择 cross_scale=my_cross(next_scale,pc); %按概率交叉 mut_scale=my_mutat(cross_scale,pm); %按概率变异 %寻找每一代中的最优适应度值所对应的个体 best_fit=m
4、y_fit(1); sx,sy=size(new_scale);for j=2:length(my_fit)if best_fitmy_fit(j) best_fit=my_fit(j); best_f=my_f(j); best_x=my2to10(new_scale(j,:); best_x=-2+best_x.*4./(2sy-1);endend new_scale=mut_scale; fitfit=fitfit,best_fit; best_f1=best_f1,best_f; best_x1=best_x1,best_x; fittimer=fittimer,i;end best_
5、fit,loca=max(fitfit); best_f=best_f1(loca); best_x=best_x1(loca); disp(best_fit,best_f,best_x=)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - disp(best_fit,best_f,best_x)subplot(2,2,1) plot(fittimer,fitfit) xlabel( 迭代次数 (1)-wxb); ylabel( 适
6、应度函数 ) grid on%子函数:产生初始种群function initscale=produscale(my_scale,gen_len) initscale=round(rand(my_scale,gen_len);end%子函数:计算函数值function my_f=cal_my_f(new_scale) mychange=my2to10(new_scale); sx,sy=size(new_scale); change_x=-2+mychange.*4./(2sy-1); my_f=-change_x.2-4.*change_x+1;end%子函数:计算适应度值function m
7、y_fit=cal_my_fit(my_f) f_min=5;for i=1:length(my_f)if my_f(i)+f_min=0 my_fit(i)=0;else my_fit(i)=my_f(i)+f_min;endend my_fit=my_fit;end%子函数:采用赌轮盘法选择function next_scale=my_sellect(new_scale,my_fit) sum_of_f=sum(my_fit); accum=my_fit/sum_of_f; accum=cumsum(accum); sx,sy=size(new_scale); j=1;while j=a
8、next_scale(j,:)=new_scale(1,:);elseif accum(i)=a next_scale(j,:)=new_scale(i+1,:); j=j+1;endendendendend%子函数:按概率交叉function cross_scale=my_cross(new_scale,pc) sx,sy=size(new_scale); cross_scale=new_scale;for i=1:2:sx-1if randpc a=round(rand*sy); cross_scale(i,:)=new_scale(i,1:a),new_scale(i+1,a+1:end
9、);cross_scale(i+1,:)=new_scale(i+1,1:a),new_scale(i,a+1:end);endend%子函数:按概率变异function mut_scale=my_mutat(new_scale,pm) sx,sy=size(new_scale); mut_scale=new_scale;for i=1:sxif randpm a=round(rand*sy);if a=0 a=1;endif mut_scale(i,a)=0 mut_scale(i,a)=1;else mut_scale(i,a)=0;endendend 名师资料总结 - - -精品资料欢迎
10、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - %子函数: 2进制转 10 进制function mychange=my2to10(new_scale) sx,sy=size(new_scale); new_scale1=new_scale;for i=1:sy new_scale1(:,i)=2.(sy-i).*new_scale(:,i);end mychange=sum(new_scale1,2);end5、运行结果及分析连续运行程序 4 次得到的运行结果如
11、下:第一次: (best_fit,best_f,best_x分别代表每一代中最优个体的适应度值,函数值,以及所对应的自变量x 的值)best_fit,best_f,best_x= 10.0000 5.0000 -1.9996 第二次:best_fit,best_f,best_x= 10.0000 5.0000 -1.9985 第三次:best_fit,best_f,best_x= 10.0000 5.0000 -1.9969 第四次best_fit,best_f,best_x= 9.9999 4.9999 -1.9916 对应的迭代次数与适应度函数图如下:名师资料总结 - - -精品资料欢迎下
12、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 0501009.979.989.9910迭 代 次 数 (1)-wxb适应度函数0501009.989.9859.999.99510迭 代 次 数 (2)-wxb适应度函数0501009.979.989.9910迭 代 次 数 (3)-wxb适应度函数0501009.99.9510迭 代 次 数 (4)-wxb适应度函数由连续四次的运行结果可以看出:(1) 基本上每次运行结果都能够找到最有的解,即当 x 取-2 时,函
13、数最大值为5,说明此算法的稳定性比较高,可靠性好;(2) 达到最大值的精度也比较的高,前三次为5,第四次为 4.9999。(3) 从迭代次数与适应度函数值的图像中分析,可以得到并不是迭代次数越多,所对应的适应度值最大, 而是在迭代的 100次里面中间的某一次或者某几次适应度值最大。 这是因为我们在选择的时候, 采用赌轮盘的放来来选择,而此方法是以概率来选择, 因此存在将相对较差的个体选择到的可能性,再加上交叉和变异也是不定向的,从而使得每代中最有个体的出现差异。(4) 影响结果的因素:(a)迭代次数;(b)编码长度; (c)种群规模;(d)变异和交叉的概率。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -