当优化一个目标时,另一个目标需要付出代价
具有两个性能目标的系统——比如,子系统 A 性能 (P_A) 和子系统 B 性能 (P_B)——拥有一个可行域:在共享资源约束下可以实现的 (P_A, P_B) 对的集合。
在可行域内,帕累托边界是一条边界,在这条边界上,你不能在不降低 P_B 的情况下改进 P_A,反之亦然。这条边界上的每一点都是有效的系统最优值,取决于分配给每个目标的权重。
组件 A 最优值:在不考虑 P_B 的情况下最大化 P_A。这位于最右边的可行点——在帕累托边界上,P_A 被最大化而 P_B 被牺牲的极端处。
组件 B 最优值:在不考虑 P_A 的情况下最大化 P_B。类似地,在边界顶部,P_B 被最大化。
系统最优值:在帕累托边界的内部某处,平衡两个目标。它位于两个组件最优值之间。两个组件都不运行在各自的最大值——但整个系统表现最好。
Hamming 的微分分析仪:改进的放大器最大化了 P_A(放大器性能),但将工作点移出了接口设计范围,降低了 P_B(接地/干扰性能)。系统最优值需要降低放大器性能以保持在接口的容差范围内。
定位系统最优值
一个系统有两个子系统。子系统 A 的性能 P_A = 2x − x²,对于 x ∈ [0, 2] 可实现。子系统 B 的性能 P_B = 2(1−x) − (1−x)²,在相同的 x 范围内可实现。共享变量 x 代表如何在子系统之间分配共享资源(比如带宽或功率)。总性能:P_total = P_A + P_B。
可行域与有约束力的约束
受约束的系统在参数空间中的可行域 F 内运行。约束定义了 F 的边界。
有约束力的约束:在最优值处以等式满足的约束(最优值位于约束边界上)。
无约束力的约束:在最优值处以严格不等式满足的约束(最优值位于边界内的严格内部)。
最大原理(来自优化理论的一般结果):对于凸可行域上的线性目标,最优值总是位于可行域的顶点——即,在约束边界的交点处。除非目标在某个方向上是平坦的(常数),否则最优值永远不会位于内部。
Hamming 的规则 2 用几何术语表示:系统的边界条件(约束)通常比边界内的最优值更重要,因为最优值位于边界上,而不是内部。正确设计约束结构决定了可行域所在的位置;一旦您有了该区域,最优值就在其边界上。
接口不是 A 或 B 单独的属性——它属于联合系统。这就是为什么组件级别的测试(单独测试 A,单独测试 B)会错过接口故障。约束仅在联合参数空间中可见。
哪个约束是有约束力的?
一个通信系统有三个设计变量:发射功率 P(瓦特),带宽 B(MHz),噪声系数 NF(分贝)。数据速率 C = B · log₂(1 + P/(N₀ · B · 10^(NF/10))),其中 N₀ 是噪声底线。
系统有三个约束:P ≤ 10 W(功率预算),B ≤ 20 MHz(频谱分配),NF ≤ 6 dB(硬件限制)。目标是最大化 C。
接口作为共享约束
将两个子系统 A 和 B 建模为在各自的参数空间 P_A 和 P_B 中运行。它们之间的接口定义了一个共享约束:P_A 中的参数与 P_B 中的参数之间的关系,系统运行必须满足这一关系。
示例:在 Hamming 的微分分析仪中,放大器(子系统 A)输出电流 I_out。接地电路(子系统 B)可以容忍最大电流 I_max。接口约束:I_out ≤ I_max。
当您改进子系统 A(更好的放大器)时,I_out 增加。如果 I_out > I_max,接口约束被违反——两个子系统不再处于它们联合参数空间的有效运行区域。
接口设计原理:接口约束定义有效和无效运行之间的边界。组件设计师必须知道这个边界。系统工程师必须验证当任何组件改变时,它不被违反。
接口不是 A 或 B 单独的属性——它属于联合系统。这就是为什么组件级别的测试(单独测试 A,单独测试 B)会错过接口故障。约束仅在联合参数空间中可见。
接口故障分析
一个软件系统有两个服务:服务 A(数据摄入)和服务 B(数据处理)。服务 A 向消息队列写入记录;服务 B 从队列读取。接口约束:消息队列最多可以容纳 10,000 条消息。服务 A 的吞吐量:T_A 消息/秒。服务 B 的吞吐量:T_B 消息/秒。