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

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

⛄ 内容介绍

在这项工作中提出了一种新的仿生优化算法,称为人工蜂鸟算法(AHA)来解决优化问题。AHA算法模拟自然界中蜂鸟的特殊飞行技能和智能觅食策略。模拟了觅食策略中使用的三种飞行技能,包括轴向、对角线和全向飞行。此外,实施了引导觅食、领地觅食和迁徙觅食,并构建了访问表来模拟蜂鸟对食物来源的记忆功能。AHA 使用两组数值测试函数进行验证,并将结果与从各种算法获得的结果进行比较。比较表明,AHA 比其他元启发式算法更具竞争力,并且可以用更少的控制参数确定高质量的解决方案。此外,AHA 的性能在十个具有挑战性的工程设计案例研究中得到验证。结果表明,与文献中现有的优化技术相比,AHA 在计算负担和求解精度方面的优越性。

⛄ 部分代码

%%%%%%%%%%%寻找支配解%%%%%%%%

function non_dom=quick_sort(pop)

    npop=size(pop,1);

    K=10;

    pop(:,K+3)=0;

    for i=1:npop

        pop(i,K+3)=0;

        for j=1:i-1

            if pop(j,K+3)==0

                if Dominates(pop(i,K+1:K+2)',pop(j,K+1:K+2)')

                    pop(j,K+3)=1;

                elseif Dominates(pop(j,K+1:K+2)',pop(i,K+1:K+2)')

                    pop(i,K+3)=1;

                    break;

                end

            end

        end

    end

   ind=find(pop(:,K+3)==0);

   non_dom=pop(ind,1:K+2);


% [N,P]=size(pop);

% M=2;                    %目标函数值的个数

% V=10;                    %每个目标函数值的维数

% non_dom=[];

% individual=pop;         %pop:种群(自变量+目标函数值),行数为种群数量

% while ~isempty(individual)  %individual为空时停止循环

%     temp1=[];

%     temp2=[];

%     flag=0;

%     %Number of individuals that dominate this individual  支配i的解的个数

%     %individual(i).n=0;

%     %Individuals which this individual dominate            被i支配的解

%     %individual(i).p=[]

%     for i=2:size(individual,1)               %size(individual,1)为individual的行数

%         dom_less=0;

%         dom_equal=0;

%         dom_more=0;

%         for j=1:M                            %M=2,两个目标函数

%             if(individual(1,V+j)<individual(i,V+j))  %V=6,每个目标函数均为六维   %%pareto支配判断

%                 dom_less=dom_less+1;         %解1有可能支配解i

%             elseif  (individual(1,V+j)==individual(i,V+j))

%                 dom_equal=dom_equal+1;       %互不支配

%             else

%                 dom_more=dom_more+1;         %解1有可能被解i支配

%             end

%         end

%         if dom_less==0 && dom_equal~=M       %该行为真时,表示解i支配解1

%             flag=flag+1;                     %flag中存放解i支配解1的个数

%             temp1=[temp1;individual(i,:)];   %temp1中存放支配解i

%         elseif dom_more==0 && dom_equal~=M   %该行为真时,表示解1支配解i

%             temp2=[temp2;individual(1,:)];   %temp2中存放支配解1

%        else                                %其余情况:两个解互不支配

%             temp1=[temp1;individual(i,:)];   %temp1中也存放有可能支配的解i

%         end                                  %则称j优于i,则把此时的j放入individual(i)_p中

%     end                                      %循环结束时,表示解1依次与后面所有的解进行了支配判别

%     if flag==0||isempty(temp1)               %该行判断值为真时,表示解1不受当前任何解的支配

%         %即解1为当前解集中的一个pareto最优解

%         non_dom=[non_dom;individual(1,:)];

%     end

%     individual=temp1;                        %此时temp1中存放的就是通过上次比较后剩下的非支配解(非支配解即不受其他解支配)

end


⛄ 运行结果

【多目标智能优化算法】人工蜂鸟多目标算法附Matlab代码_解决方案

⛄ 参考文献

[1]刘明辉. 改进的多目标人工蜂群算法和在特征选择中的应用[D]. 安徽大学,2018.

[2] 赵伟, 王丽, Mirjalili S. 人工蜂鸟算法:一种新型仿生优化器及其工程应用[J]. 应用力学与工程中的计算机方法, 2022, 388:114194-。

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除