萤火虫算法-matlab代码.docx

上传人:rrsccc 文档编号:10350562 上传时间:2021-05-10 格式:DOCX 页数:9 大小:72.98KB
返回 下载 相关 举报
萤火虫算法-matlab代码.docx_第1页
第1页 / 共9页
萤火虫算法-matlab代码.docx_第2页
第2页 / 共9页
萤火虫算法-matlab代码.docx_第3页
第3页 / 共9页
萤火虫算法-matlab代码.docx_第4页
第4页 / 共9页
萤火虫算法-matlab代码.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《萤火虫算法-matlab代码.docx》由会员分享,可在线阅读,更多相关《萤火虫算法-matlab代码.docx(9页珍藏版)》请在三一文库上搜索。

1、。% 算法说明:荧火虫算法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_ma

2、x=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:maddress(:,i)=(domx(i,1)+(domx(i,2)-domx(i,1)*rand(n,1); %初始化地址%address(

3、i,:)=5*rands(n,1);% 随机产生初萤火虫所在位置endf=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-1

4、0*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);%目标函数J3mesh(x,y,z)xlabel(x轴 );ylabel(y轴);zlabel(z轴);title( 萤火虫初始分布图);li(:,1)=lo;% 荧光素初始值rdi(:,1)=r0;% 决策半径初始值t=1;% 迭代累计量% 荧火虫常量初始化结束

5、% 迭代开始while(t=iter_max)-可编辑修改 -。li=(1-rho)*li+ gamma * fun(address);%.更新荧光素值li% 各荧火虫移动过程开始for i=1:nOrd_number=;% 存放荧火虫序号for j=1:nif (norm(address(j,:)-address(i,:)rdi(i) & (li(i,1)li(j,1) % 决策半径内找更优点Ord_number(numel(Ord_number)+1)=j;endend% 计算 Ord_number各元素被选择概率,确定j 位置if isempty(Ord_number)% 先判断 Ord

6、_number个数不为空Ord_num_li=li(Ord_number,1);% 选出 Ord_number荧光素Sum_Ord_li=sum(Ord_num_li);%Ord_number荧光素和Mol=Ord_num_li-li(i,1);% 分子 (lj-li)Den=Sum_Ord_li-li(i,1);% 分母Pij=Mol./Den;% 计算各元素被选择概率Pij=cumsum(Pij);% 累计Pij=Pij./Pij(end);% 归一化-可编辑修改 -。Pos=find(randPij);% 确定位置j=Ord_number(Pos(1);% 确定j 的位置% 荧火虫 i

7、向位置 j 移动address(i,:)=address(i,:)+s*(address(j,:)-address(i,:)/norm(address(j,:)-address(i,:);address(i,:)=range1(address(i,:),domx);%限制范围end% 更新决策半径rdi(i)=rdi(i)+beta*(nt-length(Ord_number);rdi(i)=min(rs,max(0,rdi(i);uu(t)=-max(fun(address);endt=t+1;% iter_max迭代结束g=;g=fun(address);x=-5.12:.1:5.12;%

8、 x=-2.048:.05:2.048; x,y = meshgrid(x); figure(2);-可编辑修改 -。plot3(address(:,1),address(:,2),g,k*);hold 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(

9、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);%目标函数J3grid on;mesh(x,y,z);title( 萤火虫运动轨迹);xlabel(x轴 );ylabel(y轴);zlabel(z轴);hold off;endfigure(name,收敛曲线 );plot(uu)title( 萤火虫最优值曲线终止次数 num2str(iter_max);-可编辑修改 -。xlabel( 迭代次数 );ylabel( 最优值 );% 输出最优结果value=fun(addre

10、ss);disp( 最优值为: )num=find(value=max(value);%最大值序号MaxValue=-max(value)disp( 最优解为: )BestAddress = address(num,:)% 目标函数function y = fun(x)% y=x(:,1).2+x(:,2).2;% y=0.5+sin(sqrt(x(:,1).2 + x(:,2).2).2-0.5)./(1+0.001*(x(:,1).2 + x(:,2).2).2;%目标函数J3% y=20+x(:,1).2-10*cos(2*pi*x(:,1)+x(:,2).2-10*cos(2*pi*x(:,2); %目标函数J1% y=-20*exp(-0.2*sqrt(x(:,1).2+x(:,2).2)/2).% -exp(cos(2*pi*x(:,1)+cos(2*pi*x(:,2)/2)+20+exp(1);% 目标函数y=x(:,1).2-10*cos(2*pi.*x(:,1)+10+x(:,2).2-10*cos(2*pi.*x(:,2)+10;%Rastrigin函数-可编辑修改 -。y=-y;-可编辑修改 -。THANKS !致力为企业和个人提供合同协议,策划案计划书, 学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考-可编辑修改 -

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1