วันจันทร์ที่ 27 กรกฎาคม พ.ศ. 2569

Integer Linear Programming (ILP)

Integer Programming (IP) is a branch of mathematical optimization in which some or all decision variables are constrained to take integer values. It is widely used to solve decision-making problems where fractional values are not meaningful, such as selecting projects, assigning employees, routing vehicles, or placing servers.

General Form

An integer programming problem can be written as









Most practical IP problems have linear objective functions and constraints, leading to Integer Linear Programming (ILP).

Example

Suppose a cloud provider wants to decide how many servers of two types to deploy.

Let:

  • (x_1) = number of Type A servers

  • (x_2) = number of Type B servers








The solution might be:

  • (x_1=4)

  • (x_2=4)

rather than a fractional solution such as (x_1=3.7), which is impossible because you cannot purchase 3.7 servers.

Types of Integer Programming

TypeVariable TypeExample
Pure Integer ProgrammingAll variables are integersNumber of servers to deploy
Mixed Integer Programming (MIP/MILP)Some variables are integers, others continuousNumber of servers (integer) and bandwidth allocation (continuous)
Binary Integer ProgrammingVariables are only 0 or 1Cache an object (1) or not (0), select a data center

Binary variables are especially common because many engineering decisions are yes/no choices.

Why Integer Programming?

Many real-world decisions are inherently discrete:

  • Build a data center or not.

  • Cache a file or not.

  • Assign a request to one server.

  • Schedule an employee.

  • Select network links.

Linear programming (LP) may produce infeasible fractional solutions, such as assigning 2.4 virtual machines or 0.35 of a cache replica, whereas integer programming enforces realistic decisions.

Applications in Computer Science

Since your work involves cloud computing and cache optimization, integer programming is particularly useful for problems such as:

  • Cloud resource allocation: deciding the number of virtual machines or servers.

  • Content placement in CDNs: determining which objects should be cached at each edge server (often modeled as binary variables).

  • Virtual machine placement: assigning VMs to physical hosts while satisfying CPU, memory, and network constraints.

  • Task scheduling: assigning jobs to processors.

  • Network design: selecting links or routers to activate.

  • Facility location: deciding where to place cloud regions or edge servers.

Solving Integer Programming Problems

Unlike linear programming, integer programming is generally NP-hard, meaning there is no known polynomial-time algorithm that solves all instances optimally.

Common exact methods include:

  • Branch and Bound

  • Branch and Cut

  • Cutting Planes

  • Branch and Price

For very large problems, heuristic and metaheuristic methods are often used:

  • Genetic Algorithms

  • Simulated Annealing

  • Tabu Search

  • Ant Colony Optimization

Relationship to Linear Programming

Mathematical Programming
│
├── Linear Programming (LP)
│     Variables: continuous
│
└── Integer Programming (IP)
      │
      ├── Pure Integer Programming (IP)
      ├── Binary Integer Programming (BIP)
      └── Mixed Integer Linear Programming (MILP/MIP)

In summary, integer programming extends linear programming by requiring some or all variables to be integers. This makes it much better suited for discrete decision problems encountered in cloud computing, networking, scheduling, and cache optimization, although it is computationally more challenging to solve.