是否有可以优化具有黑盒约束的黑盒功能的算法和工具?

机器算法验证 优化 算法
2022-03-07 19:24:39

假设我们有一个目标函数 f有作为参数x1,x2.

f是针对给定问题最大化的目标函数。可以说:

f(x1,x2)=x1+x2+E(x1,x2)

在哪里E是一个神经网络模型。因此E不表示为明确的数学关系。

我们还假设问题有一个约束:

G(x1,x2)<C

在哪里C是一个常数并且G至于E使用神经网络建模。

我的问题如下:

  1. 假设我们不知道如何优化这个问题是否有可能FG执行结果?
  2. 有什么工具可以解决各种问题吗?
3个回答

对于黑盒优化,目前大多数最先进的方法都使用某种形式的代理建模,也称为基于模型的优化。这是通过一些参数模型(例如线性/二次响应面高斯过程回归)局部逼近目标函数的地方在仅使用参数模型导数的意义上,这种方法是“无导数优化”(DFO),而不是黑盒函数的有限差分。请注意,与有限差分相比,局部模型通常适合“大”邻域。

最近的论文对无约束(和框约束)DFO 方法的当前技术状态进行了很好的比较

Rios, LM, & Sahinidis, NV (2013)无导数优化:算法回顾和软件实现比较。全球优化杂志。

本研究对用于全局和局部优化的各种 DFO 方法进行了基准测试。(有关进一步讨论,请参阅我的回答,包括对问题大小的限制。)

对于约束优化,工作量较少,但至少多项式响应面 DFO 方法存在一些推广。这些方法往往被表述为顺序线性规划顺序二次规划(SQP) 算法,取决于多项式逼近的程度。请注意,由于条件不佳,通常使用三次或更高阶多项式。

我没有使用过这些程序,但一些可能的建议可能是:

  • 线性案例:MJD PowellCOBYLA算法
  • 二次案例: CONDOR(基于 Powell 的无约束 SQP 算法)

我使用 Powell 的框约束 SQP 求解器 ( BOBYQA ) 取得了很好的效果,并且他的软件/算法在我的经验中非常可靠,因为它们经过多年的实际工业应用的磨练。因此我的建议。(他的二次 DFO 变体在上面引用的基准研究中也排名很好。)


正如Ami Tavory的回答(已删除)所建议的那样,惩罚方法是许多约束优化问题的可行替代方案。如果你走这条路,我推荐使用Nelder-Mead正如Rios & Sahinidis研究中所述,存在许多更好的替代方案。

对于这个任务,我将使用基于种群的优化算法,在每次迭代中,您都会创建一个可能点的种群(也称为候选点)。在“创建”时,您检查每个候选人是否满足约束G然后,一旦构建了整个种群,您就可以使用黑盒目标评估整个种群f.

您可以查看的一个很好的全局优化算法是遗传算法粒子群优化模拟退火(请参阅我的回复)。其他方法包括模式搜索,或者,如果评估您的E是昂贵的,代理优化

因此,作为一个实用的建议,我是否可以建议您首先使用软到硬惩罚函数来伪造约束,然后尝试运行 humpday 包或其他一些 bbopt 比较工具,如 IOHprofiler?

作为另一个实用的建议,我可以问一下你的目标需要多长时间来计算?如果速度非常快,那么 GP 解决方案绝不会是最好的。

在某种程度上,这个排行榜可能具有指示性。您可能会发现,如果没有时间限制,那么 GP/代理方法将很难被击败,但是对于您的问题,您可能会发现 dlib 之类的东西更有用,因为它是如此之快并且您可以尝试各种技巧来绕过你的约束问题。