基于回溯算法制作自动排课系统

来源 :中国科教创新导刊 | 被引量 : 0次 | 上传用户:wdelaopologo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:随着技工院校的课程改革,编排课程表这项工作变得越来越复杂。如果还采用人工排课的话,不仅费时费力,还容易出现冲突、错漏等问题。为了有效地解决排课表问题,本文采用回溯算法来解决复杂的排课表问题,先创建优先级,再根据优先级从高到低的进行依次编排课程。最终生成课表。回溯法方便简单,易于软件实现。
  关键词:回溯算法 自动排课 应用软件
  中图分类号: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)按照优先级从大到小进行排课,如都排完,转向(12);否则,转向(3);(3)取出需要安排的课程数据,并将课节数赋给变量S,转向(4);(4)根据课程性质判断是否为专业课,如果是,转向(5);否则,并转向(7);(5)判断是否是一体化课程,如果是,转向(6),否则,转向(7);(6)判断当前课节数是否大于等于4,如果是将变量N赋值4,转向(8);否则,转向(7);(7)将变量N赋值为2,转向(8);(8)课程是否对教室有特殊要求,如果是,转向(9);否则,转向(10);(9)安排特殊教室,转向(11);(10)安排普通教室,转向(11);(11)S=S-N,判断S是否等于0,如果是,转向(2);否则,转向(4);(12)所有课程安排结束。
  要求1:(9)、(10)是指教室所容纳的学生人数≥班级学生总人数。命令如下:
  Select@studentSum=班级人数from班级信息表where班级编号in(select班级编号form课程信息表where课程编号=@courseID)/*@courseID为当前课程编号*/
  Select教室编号from教室信息表where 容纳人数>=@studentSum
  要求2:自动排课系统不仅是上面12步就可完成的,还需考虑其他情况,减少排课的冲突。如4节连上的课程无合适教室(或实训室)安排,则可按2节连上的形式分两次安排;无需教室的课程,先找下午安排,如下午都已安排了课程,再安排上午上课。
  3 数据库的设计
  数据库的设计根据内容的需求而定,主要包含5个信息表,分别为:课程信息表、课程安排表、教师信息表、班级信息表、教室信息表。对于数据表的设计及主要字段如表2。
  4 系统的实现
  该系统已在我校计算机教学部进行了初步测试,效果良好。使用为Visual C#和SQL2005实现。为应对不可预料的突发情况或教师个人特殊情况的出现,系统中还加入了手动排课功能,对课程表进行局部调整。系统运行情况截图如图2所示。
  5 结语
  自动排课系统采用了回溯算法,极大地减少了冲突死锁的概率,从而减少了人工干预的次数与时间,提高了排课效率。但全自动排课还有不如人意的地方,比如当教室比较紧张时,会出现个别课程安排不合理,需手动调整等情况,我将继续研究,改进算法,制作出更完善的排课系统。
  参考文献
  [1] 彭复明.基于矩阵优化的机房自动排课算法[J].中国制造业信息化,2009(11):52-54.
  [2] 王帮海,李振坤.基于贪婪算法的自动排课表系统的研究与实现[J].计算机工程与设计,2008,29(18):4843-4846.
  [3] 陆峰,李新.自动排课系统算法的设计与实现[J].微机发展,2005,15(11):60-63.
  [4] 张健.基于图论的高校排课系统实现[J].重庆师范大学学报,2005(1):35-38.
其他文献
We demonstrate a method for controlling strong chaos by an aperiodic perturbation in two-dimensionalHamiltonian systems. The method has the advantages that the
Based on a relativistic quark model approach, the transition properties of the first nucleon resonance △(1232), and the coupling constants gπNN, g△πN are in
The photon polarization law po = sin2θ is derived from a simple informational consideration by twomethods: The first is via an intuitive principle of mininum Fi
Phase transition between nematic and isotropic liquid crystal is a very weak first order phase transition.We avoid to use the normal Landau-de Gennes's free
全国玉米播种和产量最多的地区长春市,在建设社会主义新农村中,玉米收获机械化已成为农民需求的新热点,也是该市机械化急需攻克的重点。农民需要玉米收获机,然而现有玉米联合收获
A consistent approach to estimating nuclear effect functions RA RvA (x2) and RSA(x2) based on numerical iteration technique is presented in the quark-parton mod
摘 要:随着新课改教育的实施,劳技课程越来越得到重视,在设计内容上也相对广泛起来,它主要以动手能力为主,因为中学生思维的不成熟,大脑与动手能力协调发展的能力培养成为重点。在劳技课堂中要培养学生的兴趣,发展学生创新思维和动手的能力,在实战中满足学生好奇心,并巧妙的进行科学教育,穿插思想教育,培养新一代全能人才。  关键词:劳技课堂 创新思维 动手能力  中图分类号:G421 文献标识码:A 文章编号
Meson corrections on the chiral condensate up to next-to-leading order in a 1/Nc expansion at finite densityare investigated in the NJL model with explicit chir
高中思想政治课教学,由于基本概念,基本原理和观点比较多,而且内容比较抽象,理论性较强,教师在教学中若仪限于理论的说教,必然使得政治课教学枯燥无味,学生学习提不起兴趣,更不用说提
电工教学实际也是一种教学内容,只是由于其教学对象与教学内容的特殊性,在教学方法上应该具体问题具体分析。针对不同的教学群体采取不同的教学方法。现阶段随着经济与科学技术