[英]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.