诊断课表生成失败的原因
当生成程序无法全部排入时,生成就“失败”了:它会给出找到的最佳不完整课表,被迫舍弃的课时留在待安排便签栏中(一条红色横幅会概述阻塞原因)。问题几乎总是约束过多:课时相对于开放的时段太多,或者约束过紧,无法相互嵌合。解决办法是放宽可以放宽的部分——这正是本页的主题。要了解生成程序如何确定优先级、会舍弃什么,参见 自动生成;要了解已排好的课表上的冲突目录,参见 冲突与诊断。
诊断是线索,而不是结论
当某个课时无法安排时,Omniscol会突出显示在多次尝试中造成问题最多的实体——“这位教师的时段不够”“这个班级排不进它的网格”。这只是启发式的结果:被标出的实体是在各次阻塞中出现最频繁的那个,不一定就是唯一的原因。各项约束相互交叉——在别处放宽一点,可能就全部解开了。因此请把这条提示当作排查方向:真正的办法往往是缓解整体的过度约束(多开一些时段、放宽可用时间),而不是一味盯着被指出的实体。
最常见的原因
1. 可用时间设置过严
某位教师把太多时间范围标记为不可用,剩下的时段不足以安排他的课时。
诊断:查看相关教师的可用时间界面。数一数空闲时段,并与他的授课小时数对比。
解决办法:
- 放宽部分时间范围(从黑色改为红色——不希望但并非不可能),
- 重新分配课程(把一部分交给另一位教师),
- 如果可用时间可以协商,与这位教师沟通。
2. 没有兼容的教室
某个科目需要某种专业教室类型,但没有创建对应的教室,或者所有对应教室在仅有的可选时段上都被占用。
解决办法:
- 在合适的教室上创建缺少的专业教室类型,
- 降低对专业教室类型的要求,
- 增加教室。
3. 容量不足
小组/班级的人数超过所有候选教室的容量。
解决办法:
- 指定更大的教室,
- 为同一个课时指定多教室(一个课时占用多间教室)(总容量是各教室容量之和),
- 拆分班级/小组。
4. 对齐在结构上无法实现
对齐的各小组课时小时数不同,或者所属班级的时间网格不兼容,或者参与对齐的教师同一时间只能在一个地方。
解决办法:
- 统一对齐各小组的课时小时数,
- 取消对齐,改为每个班级各设一门课程,
- 检查对齐班级所在的校区在目标时段上是否共用同一个时间网格。
5. 相对于网格,课时太多
当某个班级或某位教师的小时数明显多于开放的时段数时,会有预先发出的警告(生成 选项卡,小时数与时段数的计数器)。更隐蔽的情形是:单独来看没有明显溢出,但教师与班级之间各项约束的累积——以及它们的交叉——最终就排不下了。
解决办法:
- 减少已录入的授课小时数,
- 扩大时间网格(例如开放周三下午),
- 放宽部分不可用时间,重点放在许多实体同时回避的时间范围:叠加起来会把网格占满。
6. 不兼容规则太多
堆叠大量“X不能排在Y之后”的约束,可能导致整个系统无解。
解决办法:用更柔和的教学比重取代部分不兼容规则。
7. 教室不够(瓶颈)
非常常见:即使每间教室都合适,它们的数量也不足以同时容纳需求。课时堆在相同的时段上,教室不足成为阻碍整体排入的瓶颈。
解决办法:
- 增加教室(或在班级之间共用教室),
- 通过扩大时间网格来分散需求,
- 减少把课时集中在少数时段的约束。
8. 多个校区:路程时间占用了小时数
有多个校区时,各校区之间的路程时间会减少教师(或班级)实际可用的时段:换校区要花时间,这段时间就不能再用来安排课时。有效的可用时间收紧,问题也变得更复杂。
解决办法:
- 把一位教师当天的课时集中在同一个校区,
- 核对已声明的校区之间路程时间,
- 限制同一天内跨校区往返。
重新运行生成前的检查清单
- 所有班级都已指定校区?
- 所有班级都已有科目和教师?
- 课程中用到的所有小组都有理论人数或可管理的容量?
- 所有教师的可用时间都已确认?
- 生成 选项卡中没有严重(红色)警示?
内置的诊断工具
- 生成选项卡——事前:统计数据(按教师、班级、校区的课时数/小时数)和警告(小时数与时段数的对比、启动前需要修正的严重警示)。
- 未安排的课时(便签)——失败之后:不完整生成的输出。每个课时上的安排按钮(图钉)会通过彩色时段,显示为什么没有合适的位置。
- 遗漏小组检测:已定义但没有任何课程的小组。
操作步骤
诊断课表生成失败的原因
-
生成失败时,Omniscol会显示红色横幅,保留不完整的课表,并把没能排入的课时放到便签栏中。
-
阅读横幅:它给出的是一个方向(启发式,参见上文),而不是结论。
-
从未安排的课时入手,而不是从“冲突”入手。 生成从不制造冲突:它只是把排不进去的内容放在一边。从便签中取一个课时,点击它的安排按钮(图钉,排入课表)。
-
查看彩色时段。 Omniscol会显示所有候选时段;对于无法安排的课时,它们全部被阻塞。请按三种常见的阻塞原因的顺序找出原因:教师被占用或不可用,班级(或小组)被占用,或者没有空闲且兼容的教室。把鼠标悬停在时段上即可看到原因。
-
放宽造成阻塞的约束——视情况而定:放宽可用时间、增加或腾出教室、统一对齐、扩大时间网格(参见上文各项原因),然后重新运行。
-
重新运行之前,对照上面的检查清单(已指定校区、科目和教师已就位、人数已填写、可用时间已确认、生成 选项卡中没有严重警示)。