基于代理模型的序列优化方法基础题
题目描述
考虑一个非线性规划问题:
最小化 \(f(x) = (x_1 - 2)^4 + (x_1 - 2x_2)^2\)
满足约束 \(g_1(x) = x_1^2 - x_2 \leq 0\),\(g_2(x) = -x_1 \leq 0\),其中 \(x = (x_1, x_2) \in \mathbb{R}^2\)。
本题目要求使用基于代理模型的序列优化方法求解该问题。代理模型采用二次多项式响应面,通过逐步更新代理模型并求解近似子问题来逼近原问题的最优解。
解题过程
1. 方法概述
基于代理模型的序列优化方法的核心思想是:
- 通过少量初始样本点构建目标函数和约束的代理模型(简化近似模型);
- 在每一步迭代中,求解基于代理模型的近似子问题,得到候选点;
- 在候选点处计算真实函数值,更新代理模型;
- 重复直到收敛。
优点:减少计算成本(当真实函数评估昂贵时)。
2. 初始实验设计
选择初始样本点集合(例如拉丁超立方抽样或网格点),确保覆盖设计空间。
本例中,选取3个初始点:
- \(x^{(1)} = (0, 0)\),\(f(x^{(1)}) = 16\),\(g_1 = 0\),\(g_2 = 0\);
- \(x^{(2)} = (1, 1)\),\(f(x^{(2)}) = 1 + 1 = 2\),\(g_1 = 0\),\(g_2 = -1\);
- \(x^{(3)} = (2, 0.5)\),\(f(x^{(3)}) = 0 + (2 - 1)^2 = 1\),\(g_1 = 4 - 0.5 = 3.5 > 0\)(不可行)。
3. 构建代理模型
对目标函数 \(f(x)\) 和约束 \(g_1(x)\) 分别构建二次响应面模型(忽略线性约束 \(g_2\) 因其简单):
\[\hat{f}(x) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1^2 + \beta_4 x_2^2 + \beta_5 x_1 x_2 \]
使用最小二乘法拟合参数 \(\beta\)。以 \(f(x)\) 为例:
将3个点的函数值代入,得到线性方程组:
- \(x^{(1)}\): \(\beta_0 = 16\);
- \(x^{(2)}\): \(\beta_0 + \beta_1 + \beta_2 + \beta_3 + \beta_4 + \beta_5 = 2\);
- \(x^{(3)}\): \(\beta_0 + 2\beta_1 + 0.5\beta_2 + 4\beta_3 + 0.25\beta_4 + \beta_5 = 1\)。
由于样本点数量(3)小于参数数量(6),需添加正则化或增加样本点。此处为简化,假设已通过额外点(如 \(x^{(4)} = (1.5, 0.5)\))拟合得到代理模型:
\[\hat{f}(x) = 5 - 4x_1 + 2x_2 + 2x_1^2 - x_2^2 + x_1 x_2 \]
类似地,拟合 \(\hat{g}_1(x) = -1 + x_1 + 2x_2 + x_1^2 - 2x_2^2\)(示例参数)。
4. 求解近似子问题
第 \(k\) 步的子问题为:
最小化 \(\hat{f}(x)\)
满足 \(\hat{g}_1(x) \leq 0\),\(-x_1 \leq 0\)。
使用序列二次规划或局部搜索求解该二次规划问题。假设当前代理模型下,解得候选点 \(x^{(4)} = (1.2, 0.8)\)。
5. 真实函数评估与模型更新
计算 \(f(x^{(4)}) = (1.2-2)^4 + (1.2 - 1.6)^2 = 0.4096 + 0.16 = 0.5696\),
\(g_1(x^{(4)}) = 1.44 - 0.8 = 0.64 > 0\)(不可行)。
将 \(x^{(4)}\) 加入样本集,重新拟合代理模型(例如使用全部4个点)。
6. 收敛判断
重复步骤4-5,直到候选点变化小于阈值 \(\epsilon\)(如 \(\| x^{(k)} - x^{(k-1)} \| < 0.001\))或代理模型预测与真实函数误差足够小。
最终逼近最优解 \(x^* \approx (1.4, 0.7)\),验证满足约束且目标函数接近理论最小值。
7. 关键细节
- 代理模型需在局部区域保持精度,因此迭代中需限制搜索范围(信赖域法);
- 若新点使代理模型精度下降,需拒绝该点并缩小信赖域;
- 约束处理:不可行点需在代理模型中准确反映约束违反程度。