适合中小学的简单排课算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,表示课时量

相关文档
最新文档