Sha*_*zar 3 optimization ipopt pyomo coin-or
我想确保我有资格使用 Bonmin 和 Couenne 来解决 NLP 问题(但我没有整数变量),并且我渴望获得全局最优而不是局部最优。我还读到 Ipopt 首先搜索全局答案,如果没有找到,它将提供本地答案。当我使用 Ipopt 时,我如何理解我的答案是一个全局答案。另外,我想知道针对这些问题最好的 NLP 和 MINLP 开源 python 求解器是什么,可以与 Pyomo 合并?我的问题的主要原因是使用 Bonmin 的以下输出:
注意:默认情况下,您将 Ipopt 与 MUMPS 线性求解器一起使用。其他线性求解器可能更有效(请参阅 Ipopt 文档)。
问候
一些注意事项:
(1)“ Ipopt 首先搜索全局答案,如果没有找到,它将提供本地答案”
这可能不是我的措辞。IPOPT 寻找本地解决方案。对于某些问题,这些将是全局解决方案。对于凸问题,情况总是如此(数值问题除外)。
(2) Bonmin 是局部 MINLP 求解器,Couenne 是全局 NLP/MINLP 求解器。通常,Bonmin 可以解决比 Couenne 更大的问题,但您可以获得本地解决方案。
(3) “注意:默认情况下,您将 Ipopt 与 MUMPS 线性求解器一起使用。其他线性求解器可能更高效(请参阅 Ipopt 文档)。 ”
这只是一个通知,表明您正在将 IPOPT 与 MUMPS 的线性代数例程一起使用。IPOPT 还可以使用其他线性子求解器,它们在大型问题上可能表现更好。通常,HARWELL 例程(通常称为 MAnn)可以提供更好的性能。MUMPS 是免费的,而 Harwell 例程需要许可证。
在后续答案(好吧,这根本不是答案)中指出:
关于Ipopt,我如何理解它正在寻找全局解决方案或局部最优解?代码会通知吗?关于 Bonmin,根据 AMPL 页面 AMPL 它提供了凸问题的全局解决方案“查找连续和离散变量中凸非线性问题的全局最优解,并且可以启发式地应用于非凸问题。” 你说它是获得本地解决方案,我对这部分有点困惑。但关于所有这些代码的普遍问题是,我如何才能找出答案是全局最优的?
(a) Ipopt 不知道解是局部最优解还是全局最优解。对于凸问题,局部最优解是全局最优解。您需要说服自己,您传递给 Ipopt 的问题是凸的(Ipopt 不会为您执行此操作)。
(b) Bonmin:相同:如果问题是凸的,它将找到全局解决方案。否则您将得到本地解决方案。您不会收到解决方案是否是全局解决方案的通知:Bonmin 不知道解决方案是否是全局最优。
(c) 在寻找有保证的全局解时,仅当问题是凸的时才可以使用局部求解器。对于其他问题,您需要全局求解器。另一种方法是使用带有局部求解器的多启动算法。这让您确信自己不会得到糟糕的局部最优值。
如果可能的话,我建议和你的老师讨论这个问题。理解这些概念很重要(大多数求解器手册都假设您了解它们)。