1 简介
综合遗传算法和萤火虫算法,根据层接近度和分支距离设计适应度函数,根据萤火虫位置的更新进行遗传操作,从而减少冗余的测试用例,提高算法收敛性.
萤火虫算法自2005年 在IEEE 群体智能会议上首次提出以来,因在探测多束 源 定 位、群体机器人应用、有害气体泄漏或核泄漏检测以及多模态优化问题等方面得到较好的应用而很快引起国内外学者的广泛关注,成为智能计算领域一个新的研究热点。
2 部分代码
%子函数
%更新萤火虫位置
%采用支配关系代替亮度关系
function[pop]=FA_move(x_dim,pop,alpha,betamin,gamma,Lb,Ub)
scale=abs(Ub-Lb);%参数取值范围绝对值
pop_=pop;%保护数据
num_pop=length(pop);
%更新萤火虫位置
for i=1:num_pop,%每只萤火虫都进行位置更新
for j=1:num_pop,%所有萤火虫两两比较
r=sqrt(sum((pop.position(i,:)-pop.position(j,:)).^2));
%萤火虫i到萤火虫j的笛卡尔距离
if Dominates(pop(i),pop(j)),%如果i支配j
beta0=1;
beta=(beta0-betamin)*exp(-gamma*r.^2)+betamin;
%beta为吸引力;代码为书上式4-2;i到j的吸引力
tmpf=alpha.*(rand(1,x_dim)-0.5).*scale;
pop.position(j,:)=pop.position(j,:).*(1-beta)+pop_.position(i,:).*beta+tmpf;%上面两行代码为位置更新,书上式4-4
end
end
end
%防止越界
%检查新的解是否在限制范围内,Check if the updated solutions/locations are within limits
[pop]=findlimits(popsize,pop,Lb,Ub);
end
3 仿真结果
4 参考文献
[1]李益, 吴军华. 一种混合测试用例约简和生成的方法[J]. 微电子学与计算机, 2018, 35(6):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。