【问题标题】:Stop criterion on objective function (IPOPT)目标函数的停止标准 (IPOPT)
【发布时间】:2016-08-08 09:11:23
【问题描述】:

这是我的问题:我正在使用不同的求解器优化 openmdao 的不同问题。 一个问题给了我一个有 1 个或多个根的目标函数,我的目标是使用优化来接近一个。 例如,使用 SLSQP 或 PSQP 没有问题,但是当使用 IPOPT 时,我可以从打印详细结果(摘录)中得到:

我的问题可能被严重缩放或其他问题,但是当目标函数(例如)低于 1e-5 时,有没有办法让 IPOPT 停止? 我需要在 5 左右修复“tol”。为了在这个特定问题中得到我想要的东西,但是“tol”对 Eo 的影响不仅取决于目标函数……有人知道吗? 提前致谢

【问题讨论】:

    标签: python-2.7 openmdao ipopt


    【解决方案1】:

    Ipopt 有许多不同的收敛容差。查看一些文档:http://www.coin-or.org/Ipopt/documentation/node42.html

    正确设置它可以让它在你想要的时候停止。您可能想尝试acceptable_tol,它会寻找答案何时停止变化作为终止标准。

    【讨论】:

    • 我已经检查了那个链接。我必须设置一个较高的“dual_inf_tol”以使我的问题尽早停止(inf_du 约为 1e1)。根据实施论文 (cepac.cheme.cmu.edu/pasilectures/biegler/ipopt.pdf),事情是 tol 和可接受的_tol 标准取决于问题的许多子变量。因此,当目标函数低于某个值时,显然没有我可以设置使其停止的预先确定的值。因此,我对如何做到这一点的问题(不会在文档的终止部分中指定)
    • 听起来您对他们内置的停止标准不满意。您可以修改 OpenMDAO 包装器代码以添加您自己的停止条件。你需要小心一点,以免它完全被破解,但如果你只需要一些快速而肮脏的东西,那就破解吧:github.com/OpenMDAO/OpenMDAO/blob/master/openmdao/drivers/…
    • 听起来就是这样。似乎 _objfunc 仅用于优化类(来自 pyoptsparse)。我看不到任何方法可以从包装器中更改停止标准,因为包装器直接调用优化器并且只处理结果......而且更改 IPOPT 的代码似乎太难了:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多