1 简介

人工蜂群算法(Artificial Bee Colony Algorithm, 简称ABC算法)是一个由蜂群行为启发的算法,在2005年由Karaboga小组为优化代数问题而提出。​【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_参考文献

【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_参考文献_02

【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_d3_03

【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_d3_04

2 部分代码

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

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


3 仿真结果

【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_参考文献_05

4 参考文献

[1]李永正. 改进人工蜂群算法求解多目标连续优化问题[J]. 哈尔滨师范大学自然科学学报, 2018, 34(2):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码_d3_06