个人主页:研学社的博客
欢迎来到本博客❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
2 运行结果
3 Matlab代码及文章讲解
4 参考文献
文献来源:
随着系统复杂性的增加,智能启发式优化方法越来越受到系统可靠性分析的重视。然而,系统可靠性的目标函数和约束条件是非线性的。因此,提出了一种基于洗牌蛙跳算法和细菌觅食算法的混合优化方法,以解决系统可靠性和冗余分配问题。首先,增加了随机分组策略,以保持种群的多样性。然后,使用莱维飞行更新策略来提高全局搜索能力。最后,引入了迁移操作的方法来逃避局部最优。所提出的方法是SFLA算法的新版本,然后分别应用于系统可靠性模型的数学测试和操作。结果表明,与常规方法相比,该方法可以获得系统可靠性最大值的最优解。
文章改进的效果图:
部分代码:
%% Majid Farzaneh
%% Shuffled Frog Leaping Algorithm for optimization problems
clc
clear
close all
m=4; % Number of Memeplexes
n=4;% Number of frogs in each memeplex
F=m*n; % Number of frogs
Nvar=10; % Number of Variables
MaxIter=10000; % Maximum number of Iteration
N=10; % Maximum Local iteration
alpha=0.1;
beta=1.5;
v=1;
u=1;
%% initial population of frogs
U=cell(1,F);
for i=1:F
U{i}=make_a_frog(Nvar);
end
%% optimization loop:
for iter=1:MaxIter
for i=1:F
cost(i)=objfcn(U{i});
end
[vals,idxs]=sort(cost);
best_cost=vals(1);
Px=U{idxs(1)} ; % best Glogabl Frog
disp(['iter ',num2str(iter),' ... best cost= ',num2str(best_cost)])
plot(iter,best_cost,'k.')
grid
xlabel('iteration ');
ylabel('cost')
hold on
pause(0.00001)
for iii=1:numel(U) % Sort population
U2{iii}=U{idxs(iii)};
end
U=U2;
for i=1:m % Step 5.2
Y={};
for j=(i-1)*n+1:i*n
Y=[Y,U{j}];
end
Pb=Y{1};
Pw=Y{end};
for iN=1:N % Step 5.3
D=(Pb-Pw)*rand; % Step 5.4
Pw2=Pw+D;
if objfcn(Pw2)
end
end
if isequal(Pw,Y{end}) % Step 5.8
Y{end}=make_a_frog(Nvar);
end
for ny=1:numel(Y)
Ycost(ny)=objfcn(Y{ny});
end
[Yval,Yidx]=sort(Ycost);
for iii=1:numel(Y) % Sort population
Y2{iii}=Y{Yidx(iii)};
end
Y=Y2;
for jjj=n/2:n
部分理论来源于网络,如有侵权请联系删除。
[1]Li, Yancang, and Zhen Yan. "Improved shuffled frog leaping algorithm on system reliability analysis." Brain informatics 6.1 (2019): 1.