基于Kriging代理模型的序列优化方法进阶题:全局探索与局部开发的平衡策略
字数 6882 2025-12-14 16:23:30

基于Kriging代理模型的序列优化方法进阶题:全局探索与局部开发的平衡策略


题目描述

考虑以下约束非线性规划问题:

\[\begin{aligned} \min_{x \in \mathbb{R}^n} &\quad f(x) \\ \text{s.t.} &\quad g_i(x) \leq 0, \quad i=1,\ldots,m \\ &\quad h_j(x) = 0, \quad j=1,\ldots,p \\ &\quad x_L \leq x \leq x_U \end{aligned} \]

其中,\(f(x)\)\(g_i(x)\)\(h_j(x)\) 均为计算代价高昂的隐式黑箱函数(例如,每次函数评估需要进行一次耗时的有限元仿真或物理实验),且可能高度非线性、非凸、多峰。目标是在有限的函数评价次数内,找到一个近似全局最优的可行解。

本题目要求你设计并阐述一种基于Kriging(高斯过程)代理模型的序列优化方法。该方法需在全局探索(探索未知区域,避免陷入局部最优)和局部开发(在可能有希望的区域精细搜索)之间进行有效平衡,并处理不等式和等式约束。我们将该方法命名为自适应平衡的Kriging序列优化(Adaptively Balanced Kriging Sequential Optimization, ABKSO)


解题过程循序渐进讲解

第一步:理解核心挑战与Kriging基础

  1. 核心挑战:当目标函数和约束函数的计算成本极高时,传统的基于梯度的迭代优化算法(如SQP、内点法)或需要大量采样的元启发式算法(如遗传算法)通常不可行,因为它们在达到收敛前可能需要成千上万次函数评估。
  2. 代理模型(Surrogate Model):为解决此问题,我们使用一个计算廉价的数学模型来近似昂贵的真实函数。Kriging(又称高斯过程回归,GPR)是一种强大的代理模型,它不仅给出未知点的预测值,还给出预测的不确定性(方差)。
  3. Kriging 基本原理回顾
    • 假设函数 \(y(x)\) 是高斯过程的一个实现:\(y(x) \sim GP(\mu, k(x, x'))\)。其中,\(\mu\) 是常数均值,\(k(x, x')\) 是协方差函数(核函数),通常选用如平方指数核 \(k(x, x') = \sigma^2 \exp\left(-\sum_{l=1}^{n} \theta_l (x_l - x'_l)^2 \right)\)
    • 给定一组已评估的样本点(设计点)\(X = \{x^{(1)}, \ldots, x^{(N)}\}\) 及其对应的函数值 \(Y = \{y^{(1)}, \ldots, y^{(N)}\}\),对于一个新的候选点 \(x^*\),Kriging给出预测值 \(\hat{y}(x^*)\) 和预测方差 \(s^2(x^*)\)
    • \(\hat{y}(x^*)\) 提供了对函数值的最佳线性无偏估计(开发信息)。
    • \(s^2(x^*)\) 量化了预测的不确定性,在已采样点附近方差小,在远离采样点的区域方差大(探索信息)。

第二步:构建ABKSO算法的整体框架

ABKSO是一个迭代算法,每次迭代包含以下关键步骤:

  1. 初始化采样:在变量边界内,通过拉丁超立方抽样(LHS)或其它空间填充设计,生成一个初始设计点集 \(X_{\text{init}}\),并评估昂贵函数 \(f, g_i, h_j\) 得到初始数据集 \(D\)
  2. 构建代理模型:基于当前数据集 \(D\),为目标函数 \(f\)每个约束函数\(g_i, h_j\))分别构建独立的Kriging模型。对于等式约束 \(h_j(x)=0\),通常将其视为两个不等式约束 \(h_j(x) \leq 0\)\(-h_j(x) \leq 0\) 来处理,或者直接将其预测均值与0的偏差纳入可行性度量。
  3. 定义自适应平衡采集函数(Acquisition Function):这是算法的核心。采集函数 \(A(x)\) 利用Kriging模型提供的预测 \(\hat{y}(x)\) 和不确定性 \(s(x)\) ,构造一个容易优化的辅助函数。其最大值点指示了下一个最有价值的评估点。我们将设计一个能自适应平衡探索与开发的采集函数。
  4. 求解子优化问题:在变量边界内,优化采集函数 \(A(x)\) (这是一个计算廉价的、由代理模型定义的确定性函数),得到下一个评估点 \(x_{\text{next}}\)
  5. 昂贵函数评估与更新:在 \(x_{\text{next}}\) 处进行昂贵的真实函数(\(f, g_i, h_j\))评估,将新数据点加入数据集 \(D\),并更新所有Kriging模型。
  6. 收敛判断:检查是否满足停止准则(如达到最大函数评价次数、连续多次迭代改进小于阈值、采集函数最大值低于阈值等)。若未满足,返回步骤3。

第三步:详细设计自适应平衡采集函数

这是ABKSO的最核心创新点。我们采用改进的期望改进(Expected Improvement, EI)与概率可行性加权相结合的策略。

  1. 经典期望改进(EI):用于无约束优化。定义当前最佳目标函数观测值为 \(f_{\text{min}} = \min \{ f(x^{(1)}), \ldots, f(x^{(N)}) \}\)。在点 \(x\) 处的改进量定义为 \(I(x) = \max(0, f_{\text{min}} - Y(x))\),其中 \(Y(x)\) 是服从 \(N(\hat{f}(x), s_f^2(x))\) 的高斯随机变量(\(\hat{f}\)\(s_f\) 是目标函数Kriging模型的预测均值和标准差)。

    • 期望改进为:\(EI(x) = E[I(x)] = (f_{\text{min}} - \hat{f}(x)) \Phi(Z) + s_f(x) \phi(Z)\),其中 \(Z = \frac{f_{\text{min}} - \hat{f}(x)}{s_f(x)}\)\(\Phi\)\(\phi\) 分别是标准正态分布的累积分布函数和概率密度函数。
    • \(EI(x)\)第一项 \((f_{\text{min}} - \hat{f}(x)) \Phi(Z)\) 偏向开发(在预测值低的区域有高期望)。
    • \(EI(x)\)第二项 \(s_f(x) \phi(Z)\) 偏向探索(在不确定性高的区域有高期望)。
  2. 处理约束:概率可行性

    • 对于每个不等式约束 \(g_i(x) \leq 0\),其Kriging模型给出预测均值 \(\hat{g}_i(x)\) 和标准差 \(s_{g_i}(x)\)。在点 \(x\) 处满足该约束的概率为:\(P[G_i(x) \leq 0] = \Phi\left( \frac{0 - \hat{g}_i(x)}{s_{g_i}(x)} \right)\)
    • 对于等式约束 \(h_j(x)=0\),可近似为满足的概率:\(P[H_j(x)=0] \approx \exp\left( -\frac{\hat{h}_j(x)^2}{2 s_{h_j}^2(x)} \right)\)\(\phi\left( \frac{0 - \hat{h}_j(x)}{s_{h_j}(x)} \right) / s_{h_j}(x)\)(一个简化的处理)。
    • \(x\) 的总概率可行性(PF)定义为所有约束满足概率的乘积:

\[ PF(x) = \prod_{i=1}^{m} \Phi\left( \frac{-\hat{g}_i(x)}{s_{g_i}(x)} \right) \times \prod_{j=1}^{p} \left[ \phi\left( \frac{-\hat{h}_j(x)}{s_{h_j}(x)} \right) / s_{h_j}(x) \right] \]

    这里假设了各约束的预测相互独立(为简化计算)。一个更鲁棒的做法是取 $ \min $ 或使用其他聚合方式,但乘积能平滑地惩罚违反任何约束的情况。
  1. 自适应平衡机制
    • 经典约束EI通常写作 \(cEI(x) = EI(x) \times PF(x)\)。然而,在优化的不同阶段,我们对探索和开发的偏好应不同。
    • 早期:应更注重全局探索,以找到有潜力的可行区域,避免过早陷入局部最优。
    • 后期:当可能的最优区域被定位后,应更注重局部开发,在可行域内精细寻找最优解。
    • 实现:我们引入一个自适应平衡因子 \(\beta_k \in [0, 1]\),其中 \(k\) 是迭代次数。
      • \(\beta_k\) 从接近1的值开始(初期重探索),随着迭代逐渐衰减到接近0的值(后期重开发)。
      • 一种简单的衰减策略是:\(\beta_k = \beta_{\text{start}} \times \gamma^{k}\),其中 \(\gamma \in (0, 1)\) 是衰减率,\(\beta_{\text{start}}\) 是初始值(如0.8)。
    • 改进的采集函数

\[ A(x) = \left[ \beta_k \cdot s_f(x) + (1-\beta_k) \cdot \max(EI(x), \epsilon) \right] \times PF(x) \]

    这里做了一些关键修改:
    a. 将EI分解为探索和开发两部分,并用 $ \beta_k $ 加权。
    b. $ s_f(x) $ 直接代表**纯探索**项(预测不确定性)。
    c. $ EI(x) $ 本身是探索与开发的混合,但更偏向开发(尤其当 $ s_f(x) $ 较小时)。我们用 $ \max(EI(x), \epsilon) $ 保证其正值,$ \epsilon $ 是一个小正数。
    d. 当 $ \beta_k $ 较大时,$ s_f(x) $ 权重高,算法更倾向于评估不确定性高(未充分探索)的区域。
    e. 当 $ \beta_k $ 较小时,$ EI(x) $ 权重高,算法更倾向于在预测目标值低且可行的区域(开发)进行精细搜索。
    f. 始终用 $ PF(x) $ 加权,以确保搜索偏向可行区域。

第四步:算法流程与关键步骤详解

  1. 输入:变量边界 \([x_L, x_U]\),最大函数评价次数 \(N_{\max}\),初始样本数 \(N_{\text{init}}\),平衡因子初始值 \(\beta_{\text{start}}\) 和衰减率 \(\gamma\)
  2. 步骤1:初始化
    • 使用LHS生成 \(N_{\text{init}}\) 个初始点 \(X_{\text{init}}\)
    • 评估所有初始点的真实昂贵函数值,形成初始数据集 \(D = \{(x^{(i)}, f^{(i)}, g_1^{(i)}, \ldots, g_m^{(i)}, h_1^{(i)}, \ldots, h_p^{(i)})\}_{i=1}^{N_{\text{init}}}\)
    • 设置迭代计数器 \(k = 0\),函数评价计数 \(N_{\text{eval}} = N_{\text{init}}\)
  3. 步骤2:主循环(当 \(N_{\text{eval}} < N_{\max}\) 且未满足其他收敛条件时):
    a. 构建/更新Kriging模型
    * 使用 \(D\) 中所有点的 \(x\)\(f\) 数据,训练目标函数Kriging模型 \(\mathcal{M}_f\)(通过最大似然估计优化核函数超参数 \(\theta_l, \sigma^2\))。
    * 同理,为每个约束函数 \(g_i, h_j\) 训练独立的Kriging模型 \(\mathcal{M}_{g_i}, \mathcal{M}_{h_j}\)
    b. 计算自适应平衡因子\(\beta_k = \beta_{\text{start}} \times \gamma^{k}\)
    c. 构建采集函数 \(A(x)\)
    * 从 \(D\) 中找出当前最佳可行观测目标值 \(f_{\text{min}}\)(如果无可行点,则 \(f_{\text{min}}\) 可取一个很大的数,或定义 \(PF(x)\) 为软约束,这里假设至少有一个可行点)。
    * 对于任意测试点 \(x\),利用模型 \(\mathcal{M}_f\) 计算 \(\hat{f}(x)\)\(s_f(x)\),进而计算 \(EI(x)\)
    * 利用所有约束模型计算 \(PF(x)\)
    * 按公式 \(A(x) = \left[ \beta_k \cdot s_f(x) + (1-\beta_k) \cdot \max(EI(x), \epsilon) \right] \times PF(x)\) 合成。
    d. 优化采集函数
    * 求解子优化问题:\(x_{\text{next}} = \arg\max_{x_L \leq x \leq x_U} A(x)\)
    * 由于 \(A(x)\) 是多峰、非凸但计算廉价的函数,可采用全局优化算法(如多起点拟牛顿法、差分进化等)来寻找其全局最大值。这是“廉价”的优化。
    e. 昂贵函数评估与数据更新
    * 在 \(x_{\text{next}}\) 处调用昂贵函数,获得 \(f_{\text{new}}, g_{i,\text{new}}, h_{j,\text{new}}\)
    * \(N_{\text{eval}} \leftarrow N_{\text{eval}} + 1\)
    * 将新数据点加入 \(D\)
    f. 迭代更新\(k \leftarrow k + 1\)
  4. 步骤3:输出结果
    • 循环结束后,从数据集 \(D\) 的所有可行点中,选择目标函数值最小的点 \(x^*_{\text{best}}\) 作为最终解。

第五步:算法特点与讨论

  1. 自适应平衡:通过衰减因子 \(\beta_k\),ABKSO在优化早期(\(\beta_k\) 大)强调探索(高 \(s_f(x)\) 区域),有助于发现全局有希望的可行盆地;在优化后期(\(\beta_k\) 小)强调开发(高 \(EI(x)\) 区域),有助于在已发现的盆地内快速收敛到局部最优。这比固定权重的采集函数(如纯EI或纯上置信界UCB)更灵活。
  2. 约束处理:通过概率可行性 \(PF(x)\) 将约束信息自然地集成到采集函数中,引导搜索趋向可行域。对于高度非线性的约束,Kriging模型能有效捕捉其边界形状。
  3. 计算效率:主要的计算成本在于每次迭代的昂贵函数评估。Kriging模型的训练和采集函数的优化虽然也需要计算,但相对于昂贵函数评估,其成本通常可以接受。模型训练复杂度为 \(O(N^3)\),其中 \(N\) 是已有点的数量,当 \(N\) 很大时可采用稀疏近似等方法。
  4. 停止准则扩展:除了最大评价次数,还可以监控最佳可行目标值的变化、采集函数最大值的大小(若 \(\max A(x)\) 非常小,说明进一步改进的期望很低)等。

总结:你设计的ABKSO算法,通过结合Kriging代理模型、改进的自适应平衡采集函数(混合了纯探索、期望改进和概率可行性),为昂贵黑箱约束优化问题提供了一个系统的求解框架。它智能地分配有限的昂贵函数评估预算,在探索整个设计空间和开发有希望区域之间取得平衡,从而有望在较少的评估次数内找到高质量的可行解。

基于Kriging代理模型的序列优化方法进阶题:全局探索与局部开发的平衡策略 题目描述 考虑以下约束非线性规划问题: \[ \begin{aligned} \min_ {x \in \mathbb{R}^n} &\quad f(x) \\ \text{s.t.} &\quad g_ i(x) \leq 0, \quad i=1,\ldots,m \\ &\quad h_ j(x) = 0, \quad j=1,\ldots,p \\ &\quad x_ L \leq x \leq x_ U \end{aligned} \] 其中,\( f(x) \),\( g_ i(x) \),\( h_ j(x) \) 均为计算代价高昂的隐式黑箱函数(例如,每次函数评估需要进行一次耗时的有限元仿真或物理实验),且可能高度非线性、非凸、多峰。目标是在有限的函数评价次数内,找到一个近似全局最优的可行解。 本题目要求你设计并阐述一种 基于Kriging(高斯过程)代理模型的序列优化方法 。该方法需在全局探索(探索未知区域,避免陷入局部最优)和局部开发(在可能有希望的区域精细搜索)之间进行有效平衡,并处理不等式和等式约束。我们将该方法命名为 自适应平衡的Kriging序列优化(Adaptively Balanced Kriging Sequential Optimization, ABKSO) 。 解题过程循序渐进讲解 第一步:理解核心挑战与Kriging基础 核心挑战 :当目标函数和约束函数的计算成本极高时,传统的基于梯度的迭代优化算法(如SQP、内点法)或需要大量采样的元启发式算法(如遗传算法)通常不可行,因为它们在达到收敛前可能需要成千上万次函数评估。 代理模型(Surrogate Model) :为解决此问题,我们使用一个计算廉价的数学模型来近似昂贵的真实函数。Kriging(又称高斯过程回归,GPR)是一种强大的代理模型,它不仅给出未知点的预测值,还给出预测的不确定性(方差)。 Kriging 基本原理回顾 : 假设函数 \( y(x) \) 是高斯过程的一个实现:\( y(x) \sim GP(\mu, k(x, x')) \)。其中,\( \mu \) 是常数均值,\( k(x, x') \) 是协方差函数(核函数),通常选用如平方指数核 \( k(x, x') = \sigma^2 \exp\left(-\sum_ {l=1}^{n} \theta_ l (x_ l - x'_ l)^2 \right) \)。 给定一组已评估的样本点(设计点)\( X = \{x^{(1)}, \ldots, x^{(N)}\} \) 及其对应的函数值 \( Y = \{y^{(1)}, \ldots, y^{(N)}\} \),对于一个新的候选点 \( x^* \),Kriging给出预测值 \( \hat{y}(x^ ) \) 和预测方差 \( s^2(x^ ) \)。 \( \hat{y}(x^* ) \) 提供了对函数值的 最佳线性无偏估计 (开发信息)。 \( s^2(x^* ) \) 量化了预测的不确定性,在已采样点附近方差小,在远离采样点的区域方差大(探索信息)。 第二步:构建ABKSO算法的整体框架 ABKSO是一个迭代算法,每次迭代包含以下关键步骤: 初始化采样 :在变量边界内,通过拉丁超立方抽样(LHS)或其它空间填充设计,生成一个初始设计点集 \( X_ {\text{init}} \),并评估昂贵函数 \( f, g_ i, h_ j \) 得到初始数据集 \( D \)。 构建代理模型 :基于当前数据集 \( D \),为 目标函数 \( f \) 和 每个约束函数 (\( g_ i, h_ j \))分别构建独立的Kriging模型。对于等式约束 \( h_ j(x)=0 \),通常将其视为两个不等式约束 \( h_ j(x) \leq 0 \) 和 \( -h_ j(x) \leq 0 \) 来处理,或者直接将其预测均值与0的偏差纳入可行性度量。 定义自适应平衡采集函数(Acquisition Function) :这是算法的核心。采集函数 \( A(x) \) 利用Kriging模型提供的预测 \( \hat{y}(x) \) 和不确定性 \( s(x) \) ,构造一个容易优化的辅助函数。其最大值点指示了下一个最有价值的评估点。我们将设计一个能自适应平衡探索与开发的采集函数。 求解子优化问题 :在变量边界内,优化采集函数 \( A(x) \) (这是一个计算廉价的、由代理模型定义的确定性函数),得到下一个评估点 \( x_ {\text{next}} \)。 昂贵函数评估与更新 :在 \( x_ {\text{next}} \) 处进行昂贵的真实函数(\( f, g_ i, h_ j \))评估,将新数据点加入数据集 \( D \),并更新所有Kriging模型。 收敛判断 :检查是否满足停止准则(如达到最大函数评价次数、连续多次迭代改进小于阈值、采集函数最大值低于阈值等)。若未满足,返回步骤3。 第三步:详细设计自适应平衡采集函数 这是ABKSO的 最核心创新点 。我们采用 改进的期望改进(Expected Improvement, EI)与概率可行性加权 相结合的策略。 经典期望改进(EI) :用于无约束优化。定义当前最佳目标函数观测值为 \( f_ {\text{min}} = \min \{ f(x^{(1)}), \ldots, f(x^{(N)}) \} \)。在点 \( x \) 处的改进量定义为 \( I(x) = \max(0, f_ {\text{min}} - Y(x)) \),其中 \( Y(x) \) 是服从 \( N(\hat{f}(x), s_ f^2(x)) \) 的高斯随机变量(\( \hat{f} \) 和 \( s_ f \) 是目标函数Kriging模型的预测均值和标准差)。 期望改进 为:\( EI(x) = E[ I(x)] = (f_ {\text{min}} - \hat{f}(x)) \Phi(Z) + s_ f(x) \phi(Z) \),其中 \( Z = \frac{f_ {\text{min}} - \hat{f}(x)}{s_ f(x)} \),\( \Phi \) 和 \( \phi \) 分别是标准正态分布的累积分布函数和概率密度函数。 \( EI(x) \) 的 第一项 \( (f_ {\text{min}} - \hat{f}(x)) \Phi(Z) \) 偏向 开发 (在预测值低的区域有高期望)。 \( EI(x) \) 的 第二项 \( s_ f(x) \phi(Z) \) 偏向 探索 (在不确定性高的区域有高期望)。 处理约束:概率可行性 : 对于每个不等式约束 \( g_ i(x) \leq 0 \),其Kriging模型给出预测均值 \( \hat{g} i(x) \) 和标准差 \( s {g_ i}(x) \)。在点 \( x \) 处满足该约束的概率为:\( P[ G_ i(x) \leq 0] = \Phi\left( \frac{0 - \hat{g} i(x)}{s {g_ i}(x)} \right) \)。 对于等式约束 \( h_ j(x)=0 \),可近似为满足的概率:\( P[ H_ j(x)=0] \approx \exp\left( -\frac{\hat{h} j(x)^2}{2 s {h_ j}^2(x)} \right) \) 或 \( \phi\left( \frac{0 - \hat{h} j(x)}{s {h_ j}(x)} \right) / s_ {h_ j}(x) \)(一个简化的处理)。 点 \( x \) 的总 概率可行性(PF) 定义为所有约束满足概率的乘积: \[ PF(x) = \prod_ {i=1}^{m} \Phi\left( \frac{-\hat{g} i(x)}{s {g_ i}(x)} \right) \times \prod_ {j=1}^{p} \left[ \phi\left( \frac{-\hat{h} j(x)}{s {h_ j}(x)} \right) / s_ {h_ j}(x) \right ] \] 这里假设了各约束的预测相互独立(为简化计算)。一个更鲁棒的做法是取 \( \min \) 或使用其他聚合方式,但乘积能平滑地惩罚违反任何约束的情况。 自适应平衡机制 : 经典约束EI通常写作 \( cEI(x) = EI(x) \times PF(x) \)。然而,在优化的不同阶段,我们对探索和开发的偏好应不同。 早期 :应更注重 全局探索 ,以找到有潜力的可行区域,避免过早陷入局部最优。 后期 :当可能的最优区域被定位后,应更注重 局部开发 ,在可行域内精细寻找最优解。 实现 :我们引入一个 自适应平衡因子 \( \beta_ k \in [ 0, 1 ] \),其中 \( k \) 是迭代次数。 \( \beta_ k \) 从接近1的值开始(初期重探索),随着迭代逐渐衰减到接近0的值(后期重开发)。 一种简单的衰减策略是:\( \beta_ k = \beta_ {\text{start}} \times \gamma^{k} \),其中 \( \gamma \in (0, 1) \) 是衰减率,\( \beta_ {\text{start}} \) 是初始值(如0.8)。 改进的采集函数 : \[ A(x) = \left[ \beta_ k \cdot s_ f(x) + (1-\beta_ k) \cdot \max(EI(x), \epsilon) \right ] \times PF(x) \] 这里做了一些关键修改: a. 将EI分解为探索和开发两部分,并用 \( \beta_ k \) 加权。 b. \( s_ f(x) \) 直接代表 纯探索 项(预测不确定性)。 c. \( EI(x) \) 本身是探索与开发的混合,但更偏向开发(尤其当 \( s_ f(x) \) 较小时)。我们用 \( \max(EI(x), \epsilon) \) 保证其正值,\( \epsilon \) 是一个小正数。 d. 当 \( \beta_ k \) 较大时,\( s_ f(x) \) 权重高,算法更倾向于评估不确定性高(未充分探索)的区域。 e. 当 \( \beta_ k \) 较小时,\( EI(x) \) 权重高,算法更倾向于在预测目标值低且可行的区域(开发)进行精细搜索。 f. 始终用 \( PF(x) \) 加权,以确保搜索偏向可行区域。 第四步:算法流程与关键步骤详解 输入 :变量边界 \( [ x_ L, x_ U] \),最大函数评价次数 \( N_ {\max} \),初始样本数 \( N_ {\text{init}} \),平衡因子初始值 \( \beta_ {\text{start}} \) 和衰减率 \( \gamma \)。 步骤1:初始化 : 使用LHS生成 \( N_ {\text{init}} \) 个初始点 \( X_ {\text{init}} \)。 评估所有初始点的真实昂贵函数值,形成初始数据集 \( D = \{(x^{(i)}, f^{(i)}, g_ 1^{(i)}, \ldots, g_ m^{(i)}, h_ 1^{(i)}, \ldots, h_ p^{(i)})\} {i=1}^{N {\text{init}}} \)。 设置迭代计数器 \( k = 0 \),函数评价计数 \( N_ {\text{eval}} = N_ {\text{init}} \)。 步骤2:主循环 (当 \( N_ {\text{eval}} < N_ {\max} \) 且未满足其他收敛条件时): a. 构建/更新Kriging模型 : * 使用 \( D \) 中所有点的 \( x \) 和 \( f \) 数据,训练目标函数Kriging模型 \( \mathcal{M} f \)(通过最大似然估计优化核函数超参数 \( \theta_ l, \sigma^2 \))。 * 同理,为每个约束函数 \( g_ i, h_ j \) 训练独立的Kriging模型 \( \mathcal{M} {g_ i}, \mathcal{M} {h_ j} \)。 b. 计算自适应平衡因子 :\( \beta_ k = \beta {\text{start}} \times \gamma^{k} \)。 c. 构建采集函数 \( A(x) \): * 从 \( D \) 中找出当前最佳可行观测目标值 \( f_ {\text{min}} \)(如果无可行点,则 \( f_ {\text{min}} \) 可取一个很大的数,或定义 \( PF(x) \) 为软约束,这里假设至少有一个可行点)。 * 对于任意测试点 \( x \),利用模型 \( \mathcal{M} f \) 计算 \( \hat{f}(x) \)、\( s_ f(x) \),进而计算 \( EI(x) \)。 * 利用所有约束模型计算 \( PF(x) \)。 * 按公式 \( A(x) = \left[ \beta_ k \cdot s_ f(x) + (1-\beta_ k) \cdot \max(EI(x), \epsilon) \right ] \times PF(x) \) 合成。 d. 优化采集函数 : * 求解子优化问题:\( x {\text{next}} = \arg\max_ {x_ L \leq x \leq x_ U} A(x) \)。 * 由于 \( A(x) \) 是多峰、非凸但计算廉价的函数,可采用全局优化算法(如多起点拟牛顿法、差分进化等)来寻找其全局最大值。这是“廉价”的优化。 e. 昂贵函数评估与数据更新 : * 在 \( x_ {\text{next}} \) 处调用昂贵函数,获得 \( f_ {\text{new}}, g_ {i,\text{new}}, h_ {j,\text{new}} \)。 * \( N_ {\text{eval}} \leftarrow N_ {\text{eval}} + 1 \)。 * 将新数据点加入 \( D \)。 f. 迭代更新 :\( k \leftarrow k + 1 \)。 步骤3:输出结果 : 循环结束后,从数据集 \( D \) 的所有可行点中,选择目标函数值最小的点 \( x^* _ {\text{best}} \) 作为最终解。 第五步:算法特点与讨论 自适应平衡 :通过衰减因子 \( \beta_ k \),ABKSO在优化早期(\( \beta_ k \) 大)强调探索(高 \( s_ f(x) \) 区域),有助于发现全局有希望的可行盆地;在优化后期(\( \beta_ k \) 小)强调开发(高 \( EI(x) \) 区域),有助于在已发现的盆地内快速收敛到局部最优。这比固定权重的采集函数(如纯EI或纯上置信界UCB)更灵活。 约束处理 :通过概率可行性 \( PF(x) \) 将约束信息自然地集成到采集函数中,引导搜索趋向可行域。对于高度非线性的约束,Kriging模型能有效捕捉其边界形状。 计算效率 :主要的计算成本在于每次迭代的昂贵函数评估。Kriging模型的训练和采集函数的优化虽然也需要计算,但相对于昂贵函数评估,其成本通常可以接受。模型训练复杂度为 \( O(N^3) \),其中 \( N \) 是已有点的数量,当 \( N \) 很大时可采用稀疏近似等方法。 停止准则扩展 :除了最大评价次数,还可以监控最佳可行目标值的变化、采集函数最大值的大小(若 \( \max A(x) \) 非常小,说明进一步改进的期望很低)等。 总结 :你设计的ABKSO算法,通过结合Kriging代理模型、改进的自适应平衡采集函数(混合了纯探索、期望改进和概率可行性),为昂贵黑箱约束优化问题提供了一个系统的求解框架。它智能地分配有限的昂贵函数评估预算,在探索整个设计空间和开发有希望区域之间取得平衡,从而有望在较少的评估次数内找到高质量的可行解。