采用基于参考点的非支配排序方法:进化多目标优化算法
一、核心思想与背景
1. 多目标优化与非支配排序
多目标优化问题(MOP)需同时优化多个相互冲突的目标(如成本、效率、环保性),其解构成Pareto前沿(非支配解集)。非支配排序是进化多目标优化(EMO)的核心技术,通过支配关系将种群分层(第一层为非支配解,第二层为次优解,以此类推),实现“优胜劣汰”。
2. 传统方法的局限
- NSGA-II的拥挤度排序:通过个体周围解的密集程度保持多样性,但在高维目标空间(目标数>3)中,拥挤度计算失效,易导致解聚集。
- MOEA/D的分解策略:将MOP分解为单目标子问题,依赖权重向量,对权重设置敏感。
3. 基于参考点的非支配排序方法
核心创新:引入预定义参考点引导搜索,通过参考点与个体的关联保持种群多样性,尤其适用于高维目标优化。典型代表为NSGA-III(Non-dominated Sorting Genetic Algorithm III),其通过参考点实现“基于参考点的非支配排序”,平衡收敛性与多样性。
二、算法原理与关键步骤
1. 参考点生成(Reference Point Generation)
参考点是目标空间中的“导向标”,需均匀分布在目标空间。常用Das-Dennis方法生成结构化参考点:
- 将目标空间划分为 \(H\) 层(如 \(H=4\)),每层参考点数量为组合数 \(C(H+m-1, m-1)\)(\(m\) 为目标数)。
- 每个参考点坐标为 \((h_1/H, h_2/H, ..., h_m/H)\),其中 \(h_i\) 为非负整数,且 \(\sum h_i = H\)。
示例(3目标,\(H=3\)):
参考点包括 \((1,0,0), (0,1,0), (0,0,1), (2/3,1/3,0), (2/3,0,1/3), (1/3,2/3,0), ...\),共 \(C(3+3-1,3-1)=C(5,2)=10\) 个。
2. 非支配排序与参考点关联
步骤1:非支配排序
与NSGA-II类似,将种群 \(P\) 按支配关系分层,得到非支配前沿 \(F_1, F_2, ..., F_k\)(\(F_1\) 为当前最优非支配层)。
步骤2:参考点关联(Association)
将每个个体与最近的参考点关联,衡量标准为垂直距离(避免目标尺度差异影响):
- 对个体 \(x\)(目标向量 \(f(x) = [f_1(x), ..., f_m(x)]\))和参考点 \(z\)(目标向量 \(z = [z_1, ..., z_m]\)),计算归一化目标向量 \(\bar{f}(x) = (f(x) - z_{\text{min}})/(z_{\text{max}} - z_{\text{min}})\)(\(z_{\text{min}}, z_{\text{max}}\) 为目标空间极值)。
- 关联规则:个体 \(x\) 与参考点 \(z^*\) 关联,当且仅当 \(z^*\) 是 \(\bar{f}(x)\) 在各参考点上的垂直投影点(最小化垂直距离)。
3. 环境选择(Environmental Selection)
目标是保留 \(N\) 个个体(\(N\) 为种群大小),优先保留高层非支配解,并通过参考点确保多样性:
- 初始化:令 \(P_{\text{new}} = \emptyset\),当前前沿索引 \(l=1\)。
- 逐层选择:
- 若 \(|P_{\text{new}}| + |F_l| \leq N\):将整个前沿 \(F_l\) 加入 \(P_{\text{new}}\),并更新参考点关联计数(记录每个参考点关联的个体数)。
- 若 \(|P_{\text{new}}| + |F_l| > N\):从 \(F_l\) 中选择部分个体,优先选择关联参考点未被覆盖或关联个体最少的个体,直至 \(P_{\text{new}}\) 满。
- 终止:当 \(|P_{\text{new}}|=N\) 时停止,输出 \(P_{\text{new}}\) 作为下一代种群。
4. 算法框架(以NSGA-III为例)
1. 初始化:
- 生成均匀分布的参考点集 $Z$(Das-Dennis方法)。
- 随机初始化种群 $P_0$(大小为 $N$)。
- 设置进化代数 $t=0$。
2. 主循环(直至 $t=T$):
a. 进化操作:通过交叉(如SBX)、变异(如多项式变异)生成子代种群 $Q_t$(大小 $N$)。
b. 合并种群:$R_t = P_t \cup Q_t$(大小 $2N$)。
c. 非支配排序:将 $R_t$ 分层为 $F_1, F_2, ..., F_k$。
d. 环境选择:
i. 初始化 $P_{t+1} = \emptyset$,当前前沿索引 $l=1$。
ii. 逐层加入 $F_l$ 至 $P_{t+1}$,直至 $|P_{t+1}| + |F_l| > N$。
iii. 从剩余个体中选择个体,优先关联低密度参考点,使 $|P_{t+1}|=N$。
e. 更新:$t = t+1$,$P_t = P_{t+1}$。
3. 输出:最终种群的非支配前沿 $F_1$(近似Pareto前沿)。
三、关键技术与改进策略
1. 参考点自适应调整
- 动态参考点:根据进化过程动态调整参考点密度(如前期稀疏、后期密集),适应Pareto前沿形状变化。
- 归一化策略:采用理想点归一化(\(z_{\text{min}}\) 为当前种群最优目标值),避免目标尺度差异导致的关联偏差。
2. 多样性保持机制
- 垂直距离关联:替代欧氏距离,避免因目标相关性导致的关联错误。
- 参考点覆盖度:优先选择关联参考点“空缺”的个体,确保每个参考点均有代表解。
3. 与其他策略的结合
- 精英保留:保留历代非支配解,避免优质基因丢失。
- 自适应变异:根据个体与参考点的距离调整变异强度(远离参考点时增大变异概率)。
- 并行计算:参考点关联与环境选择可并行化,提升高维目标问题的效率。
参考代码 采用基于参考点的非支配排序方法,进化多目标优化算法 www.youwenfan.com/contentcnt/160601.html
四、算法优势与应用场景
1. 优势
| 维度 | NSGA-II(拥挤度排序) | NSGA-III(参考点排序) |
|---|---|---|
| 多样性保持 | 依赖局部密度,高维失效 | 参考点全局引导,高维效果好 |
| 收敛性 | 较强 | 更强(参考点聚焦Pareto前沿) |
| 适用目标数 | 2-3目标 | 3+目标(尤其>5目标) |
| 计算复杂度 | \(O(N\log N)\) | \(O(N\log N + MN)\)(\(M\)为目标数) |
2. 应用场景
- 高维目标优化:如工程设计(成本、重量、强度、寿命等多目标)、机器学习(超参数优化中的准确率、召回率、F1-score等多指标)。
- 复杂约束问题:参考点可嵌入约束违反度,引导搜索可行域。
- 动态环境优化:参考点自适应调整可应对目标/约束随时间变化的场景。
五、MATLAB实现示例(NSGA-III核心代码)
1. 参考点生成(Das-Dennis方法)
function Z = generate_reference_points(m, H)
% 生成m目标、H层的参考点集
% 输入:m-目标数,H-层数(每层划分H份)
% 输出:Z-参考点矩阵(每行一个参考点)
Z = [];
if m == 1
Z = (1:H)'/H;
return;
end
% 递归生成组合
for h = 0:H
sub_points = generate_reference_points(m-1, H-h);
if ~isempty(sub_points)
Z = [Z; [repmat(h/H, size(sub_points,1), 1), sub_points]];
end
end
end
2. 参考点关联(垂直距离计算)
function [association, distance] = associate_to_reference_points(P, Z, z_min, z_max)
% 将种群P关联到参考点Z
% 输入:P-种群目标矩阵(N×m),Z-参考点矩阵(K×m),z_min/z_max-目标极值
% 输出:association-关联索引(N×1),distance-垂直距离(N×1)
N = size(P, 1);
K = size(Z, 1);
association = zeros(N, 1);
distance = inf(N, 1);
% 归一化目标向量
P_norm = (P - z_min) ./ (z_max - z_min + eps);
for i = 1:N
for j = 1:K
% 计算垂直距离(点到参考点所在超平面的距离)
d = norm(P_norm(i,:) - Z(j,:)) * sin(theta(P_norm(i,:), Z(j,:)));
if d < distance(i)
distance(i) = d;
association(i) = j;
end
end
end
end
function th = theta(a, b)
% 计算向量a与b的夹角(弧度)
th = acos(dot(a,b)/(norm(a)*norm(b)+eps));
end
3. 环境选择(简化版)
function P_next = environmental_selection(P, Q, Z, N)
% 合并种群P∪Q,通过参考点选择N个个体
R = [P; Q]; % 合并种群
[F, ~] = non_dominated_sort(R); % 非支配排序(返回前沿列表F)
P_next = [];
l = 1;
while size(P_next, 1) + size(F{l}, 1) <= N
P_next = [P_next; F{l}]; % 加入整个前沿
l = l + 1;
end
% 从剩余前沿F{l}中选择个体(基于参考点关联)
remaining = N - size(P_next, 1);
[~, association] = associate_to_reference_points(R(size(P_next,1)+1:end, :), Z, z_min, z_max);
% (省略具体选择逻辑:优先关联低密度参考点的个体)
P_next = [P_next; selected_individuals];
end
六、总结与展望
基于参考点的非支配排序方法(如NSGA-III)通过参考点引导解决了高维目标优化的多样性难题,是当前EMO领域的主流算法之一。其核心贡献在于:
- 结构化参考点:将目标空间离散化为均匀网格,引导搜索覆盖整个Pareto前沿;
- 垂直距离关联:避免目标尺度差异,精准匹配个体与参考点;
- 分层选择策略:结合非支配排序与参考点覆盖,平衡收敛性与多样性。
关键词:多目标优化;非支配排序;参考点;NSGA-III;进化算法;多样性保持

浙公网安备 33010602011771号