Microsoft Lab
全部软件
Excel规划求解(Solver)约 4 分钟

Assignment Problem 指派问题

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。若未启用 Solver 加载项,先参考 EP01 的启用步骤(File›Options›Add-ins)。


第一步:建立模型

三个核心问题:

  1. 决策变量:每个人是否分配到每项任务,用 1 表示分配、0 表示不分配
  2. 约束条件:每人只能分配到一项任务,每项任务只能分配给一人
  3. 目标函数:让总成本最小化

命名范围:涉及成本(Cost)、任务分配变量(Assignments)、已分配人员合计、需求(Demand)、已分配任务合计、供给(Supply)、总成本(TotalCost)等,跟 EP01 运输问题的命名逻辑一致,只是把"运送量"换成了"是否分配"。


第二步:试错法

先手动试一组分配方案:第 1 人做任务 1、第 2 人做任务 2、第 3 人做任务 3,算出总成本是 147,作为对照基准。


第三步:用 Solver 求解

  1. Data›Analyze›Solver
  2. Set Objective 选总成本单元格,选择 Min
  3. By Changing Variable Cells 选分配变量的范围
  4. 添加三类约束:
    • 二进制约束:分配变量必须是 Bin(binary,只能是 0 或 1)
    • 需求约束:每项任务恰好分配给一人
    • 供给约束:每人恰好分配到一项任务
  5. Solving Method 选 Simplex LP
  6. 点击 Solve
📷 画面提示

Solver 约束列表,包含 Bin 二进制约束那一条

📌 关键差异:指派问题比运输问题多了一个"二进制约束"(Bin),因为这里的决策不是"运送多少单位"这种连续数量,而是"分配或不分配"这种是非题,必须限制变量只能取 0 或 1。


求解结果

最优解:第 1 人 → 任务 2,第 2 人 → 任务 3,第 3 人 → 任务 1,总成本降到 129(比试错法的 147 更低)。

📷 画面提示

分配变量矩阵,最优解对应位置显示 1、其余显示 0


学完你会

常见错误

  • 忘记把分配变量的约束设成 Bin(二进制),Solver 可能算出 0.6、0.3 这种不合理的"部分分配"结果
  • 人数和任务数不相等时直接套用"每人一项、每项一人"的约束,模型会无解,需要先确认是不是方阵(人数=任务数)
  • 只对照了一组试错方案就认定 Solver 结果一定更优,没有多试几组手动方案交叉验证

Sources

Blog / Website:

  1. Assignment Problem
只记在你的浏览器里,换设备不会同步。