- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于回溯算法制作自动排课系统.doc
基于回溯算法制作自动排课系统
摘 要:随着技工院校的课程改革,编排课程表这项工作变得越来越复杂。如果还采用人工排课的话,不仅费时费力,还容易出现冲突、错漏等问题。为了有效地解决排课表问题,本文采用回溯算法来解决复杂的排课表问题,先创建优先级,再根据优先级从高到低的进行依次编排课程。最终生成课表。回溯法方便简单,易于软件实现。
关键词:回溯算法 自动排课 应用软件
中图分类号:G71 文献标识码:A 文章编号:1673-9795(2013)09(b)-0133-02
技工院校的课表安排是一项复杂又叫人头痛的工作,具体表现在以下几个方面:(1)老师、学生、场地三者要保持协调统一;(2)个别专业实行模块化教学,即在一定周期内上完一门课,接下来的周期再上另一门课,对授课场地造成极大浪费;(3)同一个老师专业跨度大,同时任教不同专业,甚至跨系部,如公共类课程;(4)招生规模的不稳定性使得教学设备数量无法完全满足学生需求。
基于以上复杂多变的情况,要想人工调整课表是极困难的。现在已有很多种自动排课系统,但大多不适合技工院校的自动排课系统。其主要原因是:现在一些比较成功的自动排课系统适合中小学的课程安排。技工院校的课程多采用一体化教学模式,却没有一个科学的、合理的算法解决这个排课问题。笔者在2012年采用了回溯算法制作了一个自动排课系统,通过遍历搜索确定优先级,然后将课程进行合理的排列,从而避免发生冲突和矛盾,经过三个学期的运行,该系统的可行性强,易操作,在教学实践中发挥了重要作用。
1 排课基本原则
如何排出科学、合理和实用的课程表呢?必须从实际出发,笔者根据本校的课程安排实际情况,制定了下列规则:(1)同一教师不能在同一时间节点安排两个或以上授课任务;(2)同一场地不能在同一时间节点安排两个或以上授课任务;(3)小班教室或实训室不能在同一时间节点安排两名或以上教师授课;(4)教场的工位数要大于等于上课的人数;(5)教室的类型要与课程的类型一致。如,机房课与上机课、舞蹈室与舞蹈课等;(6)尽量安排实训课4节连上,这符合多数一体化教学的要求;(7)尽量将文化理论课的教学安排在上午,而将实训课,体育课等课程安排在第3节到第6节之间;(8)尽量避免教师的连续工作,即不能让一个教师在一天或连续几天内完成多个教学工作;(9)在某个特定的时间段不要安排教学任务,以便教师和学生都能够利用这个时间进行一些教学工作以外的活动;(10)可根据特殊要求,对特殊的教师安排特定的时间;(11)避免同一班级的同一门理论课连续出现。
2 基于回溯算法自动排课的核心思想
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。它的基本思想是:从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。这种不断“前进”、不断“回溯”寻找最优解的方法,就称作“回溯法”。
2.1 确定优先级
回溯算法在很多自动课表系统上应用较多,回溯算法是排课系统寻找最优解的有效算法。根据课程安排的要求先确定优先级,优先级的确定要根据专业课的安排优先于非专业课、参与班级较多的课程优先调度、阶段课程周次靠前的优先于周次靠后的、需四节连上的一体化课程优先于两节连上的课程、对时间有特殊要求的课程先调度、对教室有特殊要求的课程优先调度。根据以上原则,设计了一个优先级函数为:
G(x)=C1×J(x)+C2×W(x)+C3×S(x)+C4×T(x)+C5×L(x)+C6×P(x)
其中G(x)表示优先级函数;J(x)表示课程的级别;W(x)表示该课程开始于第几周;S(x)表示该课程的参与班级数;T(x)表示教师承担课程的任务量;L(x)表示需特殊安排的教师;P(x)表示教室的级别;C1,C2,C3,C4为可调整的参数,由G(x)可知,课程级别越高,课程开始周数越靠前,参与班越多,教师任务越重,有特殊要求的课程的优先级超高,这样按优先级进行降序排序,优先级高的优先处理。函数说明见表1。
2.2 核心算法流程
确定好优先级数据后,就可按回溯算法进行排课表了。在排课表过程中,首先从课程数据表中取出优先级别高的课程,再从教室信息表中查找合适的教室,然后添加数据到课程表中,并将总课节数减2或减4。如遇到固定时间的课程,领导的课程应先安排。同时还要考虑教室的利用率,即上课人数与教室资源的比值,比值越大越好,最大值为1。
基本查找思路如下,流程图如图1所示:(1)根据G(X)函数,创建优先级,并按降序,转向(2);(2)按照优先级从大到小进行排课,如都排完,转向(1
文档评论(0)