精读笔记
Problem Setting
论文标题:Course timetabling under conflict and lecturer preferences using bi-objective optimization model(arXiv preprint / 2026-07-07)。这篇论文实际处理的是一个院系级 curriculum-based timetabling 的现实变体:课程、讲师、助教、理论/实践课类型、日期和时段已经给定,目标是在不考虑教室的情况下生成一个更少冲突、更紧凑、且满足教学先后关系的课表。
真正困难点在于这些约束不是独立的。减少学生冲突通常倾向于把课程摊开;压缩讲师工作日则倾向于把同一讲师课程集中;理论课必须早于实践课又进一步限制可行排列;助教实践课分配会把另一类资源绑定进来。人工排课的问题不是缺少局部规则,而是局部修补会产生 ripple effect,无法稳定管理这些耦合。
以前方法卡住的地方不是优化范式本身,而是问题抽象常常切掉了现实中最麻烦的耦合项:要么重教室容量和学生冲突,要么重教师偏好,要么重多目标,但很少把助教、实践课先后、讲师休息和工作日压缩一起建模。本文的关键矛盾是:学生侧希望低冲突,教师侧希望压缩工作日,而教学侧要求理论先于实践;三者在同一个离散时空网格上竞争。
Motivation
作者的核心观察比较朴素但实际:真实院系课表通常从上一年课表手工修改,显性冲突可能被控制在可接受范围,但隐性质量问题会积累,例如跨年级选课冲突、讲师工作日碎片化、实践课排在理论课之前、讲师连续授课过长。这些问题不是单个规则能修掉的,而需要全局重排。
已有路线不够的原因在于它们往往优化某一类 stakeholder 的偏好,或者把多目标用固定 penalty 合成,但没有把“教学结构正确性”和“讲师 schedule compactness”作为核心结构同时放入模型。本文真正补的缺口是现实业务规则的组合建模,而不是新的求解技术。
为什么会想到 weighted MILP:因为实例规模较小,规则可线性化,且决策者需要可解释、可复现、能和人工课表对比的解。这里的动机更偏 operational modeling,而不是算法创新。
Core Idea
核心思想是把课程排课从“避免硬冲突的可行性问题”改写成“带有教学结构偏置的双目标组合优化问题”。冲突不再只是 hard infeasibility,而是允许被计数并最小化;讲师偏好也不再是模糊满意度,而是通过工作日变量变成可压缩的结构目标。理论/实践课顺序、连续时段、每日上限和休息约束则把现实教学规范转成可行域的一部分。
这套建模的 inductive bias 很明确:好的课表不是单纯少冲突,而是在时间网格上形成低碎片、高顺序一致性、低讲师分散的结构。它和 prior 的本质区别不在于 MILP 或 weighted-sum,而在于把“讲师日程 compactness + 助教实践课 + 理论实践 precedence + 休息间隔”合并成一个统一可搜索空间。求解器因此能利用全局重排,而不是像人工流程那样在已有课表附近做局部修补。
从 scalable/generalizable 角度看,这种方法的可迁移性来自约束模板,而不是数据学习。只要机构规则可线性表达、规模仍在 MIP 可解范围内,模型可以迁移;但若加入教室、容量、真实注册需求和个体偏好,变量和约束会迅速膨胀。
Method
1. 冲突计数机制:通过每个 day-slot 的 violation 变量允许多个课程同槽出现,并把超出 1 的部分作为目标惩罚。它解决的是跨年级冲突无法完全硬禁止的问题;核心变化是把学生侧冲突从不可行约束变成可权衡成本。
2. 讲师工作日压缩:用 z_ld 表示讲师 l 是否在某天授课,并在目标中最小化总工作日数。它解决的是讲师课程分散问题;核心变化是从时段级偏好上升到日期级结构优化,这比单纯最小 idle time 更直接服务于 compact schedule。
3. 理论/实践 precedence:为理论课和实践课引入对应日期变量,并强制理论日期早于实践日期。它解决的是教学顺序错误;核心变化是把 pedagogical consistency 作为硬结构,而非事后检查或软惩罚。
4. 休息与工作量约束:每日最多 6 小时、禁止 4 连堂。它解决的是压缩目标可能导致过度集中授课的问题;核心变化是给 compactness 加上安全边界,避免目标函数把讲师日程压成不可接受的高强度块。
5. 连续时段约束:要求多小时课程尽量形成连续块。它解决的是课程被碎片化的问题;核心变化是让课程在时间上保持教学单元结构,而非仅满足总时长。
这些机制本身都不复杂,重要的是组合之后改变了可行域形状,使模型倾向于生成“教学上合理且教师侧更紧凑”的课表。
Key Insight / Why It Works
这篇论文有效的主要原因不是 bi-objective optimization 的高级性,而是把人工排课中容易遗漏的隐性约束显式化,并让 MILP 在全局空间内一次性协调。换句话说,核心贡献更像 better problem formulation / better inductive bias,而不是算法层面的突破。
最可能真正起作用的是三个结构:讲师工作日变量、理论实践先后约束、以及休息/每日上限对 compactness 的约束化。前者直接把“分散”变成可优化指标;第二个把原课表中大量 pedagogical violation 直接排除;第三个防止压缩工作日目标产生副作用。相比之下,weighted-sum 本身只是调参式标量化,贡献有限。
实验中 alpha 从 0.1 到 0.9 都得到同一组 KPI,这反而说明目标之间在该实例上并没有形成强 trade-off。所谓双目标权衡可能被高估了:实际解空间中存在一个同时支配人工课表的低垂果实,模型只需找到它即可。这里的增益更可能来自 constraint cleanup 和全局搜索,而不是多目标优化带来的 Pareto 分析。
这不是 scaling,也不是 retrieval,也不是 representation alignment;它属于经典 OR 中的结构化建模。若要类比机器学习术语,最接近的是引入更强 inductive bias:将“好的课表应该是什么形状”编码进变量和约束,而不是依赖求解器从目标系数中自行发现。
需要直接指出:论文中“robustness”表述偏强。alpha 不敏感不必然代表模型稳健,也可能只是实例太小、目标范围太窄或可行域里存在明显支配解。文中未充分说明最优性 gap、数据规模、约束数量、是否多次运行、以及不同实例下是否仍稳定。
Relation To Prior Work
这篇工作最接近 curriculum-based course timetabling 的 IP/MILP 路线,尤其是 Daskalaki et al. 一类现实 case-study integer programming,也和教师偏好、多目标 course scheduling、助教/实践课建模相关。它不属于元启发式创新,也不是 constraint programming 的新传播机制。
真正不同点是组合粒度:prior work 中教师偏好、学生冲突、实践课、助教、多目标通常分别出现;本文把讲师工作日压缩和冲突最小化作为目标,同时把理论/实践 precedence、助教实践课和休息间隔作为硬约束统一建模。这是实质新增的信息结构。
看似新的地方中,weighted-sum 并不新,MILP 也不新,连续课时和每日上限也都是常见建模元素。较有价值的是把讲师 compactness 定义为“工作日数”而不是只最小化 idle time;这改变了教师偏好的表达尺度。另一个有价值点是将 pedagogical precedence 线性化进排课模型,而不是把它当作后处理规则。
因此它在技术谱系上是 application-driven MILP formulation:通过现实约束整合推动问题定义,而不是通过算法机制推进优化方法本身。
Dataset / Evaluation
评估使用一个真实院系 Fall 2021 课表数据,并与实际人工课表对比。这一点对 case-study 有价值,因为它验证了模型能修复真实排课流程中的具体缺陷,而不是只在 synthetic benchmark 上跑通。
但任务覆盖范围很窄:单院系、单学期、固定课程-教师关系、无教室分配、无课程容量、无真实学生注册矩阵、无跨院系公共课资源耦合。它验证的是“在这个简化真实实例上,MILP 比人工课表更好”,不是“复杂大学排课问题上鲁棒有效”。
实验没有真正支撑强多目标 claim。alpha sweep 基本得到同一个主解,说明没有展示丰富的 Pareto frontier,也没有解释目标归一化、量纲差异和权重敏感性。选择 alpha=0.3 主要因为运行时间较短,这更像 engineering choice,而不是有决策含义的权衡。
和当前课表比较也存在潜在 evaluation bias:人工课表可能没有把论文中的所有约束作为优化目标,因此模型胜出部分来自目标函数不一致。若要公平,需要比较同一约束集下的人工/启发式/MILP,或至少报告当前课表在新增硬约束下的不可行程度。
Limitation
第一,方法成立依赖规则可线性化且规模较小。当前求解时间很短,但这是在排除教室分配、容量约束和个体学生注册数据后的结果。加入这些真实部署要素后,变量维度和冲突结构会明显膨胀,MILP 的可扩展性上限文中未充分说明。
第二,泛化性没有被证明。只有一个真实案例,且没有跨院系、跨学期、不同课程结构的测试。所谓 robust 主要指 alpha sweep 下 KPI 不变,但这不能替代实例分布上的鲁棒性。
第三,冲突指标过粗。模型按同一时段课程数量计冲突,但没有按真实学生需求、历史重修概率、课程共选概率或年级流动模式加权。这样可能低估高影响冲突,也可能过度优化没人会同时选的课程对。
第四,去掉教室分配是很强的简化。实际大学排课中,教室容量、实验室、设备、跨部门公共课往往是核心瓶颈。本文把这部分问题转移掉了,因此模型生成的课表不一定是完整部署可行解。
第五,增益来源不清。改进可能主要来自显式加入原人工课表未严格满足的约束,尤其是理论/实践顺序,而不是来自双目标优化。文中没有 ablation,例如去掉 precedence、去掉 compactness、去掉休息约束分别看效果。
第六,weighted-sum 有已知限制:若 Pareto 前沿非凸,可能遗漏解;若目标量纲和范围不平衡,alpha 的语义不稳定。论文没有做归一化或 epsilon-constraint 对照,因此多目标分析偏浅。
Takeaway
- 1. 这篇最值得记住的是:在应用型排课问题中,贡献常常不在求解算法,而在把真实业务偏好转成正确的可行域和目标结构。
- 2. “讲师工作日数”是一个比 idle time 更粗但更有决策意义的 compactness 表达,适合迁移到医生排班、考试监考、顾问排班等需要减少出勤日的场景。
- 3. 理论/实践 precedence 的价值在于把 pedagogical quality 从软性审查变成硬约束;类似思想可迁移到所有存在教学/流程先后关系的调度问题。
- 4. 后续真正值得做的不是继续调 alpha,而是引入真实学生需求权重、教室/容量约束、多实例测试,以及用 epsilon-constraint 或 lexicographic 方法系统刻画权衡面。
一句话总结
这篇论文是一个现实约束整合型 MILP 排课 case study,真正贡献在于把讲师 compactness、理论实践顺序和助教实践课共同编码进课程排课模型,而不是提出新的优化算法。
