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中
从增强变量到等效特殊原子的映射 (参见上面的注释),仅使用字面量作为逻辑参数