帕累托前沿 · 交互式教学
Pareto Front Interactive Explorer — 从二维到三维,逐步迭代理解多目标优化
🎯 什么是多目标优化?
在现实问题中,我们经常需要同时优化多个相互冲突的目标。例如:
- 设计汽车:最小化油耗 vs 最大化速度
- 投资组合:最大化收益 vs 最小化风险
- 工程设计:最小化成本 vs 最大化性能
数学形式上,我们要同时最小化 \(k\) 个目标函数:
min F(x) = ( f₁(x), f₂(x), …, fₖ(x) )
🏆 帕累托支配 (Pareto Dominance)
解 A 支配解 B(记作 A ≺ B),当且仅当:
∀i : fᵢ(A) ≤ fᵢ(B) ∧ ∃j : fⱼ(A) < fⱼ(B)
即 A 在所有目标上不差于 B,并且至少在一个目标上严格优于 B。
如果一个解不被任何其他解支配,则称其为帕累托最优解(非支配解)。
📈 帕累托前沿 (Pareto Front)
所有帕累托最优解在目标空间中的像(映射),构成帕累托前沿。
- 二维:帕累托前沿呈现为一条曲线
- 三维:帕累托前沿呈现为一个曲面
- 更高维:帕累托前沿是一个高维超曲面
前沿上的每个点代表一个"折衷方案",没有绝对的最优。
⚙️ NSGA-II 简化流程
本工具演示的算法基于 NSGA-II 的核心思想:
- 1. 初始化:随机生成初始种群
- 2. 非支配排序:将种群按支配层级排序
- 3. 拥挤度距离:保持解的多样性
- 4. 选择/交叉/变异:产生子代
- 5. 迭代:重复直到收敛到帕累托前沿
🔍 二维 vs 三维帕累托前沿
在二维优化中(两个目标),帕累托前沿是一条曲线。横轴 \(f_1\)、纵轴 \(f_2\),前沿通常呈现为从左上到右下的弧线,直观表现了两个目标之间的权衡关系。
在三维优化中(三个目标),帕累托前沿变为一个曲面。三个轴分别是 \(f_1\)、\(f_2\)、\(f_3\),前沿面上的每个点代表三个目标之间的一种权衡。在本工具的 DTLZ2 测试问题中,理论帕累托前沿是单位球面的第一卦限(\(f_1^2 + f_2^2 + f_3^2 = 1\)),呈现为一个球面弧片——你可以在三维演示中旋转观察它。
二维帕累托前沿演示
目标:min f₁(x) 与 min f₂(x),观察种群如何逐步逼近帕累托前沿
被支配解
当前帕累托前沿
理论帕累托前沿
三维帕累托前沿演示
DTLZ2 问题:min f₁ 、min f₂ 、min f₃ ,理论前沿为单位球面第一卦限 — 拖动旋转查看
被支配解
帕累托前沿面上的解
理论帕累托前沿面(球面)