資源簡(jiǎn)介
moead優(yōu)化算法摘要:在傳統(tǒng)的多目標(biāo)優(yōu)化問(wèn)題上常常使用分解策略。但是,這項(xiàng)策略還沒(méi)有被廣泛的應(yīng)用到多目標(biāo)進(jìn)化優(yōu)化中。本文提出了一種基于分解的多目標(biāo)進(jìn)化算法。該算法將一個(gè)多目標(biāo)優(yōu)化問(wèn)題分解為一組???單目標(biāo)優(yōu)化問(wèn)題并對(duì)它們同時(shí)優(yōu)化。通過(guò)利用與每一個(gè)子問(wèn)題相鄰的子問(wèn)題的優(yōu)化信息來(lái)優(yōu)化它本身,這是的該算法比MOGLS和非支配排序遺傳算法NSGA-Ⅱ相比有更低的計(jì)算復(fù)雜度。實(shí)驗(yàn)結(jié)果證明:在0-1背包問(wèn)題和連續(xù)的多目標(biāo)優(yōu)化問(wèn)題上,利用一些簡(jiǎn)單的分解方法本算法就可以比MOGLS和NSGA-Ⅱ表現(xiàn)的更加出色或者表現(xiàn)相近。實(shí)驗(yàn)也表明目標(biāo)正態(tài)化的MOEA/D算法可以解決規(guī)模范圍相異的多目標(biāo)問(wèn)題,同時(shí)使用一個(gè)先進(jìn)分解方法的MOEA/D可以產(chǎn)生一組分別非常均勻的解對(duì)于有3個(gè)目標(biāo)問(wèn)題的測(cè)試樣例。最后,MOEA/D在較小種群數(shù)量是的性能,還有可擴(kuò)展性和敏感性都在本篇論文中通過(guò)實(shí)驗(yàn)經(jīng)行了相應(yīng)的研究。
代碼片段和文件信息
%
%?Copyright?(c)?2015?Yarpiz?(www.yarpiz.com)
%?All?rights?reserved.?Please?read?the?“l(fā)icense.txt“?for?license?terms.
%
%?Project?Code:?YPEA124
%?Project?title:?Implementation?of?MOEA/D
%?Muti-objective?Evolutionary?Algorithm?based?on?Decomposition
%?Publisher:?Yarpiz?(www.yarpiz.com)
%?
%?Developer:?S.?Mostapha?Kalami?Heris?(Member?of?Yarpiz?Team)
%?
%?Contact?Info:?sm.kalami@gmail.com?info@yarpiz.com
%
clc;
clear;
close?all;
%%?Problem?Definition
CostFunction=@(x)?ZDT1(x);??%?Cost?Function
nVar=3;?????????????%?Number?of?Decision?Variables
VarSize=[nVar?1];???%?Decision?Variables?Matrix?Size
VarMin?=?0;?????????%?Decision?Variables?Lower?Bound
VarMax?=?1;?????????%?Decision?Variables?Upper?Bound
nObj=numel(CostFunction(unifrnd(VarMinVarMaxVarSize)));
%%?MOEA/D?Settings
MaxIt=100;??%?Maximum?Number?of?Iterations
nPop=50;????%?Population?Size?(Number?of?Sub-Problems)
nArchive=30;
T=max(ceil(0.15*nPop)2);????%?Number?of?Neighbors
T=min(max(T2)15);
crossover_params.gamma=0.5;
crossover_params.VarMin=VarMin;
crossover_params.VarMax=VarMax;
%%?Initialization
%?Create?Sub-problems
sp=CreateSubProblems(nObjnPopT);
%?Empty?Individual
empty_individual.Position=[];
empty_individual.Cost=[];
empty_individual.g=[];
empty_individual.IsDominated=[];
%?Initialize?Goal?Point
%z=inf(nObj1);
z=zeros(nObj1);
%?Create?Initial?Population
pop=repmat(empty_individualnPop1);
for?i=1:nPop
????pop(i).Position=unifrnd(VarMinVarMaxVarSize);
????pop(i).Cost=CostFunction(pop(i).Position);
????z=min(zpop(i).Cost);
end
for?i=1:nPop
????pop(i).g=DecomposedCost(pop(i)zsp(i).lambda);
end
%?Determine?Population?Domination?Status
pop=DetermineDomination
評(píng)論
共有 條評(píng)論