簡體   English   中英

在 Pyomo 約束中使用外部函數

[英]Using external functions within Pyomo constraints

我需要使用外部 python function 在 pyomo model 中創建約束,但我不相信它可以正常工作。 例如,如果我有以下外部 function

# External function
def total_cost(length, flow):
    return length * floww * 1000

然后我想在創建 pyomo model object 時調用它,但“長度”和“流量”值是我的 model 中的變量,它會正常工作嗎? 有人有這方面的經驗嗎?

您的示例在大多數情況下應該可以正常工作。 您需要注意三個例外情況(但這些也適用於正常的約束規則):

  1. 構建約束表達式時不要顯式獲取變量的value ,因為該變量將被表達式樹中的常量數值替換(而不是發送到求解器)
  2. 不要編寫依賴於變量值的條件(if 語句)
  3. 編寫約束時僅使用 Pyomo 提供的內在數學函數(sin、cos、exp 等)

我還建議在構造約束后調用pprint來驗證約束表達式是否符合您的期望。 如果約束太長/太亂,那么您可以print函數返回的子表達式並驗證您獲得的是 Pyomo 表達式對象而不是常量數值。

暫無
暫無

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

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