首页 > 解决方案 > GEKKO 可以处理哪些类型的非线性?

问题描述

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

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

似乎工作正常,但是

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

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

标签: nonlinear-optimizationgekko

解决方案


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

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

某些求解器(例如 a)APOPT也允许混合整数问题。微分和代数方程也可以用 Gekko 求解。有关使用 IMODE 切换求解模式的文档中有更多信息。有18 个示例应用程序的应用程序预览。


推荐阅读