【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

乌鸦搜索算法作为新提出的元启发式智能算法,其寻优方式模拟了乌鸦间相互跟随窃食的行为.为了提高算法的收敛精度,后期搜索能力等,基于传统乌鸦搜索算法提出一种新的混合乌鸦搜索算法,其核心思想是在算法中加入共享机制,改进原始算法中随机追踪的位置更新方式,降低搜索盲目性,提高收敛速度;在不同的迭代阶段对全局最优位置进行大小不同的扰动操作,有效提高了跳出局部最优的概率,保证算法全局搜索能力与局部搜索能力的平衡.最后通过8个基准函数对5种算法搜索性能在10,30,50维的情况下进行对比分析,结果表明该改进算法的综合表现要优于其他算法.​

⛄ 部分代码

format long; close all; clear all; clc

ntr=50; % number of runs

for tr=1:ntr

    ton=cputime;

    pd=2; % problem dimension

    nt=50; % flock size

    AP=0.1;%awareness probability

    [x l u]=init(nt,pd); % initialization function

    xn=x;

    ft=fitness(xn,nt,pd); % fitness function evaluation

    mem=x;

    fit_mem=ft;

    tmax=500; % maximum number of iterations

    for t=1:tmax

        num=ceil(nt*rand(1,nt));

        for i=1:nt

            if rand>AP

                xnew(i,:)= x(i,:)+2*rand*(mem(num(i),:)-x(i,:));

            else

                for j=1:pd

                    xnew(i,j)=[u(j)-(u(j)-l(j))*rand];

                end

            end

        end

        xn=xnew;

        ft=fitness(xn,nt,pd); % fitness function

        % update position

        for i=1:nt

            x1=xnew(i,1);x2=xnew(i,2);

            if 2*(sqrt(2)*x1+x2)/(sqrt(2)*x1^2+2*x1*x2)-2<=0 & 2*x2/(sqrt(2)*x1^2+2*x1*x2)-2<=0 & 2/(sqrt(2)*x2+x1)-2<=0 & x1>=0 & x1<=1 & x2>=0 & x2<=1

                x(i,:)=xnew(i,:);

                if ft(i)

                    mem(i,:)=xnew(i,:);

                    fit_mem(i)=ft(i);

                end

            end

        end

        ffit(t)=min(fit_mem);

        min(fit_mem);

    end

    F(tr,:)=ffit;

    fitn(tr)= min(fit_mem)

    ngbest=find(fit_mem== min(fit_mem));

    g_best(tr,:)=mem(ngbest(1),:);

    toff(tr)=cputime-ton;

end

ng=find(fitn==min(fitn));

gbest=g_best(ng(1),:)

Best=min(fitn)% return best performance

Wrst=max(fitn);% return worst performance

Mean=mean(fitn); % return mean

Std=std(fitn,1); % return std

⛄ 运行结果

【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码_第1张图片

【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码_第2张图片

⛄ 参考文献

[1]辛梓芸, 张达敏, 陈忠云,等. 多段扰动的共享型乌鸦算法[J]. 计算机工程与应用, 2020, 56(2):7.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

你可能感兴趣的:(优化求解,matlab,算法,开发语言)