繁体   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