to_cnf

(函数来自 pyomo.core.expr.cnf_walker)

pyomo.core.expr.cnf_walker.to_cnf(expr, bool_varlist=None, bool_var_to_special_atoms=None)[source]

将Pyomo逻辑约束转换为CNF形式。

注意:如果AtMostExpression、AtLeastExpression和ExactlyExpression不是根节点,或者它们的子节点不是原子节点,则需要特殊处理,例如。

atmost(2, Y1, Y1 | Y2, Y2, Y3)

因此,模型可能需要通过额外的布尔指示变量和逻辑命题进行增强。如果没有提供用于存储增强变量的BooleanVarList,并且需要增强变量,此函数将引发ValueError。

This function will return a list of CNF logical constraints, including:
  • 原始语句的CNF,包括可能的替换

  • 额外的CNF语句(用于强制与增强变量等价)

In addition, the function will have side effects:
  • 增强变量被添加到传递的bool_varlist中

  • 从增强变量到等效特殊原子的映射 (参见上面的注释),仅使用字面量作为逻辑参数