LP Relaxation Inside CP-SAT

How CP-SAT uses an LP relaxation alongside CDCL to compute dual bounds for pruning search nodes, linearizes logical constraints to feed the LP, and applies reduced-cost fixing to permanently eliminate variable assignments in a subtree.

Step 1 of 157%

Tutorial

How CP-SAT Uses an LP Relaxation

CP-SAT combines CDCL with constraint propagation, but for problems with an objective function it also maintains a linear programming (LP) relaxation of (a portion of) the integer model. The LP relaxation drops integrality on the integer variables and is solved at search nodes to produce strong dual bounds.

For a minimization problem with optimal LP value zLPz_{LP}^* and optimal integer value zIPz_{IP}^*, the LP value is a valid lower bound on the integer optimum:

zLPzIP.z_{LP}^* \le z_{IP}^*.

CP-SAT uses this bound in two ways:

  1. Node pruning. If the incumbent (best feasible integer solution found so far) has objective zincz^{\text{inc}}, then any node whose LP relaxation satisfies zLPzincz_{LP}^* \ge z^{\text{inc}} cannot contain a strictly improving integer solution and is discarded. When the integer objective is integer-valued, the bound tightens to
zLPzinc.\lceil z_{LP}^* \rceil \ge z^{\text{inc}}.
  1. Search guidance. The fractional LP optimum suggests which variables are most informative to branch on next.

Example. At a node, the LP relaxation gives zLP=17.3z_{LP}^* = 17.3 and the incumbent is zinc=18z^{\text{inc}} = 18. Since 17.3=1818\lceil 17.3 \rceil = 18 \ge 18, no integer solution in this subtree can strictly improve on 1818, so CP-SAT prunes the node.

navigate · Enter open · Esc close · ⌘K/Ctrl K toggle