4、决策空间与目标空间:映射关系、可行域、非劣解集

做多目标优化,你最先得搞清楚两个“世界”。

一个是决策空间——你手里能调的那些参数、变量。另一个是目标空间——你真正关心的那些性能指标。

我开始做工程优化那会儿,也把这两个空间混为一谈。后来有一次,我在调一个发动机进气道设计,总盯着目标值看,却死活找不到对应决策变量的合理范围。嗯,那才真正理解了映射关系的重要性。

4.1 决策空间:你能操控的世界

决策变量就是你可以自由调整的所有输入参数。把它们放在一起,就构成了一个决策向量:

x = [x₁, x₂, ..., xₙ]ᵀ

每个变量都有自己的上下界——比如温度不能超过材料耐受上限,厚度不能低于工艺最小值。这些边界限定了决策向量的可行取值范围,记作 Ω:

Ω = { x ∈ ℝⁿ | xᵢₘᵢₙ ≤ xᵢ ≤ xᵢₘₐₓ, i=1..n }
实际经验: 我建议你画一张决策空间的“草图”——哪怕只是把两个关键变量画成二维散点。这能帮你快速发现变量之间的耦合问题。我在优化电池热管理参数时,就靠这张图发现了一个变量取值区间几乎全被另一个变量覆盖了。

4.2 目标空间:你在乎的结果

每一个决策向量 x 通过目标函数映射到一组目标值:

f(x) = [f₁(x), f₂(x), ..., fₘ(x)]ᵀ ∈ ℝᵐ

这 m 个目标值构成目标空间中的一个点。目标空间的维度就是你关心的指标个数。注意,目标之间往往存在冲突——减重就会降刚度,提速就会增油耗,这是多目标优化的核心难题。

核心概念: 决策空间的一个点,对应目标空间的一个点。但反过来,目标空间同一个点可能对应决策空间的多个点(多对一映射)。这会导致Pareto最优解集在决策空间中往往是一个曲面甚至一条曲线。

4.3 可行域:你能用的“地盘”

不是所有决策变量组合都能用。约束条件会砍掉一部分区域:

gⱼ(x) ≤ 0, j=1..p
hₖ(x) = 0, k=1..q

那些同时满足所有约束的决策变量,才属于可行决策域。它们在目标空间对应的点集,就是可行目标域。

举个例子,我做过一个物流路径优化,约束包括车辆载重、时间窗、燃油费。决策空间是路径节点的顺序排列,但真正合法的路径只占整个排列空间的一小部分。

避坑指南: 我曾经在目标空间里看到几个漂亮的点,以为找到了很好的解,结果反查决策变量发现它们违反了工艺约束。后来我养成了习惯:每当在目标空间里挑候选解,一定先回退到决策空间验证可行性。这能省掉大量走回头路的时间。

4.4 非劣解集:Pareto 前沿的“根”

非劣解(Pareto最优解)在目标空间里的像就是Pareto前沿。但非劣解集本身是决策空间里的一个集合:

P_S = { x ∈ Ω_可行 | 不存在 x' ∈ Ω_可行 使得 f(x') 支配 f(x) }

这个集合在决策空间里长什么样?我见过很多种:

  • 连续曲线或曲面——常见于光滑凸问题
  • 离散点集——组合优化问题特有
  • 多段不连续区域——约束强烈非线性时出现

搞懂这个结构对算法设计很有用。比如你在NSGA-II里做交叉变异,如果知道非劣解集在决策空间里大致是一条光滑曲线,就可以针对性地设计交叉算子,提高搜索效率。

4.5 映射关系总结表

概念 决策空间 目标空间
元素 决策向量 x ∈ ℝⁿ 目标向量 f(x) ∈ ℝᵐ
可行域 Ω_可行(变量+约束) f(Ω_可行)(映射后区域)
非劣解集 P_S(决策空间中的点集) Pareto前沿(目标空间中的像)
映射特点 可以是多对一 不可逆(一般无单一起点)

下面这张SVG图把上述关系串起来了——我画的时候把决策空间放在左边,目标空间放在右边,中间用箭头表示映射函数 f(·)。

决策空间 → 目标空间 映射流程 决策空间 可行域 Ω_可行 非劣解集 P_S f( x ) 映射函数 目标空间 可行目标域 f(Ω_可行) Pareto 前沿 非劣解集 P_S 在决策空间中对应一条曲线,映射到目标空间就是 Pareto 前沿

4.6 如何在实际项目中应用这些概念

我习惯先理清决策空间和目标空间的维度,再用表格列出所有变量和约束。这样做的好处是:

  1. 发现冗余变量——如果一个变量的变化对任何目标都没影响,那它就不该出现在优化里。
  2. 定位约束冲突——两个约束可能直接矛盾,导致可行域为空。这种情况在目标空间中非常明显——你会发现所有候选点都落在不可行区。
  3. 理解Pareto前沿形状——非劣解集在决策空间中的连通性会影响MOEA的收敛难度。不连通的时候,算法容易陷入局部Pareto前沿。
一句话总结: 决策空间是你做了什么,目标空间是你得到了什么。可行域决定你有没有得选,非劣解集决定哪些选择是“不坏”的。

我记得有一次给团队做报告,我用两张图对比展示——左边是决策空间里的非劣解集散点,右边是目标空间里的Pareto前沿。项目经理立刻就看明白了:原来那些看起来性能差不多的最终解,在参数上差别很大。从那以后,我们团队每次出优化结果都会附带一张“决策空间→目标空间”的双图。

现在你自己做优化的时候,也试试这个习惯。把两个空间的映射关系刻到脑子里,很多困惑自然就解开了。