采用基于参考点的非支配排序方法:进化多目标优化算法

一、核心思想与背景

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\) 为种群大小),优先保留高层非支配解,并通过参考点确保多样性:

  1. 初始化:令 \(P_{\text{new}} = \emptyset\),当前前沿索引 \(l=1\)
  2. 逐层选择
    • \(|P_{\text{new}}| + |F_l| \leq N\):将整个前沿 \(F_l\) 加入 \(P_{\text{new}}\),并更新参考点关联计数(记录每个参考点关联的个体数)。
    • \(|P_{\text{new}}| + |F_l| > N\):从 \(F_l\) 中选择部分个体,优先选择关联参考点未被覆盖关联个体最少的个体,直至 \(P_{\text{new}}\) 满。
  3. 终止:当 \(|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领域的主流算法之一。其核心贡献在于:

  1. 结构化参考点:将目标空间离散化为均匀网格,引导搜索覆盖整个Pareto前沿;
  2. 垂直距离关联:避免目标尺度差异,精准匹配个体与参考点;
  3. 分层选择策略:结合非支配排序与参考点覆盖,平衡收敛性与多样性。

关键词:多目标优化;非支配排序;参考点;NSGA-III;进化算法;多样性保持

posted @ 2026-04-12 10:57  u95900090  阅读(5)  评论(0)    收藏  举报