1、模型及数据库表
(1)时间模型
假设每天可以使用的授课时间为8个时间单位,则一个星期可以使用的总授课时间为40=8×5(一周上课时间为5天)。
整个有效的周期时间域可以定义为集合Ω={1,2,3,4,…40},班级、教师被占用的时间是Ω的一个子集。
(2)信息对象的逻辑关系
信息对象的逻辑关系体现在以下几个数据库表中:
表1:课程—课时表
表2:班级—课程表
表3:教师—班级—课程表
表4:教师—班级—时间分配表
结构:教师工号、班级编号、时间分配(Ω的一个子集)
表5:排课总表
结构:教师工号、班级编号、课程编号、时间分配(Ω的一个子集)
2、算法
(1)排课算法
排课算法的目的和关键是通过表1、表2、表3建立表4,然后由表4生成表5(这一步相对简单)。
根据表3我们可以得到一个教师—班级需求矩阵,矩阵的元素T ij表示教师j为班级i上的总课时量。
表4等价于这样一个矩阵,矩阵中的元素S ij表示教师j为班级i上课的时间集合,且S ij是Ω的一个子集,S ij中的元素个数等于T ij。
原则即,S ij每一行(同一个班级的课)尽量互斥,S ij每一列(同一个教师的课)尽量互斥。
步骤1:先排S ij的第一行,S11为从集合中任意取出的T11个时间单元,S12位从Ω-S11剩余的集合中任意取出的T12个时间单元,以此类推。
步骤二:排完S ij的第一行后,对S ij进行如下图初始化,目的是使每一行列的元素互斥。
然后在这基础上调整。
调整步骤看原文吧…
(2)调整算法
附:
原文地址:/view/4f789e0b6c85ec3a87c2c54a.html
表4等价于S ij,表示时间集合
已知表,由表1、2、3可计算出T ij,表示课时量。