多目标优化(三)简单的 MOEA/D
写在前面:
① MOEA/D提供了一个简单但是有效的方法,将分解的方法引入到多目标进化计算中。
② 分解策略主要使用三种聚合函数:1)权重聚合方法;2)切比雪夫方法;3)基于惩罚的边界交叉方法
算法概要:
step1:获取算法参数(包括种群大小、迭代终止条件、函数问题参数、生成权重向量、生成邻居矩阵)
step2:初始化种群(生成NP个初始解,即每个子问题的初始解,每个子问题对应一个权重向量)
step3:生成候选解,更新各目标的最小值(for 最小值问题)
step4:按照MOEA/D的分解策略更新各个子问题的最优解
step5:重复上述过程,直至满足迭代终止条件
clc; clear; close all;
format long
global NP x_num f_num nei_num iter_max fun x_min x_max
global weight_vec f_min nei pop
%% 获取函数参数
fun = 'ZDT1'; test % 选择测试函数 DTLZ1
weight_vec = gen_weight_vec(); % 产生权重向量
nei_num = NP / 5; % 邻居规模大小
nei = gen_nei(); % 生成邻居矩阵
iter_max = 250; % 最大迭代次数
NP = 100; % 种群大小,也是子问题 subproblem 的个数
%% 初始种群
pop = x_min + (x_max - x_min) .* rand(NP, x_num);
for i = 1:NP
pop(i, x_num+1:x_num+f_num) = object_fun(pop);
end
f_min = min(pop(:,x_num+1:x_num+f_num));
%% 迭代循环
for iter = 1:ite

本文介绍了简单的MOEA/D多目标优化算法,将分解方法引入多目标进化计算。阐述了算法概要,包括获取参数、初始化种群等步骤,还介绍了gen_weight_vec等子程序,以及MOEA/D的三种分解策略,如加权求和法、切比雪夫方法等。
最低0.47元/天 解锁文章
1148

被折叠的 条评论
为什么被折叠?



