如何知道Gekko的APOPT解算器是否在MINLP问题中找到了全局最优解



我目前正在用Gekko优化python中的一个混合整数非线性问题。因此,我正在使用APOPT求解器,到目前为止,我已经使用该求解器获得了相当好的体验。就决策变量和限制而言,我的问题并不大。我有5个decicion变量,而其中2个是数组,大小分别为1-5x3-50和1-5x3-50 x2-35x1-4,具体取决于情况。所以这个";decicion阵列";是什么让我的问题真的很难(当他们各自的维度很大时(,我会说。在我的问题中,我有9个限制。只有第二个大数组是整数decicion变量。

所以我想我有一个非凸问题(?(,我在网上读到过,大多数求解器都不能保证找到全局最优。

当我对我的问题运行APOPT时,我选择了最多10000次迭代,大多数时候APOPT都能找到解决方案。大多数情况下,APOPT在迭代次数为10000时停止。但有时求解者会说:";不再有可能的试验点,返回最佳整数解";。这是否意味着这个解决方案是全局最优的?此外,APOPT有时显示";成功的解决方案";在显示";Gap";为0或更小。这是否也意味着APOPT已经找到了全局最优?

我正在使用";最低目标叶";作为分支方法,间隙公差为0。

非常感谢您的帮助。谢谢你和奥地利的问候!

非凸解决方案需要多启动方法或其他专门的求解器,如BARON。APOPT是一个分支定界MINLP求解器,它可以找到局部最优解。你不一定有一个非凸的问题。如果二阶导数(Hessian(是负定的,你可以检验这个。如果二阶导数(Hessian(在可行搜索区域中处处是正定的,那么问题是凸的,并且局部解也是全局解。

当解算器报告间隙为0时,会找到最佳整数解,尽管它可能是局部最优解。如果它在10000次迭代后返回一个整数解决方案,那么您需要考虑差距,并决定该解决方案是否足够好。以下是有关解算器选项的附加信息:https://apmonitor.com/wiki/index.php/Main/OptionApmSolver

最新更新