连堂课和禁排时段怎么设置
连堂、禁排、固定时段是三种最常用的排课约束,也是最容易被滥用的三种。 每多加一条,可行解就少一分;加到一定程度,课表就再也排不出来了。
一、连堂课
连堂指两节(或更多)课必须排在相邻节次。常见于需要完整时间块的场景:
- 实验课——准备器材和整理器材占用时间,拆成两节单课效率很低
- 作文课——一节课写不完
- 通用技术、美术创作、综合实践
- 高中选考科目的复习课
连堂的代价
一节单课只需要找到 1 个空位,两节连堂需要找到 2 个相邻且都空的位置, 而且不能跨越上午和下午的分界、不能跨越大课间。可选位置会大幅减少。
经验值:连堂任务占比超过全部任务的 20%,排课难度会明显上升。
如果某个班既有大量连堂又有大量固定时段,很可能直接无解。
二、禁排时段的三个层级
"这节不能排"在不同层级上含义不同,设错层级会导致约束范围过大或过小:
| 层级 | 含义 | 典型用途 |
|---|---|---|
| 教师不可用 | 这位教师在该时段不能上任何课 | 兼课教师的外校课时、行政会议、走教通勤 |
| 班级不可用 | 这个班在该时段不排课 | 年级组活动、社团时间、校本课程时段 |
| 科目禁排 | 该科目在全校范围内不排在该时段 | 体育课不排在午后第一节、主科不排最后一节 |
选层级的判断标准很简单:问"换个人/换个班还成立吗"。 "李老师周三下午要去外校"换人就不成立,属于教师层级; "体育课不排饭后第一节"换谁都成立,属于科目层级。
三、固定时段要慎用
固定时段是把某节课钉死在指定的星期几第几节。它是所有约束里最强的一种—— 不是"尽量满足",而是"必须如此"。
合理的用法只有少数几种:
- 全校统一的升旗、班会、教研活动
- 与外部机构联动、时间不可变的课程
- 跨校区教师的固定通勤安排
不合理的用法是把教师的偏好当成固定时段。"王老师希望周一第一节上课"是偏好, 不是硬性要求,写成固定时段会白白消耗掉可行解空间。这类诉求更适合排完之后手工微调。
如果排课失败或冲突很多,先检查固定时段的数量。把非必要的固定时段改回自由排,
往往比调整算法参数有效得多。
四、建议的设置顺序
- 先只设不可协商的约束:教师不可用时间、场地容量、真正的全校固定活动
- 跑一次自动排课,拿到一张基线课表
- 看结果里哪些地方不符合预期,再有针对性地加禁排规则
- 重排,对比两版结果
- 剩下的零星诉求用网页拖拽微调解决,不必都写成规则
这个顺序的好处是:每一步都能看到约束带来的实际影响,一旦排不出来也很清楚是哪一条加坏了。
规则想好了就可以直接试排
智能排课、拖拽微调和冲突检查属于免费核心能力,重排不限次数。
免费开始排课