【SI152笔记】part3:整数规划

SI152: Numerical Optimization

Lec 7. Integer Programming, Cutting Plane, Branch and Bound

Integer Programming

\[\begin{aligned} (IP) \min_{x}~ & c^T x \\ \text{s.t. }~ & Ax \leq b , x \in\mathbb{Z}^n \end{aligned} \]

can be solved using their LP relaxation:

\[\begin{aligned} (LP) \min_{x}~ & c^T x \\ \text{s.t. }~ & Ax \leq b \end{aligned} \]

An optimal z of (LP) is a lower bound for (IP).

Relaxations

(LP): just show lower bound

Basic idea: Find an optimal solution \(x^∗\) of some LP is feasible for IP.

The convex hull of the feasible integer solutions is defined as: \(\mathsf{conv}(S) = \mathsf{conv}\{x \in \mathbb{R}^n | Ax \leq b, x\in\mathbb{Z}^n\}.\)
In other words, it is the smallest convex set that contains all integer feasible points.

Cutting Planes

inequality denoted by (π, π0) is valid for a polyhedron \(\mathcal{P}\) if \(π^T x \leq π_0, \forall x\in\mathcal{P}\).

The Separation Problem: Given a polyhedron \(\mathcal{Q} \subset \mathbb{R}^n\) and \(x^* \in\mathbb{R}^n\), determine whether \(x^* \in\mathbb{R}^n\) and if not, determine \((π, π_0)\), a valid inequality for \(\mathcal{Q}\) such that \(π^T x^∗ > π_0\) (violated with \(x^*\)).

If \(a\leq b\) and \(a \in \mathbb{Z}\), then \(a\leq \lfloor b \rfloor\).

cutting plane 1

From that, we can find Chvátal-Gomory inequalities for \(\mathsf{conv}(\mathcal{S})\):
If \(\mathcal{P} = \{x|Ax \leq b\}\),

  • multiply each row by an integer \(k_i > 0\) and sum them
  • Take the floor of the right-hand side

    \[ Ax\leq b \longrightarrow \sum_i \lfloor k_i a^T_i \rfloor x \leq \left\lfloor \sum_i k_i b_i \right\rfloor \]

  • we get a valid Chvátal-Gomory inequality for the integer problem.

cutting plane 2

After simplex method for LP, choose one based variable \(x_i\),

\[\begin{aligned} &\qquad x_i + \sum_j \bar{y}_{i,j} x_j = \bar{b}_i \not\in \mathbb{Z} \\ &\implies x_i + \sum_j \lfloor y_{i,j} \rfloor x_j - \lfloor \bar{b}_i \rfloor = \bar{b}_i - \lfloor \bar{b}_i \rfloor - \sum_j (\bar{y}_{i,j} - \lfloor \bar{y}_{i,j} \rfloor) x_j \end{aligned} \]

Then the cutting palne is \(\bar{b}_i - \lfloor \bar{b}_i \rfloor - \sum_j (\bar{y}_{i,j} - \lfloor \bar{y}_{i,j} \rfloor) x_j \leq 0\).
It's violated by the current vertex \(x\), since \(x_i + \sum_j \lfloor y_{i,j} \rfloor x_j - \lfloor \bar{b}_i \rfloor = \bar{b}_i - \lfloor \bar{b}_i \rfloor > 0\)

Cutting plane method

Shortly speaking: Pick fractional \(x_i\). Create cutting plane. Adding new slack variable \(s_k\) for inequality. Continue pivoting using dual simplex method.

posted @ 2025-01-01 22:08  Coinred  阅读(29)  评论(0)    收藏  举报