诊断课表生成失败的原因

当生成程序无法全部排入时,生成就“失败”了:它会给出找到的最佳不完整课表,被迫舍弃的课时留在待安排便签栏中(一条红色横幅会概述阻塞原因)。问题几乎总是约束过多:课时相对于开放的时段太多,或者约束过紧,无法相互嵌合。解决办法是放宽可以放宽的部分——这正是本页的主题。要了解生成程序如何确定优先级、会舍弃什么,参见 自动生成;要了解已排好的课表上的冲突目录,参见 冲突与诊断。

诊断是线索,而不是结论

当某个课时无法安排时,Omniscol会突出显示在多次尝试中造成问题最多的实体——“这位教师的时段不够”“这个班级排不进它的网格”。这只是启发式的结果:被标出的实体是在各次阻塞中出现最频繁的那个,不一定就是唯一的原因。各项约束相互交叉——在别处放宽一点,可能就全部解开了。因此请把这条提示当作排查方向:真正的办法往往是缓解整体的过度约束(多开一些时段、放宽可用时间),而不是一味盯着被指出的实体。

最常见的原因

1. 可用时间设置过严

某位教师把太多时间范围标记为不可用,剩下的时段不足以安排他的课时。

诊断:查看相关教师的可用时间界面。数一数空闲时段,并与他的授课小时数对比。

解决办法:

  • 放宽部分时间范围(从黑色改为红色——不希望但并非不可能),
  • 重新分配课程(把一部分交给另一位教师),
  • 如果可用时间可以协商,与这位教师沟通。

2. 没有兼容的教室

某个科目需要某种专业教室类型,但没有创建对应的教室,或者所有对应教室在仅有的可选时段上都被占用。

解决办法:

  • 在合适的教室上创建缺少的专业教室类型,
  • 降低对专业教室类型的要求,
  • 增加教室。

3. 容量不足

小组/班级的人数超过所有候选教室的容量。

解决办法:

4. 对齐在结构上无法实现

对齐的各小组课时小时数不同,或者所属班级的时间网格不兼容,或者参与对齐的教师同一时间只能在一个地方。

解决办法:

  • 统一对齐各小组的课时小时数,
  • 取消对齐,改为每个班级各设一门课程,
  • 检查对齐班级所在的校区在目标时段上是否共用同一个时间网格。

5. 相对于网格,课时太多

当某个班级或某位教师的小时数明显多于开放的时段数时,会有预先发出的警告(生成 选项卡,小时数与时段数的计数器)。更隐蔽的情形是:单独来看没有明显溢出,但教师与班级之间各项约束的累积——以及它们的交叉——最终就排不下了。

解决办法:

  • 减少已录入的授课小时数,
  • 扩大时间网格(例如开放周三下午),
  • 放宽部分不可用时间,重点放在许多实体同时回避的时间范围:叠加起来会把网格占满。

6. 不兼容规则太多

堆叠大量“X不能排在Y之后”的约束,可能导致整个系统无解。

解决办法:用更柔和的教学比重取代部分不兼容规则。

7. 教室不够(瓶颈)

非常常见:即使每间教室都合适,它们的数量也不足以同时容纳需求。课时堆在相同的时段上,教室不足成为阻碍整体排入的瓶颈。

解决办法:

  • 增加教室(或在班级之间共用教室),
  • 通过扩大时间网格来分散需求,
  • 减少把课时集中在少数时段的约束。

8. 多个校区:路程时间占用了小时数

有多个校区时,各校区之间的路程时间会减少教师(或班级)实际可用的时段:换校区要花时间,这段时间就不能再用来安排课时。有效的可用时间收紧,问题也变得更复杂。

解决办法:

  • 把一位教师当天的课时集中在同一个校区,
  • 核对已声明的校区之间路程时间,
  • 限制同一天内跨校区往返。

重新运行生成前的检查清单

  • 所有班级都已指定校区?
  • 所有班级都已有科目和教师?
  • 课程中用到的所有小组都有理论人数或可管理的容量?
  • 所有教师的可用时间都已确认?
  • 生成 选项卡中没有严重(红色)警示?

内置的诊断工具

  • 生成选项卡——事前:统计数据(按教师、班级、校区的课时数/小时数)和警告(小时数与时段数的对比、启动前需要修正的严重警示)。
  • 未安排的课时(便签)——失败之后:不完整生成的输出。每个课时上的安排按钮(图钉)会通过彩色时段,显示为什么没有合适的位置。
  • 遗漏小组检测:已定义但没有任何课程的小组。

操作步骤

诊断课表生成失败的原因

  1. 生成失败时,Omniscol会显示红色横幅,保留不完整的课表,并把没能排入的课时放到便签栏中。

  2. 阅读横幅:它给出的是一个方向(启发式,参见上文),而不是结论。

  3. 从未安排的课时入手,而不是从“冲突”入手。 生成从不制造冲突:它只是把排不进去的内容放在一边。从便签中取一个课时,点击它的安排按钮(图钉,排入课表)。

  4. 查看彩色时段。 Omniscol会显示所有候选时段;对于无法安排的课时,它们全部被阻塞。请按三种常见的阻塞原因的顺序找出原因:教师被占用或不可用,班级(或小组)被占用,或者没有空闲且兼容的教室。把鼠标悬停在时段上即可看到原因。

  5. 放宽造成阻塞的约束——视情况而定:放宽可用时间、增加或腾出教室、统一对齐、扩大时间网格(参见上文各项原因),然后重新运行。

  6. 重新运行之前,对照上面的检查清单(已指定校区、科目和教师已就位、人数已填写、可用时间已确认、生成 选项卡中没有严重警示)。

另请参阅