簡體   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