回溯算法在排课系统中的应用

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

优 先级
Q:
Cr 2 Cr l
图3 - 3 C r l 回溯第 2 步 依次类推, 当重排课程 C r k 成功 时, 且如果 C r k 不为栈底元素, 则将堆栈 S 连续 出栈, 直到 C r k 的父结点 C r k ’ 弹出为止 ; 对C r k ’ 进行
再次重新排课, 如果 C r l 重排成功, 则成功退 出;如果重排失败, 则把堆栈 S
常有必要 的。这就需要与排课工作人员一起 携手 , 深入 、全 面的对问题 研究和分析以达 到理想需求 目 标和可行 的技如果失败, 则以 C r l 的相关课程构成队列, 同时将 C r l 压入
到堆栈 S, 如图3 — 2所示 。
2 . 相关算法 介绍
设计如下: 1 ) 把所有符合年级和学期 的课程按一定 的顺序排列 , 得 到课程集合
c 。 2 1 按照顺序选择某 门课程 C i , 并得到这个课程的所有相关信息。 3 ) 按 照一周的时间段顺序选定一时间段 T R 。 4 】 判断时间段 T R是否与教师的 时 间段冲突 , 如果发生 冲突则跳回 3 ) , 如果不发生冲突则跳转到 5 ) 。 5 ) 判 断时间段 T R是否与所有班级的时间段 冲突 , 如果发生冲突则跳 回 3 ) , 如
学报. 2 0 0 7 , 3 . 2 0 1 3・ 0 6 中国电子商务 . I 1 8 1
在构建树 的过程中, 如果某课程 C r的相关课程 已在之前建树时被列 为其它课程 的相关课程, 则不再此课程列为 c r的相关课程。 这种方法可有
参考文献
[ 1 ] 谢凡 荣. 求解排 课表 问题 的 一个启发 式 数值 算法. 运筹 与管
理. 2 0 0 5 ,1 4 ( 1 0 ) : 3 6 — 4 0 .
回溯算法在排课系统中的应用
伦 冠 民 苟海燕 石 家庄 经济学院华信 学院 河 北 石 家庄
0 5 0 0 9 1
【 摘 要 】这几年来 ,随着计算机 的普及 ,应用软件也正 随着各行各 业的实际需要 而被积极 引 入 。排课 系统 比较 复杂又具有智 能的特点 ,其核心算 法是关键 问题之一 。现在主要 流行 的算法有 关联规 则算 法、遗传 算法、回溯算法、贪 心算法、分组优化 决策算法、动态规 划算法等 。 【 关键词 】排课 系统 回溯算 法
课 ,修改这门课 程的任务信息表 中的排课标 志 , 选择后~门课程 , 跳 转
到2 1 。
恢复到最后- -1 7 课程压入时的状态 ;然后弹出队列 Q头元素继续回溯 ; 如果成功, 则再把 C r k ’的父结点进行再次重新排课, 依次类推 ;如果 队列
冲突检测是 指对 当前待安排的课程和欲安排的时间组合或者教室的 组合进行检测 ,如果对应 的教师 、 选课学生 的时间组合或者课程的时间
[ 2 】 黄干平, 姚 自珍, 张铁静. 使用模拟退火算法解课表 问题. 武 汉大
学学报 ( 自然科学版) . 2 0 0 0 , 4 6 ( 5 ) 5 5 9 — 5 6 .
【 3 】 L a r s V e s t e r g a a r d K r a g e l u n d .S o l V i n g a t i r a o t a b 1 i n g p r o b l e m u s i n g h y b r i d g e n e t i c a 1 g o r i t h m a 【 J 】 . S o f t w a r e — P r a t i c e a n d
Q为空并且 C r l 重排失贱 或者 d e p h 等于限定 的最大深度值 时' t 可以直接 安排此课程, 也可以通过增大 阀值来解决此问题。
和教室的组合都 已经被占用, 则有冲突产生 , 否则就可以作为选课 的备选 。 下面以按时间查找时检测 到冲突而进行 的回溯为例来说明回溯算法 。 设C r l 是当前待排课程, 以C r l作为第一结点, 以C r l 的已排相关结点 作为第二层结点, 其中同一父结点的儿子从左到右都按排课优先级从小到 大 的顺序排列, 再按 同样方式以第 二层结点的相关结点组成第三层结点 , 其它类似, 构成以 C r l 和已排课程集合所构建的树 , 如图3 - 1 所示。
判断本课程是否安排为 一周 的最后一节课 , 如果不是最后一节课则跳 转
到2 ) ,否则将跳转到 l 1 ) 。l 1 ) 将数组 x O 和Y O 按照对应时间段与教室更 新到排课结果信息表中 , 更新教室 、 教师 、 班级 的上课时间段 。1 2 ) 判断 教室 R n 是否为教室集合 R中的最后—个教室 , 如果是最后一个教室则跳 转到 1 3 ) , 否则将跳 回 7 ) 。1 3 ) 选择是否进行课程 c i 的回溯处理 , 选择是 则跳转到 1 4 ) , 选 择否则跳转到 1 5 ) 。 1 4 ) 删除前一 门安排了的课程的排课 信息表 ,并把相关的教 室、教师 、班级的上课 时间段进行修改。选择前 门课程 , 跳转到 2 】 。1 5 ) 把这门课程暂时不做调整 , 等以后进行手动排
Q#
蹲 1

图3 — 2 C r l 回溯第 1 步 ( 2 ) 重排 C r 2 , 如果失败, 则将 C r 2 的相关课程压入到队列中, 同时把 C r 2 弹出并压入堆栈 s中 , 如图 3 — 3所示 。
- ● ● - ● ●
突则跳转到 9 ) 。 9 ) 将时间段 T R和教室 R n 分别保存到数组 x O 和Y 0 。 1 o )
为 了满足人 们对 大数据量信息处理的渴望, 为解决各 种实际问题, 计 算机算法学得到 了飞速的发展 ,出现 了分组优化决策算法 、关联规则算 法 、模拟退火算法 、动态规划算法 、启发式数值算法 、 遗传算法 、贪心 算法等方法。
3 . 回溯算法在排课 系统 中的应 用
回溯算法能够在一 门课程安排不下的情 况下返 回前一个安排完毕的 课程 ,当前一 门课程重新 安排后 ,再重新安排这门课 。具体 的回溯算法
中树的生成和回溯成功后 的退出问题 。采用广度优先方式进行课程的回 溯, 在 回溯过程中由相关课程构成队列 Q, 同时把已经回溯重排 的课程压 人到堆栈 s , 通过限制 s的深度 d e p t h 来阻止回溯雪崩的发生, 如图 3 — 1所
示。
1 . 计算机排 课问题分 析
在研究排课系统可行的技术路线之前 ,应该对其 全面彻底 的分析非
E x p e r i e n c e .1 9 9 7 ,2 7 ( 1 0 ) :1 1 2 1 — 1 1 3 4 .
效的避免发生循环 回溯现象。队列 Q 、堆栈 S的生成 和使用是在回溯 的 过程中形成 的。综合队列和堆栈 两种数据结构可很好的解决 回溯进行 当
f 4 】 马振 飞, 刘 晓丽.排课 系统 中混合算法 的应用研 究.辽 宁大学
中图分类号 :T P 3 1 1文献标识码 :A 文章编号:1 0 0 9 - 4 0 6 7 ( 2 0 1 3 ) 0 6 . 1 8 1 — 0 1
教务 工作 的 目的在于合理 的分配教学 活动 的时 间及学校 的教 学资 源。教务工作 的正常进行关系到整个学校的正常教学活动能否高效有序 地进行 。因此 ,提高排课的高效性 、科学性和合理性成为了教务工作的 重要工作 。
果不发生冲突则跳转到 6 1 。 6 ) 把所有符合 的课程 C i 要求的教室按一定的 顺序排列 , 得到教室集合 R 。 7 ) 按J I 顷 序选择某个教室 R l l 。 8 ) 判断时间段 T R与教室 R n 是否发生冲突, 如果发生 冲突则跳转到 l 2 1 , 如果不发生冲
优先级
相关文档
最新文档