四、排课问题研究
4.1 排课问题因素
在排课问题中,关系到的因素较多,并且各因素之间相互存在着多种制约,因此增加了排课问题的复杂性。总之,教师、教室、班级、时间和课程是排课问题中要解决的五类重要因素。
课程因素:课程编排的时候安排时间的一个重要对象就是课程,每个学校对课程有着严格的规定,要严格按照教学计划对课程进行合理的设置,一般来说,每门课程对象都有自身的属性,如:课程号、课程名、学分数、课程类别、课时数等。由于每门课程的各个属性的不相同,因此排课时就会影响到课程安排的最终结果
教学班因素:教学班是排课设置中的最小单位,在排课的时候是按照教学班为单位进行教师资源、教室资源和时间资源的分配。每个班级有其自身的属性,如班级编号和班级名称。并且班级与学院之间应该是一对多的关系,并且要求在某个具体的时间,每个班级仅能安排一门课程
教师因素:教师作为课程的主体也是需要全面考虑的重要因素。每个教师都有自己的教工号、姓名、职称等属性,并且教师与课程是一对多的关系,但是对于同一名教师,在某个具体的时间,每个教师只能教授一门课程
教室因素:教室是完成课程教学的主要场所,教室也分为小班教室、大班教室,机房和实验室等类型。每个教室都有所在楼名称、楼层门牌号和容纳人数等属性。但是,在某一个具体时间段内,每个教室只能安排一门课程,且要求尽量不要资源浪费,如按照授课人数安排合适的教室
时间因素:在编排课程表时会严格根据教学计划中课程所需课时数的属性,相应的也会涉及到星期,周,学期等时间的概念
4.2 排课约束条件
综上所述,一个合理的排课方案必须满足相应的约束条件,约束条件由两部分组成:硬约束条件和软约束条件。硬约束条件是指在排课过程中必须遵守的条件,也可称其为规则;软约束条件是根据现实情况选择满足的条件。 硬约束条件也是衡量排课方案是否可行的准则,只要其中任意一个条件没有满足,排课工作就无法顺利完成。那么,一般硬约束条件有以下几点:
同一时间同一教师不能教授一门以上的课程
同一时间同一教室不能安排一门以上的课程
同一时间同一班级不能安排一门以上的课程
教室的座位数不能小于班级人数
教室所属类型必须与课程类型相匹配
通常软约束条件包含以下几点:
一门课程在一周有多节的情况下,上课的间隔时间要合理安排
当教师或者班级有连续课程时,安排的教室距离不应太远
专业课或者难度较大的课程最好安排在学生思维活跃的时间段
体育课应安排在下午或者上午的第二大节,因为体育课后人体疲惫,不适宜安排课程
在遵循硬约束的前提下,根据学校的现实情况进行软约束条件的选择,这样编排的课表不仅科学合理,而且能满足大部分教师、学生的需求。
4.3 排课问题的求解目标
实际高校排课过程中,教学计划均为已知,也就是班级要上的课程、课程相应的教师也均为已知。所以在排课工作中,每位教师授课课程是固定的,同时每个班级上课课程也是固定的,因此排课问题的决策向量主要由时间和教室两个因素构成。时间方面体现在课程具体上课的时间安排在周几,每周几节课等,教室方面体现在课程被安排的教室类型、座位数等。
4.4 基于着色理论的排课算法及实例
4.4.1 教师与班级建立关系图
教师排课管理中时间的安排其实质是指让教师在指定的时间内去给某个班级上课。在这当中,需要满足以下几个要求:
首先,在同一个时间范围内教师只可以给一个班级上课
其次,不同班级在同一时间也只能有一个老师教课
运用图论方法(关系图)来解决这一问题,如:有N个老师,分别是X1,…,XN 另外有M个班级,分别是Y1,….,YM,pij表示教师给xi班级yj上课的次数,其中某个老师要教某个班级就要将这两者用线连接起来,若是一个星期之内某个老师给某个班级上了两次课,则用两条线相连,依次增加。
5.1 设计过程
通过着色图论的分析和设计,可以使用Java编程排课算法来实现排课问题的解决,求从文本文件导入教室情况(大小,数量)、培养方案(课程、学生年级、人数、教师)、约束条件(有些约束从培养方案中可知,如一个教师可以教授两门课不可以安排在同一时间上,其他包括课程先修关系,教师的特殊情况如不能上上午一二节课等),系统最终生成课表或给出无法排课的错误提示。使用多种存储结构,使用多种常用算法,编写复杂系统以此来解决排课问题。
首先定义一个课程、学期、老师类,这些类包含了课程、班级、教师、教室、星期、周次几个属性。课程、班级、教师是安排好了的,教室、星期、周次是通过对集合对象元素处理的算法来安排
完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取: