萤火虫算法自2005年 在IEEE 群体智能会议上首次提出以来,因在探测多束 源 定 位、群体机器人应用、有害气体泄漏或核泄漏检测以及多模态优化问题等方面得到较好的应用而很快引起国内外学者的广泛关注,成为智能计算领域一个新的研究热点。
%% 算法说明:荧火虫算法(GSO:Glowworm swarm optimisation:a new method for optimising mutlti-modal functions) %% =============================================================== clc,clear;%清除变量 close all; % ================================初始化开始================================ domx=[-3,3;-3,3];%定义域 %domx=[-2.048,2.048;-2.048,2.048]; rho=0.4;%荧光素挥发因子 gamma=0.6;%适应度提取比例 beta=0.08;%邻域变化率 nt=5;%邻域阀值(邻域荧火虫数) s=0.01;%步长 iot0=5;%荧光素浓度 rs=3;%3;%感知半径 r0=1.5;%3;%决策半径 % ================================初始化结束================================ % ===============================分配空间开始=============================== m=size(domx,1);%函数空间维数 n=50;%萤火虫个数 gaddress=zeros(n,m);%分配荧火虫地址空间 gvalue=zeros(n,1);%分配适应度存放空间 ioti=zeros(n,1);%分配荧光素存放空间 rdi=zeros(n,1);%分配荧火虫决策半径存放空间 % ===============================分配空间结束=============================== % ===========================荧火虫常量初始化开始============================ %1.初始化地址 for i=1:m gaddress(:,i)=domx(i,1)+(domx(i,2)-domx(i,1))*rand(n,1); end %% %可视化 figure(1); plot(gaddress(:,1),gaddress(:,2),'b.','markersize',15); axis([-3 3 -3 3]); title('初始分布'); %% %2.初始化荧光素 ioti(:,1)=iot0; %3.初始化决策半径 rdi(:,1)=r0; iter_max=500;%最大迭代次数 t=1;%迭代累计 % ===========================荧火虫常量初始化结束============================ %% %可视化 % plot(gaddress(:,1),gaddress(:,2),'b.','markersize',15); % %hold on;%(要保存历史轨迹,则删除“%”) % axis([-3 3 -3 3]); % step_track = step_track +1; % title(['track >> ' '#iter=' num2str(t) ',step=' num2str(step_track)]); % pause(0.02); % %保存动态图gif % f=getframe(gcf); % imind=frame2im(f); % [imind,cm] = rgb2ind(imind,256); % if(sign_first==1) % sign_first=0; % imwrite(imind,cm,'track.gif','gif', 'Loopcount',inf,'DelayTime',0.02); % else % imwrite(imind,cm,'track.gif','gif','WriteMode','append','DelayTime',0.02); % end %保存动态图gif %2.各荧火虫移动过程结束 if t==1 y(t)=max(maxfun(gaddress)); else if y(t-1)<max(maxfun(gaddress)) y(t)=max(maxfun(gaddress)); else y(t)=y(t-1); end end t=t+1; end % =============================iter_max迭代结束============================= % =============================输出最优结果开始============================= gvalue=maxfun(gaddress);%求各个荧火虫的值 disp('最大值为:') num=find(gvalue==max(gvalue));%最大值序号 MaxValue=-max(gvalue) disp('最优解为:') BestAddress=gaddress(num,:) % =============================输出最优结果结束============================= figure(1) plot(y) xlabel('迭代次数')
[1]张荣权. 基于强化萤火虫算法的冷热电联供系统多目标优化调度. Diss. 深圳大学, 2018.
部分理论引用网络文献,若有侵权联系博主删除。
见博客主页
相关知识
【优化求解】基于matlab遗传算法求解红绿灯管理优化问题【含Matlab源码262期】.md资源
【优化求解】基于动态全局搜索和柯西变异改进的花授粉算法matlab源码
遗传算法Matlab代码实现及其在推荐系统中的应用
MATLAB植物虫害识别
求解物流配送问题的混合粒子群算法
【优化覆盖】基于matlab入侵杂草和花授粉混合算法无线传感器覆盖优化问题【含Matlab源码 1328期】
掌握MATLAB求解非齐次线性方程组:从理论到实践
标题:基于多目标动态随机优化模型的农作物种植策略
物流配送路径规划模型及其改进TLBO算法研究
花授粉优化算法及代码实现
网址: 【优化求解】基于萤火虫算法GSO求解最优目标matlab代码 https://m.huajiangbk.com/newsview1055104.html
上一篇: 怎样提高黑松成活率 |
下一篇: 一种促进花生在遮荫环境中生长的方 |