目前,我正在使用渐近解析字符串方程,并将变量替换为值或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模型中使用?
发布于 2022-11-28 18:07:32
是的:如果您查看pyomo.core.expr.sympy_tools,有两种方法:
sympyify_expression(expr)将使用Pyomo表达式并返回一个渐近表达式,将所有Pyomo对象替换为渐近实符号,以及一个将Pyomo对象映射到相应的渐近符号的PyomoSympyBimap对象,objectssympy2pyomo_expression(expr, object_map)将接受一个交感表达式(包含同情符号),以及将符号与Pyomo组件相关的PyomoSymbolBimap,并返回一个本机Pyomo表达式。您所要求的是一些稍微不同的东西:您是从一个已经包含Pyomo对象的同情表达式开始的。您应该能够调整Sympy2PyomoVisitor类以适应特定的用例(您只需要重新实现beforeChild方法以允许Pyomo组件的存在)
https://stackoverflow.com/questions/74601162
复制相似问题