非线性规划中的序列响应面法(Sequential Response Surface Method, SRSM)基础题
题目描述
考虑以下非线性规划问题:
最小化 \(f(x) = (x_1 - 3)^4 + (x_1 - 3x_2)^2\)
约束条件:
\(g_1(x) = x_1^2 + x_2^2 - 4 \le 0\)
\(h_1(x) = x_1 - x_2^2 - 1 = 0\)
其中, \(x = (x_1, x_2) \in \mathbb{R}^2\)。
这是一个小规模的、同时包含非线性等式和不等式约束的优化问题。目标函数 \(f(x)\) 是一个多项式函数,是非凸的。约束 \(g_1(x)\) 定义了一个圆形可行域的内部(包括边界),而 \(h_1(x)\) 是一个非线性等式约束。我们将使用序列响应面法(SRSM) 来求解此问题。SRSM的核心思想是:在当前迭代点附近,利用实验设计和拟合技术,为目标函数和约束函数构建简单的代理模型(通常是低阶多项式,如一次或二次模型)。然后,在代理模型上求解一个更简单的近似子问题,得到新的迭代点。不断重复这个过程,直到收敛。
解题过程循序渐进讲解
步骤1:方法概述与初始化
序列响应面法属于基于代理模型的优化方法。它不直接处理复杂的原函数,而是通过迭代地构建和优化局部近似模型来逼近最优解。
- 核心循环:在每一次迭代中,围绕当前点 \(x^k\) 设计一组采样点,计算这些点上的真实函数值(\(f, g, h\)),然后用这些数据拟合出近似的函数模型 \(\tilde{f}^k, \tilde{g}^k, \tilde{h}^k\)。
- 子问题:求解以这些近似模型构建的优化子问题,得到候选点 \(x_c^k\)。
- 收敛判断:检查候选点是否满足收敛条件(如函数值变化、步长变化足够小)。
- 迭代更新:如果未收敛,将当前点移动到候选点或其附近的一个点(可能通过线搜索),开始下一次迭代。
我们需要初始化。假设我们通过某种方式(例如,观察等式约束)获得一个初始可行点。让我们尝试找到一个满足 \(h_1(x)=0\) 且近似满足 \(g_1(x) \le 0\) 的点。令 \(x_1 = x_2^2 + 1\)。代入 \(g_1\): \((x_2^2+1)^2 + x_2^2 -4 \le 0\)。尝试 \(x_2 = 0.5\),则 \(x_1 = 1.25\)。计算 \(g_1(1.25, 0.5) = 1.5625+0.25-4 = -2.1875 < 0\),满足不等式约束。因此,我们选择初始点 \(x^0 = (1.25, 0.5)^T\)。设置收敛容差 \(\epsilon = 10^{-3}\),迭代计数器 \(k=0\)。
步骤2:构建局部响应面(代理模型)
在当前点 \(x^k\) 周围定义一个信赖域或采样区域。通常是一个超立方体,例如 \(\Delta^k = 0.5\)。我们使用经典的中心复合设计(CCD) 或更简单的全因子设计来生成采样点。对于2维问题,一个简单有效的方法是使用轴向点设计。
-
设计采样点:以 \(x^k\) 为中心,在每维坐标的正负方向各取一个点,步长为信赖域半径 \(\Delta^k\)。
- 点0(中心点): \(x_0 = x^k = (1.25, 0.5)\)
- 点1(x1正向): \(x_1 = (1.25+0.5, 0.5) = (1.75, 0.5)\)
- 点2(x1负向): \(x_2 = (1.25-0.5, 0.5) = (0.75, 0.5)\)
- 点3(x2正向): \(x_3 = (1.25, 0.5+0.5) = (1.25, 1.0)\)
- 点4(x2负向): \(x_4 = (1.25, 0.5-0.5) = (1.25, 0.0)\)
这样就得到了5个采样点。为了提高模型精度,特别是为了拟合二次项,通常需要更多点(如CCD需要9个点),但为了讲解简洁,我们先用这5个点拟合一个线性模型。
-
计算真实响应:在每一个采样点 \(x_i\) 处,调用“真实”的黑箱函数,计算 \(f(x_i), g_1(x_i), h_1(x_i)\)。
- 以 \(x^0 = (1.25, 0.5)\) 为例:
\(f = (1.25-3)^4 + (1.25-3*0.5)^2 = (-1.75)^4 + (-0.25)^2 = 9.3789 + 0.0625 = 9.4414\)
\(g_1 = 1.5625+0.25-4 = -2.1875\)
\(h_1 = 1.25 - 0.25 -1 = 0\) (满足)
对其他点进行类似计算,得到数据表。
- 以 \(x^0 = (1.25, 0.5)\) 为例:
-
拟合近似模型:我们用多元线性回归拟合模型 \(\tilde{f}^k(x) = a_0 + a_1 x_1 + a_2 x_2\),对 \(\tilde{g}_1^k, \tilde{h}_1^k\) 做同样处理。将采样点的坐标和函数值代入,用最小二乘法求解系数 \(a_0, a_1, a_2\)。假设我们对目标函数拟合得到(计算过程略):
\(\tilde{f}^0(x) = 8.5 + 2.0*(x_1-1.25) - 1.0*(x_2-0.5)\)。
类似地,对不等式约束拟合: \(\tilde{g}_1^0(x) = -2.19 + 2.5*(x_1-1.25) + 1.0*(x_2-0.5)\)。
对等式约束拟合: \(\tilde{h}_1^0(x) = 0.0 + 1.0*(x_1-1.25) - 1.0*(x_2-0.5)\)。(注意:在中心点 \(h_1=0\),且由于 \(h_1\) 本身是线性的,拟合模型应与其一阶泰勒展开一致)
步骤3:求解近似子问题
现在,我们在当前信赖域内求解基于代理模型的优化子问题。通常,信赖域约束用一个简单的界约束来表示。
近似子问题(第k次迭代):
最小化 \(\tilde{f}^k(x)\)
约束条件:
\(\tilde{g}_1^k(x) \le 0\)
\(\tilde{h}_1^k(x) = 0\)
\(|x_i - x_i^k| \le \Delta^k, \quad i=1,2\) (信赖域约束,保证在局部近似有效的区域内搜索)
代入我们拟合的模型:
最小化 \(8.5 + 2.0(x_1-1.25) - 1.0(x_2-0.5)\)
约束条件:
\(-2.19 + 2.5(x_1-1.25) + 1.0(x_2-0.5) \le 0\)
\(0.0 + 1.0(x_1-1.25) - 1.0(x_2-0.5) = 0\)
\(|x_1 - 1.25| \le 0.5, \quad |x_2 - 0.5| \le 0.5\)
求解此线性规划/线性约束问题:
- 从等式约束可得: \(x_1 - 1.25 = x_2 - 0.5\) 即 \(x_1 = x_2 + 0.75\)。
- 代入不等式约束: \(-2.19 + 2.5(x_2+0.75-1.25) + 1.0(x_2-0.5) \le 0\)
\(=> -2.19 + 2.5(x_2-0.5) + 1.0(x_2-0.5) \le 0\)
\(=> -2.19 + 3.5(x_2-0.5) \le 0\)
\(=> 3.5(x_2-0.5) \le 2.19\)
\(=> x_2-0.5 \le 0.626\)
\(=> x_2 \le 1.126\)
结合信赖域约束 \(0 \le x_2 \le 1.0\) 和上述推导, \(x_2\) 的上限是1.0。 - 目标函数变为: \(8.5 + 2.0((x_2+0.75)-1.25) - 1.0(x_2-0.5) = 8.5 + 2.0(x_2-0.5) -1.0(x_2-0.5) = 8.5 + 1.0*(x_2-0.5)\)。
- 为了使目标函数最小化,我们希望 \(x_2\) 尽可能小。其下限由信赖域约束决定: \(x_2 \ge 0\)。同时,我们还需检查当 \(x_2=0\) 时, \(x_1 = 0.75\),代入原不等式约束模型 \(\tilde{g}_1^0\) 计算: \(-2.19 + 2.5*(0.75-1.25) + 1.0*(0-0.5) = -2.19 -1.25 -0.5 = -3.94 < 0\),满足。因此,最优解在信赖域的边界上。
- 子问题的解: \(x_c^0 = (x_1, x_2) = (0.75, 0.0)\)。
步骤4:接受性检验与迭代更新
我们得到了候选点 \(x_c^0 = (0.75, 0.0)\)。
- 计算真实函数值:
\(f(x_c^0) = (0.75-3)^4 + (0.75-0)^2 = (-2.25)^4 + 0.5625 = 25.6289 + 0.5625 = 26.1914\)
\(g_1(x_c^0) = 0.5625 + 0 -4 = -3.4375 < 0\)
\(h_1(x_c^0) = 0.75 - 0 -1 = -0.25 \neq 0\) (等式约束不满足!) - 分析:候选点不满足原始等式约束。这是因为我们用线性模型近似非线性等式约束,在远离采样中心的点,近似误差可能很大。这是SRSM的一个关键挑战。为了保证可行性,我们需要在子问题中更严格地处理约束近似,或者引入约束违规度量。
- 常用策略:我们不直接接受 \(x_c^0\),而是将其作为一个搜索方向。可以沿方向 \(d^k = x_c^k - x^k\) 进行一维搜索(线搜索),寻找一个能减少目标函数且使约束违规(特别是等式约束违规)降低的新点。更实用的SRSM会在子问题中引入约束裕度或使用非线性规划求解器直接处理带近似模型的约束子问题。为了简化,我们演示一种简单处理:由于候选点违反等式约束,我们可能会收缩信赖域半径 \(\Delta\),重新构建更精确的局部模型(例如,用二次模型),或者通过添加罚函数将约束 violation 放入目标。
- 迭代继续:在实际算法中,我们会判断目标函数下降和约束满足情况,决定是否接受该点,并更新信赖域半径 \(\Delta^{k+1}\)。如果目标函数下降充分且约束满足好,则接受该点并扩大信赖域;否则,拒绝该点并缩小信赖域,可能用相同的 \(x^k\) 但更小的 \(\Delta\) 重新构建响应面。
步骤5:收敛判断
假设经过若干次迭代后,我们到达一个点 \(x^*\)。
收敛条件通常包括:
- 步长足够小: \(\| x^{k+1} - x^k \| < \epsilon\)。
- 函数值变化足够小: \(|f(x^{k+1}) - f(x^k)| < \epsilon\)。
- 约束满足:等式约束违反度 \(|h_1(x^k)| < \epsilon\),不等式约束满足 \(g_1(x^k) \le \epsilon\)(其中 \(\epsilon\) 是一个小的正数容差)。
- 代理模型近似误差:在信赖域内,代理模型与真实函数的差异很小。
当这些条件满足时,算法终止,输出 \(x^k\) 作为近似最优解。
总结
序列响应面法(SRSM)通过迭代地构建和优化局部代理模型,将复杂的非线性规划问题转化为一系列更简单的(通常是线性或二次的)规划问题。其成功关键在于:
- 实验设计:在当前位置周围有效地选择采样点,以构建有代表性的局部模型。
- 模型拟合:选择合适的模型形式(线性、二次、径向基函数等)来平衡精度和计算成本。
- 子问题管理:合理地定义和求解近似子问题,并处理约束。
- 全局迭代管理:通过信赖域半径和接受规则控制迭代过程,确保收敛。
本题示例展示了基本的线性响应面构建和子问题求解过程。实践中,对于非线性问题,二阶(二次)响应面模型能提供更好的局部近似,但需要更多的采样点(如中心复合设计)。序列响应面法尤其适用于目标或约束函数计算代价高昂的优化问题(如基于仿真、实验的优化),因为其主要计算成本在于采样点的真实函数评估,而子问题的求解相对廉价。