numpy - 如何在 GEKKO 中级中使用 np.log 或 np.exp
问题描述
我正在使用 gekko 来求解方程组。作为中间步骤,我使用了将 MV 温度插入以下函数的中间步骤:
def riedelVP(T, const):
'''Returns Vapor Pressure
INPUTS
:T - Temperature (K)
:const - A, B, C, D, E constants for eqn
OUTPUTS
:Y - Pressure in Pascals'''
# unpack constants
a, b, c, d, e = const
# plug into equation
Y = np.exp(a+b/T+c*np.log(T) + d*T**e)
return Y
当我这样做时,我收到以下错误:
我尝试使用T.value
andT.value[0]
作为函数而不是 T 的参数。
TypeError: loop of ufunc does not support argument 0 of type GKVariable which has no callable log method
如何使用带有 exp 的函数并登录 gekko 中间
解决方案
这种情况下的问题是np.exp()
函数和np.log
函数都需要一个浮点参数,而 gekko 变量是它们自己的类型。如果您要使用 gekko 的方法进行取幂并在函数中取对数,它将起作用。为此,请使用m.exp
orm.log
方法。在这个例子中,我已经有一个使用创建的 gekko 模型m = GEKKO()
,然后我可以创建函数:
def riedelVP(T, const):
'''Returns Vapor Pressure
INPUTS
:T - Temperature (K)
:const - A, B, C, D, E constants for eqn
OUTPUTS
:Y - Pressure in Pascals'''
# unpack constants
a, b, c, d, e = const
# plug into equation
Y = m.exp(a+b/T+c*m.log(T) + d*T**e)
return Y
当函数中出现类型错误时,使用 gekko 的类似方法。
推荐阅读
- c# - 从 ListView 中的复选框更新 SQL
- javascript - 在 JavaScript 中将文本输出到输入字段
- javascript - 在 Javascript Open Function 中使用变量
- excel - VBA Excel在A列中查找文本,复制整行
- java - 选择在同一行上运行更新语句时不返回结果?
- php - 正确的 fread() 应用程序?
- arduino - Ionic 3 是否支持 Arduino?
- java - 如何使用 RegEx 从该行中提取子字符串
- spring-boot - 我的 spring-cloud-consul 演示没有注册到领事服务器
- azure - 将 Azure ADF 管道内部的值传递到调用管道的 PowerShell