萤火虫算法,matlab代码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
萤火虫算法,matlab代码.doc

%% 算法说明:荧火虫算法 clc; %清屏 clear all; %清除变量 format long; %确定精度 %% 各参数初始化开始 domx=[-5.12,5.12;-5.12,5.12]; % domx=[-2.048,2.048;-2.048,2.048]; %解空间 rho=0.4; %荧光素挥发因子 gamma=0.6; %适应度提取比例 beta=0.08; %邻域变化率 nt=5; %邻域阀值(邻域荧火虫数) s=0.03; %步长 lo=5; %荧光素浓度 rs=5.12; %感知半径 r0=5.12; % rs=2.048; %感知半径 % r0=2.048; %决策半径 %各参数初始化结束 iter_max=200; %最大迭代次数 %% 分配空间开始 m=size(domx,1); %函数空间维数 global n; n=50; %种群规模 address=zeros(n,m); %分配荧火虫地址空间 value=zeros(n,1); %分配适应度存放空间 li=zeros(n,1); %分配荧光素存放空间 rdi=zeros(n,1); %分配荧火虫决策半径存放空间 uu=zeros(1,iter_max); %% 荧火虫常量初始化开始 for i=1:m address(:,i)=(domx(i,1)+(domx(i,2)-domx(i,1))*rand(n,1)); %初始化地址 % address(i,:)=5*rands(n,1); %随机产生初萤火虫所在位置 end f=fun(address); x=-5.12:.1:5.12; % x=-2.048:.05:2.048; [x,y] = meshgrid(x); figure(1); plot3(address(:,1),address(:,2),f,k*) hold on; grid on; z=-(x.^2-10*cos(2*pi.*x)+10+y.^2-10*cos(2*pi.*y)+10); %Rastrigin函数 % z=-(x.^2+y.^2); %目标函数 J2 % z=-(20+x.^2-10*cos(2*pi.*x)+y.^2-10*cos(2*pi.*y)); %目标函数 J1 % z=-(-20*exp(-0.2*sqrt((x.^2+y.^2)/2))-exp((cos(2*pi*x)+cos(2*pi*y))/2)+20+exp(1)); %%目标函数 % z=-(0.5+sin(sqrt(x.^2 + y.^2).^2-0.5)./(1+0.001*(x.^2 + y.^2)).^2);%目标函数 J3 mesh(x,y,z) xlabel(x轴); ylabel(y轴); zlabel(z轴); title(萤火虫初始分布图); li(:,1)=lo; %荧光素初始值 rdi(:,1)=r0; %决策半径初始值 t=1; %迭代累计量 %荧火虫常量初始化结束 %% 迭代开始 while(t=iter_max) li=(1-rho)*li+ gamma * fun(address); %.更新荧光素值li %各荧火虫移动过程开始 for i=1:n Ord_number=[]; %存放荧火虫序号 for j=1:n if (norm(address(j,:)-address(i,:))rdi(i)) (li(i,1)li(j,1)) %决策半径内找更优点 Ord_number(numel(Ord_number)+1)=j; end end %计算Ord_number各元素被选择概率,确定j位置 if ~isempty(Ord_number) %先判断Ord_number个数不为空 Ord_num_

文档评论(0)

zhengshumian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档