Integer Linear Programming
Summary
Integer Linear Programming (ILP) is a method for optimizing a linear objective function such as:
- maximize
where 's are known and 's are unknown, subject to linear equality or inequality constraints such as:
where 's and 's are known, and where 's can only take integer values
In other words, it is a method to find the optimal solution (i.e. the best assignment of unknown variables such as 's) that maximizes the objective function while meeting a list of requirements expressed as linear equality or inequality relationships.
The strength of ILP is in its joint inference. Instead of making local, isolated assignment of each , it makes joint assignments of all 's at the same time; respecting the global constraints while optimizing the objective function given.
ILP is known to be NP-hard. However, there are many off-the-shelf solvers, both commercial and non commercial, that are available. One such solver is SCIP, which is currently the fastest non commercial mixed integer programming solver.
Procedure
Input:
- The linear objective function
- The linear constraints
Output:
- The assignment of unknown variables that optimizes the objective function and is consistent with the constraints
Related Methods
ILP is related to other methods in Statistical Relational Learning (SRL) field within Machine Learning that focuses on the incorporation of global correlations that hold between statistical variables <ref name="Getoor">Template:Harvtxt</ref>
References / Links
- Nemhauser, G.L. and Wolsey, L.A. Integer and combinatorial optimization, Volume 18, Wiley New York, 1988. - [1]
- Wikipedia article on Integer Programming - [2]