|
|
Line 1: |
Line 1: |
| An '''integer programming''' problem is a mathematical [[Optimization (mathematics)|optimization]] or [[Constraint satisfaction problem|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 function (calculus)|linear]].
| | I'm Coral and I live in a seaside city in northern Poland, Szamotuly. I'm 29 and I'm will soon finish my study at Environmental Studies.<br><br>Look into my site - [http://Www.ljyelectronic.com/plus/guestbook.php FIFA Coin Generator] |
| | |
| Integer programming is [[NP-hard]]. A special case, 0-1 integer linear programming, in which unknowns are binary, is one of [[Karp's 21 NP-complete problems]].
| |
| | |
| ==Canonical and standard form for ILPs==
| |
| | |
| An integer linear program in canonical form is expressed as:<ref name="optBook">{{cite book|last1=Papadimitriou|first1=C.H.|last2=Steiglitz|first2= K.|title=Combinatorial optimization: algorithms and complexity|year=1998|publisher=Dover|location=Mineola, NY|isbn=0486402584}}</ref>
| |
| | |
| :<math> \begin{align}
| |
| & \text{maximize} && \mathbf{c}^\mathrm{T} \mathbf{x}\\
| |
| & \text{subject to} && A \mathbf{x} \le \mathbf{b}, \\
| |
| & && \mathbf{x} \ge \mathbf{0}, \\
| |
| & \text{and} && \mathbf{x} \in \mathbb{Z},
| |
| \end{align} </math>,
| |
| | |
| and an ILP in standard form is expressed as
| |
| | |
| :<math> \begin{align}
| |
| & \text{maximize} && \mathbf{c}^\mathrm{T} \mathbf{x}\\
| |
| & \text{subject to} && A \mathbf{x} = \mathbf{b}, \\
| |
| & && \mathbf{x} \ge \mathbf{0}, \\
| |
| & \text{and} && \mathbf{x} \in \mathbb{Z},
| |
| \end{align} </math>
| |
| where the entries of <math>\mathbf{c}, \mathbf{b}</math> are vectors and <math>A</math> is a matrix, having integer values. Note that similar to linear programs, ILPs not in standard form can be [[simplex algorithm#Standard form|converted to standard form]] by eliminating inequalities by introducing slack variables and replacing variables that are not sign-constrained with the difference of two sign-constrained variables
| |
| | |
| ==Example==
| |
| [[File:IP polytope with LP relaxation.png|350px|thumb|IP polytope with LP relaxation]]
| |
| The graph on the right shows the following problem.
| |
| :<math>
| |
| \begin{align}
| |
| \max & \text{ } y \\
| |
| -x +y & \leq 1 \\
| |
| 3x +2y & \leq 12 \\
| |
| 2x +3y & \leq 12 \\
| |
| x,y & \ge 0 \\
| |
| x,y & \in \mathbb{Z}
| |
| \end{align}
| |
| </math>
| |
| | |
| The feasible integer points are shown in red, and the red dashed lines indicate their convex hull, which is the smallest polyhedron that contains all of these points. The blue lines together with the coordinate axes define the polyhedron of the LP relaxation, which is given by the inequalities without the integrality constraint. The goal of the optimization is to move the black dotted line as far upward while still touching the polyhedron. The optimal solutions of the integer problem are the points <math>(1,2)</math> and <math>(2,2)</math> which both have an objective value of 2. The unique optimum of the relaxation is <math>(1.8,2.8)</math> with objective value of 2.8. Note that if the solution of the relaxation is rounded to the nearest integers, it is not feasible for the ILP.
| |
| | |
| ==Variants==
| |
| | |
| '''Mixed integer linear programming''' (MILP) involves problems in which only some of the variables, <math>x_i</math>, are constrained to be integers, while other variables are allowed to be non-integers.
| |
| | |
| '''Zero-one linear programming''' involves problems in which the variables are restricted to be either 0 or 1. Note that any bounded integer variable can be expressed as a combination of binary variables.<ref>{{cite book|last=Williams|first=H.P.|title=Logic and integer programming|series=International Series in Operations Research & Management Science|year=2009|volume=130|isbn= 978-0-387-92280-5}}</ref> For example, given an integer variable, <math>0\le x\le U</math>, the variable can be expressed using <math>\lfloor \log_2U\rfloor+1</math> binary variables:
| |
| :<math>
| |
| x = x_1+2x_2+4x_3+\ldots+2^{\lfloor \log_2U\rfloor}x_{\lfloor \log_2U\rfloor+1}.
| |
| </math>
| |
| | |
| ==Example problems that can be formulated as ILPs==
| |
| A large number of problems can be formulated as ILPs. These include
| |
| *[[Travelling salesman problem#Integer linear programming formulation|Travelling Salesman]]
| |
| *[[vertex cover#ILP formulation|Vertex Cover]] and other [[Covering problem]]s
| |
| *[[Set packing#Integer linear program formulation|Set packing]] and other [[Packing problem]]s
| |
| *[[Boolean satisfiability problem|Boolean satisfiability]]
| |
| Since the decision version of integer linear programming is in [[NP (complexity)|NP]] (solutions can be verified in polynomial time) and there are [[NP-complete]] problems that can be polynomially reduced to ILPs, the decision version of integer linear programming is NP-complete.
| |
| | |
| ==Applications==
| |
| | |
| There are two main reasons for using integer variables when modeling problems as a linear program:
| |
| #The integer variables represent quantities that can only be integer. For example, it is not possible to build 3.7 cars.
| |
| #The integer variables represent decisions and so should only take on the value 0 or 1 .
| |
| These considerations occur frequently in practice and so integer linear programming can be used in many applications areas, some of which are briefly described below.
| |
| | |
| ===Production planning===
| |
| In agricultural production planning involves determining production yield for several crops that can share resources (e.g. Land, labor, capital seeds fertilizer, etc). A possible objective is to maximize the total production, without exceeding the available resources. In some cases, this can be expressed in terms of a linear program, but variables must be constrained to be integer.
| |
| | |
| ===Scheduling===
| |
| | |
| These problems involve service and vehicle scheduling in transportation networks. For example, a problem may involve assigning buses or subways to individual routes so that a timetable can be met, and also to equip them with drivers. Here binary decision variables indicate whether a bus or subway is assigned to a route and whether a driver is assigned to a particular train or subway.
| |
| | |
| ===Telecommunications networks===
| |
| | |
| The goal of these problems is to design a network of lines to install so that a predefined set of communication requirements are met and the total cost of the network is minimal.<ref>{{cite web|last1=Borndörer|first1=R.|last2= M.|title=Designing telecommunication networks by integer programming|url=http://www.zib.de/groetschel/teaching/SS2012/120503Vorlesung-DesigningTelcomNetworks-reduced.pdf|year=2012}}</ref> This requires optimizing both the topology of the network along with the setting the capacities of the various lines. In many cases, the capacities are constrained to be integer quantities. Usually there are, depending on the technology used, additional restrictions that can modeled as a linear inequalities with integer or binary variables.
| |
| | |
| ===Cellular networks===
| |
| The task of frequency planning in [[GSM]] mobile networks involves distributing available frequencies across the antennas so that users can be served and interference is minimized between the antennas.<ref>{{cite web|last=Sharma|first=Deepak|title=Frequency Planning|url=http://www.slideshare.net/deepakecrbs/gsm-frequency-planning|year= 2010}}</ref> This problem can be formulated as an integer linear program in which binary variables indicate whether a frequency is assigned to an antenna.
| |
| | |
| ==Algorithms==
| |
| | |
| The naive way to solve an ILP is to simply remove the constraint that '''x''' is integral, solve the corresponding LP (called the [[Linear programming relaxation|LP relaxation]] of the ILP), and then round the entries of the solution to the LP relaxation. But, not only may this solution not be optimal, it may not even be feasible.
| |
| | |
| ===Using total unimodularity===
| |
| | |
| While in general the solution to LP relaxation will not be guaranteed to be optimal, if the ILP has the form <math>\max\mathbf{c}^\mathrm{T} \mathbf{x}</math> such that <math>A\mathbf{x} = \mathbf{b}</math> where <math>A, \mathbf{b},</math> and <math>\mathbf{c}</math> have all integer entries and <math>A</math> is [[unimodular matrix#Total unimodularity|totally unimodular]], then every basic feasible solution is integral. Consequently, the solution returned by the [[simplex algorithm]] is guaranteed to be integral. To show that every basic feasible solution is integral, let <math>\mathbf{x}</math> be an arbitrary basic feasible solution . Since <math>\mathbf{x}</math> is feasible,
| |
| we know that <math>A\mathbf{x}=\mathbf{b}</math>. Let <math>\mathbf{x}_0=[x_{n_1},x_{n_2},\cdots,x_{n_j}]</math> be the elements corresponding to the basis columns for the basic solution <math>\mathbf{x}</math>. By definition of a basis, there is some square submatrix <math>B</math> of
| |
| <math>A</math> with linearly independent columns such that <math>B\mathbf{x}_0=\mathbf{b}</math>.
| |
| | |
| Since the columns of <math>B</math> are linearly independent and <math>B</math> is square, <math>B</math> is nonsingular,
| |
| and therefore by assumption, <math>B</math> is [[unimodular matrix|unimodular]] and so <math>\det(B)=\pm1</math>. Also, since <math>B</math> is nonsingular, it is invertible and therefore <math>\mathbf{x}_0=B^{-1}\mathbf{b}</math>. By definition, <math>B^{-1}=\frac{B^{adj}}{\det(B)}=\pm B^{adj}</math>. Note that <math>B^{adj}</math> denotes the [[Adjugate matrix|adjugate]] of <math>B</math> and is integral because <math>B</math> is integer. Therefore,
| |
| :<math>
| |
| \begin{align}
| |
| &\Rightarrow B^{-1}=\pm B^{adj} \text{ is integral.} \\
| |
| &\Rightarrow x_0=B^{-1}b \text{ is integral.} \\
| |
| &\Rightarrow \text{Every basic feasible solution is integral.}
| |
| \end{align}
| |
| </math>
| |
| Thus, if the matrix <math>A</math> of an ILP is totally unimodular, rather than use an ILP algorithm, the simplex method can be used to solve the LP relaxation and the solution will be integer.
| |
| | |
| ===Exact algorithms===
| |
| When the matrix <math>A</math> is not totally unimodular, there are a variety of algorithms that can be used to solve integer linear programs exactly. One class of algorithms are [[Cutting-plane method|cutting plane methods]] which work by solving the LP relaxation and then adding linear constraints that drive the solution towards being
| |
| integer without excluding any integer feasible points.
| |
| | |
| Another class of algorithms are variants of the [[branch and bound]] method. For example, the [[branch and cut]] method that combines both branch and bound and cutting plane methods. Branch and bound algorithms have a number of advantages over algorithms that only use cutting planes. One advantage is that the algorithms can be terminated early and as long as at least one integral solution has been found, a feasible, although not necessarily optimal , solution can be returned. Further, the solutions of the LP relaxations can be used to provide a worst-case estimate of how far from optimality the returned solution is. Finally, branch and bound methods can be used to return multiple optimal solutions.
| |
| | |
| Lenstra in 1983 showed,<ref>H.W.Lenstra, "Integer programming with a fixed number of variables", Mathematics of operations research, Vol 8, No 8, November 1983</ref> that when number of variables is fixed, integer programming problem can be solved in a polynomial time.
| |
| | |
| ===Heuristic methods===
| |
| Since integer linear programming is [[NP-complete]], many problem instances are intractable and so heuristic methods must be used instead. For example, [[tabu search]] can be used to search for solutions to ILPs.<ref>{{cite journal|last=Glover|first=F.|title=Tabu search-Part II|journal=ORSA Journal on computing|year=1989|volume=1|issue=3|pages=4–32|doi= 10.1287/ijoc.2.1.4 }}</ref> To use tabu search to solve ILPs, moves can be defined as incrementing or decrementing an integer constrained variable of a feasible solution, while keeping all other integer-constrained variables constant. The unrestricted variables are then solved for. Short term memory can consist of previous tried solutions while medium term memory can consist of values for the integer constrained variables that have resulted in high objective values (assuming the ILP is a maximization problem). Finally, long term memory can guide the search towards integer values that have not previously been tried.
| |
| | |
| Other heuristic methods that can applied to ILPs include
| |
| *[[Hill climbing]]
| |
| *[[Simulated annealing]]
| |
| *[[Reactive search optimization]]
| |
| *[[Ant colony optimization algorithms|Ant colony optimization]]
| |
| *[[Hopfield network|Hopfield neural networks]]
| |
| | |
| There are also a variety of other problem-specific heuristics, such as the [[Travelling salesman problem#Iterative improvement|k-opt heuristic]] for the travelling salesman problem. Note that a disadvantage of heuristic methods is that if they fail to find a solution, it cannot be determined whether it is because there is no feasible solution or whether the algorithm simply was unable to find one. Further, it is usually impossible to quantify how close to optimal a solution returned by these methods is.
| |
| | |
| ==References==
| |
| {{Reflist}}
| |
| | |
| ==Further reading==
| |
| * {{cite book|author1=[[George Nemhauser|George L. Nemhauser]]|author2=Laurence A. Wolsey|title=Integer and combinatorial optimization|year=1988|publisher=Wiley|isbn=978-0-471-82819-8}}
| |
| * {{cite book|author=Alexander Schrijver|authorlink=Alexander Schrijver|title=Theory of linear and integer programming|year=1998|publisher=John Wiley and Sons|isbn=978-0-471-98232-6}}
| |
| * {{cite book|author=Laurence A. Wolsey|title=Integer programming|year=1998|publisher=Wiley|isbn=978-0-471-28366-9}}
| |
| * {{cite book|author1=Dimitris Bertsimas|author2=Robert Weismantel|title=Optimization over integers|year=2005|publisher=Dynamic Ideas|isbn=978-0-9759146-2-5}}
| |
| * {{cite book|author=John K. Karlof|title=Integer programming: theory and practice|year=2006|publisher=CRC Press|isbn=978-0-8493-1914-3}}
| |
| * {{cite book|author=H. Paul Williams|title=Logic and Integer Programming|year=2009|publisher=Springer|isbn=978-0-387-92279-9}}
| |
| * {{cite book|editor=Michael Jünger, Thomas M. Liebling, Denis Naddef, [[George Nemhauser]], William R. Pulleyblank, Gerhard Reinelt, Giovanni Rinaldi and Laurence A. Wolsey|title=50 Years of Integer Programming 1958-2008: From the Early Years to the State-of-the-Art|year=2009|publisher=Springer|isbn=978-3-540-68274-5}}
| |
| * {{cite book|author1=Der-San Chen|author2=Robert G. Batson|author3=Yu Dang|title=Applied Integer Programming: Modeling and Solution|year=2010|publisher=John Wiley and Sons|isbn=978-0-470-37306-4}}
| |
| | |
| ==External links==
| |
| * [http://mat.gsia.cmu.edu/orclass/integer/integer.html A Tutorial on Integer Programming]
| |
| * Conference [http://www.mathopt.org/?nav=ipco Integer Programming and Combinatorial Optimization, IPCO]
| |
| * [http://www.iasi.cnr.it/aussois The Aussois Combinatorial Optimization Workshop]
| |
| {{Optimization algorithms|combinatorial|state=expanded}}
| |
| | |
| [[Category:Operations research]]
| |
| [[Category:Combinatorial optimization]]
| |