指派问题把人员与任务配对。xij=1 表示人员 i 执行任务 j,否则为 0。
标准一对一指派要求每人恰好一个任务、每项任务恰好一人。规模增加时组合数迅速增长。
min ΣiΣj cijxij;对每个 i:Σj xij=1;对每个 j:Σi xij=1;xij∈{0,1}。
先列成本/时间矩阵并确认行列含义。禁配任务用显式约束 xij=0,不要只写一个巨大成本而不说明。
用 0–1 变量完成任务指派与班次覆盖,把硬约束、软约束、公平性和多目标权衡放进同一套可解释方案。
谁做哪个任务
4 个人做 4 项任务,一共有多少种分配?为什么不能靠眼睛选?
指派问题把人员与任务配对。xij=1 表示人员 i 执行任务 j,否则为 0。
标准一对一指派要求每人恰好一个任务、每项任务恰好一人。规模增加时组合数迅速增长。
min ΣiΣj cijxij;对每个 i:Σj xij=1;对每个 j:Σi xij=1;xij∈{0,1}。
先列成本/时间矩阵并确认行列含义。禁配任务用显式约束 xij=0,不要只写一个巨大成本而不说明。
比较局部贪心与整体匹配。
同一人可能被选中多个任务。
成本矩阵行=人员、列=任务。
定义 9 个 xij。
每行和=1,保证每人一项。
每列和=1,保证每任务一人。
目标把被选单元格成本相加,求总成本最小。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
一对一排列数量是阶乘。
4!=4×3×2×1=24 种。
固定 i,对 j 求和。
人员 i 恰好分配一项任务。
局部最小会冲突。
错误。同一人可能成为多项任务最低者,违反一人一任务,需整体优化。
硬资格最好写硬约束。
直接添加 xij=0 的禁配约束;若使用大成本替代,必须确保不会造成数值问题并说明。
整体最低不是逐格最低
为什么每行减去最小值不会改变最佳指派?
成本矩阵 cij 可以是时间、费用、损失或不匹配度。匈牙利算法通过行列约简寻找零元素覆盖,利用的是每个指派恰好选每行每列一个。
给某一行所有元素减同一常数,会使每个完整指派总成本都减少同样常数,因此最优相对顺序不变。
行/列约简保留最优解结构。实际使用可交给求解器,但要能用小矩阵枚举核对。
先检查成本是否可加、单位是否一致。时间与满意度不能直接相加,除非先转成统一损失或多目标。
比较混合量纲与统一损失。
单位不同,总和含义不清。
某行成本 [7,4,6]。
该行最小值为 4。
每项减 4 得 [3,0,2]。
任何完整指派都会从该行选一次,因此总成本统一减 4。
最优指派不变,但零元素帮助寻找候选匹配。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
每项减行最小。
减去最小值 4,得到 [3,0,2]。
标准一对一条件很关键。
不会。每个完整指派都从该行选一个,所有方案总成本同加 10,相对顺序不变。
行列交叉。
人员 i 执行任务 j 所产生的代价或损失。
转换后的 0 不是免费。
约简矩阵只用于求解结构,最终业务成本必须回到原单位矩阵,才能解释和核验。
每个时段都要有人
一天总人数够,为什么午高峰仍可能缺员?
排班要在每个时间段满足最低需求,而不是只满足总人数。班次覆盖矩阵表示某班次是否覆盖某时段。
还要限制每人总工时、连续工作、休息、技能和可用时间。
若 akt=1 表示班次 k 覆盖时段 t,xk 为班次数,则对每个 t:Σk aktxk≥dt。个人排班再用 xikt 细化。
把 24 小时按 30/60 分钟离散,先画需求曲线,再设计候选班次。覆盖结果用热力表逐时段核验。
比较全天总量与逐时段约束。
人员可能集中在低峰,高峰仍缺。
11–12 点需 4 人,12–13 点需 6 人。早班覆盖两段,短班只覆盖第二段。
11–12:早班数≥4。
12–13:早班数+短班数≥6。
目标可最小总工时或工资。
若安排 4 个早班、2 个短班,两段需求都刚好满足。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
局部高峰不能被全天平均掩盖。
每个时段写覆盖约束。
覆盖总数≥6。
至少 2 个短班。
总量不保证局部。
错误。工时可能分布在错误时段,必须逐时段检查覆盖。
人数与资质都要覆盖。
对每个时段分别约束具备该技能的在岗人数不低于需求,例如 Σ skill_i x_it≥d_skill,t。
提高公平权重,观察推荐方案如何从最低成本转向更均衡。
调整左侧参数,观察模型输出怎样变化。
在哪个权重附近推荐方案发生变化?这个临界点比“取 0.5”更能告诉管理者什么?
不能违反与尽量满足
员工希望周末休息,应该像法律休息时长一样绝对禁止违反吗?
硬约束必须满足,例如资质、安全、法定工时;软约束是偏好或服务目标,允许付出惩罚后少量违反。
若把所有偏好都写成硬约束,模型可能无可行解;软约束用偏差变量量化违反程度。
需求软化示例:覆盖+缺员量≥需求,缺员量≥0;在目标中加入 M×缺员量惩罚。M 应反映真实代价和优先级。
列一张硬/软规则表及依据。模型无解时先看哪些软偏好被误设为硬约束。
比较全硬、全软与分层处理。
可能无解,且偏好被过度放大。
员工 A 希望周日不上班,但必要时可安排。
安全资质仍是硬约束。
定义 vA=1 表示违反周日偏好。
目标加入适度惩罚,并报告最终违反情况。
模型在无替代人员时仍可行,但会优先避免安排 A。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
违反是否被允许?
硬约束。法律与安全底线不应被普通成本抵消。
允许违反不等于不可见。
错误。软约束应通过偏差变量量化,并在结果中报告违反数量和代价。
硬条件交集可能为空。
不同员工偏好和覆盖需求可能互相冲突,没有任何排班同时满足全部条件。
惩罚代表违反代价。
模型可能觉得违反很便宜,从而频繁牺牲软目标。
成本、公平、满意度不能直接相加
成本 10000 元与不公平度 3 分直接相加,谁会天然占主导?
多目标常有不同方向和单位。加权和前应正向/负向统一并归一化,否则大尺度目标压倒其他目标。
权重表达偏好,不是计算出来就永远正确;可使用加权和、ε 约束、词典序或目标规划。
归一化损失 f'=(f−fmin)/(fmax−fmin)。加权目标 min Σwk f'k,Σwk=1。目标范围应来自可行情景而非随意常数。
先分别优化每个单目标,得到理想与最差参考,再构建归一化多目标;展示权重变化图。
比较直接相加与归一化权衡。
万元尺度会吞掉 0–10 的公平分。
方案 A 成本低但夜班集中,B 成本高 5% 但更均衡。
分别定义总成本与最大夜班差。
对两目标用各自范围归一化。
改变公平权重,找推荐方案切换点。
管理者可以根据愿意为公平多付多少成本做选择。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
先统一方向与尺度。
错误。权重不能自动消除尺度影响,大数值目标可能仍主导。
归一化后加权。
0.6×0.2+0.4×0.8=0.12+0.32=0.44。
不可补偿的优先级不宜普通加权。
词典序或把安全设硬约束,先保证安全,再优化成本。
先认识每个端点。
得到各目标可达范围和理想参考,用于归一化,也能看出目标之间是否真正冲突。
给选择,不伪装唯一答案
如果不存在一个方案在成本、公平、满意度上都最好,什么叫“非劣方案”?
Pareto 最优方案无法在不损害至少一个目标的情况下改进另一个目标。前沿展示真实取舍,而不是强行说某个权重下的结果是唯一真理。
排班还要面对需求、请假和服务时间不确定,可用高低情景、缓冲或滚动重排提高稳健性。
方案 B 支配 A:B 所有目标不差于 A,且至少一项更好。被支配方案可淘汰;非支配方案构成 Pareto 集。
提供 3–5 个代表性非劣方案:最低成本、最公平、折中、最稳健,并给每个方案的代价表。
比较单方案与前沿情景。
隐藏偏好与不确定性。
A(成本100,不公平8),B(105,5),C(110,6),均越小越好。
B 比 C 成本更低且更公平,因此 B 支配 C。
A 成本更低但不公平更高,与 B 互不支配。
Pareto 集为 A、B。
决策者在 A 的省钱与 B 的公平之间选择,C 可直接淘汰。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
支配要求所有目标都不差。
互不支配。A 成本更低,B 更公平,各有一项优势。
前沿提供选择,不替代价值判断。
错误。它们都是非劣,但具体选择取决于偏好、风险和可接受代价。
平均情景外还要看冲击。
设置人员缓冲、关键技能冗余,使用高缺勤情景检验,并设计滚动重排或替补规则。
所有目标都不占优。
被支配方案,可从 Pareto 候选中剔除。
为 4–8 人、7 天、多个时段建立小型排班模型,重点是规则分层和结果解释。
讲义、练习、实验与挑战清单均在本地页面内。