2023年智能优化算法之霜冰优化算法,附MATLAB代码,直接复制

RIME优化算法由HangSu在2023年提出,灵感来源于霜冰生长机制。它是一种简单的搜索策略,适合进一步改进。文中通过CEC2005函数与粒子群算法对比,展示其性能。初步结果显示两种算法表现接近,RIME有较大改进空间。

霜冰优化算法(Rime optimization algorithm)是Hang Su于2023年2月提出的,该算法受到雾霾冰生长机制的启发,通过模拟软霜冰粒子的运动,提出了一种用于算法搜索的霜冰搜索策略。 

参考文献:Hang Su, Dong Zhao, Ali Asghar Heidari, Lei Liu, Xiaoqin Zhang, Majdi Mafarja, Huiling Chen,RIME: A physics-based optimization,Neurocomputing,ELSEVIER- 2023.

算法原理也很简单,代码简单易懂,适合改进。粒子更新核心公式如下:

73b3325fa5ee8e5c743d46776706e589.png

其中:

01be2c10082a7308d59fd8916822e3a8.png

伪代码为:

4e75422bb320f571b9124cf59954c26c.png

有关霜冰优化算法更详细的原理介绍,作者将原文文献打包在了压缩包里,大家可自行学习。下面依旧是采用CEC2005函数对霜冰算法进行测试,运行时作者将其与粒子群算法进行了对比,大家看一下效果

a4be81f309ddb058ec5d8194aaeaa9ad.png

19ad0d58c75022933261b9eab618c450.png

88384198309926d16348ffbb7f9a158b.png

0306d0971854f278fc5e9aeed261ca2f.png

55b576e690f5df859266a5791dd6581b.png

cd866bb49f87e4710af6fafdd74f9d94.png

1df5a36f005209b2858668c1067a670a.png

22f9bcaa8f2e2ce74023fb3bcc920630.png

845ca391131dbce912fd48f26c7265d1.png

07af672751efc1041afb6a084380b788.png

adf918d03cd4c56ade348d718c5ef3c8.png

评价:只能说两个算法相差不大,RIME原理毕竟也很简单,改进的空间就会很大。

代码

function [Best_rime_rate,Best_rime,Convergence_curve]=RIME(N,Max_iter,lb,ub,dim,fobj)
% initialize position
Best_rime=zeros(1,dim);
Best_rime_rate=inf;%change this to -inf for maximization problems
Rimepop=initialization(N,dim,ub,lb);%Initialize the set of random solutions
Lb=lb.*ones(1,dim);% lower boundary 
Ub=ub.*ones(1,dim);% upper boundary
it=1;%Number of iterations
Convergence_curve=zeros(1,Max_iter);
Rime_rates=zeros(1,N);%Initialize the fitness value
newRime_rates=zeros(1,N);
W = 5;%Soft-rime parameters, discussed in subsection 4.3.1 of the paper
%Calculate the fitness value of the initial position
for i=1:N
    Rime_rates(1,i)=fobj(Rimepop(i,:));%Calculate the fitness value for each search agent
    %Make greedy selections
    if Rime_rates(1,i)<Best_rime_rate
        Best_rime_rate=Rime_rates(1,i);
        Best_rime=Rimepop(i,:);
    end
end
% Main loop
while it <= Max_iter
    RimeFactor = (rand-0.5)*2*cos((pi*it/(Max_iter/10)))*(1-round(it*W/Max_iter)/W);%Parameters of Eq.(3),(4),(5)
    E =(it/Max_iter)^0.5;%Eq.(6)
    newRimepop = Rimepop;%Recording new populations
    normalized_rime_rates=normr(Rime_rates);%Parameters of Eq.(7)
    for i=1:N
        for j=1:dim
            %Soft-rime search strategy
            r1=rand();
            if r1< E
                newRimepop(i,j)=Best_rime(1,j)+RimeFactor*((Ub(j)-Lb(j))*rand+Lb(j));%Eq.(3)
            end
            %Hard-rime puncture mechanism
            r2=rand();
            if r2<normalized_rime_rates(i)
                newRimepop(i,j)=Best_rime(1,j);%Eq.(7)
            end
        end
    end
    for i=1:N
        %Boundary absorption
        Flag4ub=newRimepop(i,:)>ub;
        Flag4lb=newRimepop(i,:)<lb;
        newRimepop(i,:)=(newRimepop(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
        newRime_rates(1,i)=fobj(newRimepop(i,:));
        %Positive greedy selection mechanism
        if newRime_rates(1,i)<Rime_rates(1,i)
            Rime_rates(1,i) = newRime_rates(1,i);
            Rimepop(i,:) = newRimepop(i,:);
            if newRime_rates(1,i)< Best_rime_rate
               Best_rime_rate=Rime_rates(1,i);
               Best_rime=Rimepop(i,:);
            end
        end
    end
    Convergence_curve(it)=Best_rime_rate;
    it=it+1;
end

需要的同学直接粘贴用于自己的实际问题即可。下方卡片回复关键词,获取完整代码。

关键词:2023

评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值