[英]How should I model log or sqrt with GEKKO? Constraints
我正在尝试使用GEKKO开发我的约束,并且需要包括一些数学运算,例如log,coth或sqrt。
我最初使用numpy或mpmath尝试了惯用程序,但我发现使用mekth时,一旦完成m = GEKKO(),我需要使用它们的运算符定义,例如m.wathever(log,...)。
如何发展最好的方法? 更改时是否应该考虑一些问题?
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
。 这是有关“模型构建功能 ” 文档的一部分。
方程函数
GEKKO函数可提供除代数运算符之外的特殊函数。 必须使用这些(不是numpy或其他等效函数):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.