> 文章列表 > 【单目标优化算法】烟花优化算法(Matlab代码实现)

【单目标优化算法】烟花优化算法(Matlab代码实现)

【单目标优化算法】烟花优化算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

【单目标优化算法】烟花优化算法(Matlab代码实现)
【单目标优化算法】烟花优化算法(Matlab代码实现)

通过模拟烟花爆炸的方式来进行多点同时爆炸式搜索,这也许是一种高效的搜索方式,是有别于现有其他方法的新型搜索方法,从而有了研究这种爆炸搜索方式的想法,当时为其取名烟花算法(fireworks algorithm,FWA)。虽然烟花算法这个名称比较直观和简洁,但是由于它没有直接与优化等求解问题建立直接的联系,此后有些研究人员有时也用其他别称来称呼我们的烟花算法,如烟花优化算法、烟花爆炸算法、烟花爆炸优化算法、烟花爆炸搜索算法、爆炸搜索方法等。尽管有这些不同的别称,这里统一采用原始的名称烟花算法,以免混淆。

📚2 运行结果

【单目标优化算法】烟花优化算法(Matlab代码实现)
【单目标优化算法】烟花优化算法(Matlab代码实现)

部分代码:

%选择操作,从烟花、爆炸火花、变异火花里(都包含在三维数组中)选取N个优良个体作为下一代(先将最优个体留下,然后剩下的N-1个按轮盘赌原则选取)

n=sum(E_N)+N; %烟花、火花总个数

q=1;

Fitness = zeros(1,1);

E_Sum = zeros(1,D);

for i=1:N % 三维转二维

for j=1:(E_N(i)+1) % 三维数组每一页的行数(即每个烟花及其产生的火花数之和)

E_Sum(q,:)=E_Spark(j,:,i); % 烟花与火花总量

Fitness(q)=fitness(E_Sum(q,:)); % 计算所有烟花、火花的适应度,用于选取最优个体

q=q+1;

end

end

[Fitness,X]=sort(Fitness); % 适应度升序排列

x(1,:)=E_Sum(X(1),:); % 最优个体

dist=pdist(E_Sum); % 求解各火花两两间的欧式距离

S=squareform(dist); % 将距离向量重排成n*n数组,第i行之和即为第i个火花到其他火花的距离之和

P = zeros(1,n);

for i=1:n % 分别求各行之和

P(i)=sum(S(i,:));

end

[P,Ix]=sort(P,'descend');% 将距离按降序排列,选取前N-1个,指的是如果个体密度较高,即该个体周围有很多其他候选者个体时,该个体被选择的概率会降低

for i=1:(N-1)

x(i+1,:)=E_Sum(Ix(i),:);

end

end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]洪鑫磊,崔英花.基于烟花优化粒子群的室内定位算法研究[J].电子测量技术,2022,45(14):59-64.DOI:10.19651/j.cnki.emt.2208998.

[2]胡建豪. 基于烟花算法的矿井通风网络风量优化研究及应用[D].中国矿业大学,2020.DOI:10.27623/d.cnki.gzkyu.2020.002183.

🌈4 Matlab代码实现