python - 使用 CheckConvergence() 函数检查优化求解器 “ipopt” 的收敛性

标签 python optimization ipopt

我正在使用 ipopt 求解器来解决 Python 中的非线性优化问题。 ipopt 文档说明了一个函数 CheckConvergence() ,通过该函数可以获得解决方案的收敛状态。
https://coin-or.github.io/Ipopt/classIpopt_1_1ConvergenceCheck.html
我尝试通过以下步骤访问该功能:

solver = SolverFactory('ipopt')
solver.solve(model)
solver.CheckConvergence()
但我得到一个错误,AttributeError:'IPOPT' 对象没有属性'CheckConvergence'。
所以我试图从定义此函数的文件 IpConvCheck.hpp 导入脚本。
https://coin-or.github.io/Ipopt/IpConvCheck_8hpp_source.html
如果有人可以帮助我解决这个问题,我将不胜感激。
非常感谢您提前。

最佳答案

提到的CheckConvergence() function 是 Ipopt::ConvergenceCheck 中的一个方法Ipopt 类。也许它可以通过 Ipopts C++ API 访问,但你似乎使用了某种 Python 接口(interface)来连接 Ipopt。
我建议与那个 Python 接口(interface)的创建者核实一下。
但首先,您可能需要重新考虑通过调用此函数尝试实现的目标。在 Ipopt 完成求解后,它返回一个状态代码,指示 Ipopt 停止的原因,并且有可用的统计数据来获取原始和双重违规(如果返回解决方案)。您可能想要检查这些(假设它们可用于 Python 接口(interface)),而不是调用一些用于检查 Ipopt 是否在当前迭代处终止的 Ipopt 内部函数。

关于python - 使用 CheckConvergence() 函数检查优化求解器 “ipopt” 的收敛性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64760607/

相关文章:

sql-server - 如何检查sql server中哪个存储过程花费的时间最长

c++ - 在回溯中使用 `free()` 解除分配时出现 `delete` 错误

python-3.x - 通过 pyomo 设置 ipopt 选项

python - Pyomo 的 SolverFactory 无法创建 Ipopt (OSX) - 可能与 COIN-OR 有关

python - 将带有 Python 的机器学习服务和机器学习功能添加到现有 SQL Server 2017

html - 省略关闭正文和 html 标签的好处?

python - 在Python中按(n) block 迭代迭代器?

c - 黄金分割搜索

python - 如何正常调用点击包装功能?

python - python 中的异常未知错误