Graduate

GraduateOptimizationCombinatorial Optimization


Integer Programming


Integer programming is a branch of mathematical optimization or mathematical programming. In this context, "optimization" means selecting the best element from a given set of available alternatives, with respect to some criterion. Integer programming deals specifically with optimization problems where some or all of the variables are restricted to be integers.

Types of integer programming

  • Pure integer programming (PIP): All decision variables are required to take integer values.
  • Mixed integer programming (MIP): Only some of the variables are required to be integers, while others can be non-integers.
  • Binary integer programming: Special case of integer programming where variables are limited to 0 or 1. It is often used for yes/no decisions.

Importance in combinatorial optimization

Many problems in combinatorial optimization can be formulated as integer programming problems. Combinatorial optimization focuses on objects that are discrete or that can be counted. Since integer values are discrete, integer programming is the best way to solve such problems and becomes important in solving it.

Formulation of integer programming problem

The integer programming problem is usually formulated as follows:

Maximize (or Minimize): c 1 x 1 + c 2 x 2 + ... + c n x n 
Subject to: 
a 11 x 1 + a 12 x 2 + ... + a 1n x n ≤ b 1 
a 21 x 1 + a 22 x 2 + ... + a 2n x n ≤ b 2 
... 
a m1 x 1 + a m2 x 2 + ... + a mn x n ≤ b m 
Where: x 1 , x 2 , ..., x n are integers

Here, c i denotes the coefficients of the objective function that you want to maximize or minimize, a ij denotes the coefficients of the constraints, and b i denotes the boundaries of the constraints.

Example: the knapsack problem

Let's consider a classic example of integer programming: the knapsack problem. The objective is to maximize the total value of the items placed in the knapsack, without exceeding its carrying capacity.

Example of a knapsack problem:

  • Items: 4 items with weights w = [2, 3, 4, 5] and values v = [3, 4, 5, 6]
  • Capacity: This bag can carry the weight of maximum 5 people.

Formulate the knapsack problem using integer programming:

Maximize: 3x 1 + 4x 2 + 5x 3 + 6x 4 
Subject to: 2x 1 + 3x 2 + 4x 3 + 5x 4 ≤ 5 
Where: x 1 , x 2 , x 3 , x 4 ∈ {0, 1}

The restriction x i ∈ {0, 1} ensures that each item can either be included in the bag or not.

Visual representation

5 (weight) 4 (weight) 3 (weight) 2 (weight)

This view shows a simplified model of a bag with the weight packed in descending order.

Solving integer programming problems

Integer programming problems are generally NP-hard, meaning that there are no known algorithms that can solve all such problems efficiently (in polynomial time). However, several approaches can be adopted to solve specific problems.

1. Branch and bound

This is a widely used method for solving integer programming problems. The basic idea is to divide the problem into smaller sub-problems (branches) and find the optimal solution by evaluating the bounds of these sub-problems while subproblems are to be systematically eliminated if their boundaries indicate that they cannot contain a better solution (limit).

2. Cutting plane method

This method improves the linear relaxation of the integer programming problem by iteratively inserting linear constraints (cutting planes) into the problem, with the aim of filtering out regions of the solution space that do not have integer solutions.

Practical applications of integer programming

  • Resource allocation: allocation of limited resources among competing activities.
  • Scheduling: Allocating time frames to tasks, such as work schedules, transportation schedules, etc.
  • Network design: design of network paths, specifying bandwidth, etc.
  • Production planning: Planning production activities, such as the quantity of products to be produced.

Example problem: task scheduling

Consider a set of some tasks, each of which has a specific processing time and deadline. The objective is to schedule the tasks in such a way that the total latency is minimized, which is the amount by which the tasks are delayed to complete and takes longer than the deadline.

Example:

  • Jobs: Job 1, Job 2, Job 3, processing times 2, 4, 3 and deadlines 2, 6, 5 respectively.

Formulate this scheduling problem using integer programming:

Minimize: T 1 + T 2 + T 3 
Subject to: 
x 1,1 + x 1,2 + x 1,3 = 1 
x 2,1 + x 2,2 + x 2,3 = 1 
x 3,1 + x 3,2 + x 3,3 = 1 
Completion Constraints: 
C 1 = 2x 1,1 + 4x 2,1 + 3x 3,1 
C 2 = C 1 + 2x 1,2 + 4x 2,2 + 3x 3,2 
C 3 = C 2 + 2x 1,3 + 4x 2,3 + 3x 3,3 
Where: 
T i = max(0, C i - deadline i ) 
x i,j ∈ {0, 1}

Advantages of integer programming

Integer programming provides a powerful framework for solving many complex decision-making problems, because of its ability to model logical requirements within optimization problems. This is particularly beneficial when:

  • Decisions can naturally be represented in on/off terms (e.g., whether or not to invest).
  • Your solution must adhere to strict logical constraints.
  • You will have to solve problems where some of the variables require different values.

Conclusion

Integer programming plays a vital role not only in the broad field of optimization but also in many practical applications across industries. Despite its complexity and computational intensity, there are effective strategies and heuristics that can be used to obtain feasible solutions to real-world problems. As computational power continues to increase, integer programming is becoming more useful and widespread in handling complex decision-making challenges.


Graduate → 9.3.2


U
username
0%
completed in Graduate


Comments