班内分组
班内分组向生成算法声明:同一班级的若干小组可以安排在同一时段而不会产生冲突,因为没有任何学生同时属于其中一个以上的小组。
为什么需要它——“一切默认都是冲突”的原则
Omniscol是一款带约束的排课软件。由此直接得出:凡是可能产生冲突的情形,默认都按冲突处理,除非用户明确另行说明。
- 两个不同的班级之间:默认没有共同的学生,因此无需提示冲突。(跨班级的共享课程或合班课程另行建模,使用小组对齐或教学小组组合。)
- 在同一个班级内,生成算法无从逻辑推断哪些小组可以在同一时段共存而互不重叠,因此会把同一班级的两个小组视为可能有共同学生。如果没有声明班内分组,为同一班级的两个小组在同一时段安排课时,就会产生冲突。
课表编制者需要告诉生成算法:“这些小组互相排斥,可以同时安排。”班内分组就是这样一种声明。
对于属于班内分组的小组,生成算法会尽量把它们的课时同时排开,但可能因其他约束而无法做到(教室不足、教师或课程的时间限制互不兼容、课时之间存在共用对象,例如专业教室或同一位教师)。这时,算法会发现班级中有一部分学生没有课,并施加相应的惩罚(默认选项:减少学生的空课时段),促使它把这些课时排在一天的最前面或最后面,条件允许时也会排在午休时段。
典型使用场景
- 按字母顺序分成的半班:A组和B组(按字母顺序或抽签)——一名学生只在其中一组,不会同时在两组。
- 按水平分成的半班:英语强化组与英语标准组;一名学生只在其中一组。
- 按性别分成的半班(部分学校在体育课中的特殊做法)。
- 互斥的选修课:第二外语日语 / 第二外语德语 / 第二外语法语——学生只选这三种语言中的一种。(请结合您的实际情况调整示例。)
- 同时开设的选修课组合:学校决定把所有选修课排在同一个固定时段(
周五14:00-16:00 = 选修课时段),学生在这个组合中选择自己的选修课——所有选修课都满足“一名学生只修一门”。 - 实验课分成半组进行:实验A组和实验B组在同一时段、分别在两间教室、由两位教师授课。
创建
步骤:
- 进入某个班级的小组页面(小组标签页)。
- 选择相关的小组。
- 点击添加班内分组。
- 确认。
同一个班级中可以同时存在多个班内分组:一个用于理科实验课(实验A组、实验B组),一个用于外语(第二外语日语、第二外语德语),一个用于选考科目(物理选考、历史选考、地理选考)。各个班内分组之间互相独立。
小组属于某个班内分组后,会在所有相关的界面中显示图标 。
默认保护:一个小组只属于一个班内分组
默认情况下,界面会应用一个简单的保护:一个小组只能属于一个班内分组。这是最常见的情形,也能避免很多错误。
当学生的实际分布确有需要时,可以解除这一限制。
示例:
- 只有选“第二外语日语”的学生同时修
书法; - 选“第二外语德语”的学生不修
书法。
此时您可以创建:
- 一个
第二外语日语/第二外语德语班内分组; - 一个
书法/第二外语德语班内分组。
这样做的好处是,让生成引擎在安排某些课时时更加自由,使这些课时可以同时进行,从而减少班级中一部分学生的空课时段。
请谨慎使用:您必须完全掌握学生的实际分布。
有效性条件
**同一个班内分组中的两个小组不得有共同的学生。**这就是数学上“划分”的定义——各集合互不相交。
如果一名学生出现在同一班内分组的两个小组中,Omniscol会发出一致性提醒(生成算法无法让他同时出现在两个地方)。
对算法的影响
声明班内分组后,生成算法会:
- 允许同时安排该班内分组中的各个小组(否则这会是冲突),
- 仍然检查其他资源:同时进行的小组有多少个,就需要多少间不同的教室、多少位不同的教师。班内分组只解除学生方面的冲突,教室和教师方面的冲突依然严格。
常见错误——一个班级的三门课程安排在同一时段
如果学生有互斥的选修课,您希望班级同时开设三门不同的课程(物理、历史、地理),请创建三个小组(物理、历史、地理)并把它们设为班内分组。不要只创建三门没有小组的课程,否则生成算法得不到任何关于同时进行的约束信息,会把它们分别排在不同的时间。
与其他构造的区别
| 您想要…… | 请使用 |
|---|---|
| 同一个班级的多个小组在同一时段上课(不同的课,学生互不重叠) | 班内分组(本页) |
| 不同班级的多个小组在同一时段上课(同一门课、同一位教师、同一间教室),通过关联各个简单小组的逻辑实现 | 小组对齐 |
| 与对齐相同,但事后更容易修改,方法是创建一个独立的合并实体 | 教学小组组合 |
| 组成不固定的小组(工作坊、自由报名) | 自由组 |