1 简介
根据群集智能优化原理,给出了一种基于萤火虫寻优思想的新算法———萤火虫群优化算法,并针对背包问题进行求解。经仿真实验获得了满意的结果,这说明了算法在背包问题求解上的有效性和具有更快的收敛速度,拓展了萤火虫群优化算法的应用领域。
2 部分代码
%求解0-1背包问题的改进萤火虫群算法(WGFA) %设置参数:步长因子alpha=0.5,吸引度beta0=1,介质吸收因子gama=1, %萤火虫的亮度即目标函数值 clc clear all close all %% %初始化参数 alpha=0.2; % 步长因子Randomness 0--1 gamma=1.0; % 介质吸收因子 beta0=1.0; %最大吸引度 wmax=1;wmin=0.05;%权重,用于计算线性递减惯性权重 Pm=0.1;%变异概率 %使用文献中案例1的参数 W=[95 4 60 32 23 72 80 62 65 46];%物品重量 P=[55 10 47 5 4 50 8 61 85 87];%物品价值 V=269;%背包最大容量 n=size(W,2);%物品个数 iter_max=30;%迭代次数 M=1;%萤火虫种群个数 runtime=100;%运行次数 xn=round(rand(M,n));%随机生成初始解 for i=1:iter_max %计算线性递减惯性权重 wt=wmax-(i*(wmax-wmin))/iter_max; %用贪心策略修复当前解 [xn]=f_GA(xn,M,n,V,P,W); %种群排序 [xn,Lightn]=f_sort(xn,P,W,M,V); xo=xn;Lighto=Lightn; vbest=xo(1,:); Lightbest=Lightn(1); fbest=Lightbest; vbest_set(i,:)=vbest; if i==1 fbest_set(i)=fbest; else if fbest>fbest_set(i-1) fbest_set(i)=fbest; else fbest_set(i)=fbest_set(i-1); end end %种群更新 [xn]=f_move(M,n,xn,Lightn,xo,Lighto,alpha,gamma,beta0,wt); [xn,Lightn]=f_sort(xn,P,W,M,V); %种群变异 [xn]=f_variation(xn,Pm,M,n); %将种群离散化 for j=1:M for k=1:n if xn(j,k)>0.5 xn(j,k)=1; else xn(j,k)=0; end end end end figure(1) plot(fbest_set) xlabel('迭代次数') ylabel('适应度')
3 仿真结果
4 参考文献
[1]莫愿斌, 马彦追, & 郑巧燕. (2014). 求解0-1背包问题的萤火虫算法. 计算机工程与设计(8), 2778-2784.