如何使用np.log或np.log.exp在GEKKO中间



我正在用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.valueT.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.expm.log方法。在这个例子中,我已经使用m = GEKKO()创建了一个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的类似方法。

最新更新