nonlinear-optimization - GEKKO 可以处理哪些类型的非线性?
问题描述
我一直在成功地使用 GEKKO 解决各种问题,但我无法确定的一件事是目标函数或约束中的非线性项的限制是什么。我发现可以容忍一些非线性项,例如
m.Obj(sum(x * values) / sum(x))
似乎工作正常,但是
m.Obj(sum(x * values + x ** 2 * other_values) / sum(x))
似乎无解。是否有任何关于 GEKKO 限制处理某些形式的非线性的文档,这可能有助于我重新格式化我的问题?
解决方案
模型构建函数在 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 个示例应用程序的应用程序预览。
推荐阅读
- javascript - 如何为我的不和谐机器人在数组中的项目之间添加文本!不和谐.js
- python - 这里哪一种是更好的python代码形式,为什么?
- html - 有没有办法将 .pdf 文件作为附件附加并同时使用 ms 访问将 .html 文件作为图像插入电子邮件正文中
- python - 有没有办法在 Python 3+ 中对嵌套列表进行排序?
- angular - 如何在不使用 ngModel 的情况下使用 typescript 将变量插入到 ion-textarea
- swift - 在表达式列表中得到预期的 ')' '}'。我该如何解决这个问题
- python - 使用 Python / Scrapy 进行 Google 身份验证
- ios - 可以通过“邮递员软件”获取 XML 数据,但我无法通过 SWIFT 获取数据
- sqlite - React native 和 Expo Sqlite,使用时间戳字段按日期查询
- python - 如何在 selenium 中注入 javascript for 循环 - python