我应该如何使用 GEKKO 对 log 或 sqrt 进行建模?约束条件
How should I model log or sqrt with GEKKO? Constraints
我正在尝试使用 GEKKO 开发我的约束,我需要包括一些数学运算,如 log、coth 或 sqrt。
我最初尝试使用我的习惯程序,使用 numpy 或 mpmath,但我发现使用 GEKKO 我需要使用它们的运算符定义,如 m.wathever (log,...),一旦 m = GEKKO() 完成
最好的开发方法是什么?
我在更改时是否应该考虑一些因素?
K_t = (1 + m + np.sqrt(1 + m**3)) - mpmath.coth(s/2) # Ref 2. Same results
使用这些函数的 Gekko 版本而不是 NumPy 或 Math 版本:
gk = GEKKO()
K_t = (1 + m + gk.sqrt(1 + m**3)) - gk.cosh(s/2)/gk.sinh(s/2)
需要 Gekko 版本,因为运算符重载以计算具有自动微分的求解器的一阶和二阶导数。没有 coth
,所以您需要用 coth(x) = cosh(x)/sinh(x)
代替。我通常将我的 Gekko 模型定义为 m=GEKKO()
,但您有另一个名为 m
的变量,所以我改用 gk
。这是 documentation on Model Building Functions.
的一部分
方程函数
除代数运算符外的特殊功能可通过 GEKKO 函数使用。必须使用这些(不是 numpy 或其他等效函数):
- gk.sin(其他)
- gk.cos(其他)
- gk.tan(其他)
- gk.asin(其他)
- gk.acos(其他)
- gk.atan(其他)
- gk.sinh(其他)
- gk.cosh(其他)
- gk.tanh(其他)
- gk.exp(其他)
- gk.log(其他)
- gk.log10(其他)
- gk.sqrt(其他)
我正在尝试使用 GEKKO 开发我的约束,我需要包括一些数学运算,如 log、coth 或 sqrt。
我最初尝试使用我的习惯程序,使用 numpy 或 mpmath,但我发现使用 GEKKO 我需要使用它们的运算符定义,如 m.wathever (log,...),一旦 m = GEKKO() 完成
最好的开发方法是什么? 我在更改时是否应该考虑一些因素?
K_t = (1 + m + np.sqrt(1 + m**3)) - mpmath.coth(s/2) # Ref 2. Same results
使用这些函数的 Gekko 版本而不是 NumPy 或 Math 版本:
gk = GEKKO()
K_t = (1 + m + gk.sqrt(1 + m**3)) - gk.cosh(s/2)/gk.sinh(s/2)
需要 Gekko 版本,因为运算符重载以计算具有自动微分的求解器的一阶和二阶导数。没有 coth
,所以您需要用 coth(x) = cosh(x)/sinh(x)
代替。我通常将我的 Gekko 模型定义为 m=GEKKO()
,但您有另一个名为 m
的变量,所以我改用 gk
。这是 documentation on Model Building Functions.
方程函数
除代数运算符外的特殊功能可通过 GEKKO 函数使用。必须使用这些(不是 numpy 或其他等效函数):
- gk.sin(其他)
- gk.cos(其他)
- gk.tan(其他)
- gk.asin(其他)
- gk.acos(其他)
- gk.atan(其他)
- gk.sinh(其他)
- gk.cosh(其他)
- gk.tanh(其他)
- gk.exp(其他)
- gk.log(其他)
- gk.log10(其他)
- gk.sqrt(其他)