4. 经典整数规划模型

整数规划之所以在运筹学与工程优化中占据核心地位,很大程度上源于四类经典模型:背包问题、指派问题、选址问题和旅行商问题。它们各自刻画了一类现实决策结构,又分别对应不同的变量设计思路与求解难度。理解这四类模型,等于掌握了整数规划建模的“基本语汇”——后续大量复杂问题,往往都是它们的组合、扩展或变形。

一、背包问题:0-1变量的最简原型

背包问题描述的是在容量约束下从若干物品中选择子集,使总价值最大。设物品集合为 i=1,…,n,物品 i 的重量为 wi、价值为 vi,背包容量为 C。引入 0-1 决策变量 xi:取 1 表示装入,取 0 表示不装。模型为:

max  Σ v_i · x_i
s.t. Σ w_i · x_i ≤ C
     x_i ∈ {0, 1},  i = 1,…,n

变量设计的要点在于“选择即 0-1”。若物品可重复选取,则变量改为非负整数 xi ∈ ℤ+,成为完全背包;若每类物品有数量上限 ui,则加约束 xi ≤ ui,成为有界背包。背包问题的规模由物品数 n 决定,约束只有一条容量约束,结构极简,但它是 NP 难的——这正是“约束少不等于容易解”的典型例证。

二、指派问题:排列型 0-1 结构

指派问题把 n 项任务分配给 n 个执行者,每人恰好承担一项、每项恰好由一人完成,目标是最小化总成本。设成本矩阵为 cij,决策变量 xij ∈ {0,1} 表示任务 j 是否指派给执行者 i。模型为:

min  Σ_i Σ_j c_ij · x_ij
s.t. Σ_j x_ij = 1,  ∀i   (每人一项)
     Σ_i x_ij = 1,  ∀j   (每项一人)
     x_ij ∈ {0, 1}

指派问题的特殊之处在于:其约束矩阵是全幺模的,线性松弛的最优解天然为整数,因此可用匈牙利算法在多项式时间内求解。这一点与背包问题形成鲜明对照——同样是 0-1 变量,结构不同,难度天差地别。变量设计时需注意“双等式约束”是保证排列性质的关键,缺一不可。

三、选址问题:两层决策与固定成本

设施选址在指派结构上叠加了“是否启用设施”的决策。设候选设施集合 i、客户集合 j,启用设施 i 的固定成本为 fi、容量为 Qi,客户 j 的需求为 dj,从 i 到 j 的单位运输成本为 cij。需要两层变量:yi ∈ {0,1} 表示是否启用设施 i;xij ≥ 0 表示设施 i 服务客户 j 的货量。核心约束是“未启用的设施不能供货”:

min  Σ f_i·y_i + Σ Σ c_ij·x_ij
s.t. Σ_i x_ij = d_j,           ∀j
     Σ_j x_ij ≤ Q_i · y_i,     ∀i   (容量与启用联动)
     x_ij ≥ 0,  y_i ∈ {0, 1}

这里 Qi·yi 是典型的“大 M”式联动约束:当 yi=0 时右侧为 0,强制 xij=0;当 yi=1 时退化为容量约束。选址问题的难度来自固定成本带来的非凸性,线性松弛会倾向于把 yi 取成小数以“分摊”固定成本,导致松弛界偏松,分支定界需要更多节点。

四、旅行商问题:排列与子回路消除

旅行商问题(TSP)要求访问 n 个城市各一次并回到起点,使总路程最短。设 cij 为城市 i 到 j 的距离,xij ∈ {0,1} 表示是否走边 (i,j)。基础模型为:

min  Σ_i Σ_j c_ij · x_ij
s.t. Σ_j x_ij = 1,  ∀i   (每个城市出度 1)
     Σ_i x_ij = 1,  ∀j   (每个城市入度 1)
     x_ij ∈ {0, 1}

仅有出入度约束会允许“多个不相连的子回路”,因此必须加入子回路消除约束。常用做法是引入辅助变量 ui(访问次序),对 i,j ≠ 1 加 MTZ 约束:ui − uj + n·xij ≤ n−1。TSP 的变量数为 n(n−1),约束数随 n 平方增长,且子回路约束数量指数级,通常采用割平面法按需生成。

四类经典整数规划模型:变量结构与求解难度对照 背包问题 变量:x_i ∈ {0,1} 约束:1 条容量约束 规模:n 个变量 NP 难 · 弱松弛 选择型 0-1 结构 难度:中高 指派问题 变量:x_ij ∈ {0,1} 约束:2n 条等式 规模:n² 个变量 全幺模 · 多项式可解 排列型 0-1 结构 难度:低 选址问题 变量:y_i∈{0,1}, x_ij≥0 约束:需求+容量联动 规模:m+mn 个变量 固定成本 · 非凸 两层决策结构 难度:高 旅行商问题 变量:x_ij ∈ {0,1} 约束:出入度+子回路 规模:n(n−1) 个变量 NP 难 · 指数约束 回路型 0-1 结构 难度:极高 求解难度递增 背包 指派 选址 TSP 规模与难度的影响因素 • 变量维度:指派 n²、TSP n(n−1) 增长快,但指派因全幺模反而易解 • 约束结构:背包约束少却 NP 难;选址固定成本使松弛界偏松 • 子回路/割约束:TSP 需按需生成,规模越大割平面迭代越多

五、模型规模与求解难度的关系

把四类模型放在一起比较,可以得到一个关键认识:规模(变量与约束数量)并不直接决定难度,结构才是决定性的。指派问题变量数达 n²,却因约束矩阵全幺模而多项式可解;背包问题只有一条约束,却是 NP 难的。选址问题在指派结构上加入固定成本,破坏了全幺模性,线性松弛解出现小数 yi,分支定界树显著变大。TSP 的变量数 n(n−1) 与子回路约束的指数级数量,使其成为四者中最难的一类。

实际建模时,可据此选择策略:指派类问题优先用匈牙利算法或直接 LP 求解;背包类问题规模小时用动态规划,规模大时用分支定界配合贪心上界;选址问题应尽量收紧大 M 取值(用 Qi 而非任意大数),并考虑加入有效不等式强化松弛;TSP 则必须依赖割平面与启发式初始解。变量设计上,0-1 变量用于“是否选择/启用/走边”,连续或整数变量用于“数量/流量”,两层变量之间的联动约束是建模正确性的关键。

建模自检:每个 0-1 变量是否都有明确的“取 1 含义”?联动约束中的大 M 是否取到了业务上可能的最小值?子回路、容量等隐含约束是否遗漏?这三问能排除大部分经典模型的设计错误。