适用于 Python 的 Gekko 优化套件 - if3 始终 <0

Posted

技术标签:

【中文标题】适用于 Python 的 Gekko 优化套件 - if3 始终 <0【英文标题】:Gekko Optimization Suite for Python - if3 always <0 【发布时间】:2022-01-19 16:29:32 【问题描述】:

我正在使用 python 3.8.10 和 gekko 1.0.1。我尝试使用model.if3 来检查变量是否与内部-model.abs3 相等。我观察到一个我无法解释的奇怪行为,这就是为什么我从 https://gekko.readthedocs.io/en/latest/model_methods.html (if3) 运行示例代码:

import numpy as np
import matplotlib.pyplot as plt
from gekko import GEKKO
m = GEKKO(remote=False)
p = m.Param()
y = m.if3(p-4,p**2,p+1)

# solve with condition<0
p.value = 3
print(p.value)
m.solve(disp=False)
print(y.value)

# solve with condition>=0
p.value = 5
print(p.value)
m.solve(disp=False)
print(y.value)

但我得到以下输出:

3
[9.0]
5
[9.0]

如果有任何帮助,我将不胜感激!

【问题讨论】:

【参考方案1】:

我将 gekko 1.0.1 升级到 gekko 1.0.2,这解决了我的问题。 也许我的缓存变量有问题,或者升级解决了这个问题。

【讨论】:

感谢升级和测试。对于也需要它的其他人,这里是升级命令:pip install gekko --upgrade 以获取最新版本。版本 ChangeLog 中的一件事可能会影响此问题:github.com/BYU-PRISM/GEKKO/compare/v1.0.1...v1.0.2 变量的初始化方式。

以上是关于适用于 Python 的 Gekko 优化套件 - if3 始终 <0的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中使用 Gekko,对于多目标优化问题,是不是所有目标函数都必须具有相同的单位?

GEKKO - 如何修复 Python Gekko Max Equation 错误 - 元素数

如何使用Pulp Gekko和Scipy软件包修复具有不同结果的代码以解决线性优化问题?

如何以图形方式验证我的动态优化结果,与 gekko 中的初始条件进行比较

在 Python 中使用 Gekko 求解函数

优化的输出(使用 GEKKO)为操纵变量(IMODE=6)给出零