当前位置: 首页 > news >正文

超体积指标(Hypervolume Indicator,S 度量)详析

前言

提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。

内容由AI辅助生成,仅经笔者审核整理,请甄别食用。

文章目录


超体积指标(Hypervolume Indicator,简称IHVI_{\text{HV}}IHV或 S 度量)是多目标优化中评估解集质量的核心指标,能够同时衡量解集的收敛性(接近真实最优前沿)和多样性(解的分布均匀性)。以下结合数学公式详细解析其原理:

一、核心定义与数学表达式

超体积指标的本质是计算解集在目标空间中“支配区域的体积”,其数学定义为:

IHV(Z∗,A)=λ(⋃a∈AH(a,Z∗))I_{\text{HV}}(Z^*, A) \;=\; \lambda\left( \bigcup_{a \in A} H(a, Z^*) \right) IHV(Z,A)=λ(aAH(a,Z))

其中:

  • A={a1,a2,…,an}A = \{a_1, a_2, \dots, a_n\}A={a1,a2,,an}:待评估的近似解集(nnn为解的数量,每个aia_iai是目标空间中的一个点)。
  • Z∗=(z1∗,z2∗,…,zm∗)Z^* = (z^*_1, z^*_2, \dots, z^*_m)Z=(z1,z2,,zm)最差参考点(需满足对所有a∈Aa \in AaA和所有目标维度iii,有ai≤zi∗a_i \leq z^*_iaizi,即Z∗Z^*Z被所有解支配)。
  • H(a,Z∗)H(a, Z^*)H(a,Z):解aaa与参考点Z∗Z^*Z构成的超矩形区域,定义为:
    H(a,Z∗)={x∈Rm∣a1<x1<z1∗,a2<x2<z2∗,…,am<xm<zm∗}H(a, Z^*) \;=\; \{ \, x \in \mathbb{R}^m \mid a_1 < x_1 < z^*_1,\ a_2 < x_2 < z^*_2,\ \dots,\ a_m < x_m < z^*_m \, \} H(a,Z)={xRma1<x1<z1, a2<x2<z2, , am<xm<zm}
  • λ(⋅)\lambda(\cdot)λ()勒贝格测度(高维空间中“体积”的推广,二维为面积,三维为体积,mmm维为测度)。
  • ⋃a∈AH(a,Z∗)\bigcup_{a \in A} H(a, Z^*)aAH(a,Z):所有解对应的超矩形区域的并集(合并重叠部分)。

二、公式拆解与几何意义

超体积的计算可分为三步,以二维目标空间(如“成本”和“时间”双目标优化)为例直观理解:

1. 单个解的“支配区域”H(a,Z∗)H(a, Z^*)H(a,Z)

对解a=(a1,a2)a = (a_1, a_2)a=(a1,a2)和参考点Z∗=(z1∗,z2∗)Z^* = (z^*_1, z^*_2)Z=(z1,z2),其超矩形区域H(a,Z∗)H(a, Z^*)H(a,Z)是:

  • 目标1(如成本)的区间:(a1,z1∗)(a_1, z^*_1)(a1,z1)(长度为z1∗−a1z^*_1 - a_1z1a1);
  • 目标2(如时间)的区间:(a2,z2∗)(a_2, z^*_2)(a2,z2)(长度为z2∗−a2z^*_2 - a_2z2a2);
  • 区域面积:(z1∗−a1)×(z2∗−a2)(z^*_1 - a_1) \times (z^*_2 - a_2)(z1a1)×(z2a2)

几何意义:该区域包含了所有被aaa支配且不优于Z∗Z^*Z的点,即“aaa比这些点更优,但Z∗Z^*Z比这些点更差”。

2. 区域并集⋃a∈AH(a,Z∗)\bigcup_{a \in A} H(a, Z^*)aAH(a,Z)

当有多个解时,需将每个解的超矩形区域合并(去除重叠部分)。例如,若A={a1,a2}A = \{a_1, a_2\}A={a1,a2},则合并后的区域为:
H(a1,Z∗)∪H(a2,Z∗)H(a_1, Z^*) \cup H(a_2, Z^*) H(a1,Z)H(a2,Z)

关键作用:避免重叠区域被重复计算,确保体积反映真实覆盖范围。

3. 勒贝格测度λ(⋅)\lambda(\cdot)λ()的计算

最终超体积是合并区域的“体积”:

  • 二维:面积(λ=长×宽\lambda = \text{长} \times \text{宽}λ=×);
  • 三维:体积(λ=长×宽×高\lambda = \text{长} \times \text{宽} \times \text{高}λ=××);
    -mmm维:λ=∏i=1m(zi∗−ai)\lambda = \prod_{i=1}^m (z^*_i - a_i)λ=i=1m(ziai)(单个解的超体积,多解时需去重叠)。

三、可视化样例

二维示例

运行结果(黑色的"x"表示"最差参考点")
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三维示例

运行结果(绿色的菱形表示"最差参考点")
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五维示例

一种计算五维超体积的方法的代码示例(没有对超体积进行可视化):

clc;
clear;%% Step 1: 生成两组五目标解集(模拟帕累托解)
N = 100;  % 每组100个解
M = 5;    % 5个目标% 解集A:均匀分布在超平面上,质量较好
A = rand(N, M);
A = A ./ sum(A,2);  % 归一化到超平面上% 解集B:扰动解集A,模拟较差前沿
noise = 0.05 * randn(N, M);  % 小扰动
B = A + noise;
B = max(B, 0); B = min(B, 1);  % 保持在 [0,1]%% Step 2: 归一化
all_obj = [A; B];
min_vals = min(all_obj);
max_vals = max(all_obj);A_norm = (A - min_vals) ./ (max_vals - min_vals);
B_norm = (B - min_vals) ./ (max_vals - min_vals);%% Step 3: 参考点设置
r = 1.1 * ones(1, M);  % 统一参考点(通常略大于最大目标值)%% Step 4: 超体积指标函数定义(简化法:蒙特卡洛采样估计 HV)function hv = computeHVMonteCarlo(P, ref, sampleN)% Monte Carlo 方法估算超体积% P: 目标值矩阵 (N x M)% ref: 参考点 (1 x M)% sampleN: 采样点数M = size(P, 2);randSamples = rand(sampleN, M) .* ref;dominated = false(sampleN,1);for i = 1:size(P,1)dominated = dominated | all(bsxfun(@le, P(i,:), randSamples), 2);endhv = sum(dominated) / sampleN * prod(ref);
end%% Step 5: 计算两组的超体积
HV_A = computeHVMonteCarlo(A_norm, r, 1e6);
HV_B = computeHVMonteCarlo(B_norm, r, 1e6);fprintf('HV of Set A: %.4f\n', HV_A);
fprintf('HV of Set B: %.4f\n', HV_B);%% Step 6: 可视化(五维平行坐标图)
figure;% 显示解集A的平行坐标
subplot(1,2,1);
parallelcoords(A_norm, 'Color', 'b', 'LineWidth', 1.5);
title('Set A (Parallel Coordinates)');
xlabel('Objectives');
ylabel('Normalized Values');
grid on;% 显示解集B的平行坐标
subplot(1,2,2);
parallelcoords(B_norm, 'Color', 'r', 'LineWidth', 1.5);
title('Set B (Parallel Coordinates)');
xlabel('Objectives');
ylabel('Normalized Values');
grid on;% 额外:添加图例
legend('Set A', 'Set B');

运行结果
在这里插入图片描述
在这里插入图片描述

四、为何能衡量解集质量?

超体积指标通过“体积”量化解集的两大核心特性:

1. 收敛性(解的优劣)

若解aaa更接近真实 Pareto 前沿(目标值更小),则zi∗−aiz^*_i - a_iziai更大(区间更长),单个超矩形体积更大,整体超体积更易增大。

例如:

  • a1=(1,3)a_1 = (1, 3)a1=(1,3)a2=(2,4)a_2 = (2, 4)a2=(2,4)(参考点Z∗=(5,5)Z^* = (5, 5)Z=(5,5));
    -H(a1,Z∗)H(a_1, Z^*)H(a1,Z)面积:(5−1)×(5−3)=8(5-1) \times (5-3) = 8(51)×(53)=8
    -H(a2,Z∗)H(a_2, Z^*)H(a2,Z)面积:(5−2)×(5−4)=3(5-2) \times (5-4) = 3(52)×(54)=3
  • 显然a1a_1a1收敛性更好,对超体积贡献更大。
2. 多样性(解的分布)

若解在目标空间分布均匀(不聚集),合并后的区域重叠少、覆盖广,体积更大;若解聚集,重叠区域多,体积小。

例如:

  • a1=(1,4)a_1 = (1, 4)a1=(1,4)a2=(4,1)a_2 = (4, 1)a2=(4,1)(参考点Z∗=(5,5)Z^* = (5, 5)Z=(5,5));
  • 单个面积分别为4×1=44 \times 1 = 44×1=41×4=41 \times 4 = 41×4=4,合并后去重叠(重叠面积1×1=11 \times 1 = 11×1=1),总超体积4+4−1=74 + 4 - 1 = 74+41=7
  • 若两解均为(2,2)(2, 2)(2,2),合并后体积仅为3×3=93 \times 3 = 93×3=9(但实际多样性差)。

五、关键性质与应用

  1. 单调性:若解集AAA支配解集BBBAAA中每个解都不劣于BBB且至少有一个更优),则IHV(A)≥IHV(B)I_{\text{HV}}(A) \geq I_{\text{HV}}(B)IHV(A)IHV(B)
  2. 对参考点的依赖性Z∗Z^*Z需合理选择(通常略大于所有解的最大目标值),否则会导致计算偏差。
  3. 应用场景:多目标优化算法性能对比(如 NSGA-II、MOEA/D 等)、解集质量评估与筛选。

总结

超体积指标通过公式IHV(Z∗,A)=λ(⋃a∈AH(a,Z∗))I_{\text{HV}}(Z^*, A) = \lambda\left( \bigcup_{a \in A} H(a, Z^*) \right)IHV(Z,A)=λ(aAH(a,Z)),将抽象的“收敛性”和“多样性”转化为可计算的“体积”。其核心逻辑是:体积越大,解集在目标空间中覆盖的优质区域越广,综合质量越好。理解超体积的关键在于把握“超矩形区域的合并体积”这一几何本质,以及参考点和勒贝格测度的作用。

http://www.dtcms.com/a/308008.html

相关文章:

  • 【JMeter】性能测试脚本录制及完善
  • 辐射源定位方法简述
  • 【BUUCTF系列】[HCTF 2018]WarmUp1
  • 网络编程-IP
  • 计算机网络:什么是光猫
  • Hyperbrowser MCP:重新定义网页抓取与浏览器自动化的AI驱动工具
  • Solr升级9.8.0启动异常UnsupportedOperationException known Lucene classes
  • Tauri vs Electron 的全面对比
  • 生产管理升级:盘古IMS MES解锁全链路可控可溯,激活制造效率
  • LCM中间件入门(2):LCM核心实现原理解析
  • 牛客练习赛142 第四次忍界大战 并查集
  • 永磁同步电机无速度算法--直流误差抑制自适应二阶反推观测器
  • Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)
  • 【React】diff 算法
  • Elasticsearch 索引及节点级别增删改查技术
  • 基于单片机胎压检测/锅炉蒸汽压力/气压检测系统
  • VBA代码解决方案第二十七讲:禁用EXCEL工作簿右上角的关闭按钮
  • 分布式ID方案(标记)
  • TDengine oss数据的导出和导入
  • 大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
  • 学习Redis源码路径
  • 开发避坑短篇(12):达梦数据库TIMESTAMP字段日期区间查询实现方案
  • 打破数据质量瓶颈:用n8n实现30秒专业数据质量报告自动化
  • 【数据结构初阶】--二叉树选择题专辑
  • 《Spring Boot应用工程化提升:多模块、脚手架与DevTools》
  • leetcode 2683. 相邻值的按位异或 中等
  • Python实现调整矩阵维度: view
  • 今日矩阵系列
  • mac环境配置rust
  • 机器人系统对接线索平台好处