多目标优化(三)简单的 MOEA/D

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

多目标优化(三)简单的 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值