繁体   English   中英

是否可以将 sympy 表达式转换为 pyomo 表达式?

[英]Is it possible to convert a sympy expression to a pyomo expression?

我目前正在使用 sympy 来解析字符串方程并用值或 Pyomo 变量替换变量:

model = pe.ConcreteModel()
model.flow = pe.Var()

DEMAND = 100

equation = sympify('10 * DEMAND * FLOW', evaluate=False)

updated_equation = equation.subs('DEMAND', DEMAND).subs('FLOW', model.flow)

有谁知道是否可以将其转换为我可以在 Pyomo model 中使用的线性表达式?

是的:如果你查看pyomo.core.expr.sympy_tools ,有两种方法:

  • sympyify_expression(expr)将采用 Pyomo 表达式并返回一个 sympy 表达式,所有 Pyomo Var 对象都替换为 sympy 真实符号,以及将PyomoSympyBimap Var 对象映射到相应的 sympy 符号对象的 PyomoSympyBimap object
  • sympy2pyomo_expression(expr, object_map)将采用一个 sympy 表达式(包含 sympy 符号),以及将符号与PyomoSymbolBimap组件相关联的 PyomoSymbolBimap,并将返回一个原生 Pyomo 表达式。

您要的是稍微不同的东西:您从一个已经包含 Pyomo 对象的 sympy 表达式开始。 您应该能够调整Sympy2PyomoVisitor class 以适用于您的特定用例(您应该只需要重新实现beforeChild方法以允许 Pyomo 组件的存在)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM