繁体   English   中英

如何使用GEKKO对日志或sqrt建模? 约束

[英]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或其他等效函数):

  • 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(其他)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM