该算法首先对分类优化课程,接下来按优先级进行运算,最后引入矩阵的迭加匹配算法,使大问题分散在各个子问题当中,将整个问题分类分层处理,最终能实现自动排课。
一、优先级处理
实验室管理员确定该课程的优先级,根据老师所授的班级和课程并依据该课所需学时以及重要程度,课程的类型等来确定,最终确定自动排课的排课号。
排课号:按上课时段把课程分为几种类型
上午第一二节为1型
上午第三四节为2型
下午第五六节为3型
下午第七八节为4型
晚上第九十节为5型
优先级越高,上课时段越好
(编排课程的优先级,还需考虑某些课程需要以一些课程为基础。应排在后面)
二、分类处理
对教室进行预处理,按照实验室资源的实际情况,把实验室分成不同类型的,这样划分使教师资源的浪费得到避免。
为了降低算法的复杂度,先把问题进行分类,化整为零。
三、矩阵
1.矩阵与数字含义
g表示矩阵中的行,表示一周的课时单元数
i表示矩阵中的列,表示一学期的周数
例如:
(1)一天有10节课,设一天为5个单元课时,一周上5天课,一共就是25个课时,g的最大值就是25。
即定义可用时间代码,g=1……25,其中g=1……5表示周一的排课情况,g=6……10表示周二的排课情况,以此类推。
(2)i表示一学期所上的周数
例如:一学期上20周的课,i=1……20。
算法中排课能够顺利有序进行,在排好一次课程后要立刻把已排好的时间单元设置成相应的排课号,并要保存到各矩阵中。也就是为一门课安排好了一次课之后,将这门课的信息写入排课结果表中,修改三个矩阵表的值为相应课程的排课号。
对于矩阵中的25,50我觉得就是所谓的排课号,改了数字以后就代表这个时间块被占用了,因此可以用1代替。
2.矩阵中的优先级
(1)时间模式库
例如,一周为6学时的课程,在一周内要分3次上课,约束条件为满足隔天上课,那么周一到周五只能周一、三、五进行排课。此类课程可排时间比较固定,因此应该优先进行考虑,通过时间矩阵【i,g】中的g值来确定排课类型。
设上次排次课的时间T【i,g1】,本次为【i,g2】,后边为【i,g-】
模式1:g1-g2的绝对值/5=2 and g2-g3的绝对值/5=2
简单来说就是 g1-g2大于等于10,即两次课程时间间隔1天
还可以在此基础上再设定优先级,上午1-2节课为最优上课时间时间段,3-4节为次优时间时间段。以此类推
对于周学时少的课程相对于周学时多的课程就要灵活的多
如果一个课程在一周的任何时间段都可以上课,只要找到在时间单元矩阵内可排课的一列就可以对课程进行编排,所以此类课应最后排,它的优先级最低
3.排课系统中编排课表操作
第一步选择班级课程页面
点击下一步后,查空实验室、编排课表
出现 排课完毕按钮,可以确认该门课程排课过程结束,提交后课表不可以进行修改,缩必须修改需实验管理人员将该班级课程的实验登记表解锁才能进行。
排课结束后,任课教师可以【查看个人课表】
4.排课系统的算法流程图
5.手工排课时间冲突判断流程图和开课单位冲突判断流程图
6.手工修改界面表