班内分组

班内分组向生成算法声明:同一班级的若干小组可以安排在同一时段而不会产生冲突,因为没有任何学生同时属于其中一个以上的小组。

为什么需要它——“一切默认都是冲突”的原则

Omniscol是一款带约束的排课软件。由此直接得出:凡是可能产生冲突的情形,默认都按冲突处理,除非用户明确另行说明。

  • 两个不同的班级之间:默认没有共同的学生,因此无需提示冲突。(跨班级的共享课程或合班课程另行建模,使用小组对齐或教学小组组合。)
  • 在同一个班级内,生成算法无从逻辑推断哪些小组可以在同一时段共存而互不重叠,因此会把同一班级的两个小组视为可能有共同学生。如果没有声明班内分组,为同一班级的两个小组在同一时段安排课时,就会产生冲突。

课表编制者需要告诉生成算法:“这些小组互相排斥,可以同时安排。”班内分组就是这样一种声明。

对于属于班内分组的小组,生成算法会尽量把它们的课时同时排开,但可能因其他约束而无法做到(教室不足、教师或课程的时间限制互不兼容、课时之间存在共用对象,例如专业教室或同一位教师)。这时,算法会发现班级中有一部分学生没有课,并施加相应的惩罚(默认选项:减少学生的空课时段),促使它把这些课时排在一天的最前面或最后面,条件允许时也会排在午休时段。

典型使用场景

  • 按字母顺序分成的半班:A组和B组(按字母顺序或抽签)——一名学生只在其中一组,不会同时在两组。
  • 按水平分成的半班:英语强化组与英语标准组;一名学生只在其中一组。
  • 按性别分成的半班(部分学校在体育课中的特殊做法)。
  • 互斥的选修课:第二外语日语 / 第二外语德语 / 第二外语法语——学生只选这三种语言中的一种。(请结合您的实际情况调整示例。)
  • 同时开设的选修课组合:学校决定把所有选修课排在同一个固定时段(周五14:00-16:00 = 选修课时段),学生在这个组合中选择自己的选修课——所有选修课都满足“一名学生只修一门”。
  • 实验课分成半组进行:实验A组和实验B组在同一时段、分别在两间教室、由两位教师授课。

创建

步骤:

  1. 进入某个班级的小组页面(小组标签页)。
  2. 选择相关的小组。
  3. 点击添加班内分组。
  4. 确认。

同一个班级中可以同时存在多个班内分组:一个用于理科实验课(实验A组、实验B组),一个用于外语(第二外语日语、第二外语德语),一个用于选考科目(物理选考、历史选考、地理选考)。各个班内分组之间互相独立。

小组属于某个班内分组后,会在所有相关的界面中显示图标 。

默认保护:一个小组只属于一个班内分组

默认情况下,界面会应用一个简单的保护:一个小组只能属于一个班内分组。这是最常见的情形,也能避免很多错误。

当学生的实际分布确有需要时,可以解除这一限制。

示例:

  • 只有选“第二外语日语”的学生同时修书法;
  • 选“第二外语德语”的学生不修书法。

此时您可以创建:

  • 一个第二外语日语 / 第二外语德语班内分组;
  • 一个书法 / 第二外语德语班内分组。

这样做的好处是,让生成引擎在安排某些课时时更加自由,使这些课时可以同时进行,从而减少班级中一部分学生的空课时段。

请谨慎使用:您必须完全掌握学生的实际分布。

有效性条件

**同一个班内分组中的两个小组不得有共同的学生。**这就是数学上“划分”的定义——各集合互不相交。

如果一名学生出现在同一班内分组的两个小组中,Omniscol会发出一致性提醒(生成算法无法让他同时出现在两个地方)。

对算法的影响

声明班内分组后,生成算法会:

  • 允许同时安排该班内分组中的各个小组(否则这会是冲突),
  • 仍然检查其他资源:同时进行的小组有多少个,就需要多少间不同的教室、多少位不同的教师。班内分组只解除学生方面的冲突,教室和教师方面的冲突依然严格。

常见错误——一个班级的三门课程安排在同一时段

如果学生有互斥的选修课,您希望班级同时开设三门不同的课程(物理、历史、地理),请创建三个小组(物理、历史、地理)并把它们设为班内分组。不要只创建三门没有小组的课程,否则生成算法得不到任何关于同时进行的约束信息,会把它们分别排在不同的时间。

与其他构造的区别

您想要…… 请使用
同一个班级的多个小组在同一时段上课(不同的课,学生互不重叠) 班内分组(本页)
不同班级的多个小组在同一时段上课(同一门课、同一位教师、同一间教室),通过关联各个简单小组的逻辑实现 小组对齐
与对齐相同,但事后更容易修改,方法是创建一个独立的合并实体 教学小组组合
组成不固定的小组(工作坊、自由报名) 自由组

另请参阅