2. 非线性约束优化模型的基本要素

要建立一个可求解的非线性约束优化模型,必须把工程或业务问题“翻译”成四个彼此咬合的数学要素:决策变量、目标函数、约束条件(等式与不等式),以及由约束共同界定的可行域与其中的最优解。前三个要素决定模型长什么样,后两个概念决定模型解出来意味着什么。本节围绕这五个对象展开,并用一个可手算的二维示例贯穿说明。

一、决策变量:模型真正可以“动”的量

决策变量是建模者能够自主选择、且选择会改变目标与约束取值的量。它区别于参数(已知常数,如材料单价、设备额定功率)和中间量(由决策变量派生,如总重量、总成本)。判断一个量是否应设为决策变量,可以问三个问题:它是否可由我们决定?改变它是否影响目标?它是否出现在至少一个约束中?

以“设计一个圆柱形承压储罐”为例,若目标是使钢材用量(表面积)最小,同时要求容积不小于给定值、罐壁应力不超过许用值,则可取半径 r(m)与高度 h(m)为决策变量,写作向量形式 x = (r, h)。钢材密度、许用应力、设计容积都是参数,不进入决策向量。变量还要给出类型与取值范围:连续变量、整数变量(如壁厚只能取标准板厚档位)、以及物理上必须为正的隐含下界(r > 0, h > 0)。这一步若含糊,后续约束与求解都会失真。

二、目标函数:把“好坏”写成一个可比较的标量

目标函数 f(x) 把决策向量映射为实数,数值越小(或越大)表示方案越优。建模时的关键不是写出公式,而是确认三件事:方向(min 还是 max)、量纲(是否与约束中的量一致)、非线性来源(乘积项、幂次、三角函数、指数、对数、分式等)。

储罐示例中,用钢量正比于表面积,取

min  f(r, h) = 2πr² + 2πrh        (侧壁 + 上下底,忽略壁厚差异)

其中 2πr² 是二次项,2πrh 是双线性项,二者都使目标函数关于变量非线性。若同时关心造价与散热,可写成加权和 f = w₁·用钢量 + w₂·散热面积,但权重需归一化,否则量纲大的项会单方面主导优化方向。

三、约束条件:等式刻画“必须满足的平衡”,不等式刻画“允许的边界”

约束分两类。等式约束 h_i(x) = 0 通常来自守恒关系、几何关系或定义式,它把解限制在一个低维曲面上;不等式约束 g_j(x) ≤ 0(或 ≥ 0)来自容量上限、强度下限、几何可行性等,它把解限制在某个区域内。统一写成标准形式:

min  f(x)
s.t. h_i(x) = 0,   i = 1, …, m
     g_j(x) ≤ 0,   j = 1, …, p
     x ∈ X(变量界与类型)

储罐示例的具体约束可写为:

  • 容积要求(不等式):g₁ = πr²h − V₀ ≥ 0,即 −πr²h + V₀ ≤ 0,其中 V₀ 为设计容积;
  • 应力限制(不等式):薄壁环向应力 σ = Pr/t ≤ [σ],整理为 g₂ = Pr − [σ]t ≤ 0,此处 t 为壁厚参数;
  • 几何比例(不等式):1 ≤ h/(2r) ≤ 4,拆成两条线性不等式;
  • 变量界:r ≥ 0.5, h ≥ 0.5。

注意 g₁ 中含 r²h,是典型的三次非线性约束;g₂ 关于 r 线性,但若壁厚也设为变量并与压力耦合,就会变成非线性。约束的符号方向必须与物理含义严格对应:容积“不小于”写成 ≥ 0 后,转成标准形要变号,这是初学者最常见的错误来源。

模型三要素 决策变量 x r(半径)、h(高度) 连续 / 整数 · 含变量界 目标函数 f(x) min 2πr² + 2πrh 二次项 + 双线性项 约束条件 等式 hᵢ(x)=0:守恒/几何 不等式 gⱼ(x)≤0:容量/强度 g₁ = −πr²h + V₀ ≤ 0 g₂ = Pr − [σ]t ≤ 0 1 ≤ h/(2r) ≤ 4 可行域与最优解(r–h 平面) r h 可行域 Ω 所有约束同时满足的 x 集合 g₁:容积下限 g₂:应力上限 h/(2r) 比例界 f 等值线(越向内越小) x* 最优解 等值线与边界相切 不可行点(违反 g₂) 约束边界 目标等值线

四、可行域:约束共同“切”出来的解空间

把所有等式与不等式约束同时满足的点收集起来,得到可行域 Ω = {x | h_i(x)=0, g_j(x)≤0, x∈X}。可行域可能是一个区域、一条曲线(等式约束多时降维)、一个孤立点,也可能是空集。空集意味着约束互相矛盾,例如同时要求“容积 ≥ 10 m³”和“半径 ≤ 0.3 m、高度 ≤ 1 m”,此时无论怎么优化都无解,必须先回到约束本身检查。

可行域的几何形态直接决定求解难度:凸可行域配合凸目标,局部最优即全局最优;而非线性约束常产生非凸可行域,出现多个局部极小。储罐示例中,g₁ 的边界 πr²h = V₀ 是一条双曲线型曲线,可行域位于其外侧,整体并不凸,因此不能默认“求出的解就是全局最优”。

五、最优解:可行域内使目标达到极值的点

最优解 x* 需同时满足两个条件:可行性(x* ∈ Ω)与最优性(对任意 x ∈ Ω,有 f(x*) ≤ f(x))。在几何上,它表现为目标函数等值线与可行域边界的相切点,或可行域内部的驻点。若最优点落在边界上,称该约束为起作用约束(active constraint);落在内部则约束不起作用。判断哪些约束起作用,是理解解的结构、做灵敏度分析的关键。

以一组示例参数说明:设 V₀ = 2 m³,暂不考虑应力与比例约束,仅保留 πr²h ≥ 2 与 r, h > 0。由拉格朗日条件可得最优时 h = 2r(等高等于直径),代入容积等式得 r ≈ 0.683 m,h ≈ 1.366 m,此时最小表面积约 8.8 m²。这一结果属于按公式推导的示例计算,用于说明“最优解往往使某个约束恰好取等号”这一规律,而非实测数据。若再加入应力约束 Pr ≤ [σ]t,当压力较大时该约束会变为起作用约束,最优点被推到应力边界上,半径与高度的比例随之改变——这正是非线性约束优化中“约束切换”的典型现象。

建模自查:①每个决策变量是否都有明确的物理含义与单位?②目标方向与量纲是否统一?③每条约束的符号方向是否与物理语义一致?④等式约束是否过多导致可行域退化为低维甚至空集?⑤是否检查过可行域的非凸性,从而对“局部最优”保持警惕?
常见误区:把参数误设为决策变量,导致模型维度虚高;把“≥”约束直接照抄进标准形而不变号;只验证解的目标值而不验证其可行性;以及在非凸问题上直接采用局部求解器的输出作为全局最优结论。