适合中小学的简单排课算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,表示课时量