微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GEKKO 可以处理哪些类型的非线性?

如何解决GEKKO 可以处理哪些类型的非线性?

我已经成功地将 GEKKO 用于解决各种问题,但我无法确定的一件事是目标函数或约束中非线性项的限制。我发现可以容忍一些非线性项,例如

m.Obj(sum(x * values) / sum(x))

不过似乎工作正常

m.Obj(sum(x * values + x ** 2 * other_values) / sum(x))

似乎无法解决。是否有任何关于 GEKKO 处理某些非线性形式的限制的文档可以帮助我重新格式化我的问题?

解决方法

Model building functions 列在 Gekko 文档中,包括可以用连续的一阶和二阶导数数学表达的任何非线性函数。 Gekko 将问题交给求解器以尝试解决方案。有时,求解器 (IPOPT,BPOPT,APOPT) 将问题识别为不可行或无法找到解决方案。这并不意味着 Gekko 不能使用这些函数,只是没有找到数值解。您可以尝试使用 m.options.SOLVER=1 切换求解器。您可能还需要使用更高效的函数版本,例如 Gekko m.sum() 而不是 Python sum() 函数。

m.Minimize(m.sum(x * values + x ** 2 * other_values) / m.sum(x))

某些求解器(例如 APOPT)也允许混合整数问题。微分方程和代数方程也可以用 Gekko 求解。有关 switching solving modes with IMODE 的文档中有更多信息。使用 18 example applications 预览应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。