基于粒子群算法的多目标搜索算法
1、案例背景
在实际工程优化问题中,多数问题是多目标优化问题。相对于单目标优化问题,多目标优化
问题的显著特点是优化各个目标使其同时达到综合的最优值。然而,由于多目标优化问题的
各个目标之间往往是相互冲突的,在满足其中一个目标最优的同时,其他的目标往往可能会
受其影响而变得很差。因此,一般适用于单目标问题的方法难以用于多目标问题的求解。
多目标优化问题很早就引起了人们的重视,现已经发展出多种求解多目标优化问题的方法。
多目标优化问题求解中的最重要概念是非劣解和非劣解集,两者的定义如下。
非劣解(noninferior solution):在多目标优化问题的可行域中存在一个问题解,若不存在另
一个可行解,使得一个解中的目标全部劣于该解,则该解称为多目标优化问题的非劣解。所
有非劣解的集合叫做非劣解集(noninferior Set)。
3、主程序
%% 循环迭代
for iter=1:MaxIt
% 权值更新
w=wmax-(wmax-wmin)*iter/MaxIt;
%从非劣解中选择粒子作为全局最优解
s=size(fljx,1)
index=randi(s,1,1);
gbest=fljx(index,:);
%% 群体更新
for i=1:xSize
%速度更新
v(i,:)=w*v(i,:)+c1*rand(1,1)*(xbest(i,:)-x(i,:))+c2*rand(1,1)*(gbest-x(i,:));
%位置更新
x(i,:)=x(i,:)+v(i,:);
x(i,:) = rem(x(i,:),objnum)/double(objnum);
index1=find(x(i,:)<=0);
if length(index1)~=0
x(i,index1)=rand(size(index1));
end
x(i,:)=ceil(4*x(i,:));