Integer programming

Published:

An integer programming problem is a mathematical optimization or feasibility program in which some or all of the variables are restricted to be integers. In many settings the term refers to integer linear programming (ILP), in which the objective function and the constraints (other than the integer constraints) are linear.

Integer programming is NP-hard. A special case, 0-1 integer linear programming, in which unknowns are binary, and only the restrictions must be satisfied, is one of Karp’s 21 NP-complete problems.

The formalization of this problem is:

\[{\displaystyle {\begin{aligned}&{\text{maximize}}&&\mathbf {c} ^{\mathrm {T} }\mathbf {x} \\&{\text{subject to}}&&A\mathbf {x} \leq \mathbf {b} ,\\&&&\mathbf {x} \geq \mathbf {0} ,\\&{\text{and}}&&\mathbf {x} \in \mathbb {Z} ^{n},\end{aligned}}}\]

where the entries of ${\displaystyle \mathbf {c} ,\mathbf {b} }$ are vectors and A {\displaystyle A} is a matrix, having integer values. Note that similar to linear programs, ILPs not in standard form can be converted to standard form by eliminating inequalities by introducing slack variables ( s {\displaystyle \mathbf {s} } ) and replacing variables that are not sign-constrained with the difference of two sign-constrained variables.

Common methods

The most common methods used to solve an integer programming problem are:

  • Using total unimodularity.
  • Exact algorithms: as the cutting plane methods.
  • Heuristic methods: as tabu search, hill climbing, simulated annealing, reactive search optimization, ant colony optimization, hopfield neural networks.

See also

Mathematical Optimization

Papers

Books