• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Matlab
  • 标签: moead  

资源简介

moead优化算法摘要:在传统的多目标优化问题上常常使用分解策略。但是,这项策略还没有被广泛的应用到多目标进化优化中。本文提出了一种基于分解的多目标进化算法。该算法将一个多目标优化问题分解为一组???单目标优化问题并对它们同时优化。通过利用与每一个子问题相邻的子问题的优化信息来优化它本身,这是的该算法比MOGLS和非支配排序遗传算法NSGA-Ⅱ相比有更低的计算复杂度。实验结果证明:在0-1背包问题和连续的多目标优化问题上,利用一些简单的分解方法本算法就可以比MOGLS和NSGA-Ⅱ表现的更加出色或者表现相近。实验也表明目标正态化的MOEA/D算法可以解决规模范围相异的多目标问题,同时使用一个先进分解方法的MOEA/D可以产生一组分别非常均匀的解对于有3个目标问题的测试样例。最后,MOEA/D在较小种群数量是的性能,还有可扩展性和敏感性都在本篇论文中通过实验经行了相应的研究。

资源截图

代码片段和文件信息

%
% Copyright (c) 2015 Yarpiz (www.yarpiz.com)
% All rights reserved. Please read the “license.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

评论

共有 条评论