[英]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 objectsympy2pyomo_expression(expr, object_map)
将采用一个 sympy 表达式(包含 sympy 符号),以及将符号与PyomoSymbolBimap
组件相关联的 PyomoSymbolBimap,并将返回一个原生 Pyomo 表达式。 您要的是稍微不同的东西:您从一个已经包含 Pyomo 对象的 sympy 表达式开始。 您应该能够调整Sympy2PyomoVisitor
class 以适用于您的特定用例(您应该只需要重新实现beforeChild
方法以允许 Pyomo 组件的存在)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.