人性化高校排课算法的设计与实现

上传人:第*** 文档编号:38896578 上传时间:2018-05-09 格式:PDF 页数:2 大小:155.05KB
返回 下载 相关 举报
人性化高校排课算法的设计与实现_第1页
第1页 / 共2页
人性化高校排课算法的设计与实现_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《人性化高校排课算法的设计与实现》由会员分享,可在线阅读,更多相关《人性化高校排课算法的设计与实现(2页珍藏版)》请在金锄头文库上搜索。

1、近两年学校将教学中心转移到新校区,旧的排课规则已经 不能满足新 的需求 ,故在 原有系统 的基础上根据 新 的排 课 规则设计了新的排课算法,使新的排课算法能满足新的排 课需求 。 本论文主要介绍了新的排课规则,以及满足新排课规 则的排课算法 的设计与 实现 。 2 人性 化的排课规则 由于本校 新旧校 区距 离 比较远 ,往返新 旧校区需 要花 费比较长 的时 间, 为 了体现“ 以人为本 ” 的排 课理念 , 在 新校 区上课的教师尽可能采用集中排课的方式,即天安排四 节或六节课 , 并且尽可能晚上不 安排课程 。 为 了提高教学 资源 的利 用率 ,对 同专业 的两 个班级 的 相 同课

2、程 , 通 常采用理论课合班实践课分班 的原则 。在教学 资源充足 的情况下 ,对 同一个班 同一 门纯 理论课或纯 实践 课一天最 多安排两节 、理论实践 相结合 的课 程最 多安 排四 节 , 这里 的理论 实践课是指理论 课和实践课 的课时比为 1 : 1 的课程 。 为了提高学生对知识的吸收率,对同一个班通常不会 连续两 天安排相 同的理论课 。对理论 实践相结合 的课程通 常是先 安排理论 课再安排实 践课 ,实 践课紧跟在 理论课后 面 。 为 了满足 前后 课衔接 和 充分利 用教 学资源 的需 要 , 对 同一排课对象在一周的同一时间可根据周数的不同安排不 同的课程, 这里的排

3、课对象指教师、 教室和班级。 3 数据库 的设计 排课 系统中包含 7个数据 表: 教 师基本信 息表 、 班级 基 本信 息表、 教室基本信息表 、 课 程安排表 、 教师 课表 、 班级课 表和教 室课表 。教师基本信息表 、 班级基本信息表和教室基 本信息表中都有一个名为“ 排课情况” 的字段, 用来表示当 前的排课情况 。 课程安排表 中包含 了课 程名称 、 上课 班级代码 、 授 课教 师编号、 起止周、 周学时、 合班否、 课程类型、 排课否和备注 等字段。“ 上 课班级代 码 ” 字段用来存 放单班或 合班上课 的 纯理 论 ” 、 “ 纯 实 践 ” 、 段在排课后通过赋予

4、排课 , “ 各注 ” 字段 用 来存放排课 信息, 排课 过程 中将每次排课的时问地点都 存放 在该字段中, 当排课失败时可根据该字段的信息对当前课程 进行手动排课 。 4 排课算法 的设计 排 课算法的设计 思路如下 所述 : 首先对 与排课相关的表进行初始化操 作。 把教师基 本信 息表 、班级 基本信息表和教室基本信 息表 中的 “ 排课情况 ” 字 段的字段 值设置 为 4 0 0个 号 ,同时把课 程安排 表 中的 “ 排课否 ” 的字段值设置为“ 否 ” , 并清 除“ 备注 ” 字段的值 。 然后根据课程安排表进行排课。 先对排课要求比较高的 合班理论分班实践课进行排课, 然后

5、对单班理论实践课进行 排课 , 再对合 班纯理论 课进行排 课 , 最后对 单班纯理论 或纯 实践课进行排课 。 下面以合班理论分班实践课的排课为例, 说明算法的设 计 。 合班理论分班实践课排课算法( ) 1 获取课程安排表中合班上课并且课程类型为“ 理论 实践课” 的所有记录 2 遍历上述记录, 对每一条记录按下面的步骤进行排 课 2 1读取 当前记 录的所有 排课信 息, 如教师编 号、 班 级 编号、 周学时、 课程名称等 2 2 按 以下步骤 对当前课程进 行 ( 周学 时 4节) 次理论 实践课排课 2 2 1排理论 课。遍历 所有 排课时间点 , 如果找到某 一 时间点满足教室、

6、 教师和班级同时未排课 , 则表示该时间点 可进行排课 , 此时要更改教师 、 教室和班级基本信息 的“ 排课 情况” 字段, 将“ 排课情况” 字段中代表上述时间点的字符设 置为 号表示 已排课 ,并将 当前 的排 课信 息添加到教师 、 班 级 、教室课表中 。如果遍历所有 的时间点都找不到教师 、 教 室、 班级 同为未排课 的时间点 , 则表示当前 课程排课失败 , 此 时跳到第 2步, 对下一条排课记录进行排课。 2 2 2 对合班班级中的其中一个班级安排 实践课 。 排课 作者简介:林岚岚, 女 , 广 东揭 阳人 , 工程硕士, 软件设计师, 讲师, 高级程序员, 研 究方向:

7、算法设计、 数据挖掘 、 神经网络。 -4 2 。 方法同 2 2 1 2 2 3对合班班级 中的另一个班级安排 实践课。排课方 法同 2 2 1 5 人 性化排课规 则的实现 ( 1 ) 对 相同的排课对象按 周数 的不 同安排不 同的课程 为 了实 现对 相 同的排课对 象按 周数 的不 同安排 不 同的 课程, 在教师基本信息表、 班级基本信息表和教室基本信息 表中定义了”排课情况 ” 字段用来表示各排课对象的排课 情况 , 该字 段用 4 0 0个字符表 示 2 O个教学周 中每一 周 2 0次 课 ( 一次课相 当两节课) 的排课情 况 , 该字段 的第一个字符表 示第 一周星期一

8、1 、 2节的排课情 况 , 第 二个字符 表示第 一周 星期 一 3 、 4节的排课情 况 , 依次类推 。如果某一字 符为 号 则表示该时间点未排课, 如果为 群号则表示已排课。如果要 获取第 we e k周星期 i 第 i 次课的上课情况, 可通过判断该字 段 的第( w e e k 一 1 ) 2 0 + ( i - 1 ) 4 + j 个字 符是否 为 号来 得知 该时 间点是否 未排 课。 ( 2 ) 合班理 论分班实 践课程及相 同课程 的理论课 不连续 两天安排 的人 性化排课 合班理论分班实践课程的最佳排课规则是 1 、 2节合班 上理论课, 3 、 4节一个单班上实践课,

9、5 、 6节另一个单班上实 践课 ; 其 次是 5 、 6节合 班上 理论 课 , 第二 天的 1 、 2节一 个单 班上实践课 , 第二天 的 3 、 4节 另一个单班上 实践课。 为 了满足 上述规 则和 相 同课 程 的理论 课不连 续两 天 安 排的原则, 在设计算法时用 i 5 + 1 表示星期几, 用 i 3 + 1 表 示第 几 次课 , 用 We e k S t a r t 表 示课 程 的开 始周 , 用 We e k E n d 表示课程的结束周, 为理论课查找排课时间点的算法如下: f o r ( j = 0 ; j 6 ; j = j + 2 ) f o r ( i =

10、 0 ; i 1 0 i = i + 2 ) f o r ( we e k = We e k S t a r t ; w e e k = We e k E n d ; we e k + + ) n = ( we e k - 1 ) 2 O + ( 5 ) 4 + 0 3 + 1 ) ; 第 we e k星 期( i o 0 5 + 1 ) 第( i 3 + 1 ) 次课在“ 排课情况” 字段中用第 n个字符表示 判断教师、 教室、 班级在时间点 n上的排课情况, 如 果不 同时为 号则提前退 出当前循环 ,寻找 下一个时 间点 。 代码省略 。 ) i f ( we e k = = We e

11、k E n d + 1 ) 当 w e e k = = We e k E n d + 1时 , 表 示 教师 、 教 室 和班 级在第 We e k S t a r t 周至第 We e kE n d周 的星期 r we e k n 4 + 1 ) 第 ( we e k n 4 ) 次课 未排 课, 可在该 时间点上排课 。代 码省略 。 篡 渣 研 上述 算法用表示第 几节 的循环 变量作为外循 环、 用表示 星期几 的循环变量作 为 内循环 , 并且循 环变量 的更 改采用加 2而不是加 1 ,从而使排课 时间点从每一天 的 l 、 2节 开始查 找 ,当所 有 的 1 、 2节 都不 满

12、足 要求 时才 查 找每 一天 的 5 、 6 节 , 最后 查找 3 、 4节 , 在选 择星 期几上 课时 , 是 按照星 期一 、 星期三、 星期五、 星期二、 星期四的顺序查找, 从而实现相同 课程的理论课不连 续两天安排的原则 。 特 别注意 的是为 了满 足广大教师 晚上不愿上课 的需求 , 在自动排课算法中不考虑对 7 、 8节进行排课, 故上述算法的 外循环用 f o r (j = 0 ; j 6 ; j - j + 2 ) 而不是 f o r ( j = O : j 8 ; j _ j + 2 ) 。 为 了实现 实践课紧跟 在理论课后 面安排 的原 则, 在选 择 实践课上

13、课时间点时, 应从当前理论课的时间点后面开始查 找, 这 时只需用 一重循环来遍 历一周 的所有 上课时 间点。实 践课的排课算法如下 : w e e k n = ( ( i 5 ) 4 + 0 3 ) + 2 ) 2 O ; w e e k n表 示 已安排 的 理论课的下一个 时间点 ( 一周 中的时间点) for ( i n t x : 0 ;x 2 0 ;w e e k n = ( w e e k n + 1 ) 2 0 , x + + ) x用 来 控 制循环的次数 i f ( ( we e k n + 1 ) 4 = = 0 ) c o n t i n u e ; 每天 的第 7

14、、 8节 不 排 课 , 跳过该排课 时间 f o r ( w e e k - We e k S t a r t : w e e k = We e k E n d ; we e k + + f n = ( we e k - 1 ) * 2 0 + we e k n ; n表示排课 的时间点 判断教 师、 教室、 班 级在时 间点 n上的排课情 况 , 如 果 不 同时为 + 号 则提 前退 出当前循环 , 寻找下 一个时间 点。代 码 省略 i f ( we e We e kE n d + 1 ) 当 we e k = = We e k E n d + l时, 表 示教师 、 教 室和班 级

15、在第 We e k S t a r t周至第 We e k E n d周 的星期 ( we e k n 4 + 1 ) 第 ( we e k n 4 ) 次课未排课 , 可在该 时间点上排课 。代码省略 6 小结 为了测试本排课系统的性能, 本人以上学期计算机系的 实际排课数据作为测试数据, 其中多媒体教室 1 2个, 实训场 8个 , 班 级 2 6个 , 教师 3 4人 , 班平均 周课 时 2 0节 , 采 用本排 课 系统进行排课 后 ,除 了两 个周学时 为 2 8节课 的班 级不 能 完 成 自动排 课外 , 其 它都 能安 排到上 课时 间 , 并且大 部分排 课时间满足我校的排

16、课规则。实验结果表明该排课算法的 设计比较合理, 能满足实际排课需求。 Th e De s i g n a n d I mp l e me n t a t i o n o f Col l e g e Co u r s e S c h e d ul i n g Al g o r i t h m Li n La nl a n ( Gu a n g d o n gT e c h n i c a l C o l l e g e o f Wa t e r Re s o u r c e s a n dE l e c t r icE n g i n e e r i n g , G u a n g z h o u 5 1 0 6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号