3变量整数的优化算法选择

计算科学 优化 算法 凸优化 混合整数规划
2021-12-03 16:40:38

我有一个成本函数:f(x,y,z)R

  • 评估非常昂贵
  • x,y,zZ
  • 0 < x < 10
  • 0 < y < 30
  • 0 < z < 100
  • 我认为它是凸的,现在不确定基于@Brian 的评论。
  • f只能以整数进行评估(我曾考虑尝试以实数进行评估,但尝试起来非常困难,结果将完全是假的)。
  • f是平滑的,但仅在整数值处。所以梯度只能使用重新评估来计算f每隔一段时间-但这又是非常昂贵的。

我正在寻找有关算法和库的建议(首选 C++,可接受 C)。

我花了几天时间试图复习这些主题,但它非常密集。我一直在看COIN-OR,特别是 OSI,但我似乎无法弄清楚如何将我的问题表达到 API 中。我也看过EasyLocal++,但还没有真正深入研究。

2个回答

你还没说是否f可以在以下点进行评估x,y, 和z是指定范围内的非整数的实数。如果这没有意义,那么该函数实际上并不是凸的。你也没有说是否f是平滑的(例如,它是两次连续可微的吗?)

传统的基于梯度的优化算法通常需要相当多的函数评估(例如,用于线搜索)以及需要f(可以通过有限差分来近似,但这意味着更多的函数评估。)如果函数是凸的但不是光滑的,并且您无法更详细地描述非光滑性,那么这些算法无论如何都不合适。

对于具有非常昂贵(或嘈杂)函数评估的低维问题,使用“响应面方法”来构建函数的回归模型通常是一个不错的选择,最小化您已经拥有的简单(例如二次)函数使用回归构建,然后(尽可能多地)缩小搜索范围并构建新的回归模型。

你能负担得起 27 次函数评估吗?x=0,5,10,y=0,15,30, 和z=0,50,100? 这应该足以构建响应曲面的第一个二次模型。

的凸度f(通过域的连续松弛)就选择最外层的求解器而言并不重要:如果您选择确定性地解决您的问题,您将需要一个分支定界算法,因为您有二元决策变量。我相信f是非线性的?如果是这种情况,您将需要像Bonmin这样的 MINLP 求解器。的凸度f将有助于解决下界问题;如果您将所有二元变量放松为连续变量,您应该能够使用像IPOPT这样的非线性规划求解器找到解决方案的下限。可行的解决方案会给你一个上限。我会看看是否可以四处寻找有关整数编程中分支定界算法的良好在线参考资料。您还可以使用无导数方法解决非线性问题,以节省函数评估。

如果f是线性的,你可能想要使用类似CBC的东西,它是一个分支和切割框架(在精神上类似于分支和绑定)。然而,鉴于f评估成本很高,我怀疑它是线性的。

这些方法不适合昂贵的函数评估问题。您是否愿意为更快的算法放弃解决方案中的一些准确性,如果愿意,多少钱?