Integer Linear Programming (ILP) is a variant of linear programming in which inputs and solutions may only involve linear constraints. ILP is known to be NP-hard, but various approaches such as cutting-planes and branch-and-cut can still give good performance on many practical problems.<br/><br/>A great many combinatorial optimization problems can be reduced to ILP, making it a very important problem.<br/><br/>Formally, the input to the problem is an integer matrix A and integer vectors c and b. The goal is to find a value for the integer vector x subject to the following constraints:<br/><br/><img src="https://upload.wikimedia.org/math/9/0/0/900129a564bcfa9ac3ad5611f4f5958a.png"/><br/><br/><a href="https://en.wikipedia.org/wiki/Integer_programming">https://en.wikipedia.org/wiki/Integer_programming</a><br/><a href="https://en.wikipedia.org/wiki/Cutting-plane_method">https://en.wikipedia.org/wiki/Cutting-plane_method</a><br/><a href="https://en.wikipedia.org/wiki/Branch_and_cut">https://en.wikipedia.org/wiki/Branch_and_cut</a><br/>