Skip to main content
← Back to I Definitions

Integer programming

What Is Integer Programming?

Integer programming is a mathematical optimization technique belonging to the broader field of mathematical optimization, where some or all of the decision variables are restricted to be whole numbers (integers). This contrasts with standard linear programming, where variables can take on any real value. The core of integer programming involves finding the best outcome, such as maximizing profit or minimizing cost, given a set of constraints expressed as linear inequalities or equalities, with the added condition that certain variables must be integers. This restriction makes integer programming problems significantly more complex to solve than their purely continuous counterparts.

History and Origin

The formal development of integer programming as a distinct field began shortly after George B. Dantzig introduced the simplex method for linear programming in the late 1940s. Early pioneers quickly recognized the need for models that could handle indivisible units or discrete choices. A pivotal moment in the history of integer programming came in 1958 when Ralph Gomory developed the first convergent cutting-plane algorithm for pure integer programs. His groundbreaking work, detailed in his paper "Outline of an Algorithm for Integer Solutions to Linear Programs," laid fundamental theoretical groundwork for solving these complex problems.

Gomory's method involved systematically adding new linear inequalities, known as "cuts," to the problem's formulation. These cuts would progressively tighten the feasible region of the problem's linear relaxation, eventually leading to an integer solution. Although initially considered computationally impractical due to numerical instability and the large number of cuts sometimes required, Gomory's ideas inspired further research.9 In the 1960s, the "branch and bound" algorithm emerged as another critical approach, which, when combined with cutting planes (known as "branch-and-cut"), revolutionized the practical solvability of integer programming problems in the 1990s.8

Key Takeaways

  • Integer programming is a type of optimization where some or all variables must be integers.
  • It is used to model real-world scenarios where fractional solutions are not sensible, such as counting people or units of production.
  • Integer programming problems are generally more computationally challenging to solve than continuous optimization problems.
  • Key solution methods include branch and bound and the cutting plane method.
  • Applications span various industries, including logistics, finance, and manufacturing.

Formula and Calculation

An integer programming problem, specifically an Integer Linear Program (ILP), is typically formulated as follows:

Maximize (or Minimize)cTxSubject toAxbx0xiZfor some or all i\begin{aligned} \text{Maximize (or Minimize)} \quad & c^T x \\ \text{Subject to} \quad & Ax \le b \\ & x \ge 0 \\ & x_i \in \mathbb{Z} \quad \text{for some or all } i \end{aligned}

Where:

  • (x): Vector of decision variables.
  • (c): Vector of coefficients for the objective function.
  • (A): Matrix of technological coefficients.
  • (b): Vector of right-hand side values (constraints).
  • (\mathbb{Z}): Denotes the set of integers.

The "for some or all (i)" part signifies whether it's a mixed-integer program (some variables integer) or a pure integer program (all variables integer). The solution process often starts by solving the problem as a standard linear program (its "linear relaxation") using methods like the simplex method, then iteratively applying techniques such as branch and bound or cutting planes to force integer solutions.

Interpreting Integer Programming Results

Interpreting the results of an integer programming model involves understanding that the optimal solution provides the best possible outcome given the discrete nature of the decision variables. Unlike continuous linear programs where solutions might include fractions (e.g., 1.5 trucks), integer programming ensures that the proposed solution adheres to indivisible units (e.g., 1 or 2 trucks, but not 1.5).

When an integer programming model yields a solution, it represents a precise allocation of resources or a set of binary decisions that optimize the objective. For instance, in a capital budgeting problem, a 0-1 integer variable might indicate whether to fully undertake a project (1) or not at all (0). The interpretation is straightforward: the optimal integer values of the variables directly correspond to the tangible decisions or quantities. If the objective was to maximize profit, the final objective function value is the maximum profit achievable under the given integer constraints. Conversely, if the goal was to minimize costs, the result is the lowest cost possible while satisfying all conditions. These results are critical for practical implementation, as they offer actionable whole-number answers.

Hypothetical Example

Consider a small manufacturing company that produces two types of specialized electronic components: Component A and Component B. Each component requires specific production time on two different machines, Machine 1 and Machine 2, and contributes a certain profit.

  • Component A: Requires 2 hours on Machine 1, 1 hour on Machine 2, and yields a profit of $10 per unit.
  • Component B: Requires 1 hour on Machine 1, 3 hours on Machine 2, and yields a profit of $15 per unit.

Available machine hours per week:

  • Machine 1: 40 hours
  • Machine 2: 30 hours

The company wants to maximize its total profit, but it can only produce whole units of components.

Let:

  • (x_A) = number of units of Component A produced
  • (x_B) = number of units of Component B produced

The Integer Programming formulation is:

Maximize: (10x_A + 15x_B) (Objective function: total profit)

Subject to:

  1. (2x_A + 1x_B \le 40) (Machine 1 time constraint)
  2. (1x_A + 3x_B \le 30) (Machine 2 time constraint)
  3. (x_A \ge 0, x_B \ge 0) (Non-negativity constraints)
  4. (x_A, x_B \in \mathbb{Z}) (Integer constraints, as components are whole units)

If solved as a linear program (without integer constraints), the optimal solution might be (x_A = 18.57) and (x_B = 3.33). However, since you cannot produce fractions of components, an integer programming solver would find an optimal integer solution. For this small problem, an integer solution could be (x_A = 19) and (x_B = 2), yielding a profit of (10(19) + 15(2) = 190 + 30 = $220). Another possible integer solution is (x_A = 18) and (x_B = 4), yielding a profit of (10(18) + 15(4) = 180 + 60 = $240). The actual optimal integer solution would be found by an algorithm that accounts for the integer requirements, potentially exploring surrounding integer points or using techniques like branch and bound.

Practical Applications

Integer programming is widely applied across various sectors to solve complex problems where discrete decisions are essential. Its ability to model indivisible quantities or yes/no choices makes it indispensable for many real-world scenarios.

  • Supply Chain Management: Companies use integer programming to optimize logistics, including determining optimal warehouse locations, planning transportation routes, and scheduling deliveries. This can involve binary variables for "open/close" decisions regarding facilities.7
  • Production Planning: Manufacturers utilize integer programming to schedule production runs, allocate machines, and determine the quantity of each product to produce, ensuring that only whole items are manufactured.6
  • Financial Planning: In finance, integer programming assists with portfolio optimization, where decisions about which assets to invest in (e.g., buying a certain number of shares) must be whole numbers. It's also used in capital budgeting to select from a set of discrete projects.
  • Telecommunications: Frequency assignment in cellular networks, ensuring minimal interference while maximizing network coverage, often employs integer programming, with binary variables representing whether a frequency is assigned to an antenna.
  • Scheduling: From airline crew scheduling to university course timetabling and nurse rostering, integer programming helps create efficient schedules by assigning specific individuals or resources to discrete time slots or tasks.5
  • Resource Allocation: Governments and organizations use integer programming to allocate limited resources, such as emergency services or public funds, to various projects or regions.4

The robust framework of integer programming allows businesses and institutions to build mathematical models that mirror real-world complexities, leading to more effective and efficient operations. For example, in routing problems like the Traveling Salesman Problem (TSP), integer programming can determine the shortest route visiting multiple cities exactly once, a crucial application for delivery services.3

Limitations and Criticisms

While powerful, integer programming comes with significant limitations, primarily concerning its computational complexity. Solving integer programming problems is generally much harder than solving continuous linear programs. The underlying reason is that the feasible region for integer problems is discrete, not continuous and convex, which complicates the search for an optimal solution.2

  • Computational Difficulty: Integer programming problems are classified as NP-hard, meaning that the time required to find an optimal solution can increase exponentially with the size of the problem (e.g., number of variables or constraints). Even with highly sophisticated algorithms and powerful computers, many real-world integer programming models with a few hundred integer variables may never be solved to optimality within practical timeframes.1
  • Scalability Issues: Due to the computational burden, applying integer programming to very large-scale problems can be intractable. While approximation techniques and heuristics exist, they do not guarantee optimality.
  • Sensitivity to Data: Small changes in input data can sometimes lead to significantly different optimal integer solutions, which can make models less stable than their continuous counterparts.
  • Model Formulation Complexity: Formulating a real-world problem accurately as an integer program requires careful consideration. Translating complex business rules into precise mathematical constraints and integer variable definitions can be a challenging and time-consuming process.

Despite these criticisms, ongoing research and advancements in algorithms and computational power continue to expand the practical applicability of integer programming.

Integer Programming vs. Linear Programming

Integer programming (IP) and linear programming (LP) are both mathematical optimization techniques used to achieve an optimal outcome, such as maximizing profit or minimizing cost, subject to a set of linear constraints. The fundamental difference lies in the nature of their decision variables.

FeatureInteger Programming (IP)Linear Programming (LP)
Variable TypeSome or all decision variables must be integers.All decision variables can take on any real value (fractions/decimals).
Solution NatureProvides discrete, indivisible solutions.Provides continuous, potentially fractional solutions.
Feasible RegionA discrete set of points.A continuous, convex polyhedron.
Computational EaseGenerally more complex and computationally intensive (NP-hard).Generally easier and solvable in polynomial time (e.g., via simplex method).
Real-World FitBetter for problems involving countable items (e.g., number of planes, yes/no decisions).Better for problems involving divisible quantities (e.g., gallons of liquid, pounds of material).

Confusion often arises because integer programming is essentially an extension of linear programming. An integer program becomes a linear program if all integer constraints are relaxed (i.e., variables are allowed to be continuous). The optimal solution to the relaxed linear program provides an upper bound (for maximization problems) or a lower bound (for minimization problems) on the optimal solution of the corresponding integer program. However, simply rounding the LP solution to the nearest integer often does not yield the optimal integer solution, and can even result in an infeasible solution, highlighting the need for specialized integer programming algorithms.

FAQs

What is the primary difference between integer programming and linear programming?

The primary difference is that in integer programming, some or all of the decision variables must take on whole number values, whereas in linear programming, variables can be any real number, including fractions or decimals.

Why is integer programming harder to solve than linear programming?

Integer programming is harder to solve because the variables are restricted to discrete values. This makes the feasible region a set of individual points rather than a continuous space, which traditional linear programming algorithms are designed to navigate. The discrete nature means that simple rounding of a continuous solution often won't work.

What are some common real-world uses of integer programming?

Integer programming is used in diverse fields such as optimizing supply chains, scheduling employees, planning production lines, selecting investment projects in capital budgeting, and designing telecommunication networks. Anywhere decisions involve "yes/no" choices or indivisible items, integer programming can provide an optimal solution.

What are binary integer variables?

Binary integer variables are a special type of integer variable restricted to taking only two values: 0 or 1. They are commonly used to represent "yes/no" decisions, such as whether to select a project (1) or not (0), or whether to open a facility (1) or not (0).

Can an integer programming problem have no feasible solution?

Yes, an integer programming problem can have no feasible solution. This can occur if the constraints are too restrictive, making it impossible to satisfy all conditions simultaneously with integer values for the variables. Similarly, its linear programming relaxation might be feasible, but with no integer points satisfying all criteria.