利用遗传算法求函数的极小值.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用遗传算法求函数的极小值

1、利用遗传算法求出下面函数的极小值:z=2-exp[-(x2+y2)], x,y∈[-5,+5]对于此函数,求某一极值、或说最值时,由于x、y定义域与系数相同, x与y相对于z来说是地位等同的,因此可以转换成求该函数极值:;继而转换成了一种单变量函数。函数的实现:(1)ga_main脚本文件% GA main program% Edited by BianXuezi% n ? ---- 种群规模% ger ---- 迭代次数% pc ? ---- 交叉概率% pm ? ---- 变异概率% v ? ---- 初始种群(规模为n)% f ? ---- 目标函数值% fit ---- 适应度向量% vx ? ---- 最优适应度值向量% vmfit ---- 平均适应度值向量clear all;close all;clc;tic;n=20;ger=100;pc=0.70;pm=0.009;% 生成初始种群v=init_population(n,20); [N,L]=size(v);disp(sprintf(Number of generations:%d,ger));disp(sprintf(Population size:%d,N));disp(sprintf(Crossover probability:%.3f,pc));disp(sprintf(Mutation probability:%.3f,pm));% 待优化问题xmin=-5;ymin=-5;xmax=5;ymax=5;f=-2+exp(-x.^2-y.^2);%初始化sol=0.1;vmfit=[];it=1;vx=[];%C=[];% 计算适应度,并画出图形x=decode(v(:,1:10),xmin,xmax);y=decode(v(:,11:20),ymin,ymax);fit=eval(f);figure(1);[X,Y]=meshgrid(-5:0.1:5,-5:0.1:5);Z=-2+exp(-X.^2-Y.^2);mesh(X,Y,Z);grid on;hold on;plot3(x,y,fit,k*);title(染色体的初始位置);xlabel(x);ylabel(y);zlabel(f(x,y));% 开始进化while it=ger?? %Reproduction(Bi-classist Selection)?? vtemp=roulette(v,fit);?? %Crossover ? ?? v=crossover(vtemp,pc);?? %Mutation?? M=rand(N,L)=pm;?? %M(1,:)=zeros(1,L);?? v=v-2.*(v.*M)+M;?? %Results?? x=decode(v(:,1:10),xmin,xmax);?? y=decode(v(:,11:20),ymin,ymax);?? fit=eval(f);?? [sol,indb]=max(fit);?? v(1,:)=v(indb,:);?? media=mean(fit);?? vx=[vx sol];?? vmfit=[vmfit media];?? it=it+1;end%%%% 最后的结果disp(sprintf(\n)); ? %空一行% 显示最优解及最优值disp(sprintf(Maximum found[x,f(x)]:[%.4f,%.4f,%.4f],x(indb),y(indb),sol));% 图形显示最优结果figure(2);[X,Y]=meshgrid(-5:0.1:5,-5:0.1:5);Z=-2+exp(-X.^2-Y.^2);mesh(X,Y,Z);grid on;hold on;plot3(x,y,fit,k*);title(染色体的最终位置);xlabel(x);ylabel(y);zlabel(f(x,y));% 图形显示最优及平均函数值变化趋势figure(3);plot(vx);%title(最优,平均函数值变化趋势);xlabel(Generations);ylabel(f(x,y));hold on;plot(vmfit,r);hold off;runtime=toc(2)Crossover函数%Crossoverfunction v=crossover(vtemp,pc)[N,L]=size(vtemp);C(:,1)=rand(N,1)=pc;I=find(C(:,1)==1);I;j=1;for i=1:2:size(I)?? if i=size(I)?? ? ? break;?? end?? site=fix(1+L*rand(1));?? temp=vtemp(I(i,1),

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档