2. 资源分配中的核心概念与建模基础

资源分配问题的本质,是在有限资源条件下决定“把什么给谁、给多少”,从而尽可能好地达成某个目标。要把这类现实问题交给数学方法处理,第一步不是急着套公式,而是把业务语言翻译成一套精确的建模语言。本节围绕六个核心概念——资源、容量、需求、约束、目标函数、决策变量——说明它们各自的含义与相互关系,并给出线性规划与整数规划的基本形式,最后通过一个完整示例演示从实际场景到数学模型的转化过程。

六个核心概念及其关系

资源是分配活动中被消耗或被占用的对象,例如机器工时、带宽、预算、人力、库存。资源通常带有可度量的单位,如“小时”“Mbps”“万元”“人天”。容量描述某一资源在给定周期内可提供的上限,它是资源的属性而非资源本身:一台设备是资源,它每周可运行 40 小时则是容量。容量可以是硬上限(物理不可超越),也可以是软上限(可通过加班、租赁突破,但需付出额外成本)。

需求是任务、客户或业务单元对资源提出的数量要求,例如某订单需要 3 小时加工、某区域需要 200 Mbps 带宽。需求可以是必须全部满足的刚性需求,也可以是“满足越多越好”的弹性需求,后者往往通过收益系数进入目标函数。决策变量是模型中真正由我们决定的量,它回答“分配多少”这一问题,通常记为 xij,表示把资源 i 分配给对象 j 的数量。决策变量的取值域(连续、整数、0-1)直接决定了模型的类型与求解难度。

约束是把决策变量限制在可行范围内的等式或不等式,最典型的是容量约束:所有对象消耗某资源的总量不超过其容量。目标函数则是用来比较不同分配方案优劣的标量指标,如总利润最大、总成本最小、总延误最小。约束定义“能做什么”,目标函数定义“什么是好”,二者共同构成优化模型的两大支柱。

从现实要素到数学模型的映射关系 现实业务层 资源 + 容量 任务 + 需求 业务目标:利润 / 成本 / 交付率 抽象 数学模型层 决策变量 x 约束条件 目标函数 max / min 决策变量的取值域决定模型类型 连续变量 x ≥ 0,可取小数 线性规划 LP 整数变量 x ∈ ℤ,不可拆分 整数规划 IP 0-1 变量 x ∈ {0,1},选或不选 0-1 规划

线性规划与整数规划的基本形式

当目标函数和所有约束都是决策变量的线性表达式时,模型称为线性规划(LP)。其标准形式可写为:

max  z = c₁x₁ + c₂x₂ + … + cₙxₙ
s.t. a₁₁x₁ + a₁₂x₂ + … + a₁ₙxₙ ≤ b₁
     a₂₁x₁ + a₂₂x₂ + … + a₂ₙxₙ ≤ b₂
     …
     x₁, x₂, …, xₙ ≥ 0

其中 c 是单位收益或成本系数,a 是单位消耗系数,b 是资源容量。线性规划的重要性质是:可行域是凸多面体,若最优解存在,必可在某个顶点取得,这正是单纯形法能够高效求解的依据。线性规划可在多项式时间内求解,规模上万变量仍可处理。

然而现实分配中常有“不可拆分”的要求:一台设备不能分配 0.6 台,一个项目要么上要么不上。此时需引入整数约束,得到整数规划(IP);若变量只能取 0 或 1,则为 0-1 规划。整数规划失去了凸性,可行解是离散点集,求解难度显著上升,一般属于 NP-hard 问题。实践中常用分支定界、割平面等算法,或借助求解器处理。建模时应尽量收紧约束、给出合理上界,以缩小搜索空间。

判断模型类型的一个简单方法:看决策变量是否允许取小数。允许取小数且关系线性,就是 LP;要求整数,就是 IP;只表示“选/不选”,就是 0-1 规划。混合整数线性规划(MILP)则同时包含连续变量与整数变量,是资源分配中最常见的实用形式。

从实际场景到数学模型的转化

下面以一个生产排产场景为例,完整走一遍建模过程。某车间有两类设备:车床每周可用 80 小时,铣床每周可用 60 小时。生产甲、乙两种产品,单件消耗与利润如下(示例数据,用于演示建模方法):

产品车床工时(小时/件)铣床工时(小时/件)单件利润(元)
甲2140
乙1350

第一步,定义决策变量。设 x₁ 为甲产品周产量,x₂ 为乙产品周产量,单位均为件。这里产量可连续取值(若产品可分割计量),先按 LP 处理。

第二步,写出容量约束。车床总消耗 2x₁ + x₂ 不超过 80;铣床总消耗 x₁ + 3x₂ 不超过 60。同时产量非负:x₁, x₂ ≥ 0。

第三步,写出目标函数。总利润 z = 40x₁ + 50x₂,要求最大化。

第四步,求解与解读。联立两条容量约束取等号:2x₁ + x₂ = 80,x₁ + 3x₂ = 60。由第一式得 x₂ = 80 − 2x₁,代入第二式得 x₁ + 240 − 6x₁ = 60,即 −5x₁ = −180,x₁ = 36,x₂ = 8。此时 z = 40×36 + 50×8 = 1440 + 400 = 1840 元。检验:车床 2×36 + 8 = 80,恰好用满;铣床 36 + 3×8 = 60,也恰好用满。两资源同时成为瓶颈,说明该解位于可行域顶点,是 LP 最优解。

第五步,考虑整数与业务修正。若产品必须整件生产,则需加整数约束,x₁、x₂ ∈ ℤ。此时 (36, 8) 本身已是整数,最优性不变;但若参数变化导致顶点解为小数,例如得到 (35.5, 9),就需在邻近整数点中比较,取满足约束且利润最大者。此外还应检查是否存在隐含约束,如市场需求上限、最小交货量、设备切换时间等,这些都应转化为额外的不等式加入模型。

建模中最容易出错的地方不是公式推导,而是遗漏约束或误设容量单位。例如把“每周 80 小时”误当作“每天 80 小时”,或把不同单位的资源混入同一约束。建模完成后应逐条核对:每个约束是否对应一个真实的物理或业务限制,系数单位是否与变量单位一致,容量是否取自正确的统计周期。

建模检查要点

一个可用的资源分配模型,通常满足以下条件:决策变量能明确回答“分配多少”;每个约束都能追溯到具体资源容量或业务规则;目标函数的系数有明确的经济或业务含义;变量取值域与实际问题一致(连续、整数或 0-1);模型规模在可求解范围内。若模型求解结果与直觉严重不符,优先检查约束是否遗漏、系数单位是否统一、目标方向是否写反,而不是急于调整算法。掌握这套从概念到模型的转化路径,后续的求解方法与灵敏度分析才有稳固的落脚点。