簡體   English   中英

是否可以在 Pyomo 的目標 function 內編寫非線性分段 function?

[英]is it possible to write a nonlinear piecewise function inside the objective function in Pyomo?

我想使用 Pyomo 來解決使用 Ipopt 的非線性優化。 在這方面,我在我的代碼中設計了一個 function 作為目標 function,它本身在其中使用了另一個 function。 內部 function 是非線性和分段的,定義如下。

def U3(x,omega,U_alpha3):
       if x<=omega/U_alpha3:
              return omega*x-U_alpha3/2*x**2
       else:
              return 0.5*omega**2/U_alpha3

但是這個 function 導致這個錯誤:

TypeError: '<=' not supported between instances of 'IndexedComponent_slice' and 'numpy.float64'

考慮到我的決策變量在 x 內部(它是“IndexedComponent_slice”類型)並且 omega 和 U_alpha3 是固定參數(它們是“numpy.float64”類型)

是的。 Ipopt 的 Pyomo NL 文件接口通過Expr_If表達式 class 支持這一點,考慮到關於 function 的標准警告,您定義的是兩次連續可微分等(我們不會為您驗證)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM