旗鱼优化算法论文【matlab代码】

一、算法流程

旗鱼优化算法的原理

SFO 算法是近年来被提出一种群智能优化算法,它分为旗鱼和沙丁鱼两个种群,其中,旗鱼被认为是候选解,问题的变量是旗鱼在搜索空间中的位置,沙丁鱼作为食物用来增加算法的随机性,旗鱼可以代替取代那些位置更好的沙丁鱼。可以将 SFO 算法分为以下五个步骤:

(1)初始化种群。在可行域内随机生成旗鱼种群Xsf 和沙丁鱼种群Xs,每个种群的位置定义为D 维,当前迭代次数为t,最大迭代次数为MaxIt。

(2)旗鱼群位置更新。旗鱼群在搜索空间内不断更新自己的位置,其位置更新公式如式所示:

new_sF = XlitesF一入* (rand(0.1) * (tes+inured$)一xoia sF)

式中:xetitesF是每次一迭代中精英旗鱼的位置,xinjureds是每次迭代中受伤的沙丁鱼的最佳位置,rand用啦产生0到1之间的随机数,xoid se是旗鱼当前位置,a;是一个系数,通过公式计算:

= 2* rand(0.1) +PD -PD

式中:PD是猎物密度,显示了每次迭代时的猎物数量。由于旗鱼群捕猎时猎物数量会减少,PD参数是更新旗鱼群位置的重要参数,通过公式(2-3)计算:

PD=1一(Nsp+Ns'

式中:Nss和Ns分别为算法每个周期中的旗鱼数量和沙丁鱼数量。

(3)沙丁鱼群位置更新。沙丁鱼群在搜索空间内对于旗鱼的攻击拥有逃逸的行为能力,其位置更新公式如公式

new s =r + (etitesF 一xolas + AP)

式中:xilitess是每次一迭代中精英旗鱼的位置,xoas是当前沙丁鱼的位置,r是0到1之间的随机数,AP表示旗鱼在每次迭代中的攻击能力,通过公式计算:

AP =A*(1-(2* t* E))

式中:t是当前迭代次数,8是一个系数。如果旗鱼的攻击力低于0.5,将对沙丁鱼进行部分更新

(4)组合种群。在狩猎的最后阶段,受伤的沙丁鱼将被旗鱼捕获。在该算法中,假设当沙丁鱼比相应的旗鱼位置更好时,旗鱼将会取代其位置,

x=xiff(S)<f(SF;)

式中:x表示当前迭代沙丁鱼的位置,x表示当前迭代旗鱼的位置。其中位置被旗鱼群替代的沙丁鱼群将被移除沙丁鱼种群。

在每次迭代的最后,重新计算旗鱼和沙丁鱼种群的局部最优解,并对所有个体的代价函数值从小到大进行排序,选出全局最优解。若此时满足终止条件,则输出最佳位置及其对应的最优值,否则继续进行迭代。

二、代码与仿真

function coeff = myLagrangeInterp(x,y)
% lagrange 插值法
% 返回格式:coeff 为 (1,n+1) 大小的向量,分别表示从常数项到最高次项的系数

[~,n] = size(x);
n = n-1;

coeff = zeros(1,n+1);

l = zeros(n+1,n+1); % 基函数

for i = 1:n+1
    l(i,1) = 1; prod = 1;
    for j = 1:n+1
        if (i==j)
            continue
        end
        l(i,:) = [0, l(i, 1:end-1)] - x(j)*l(i,:);  
        prod = prod*(x(i)-x(j));
    end
    coeff = coeff + y(i)*l(i,:)/prod;
end

end

 11 changes: 11 additions & 0 deletions11  
practice-app/src/approx/myLagrangeUniformApprox.m
@@ -0,0 +1,11 @@
function coeff = myLagrangeUniformApprox(f)


n = 4;
% Tchebychev 多项式零点
x = cos((2*(1:n)-1)/2/n*pi);
coeff = myLagrangeInterp(x, f(x));

end

下面是算法的一般流程:

流程图

仿真结果

仿真结果

算法结果

博主简介:本人擅长数据处理、建模仿真、程序设计、论文写作与指导,项目与课题经验交流。个人博客:kelaboshi.com。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坷拉博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值