We present a Julia package, DisjunctiveProgramming.jl, that extends the functionality in JuMP.jl to allow modeling problems via logical propositions and disjunctive constraints. Such models can then be reformulated into Mixed-Integer Programs (MIPs) that can be solved with the various MIP solvers supported by JuMP. To do so, logical propositions are converted to Conjunctive Normal Form (CNF) and reformulated into equivalent algebraic constraints. Disjunctions are reformulated into mixed-integer constraints via the reformulation technique specified by the user (Big-M or Hull reformulations). The package supports reformulations for disjunctions containing linear, quadratic, and nonlinear constraints.
翻译:本文介绍一个Julia软件包DisjunctiveProgramming.jl,该包扩展了JuMP.jl的功能,允许通过逻辑命题和析取约束对问题进行建模。此类模型可重构为混合整数规划(MIP),并通过JuMP支持的各种MIP求解器求解。具体而言,逻辑命题被转换为合取范式(CNF)并重构为等价的代数约束;析取式则通过用户指定的重构技术(Big-M或Hull重构)转化为混合整数约束。该包支持包含线性、二次及非线性约束的析取式重构。