- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排课算法研究
分支定界算法在中学排课问题中的应用
摘要:在本文中我们主要研究了带约束有教案的中学排课程表问题。首先我们得到了有关该问题的中学课程表必须满足的几个条件,因为该排课程表问题是一个NP难解的问题,因此该问题没有多项式时间算法,通过分析,我们提出了一个求解该问题的分支定界算法,数值证明这是一个有效的算法。
关键词:课程表问题;NP难解问题;分支定界算法
Abstract : In this paper we focus on the time-table problem for middle schools with constraints on tearchers’ teaching-plans. We first give some necessary conditions for fcasible fime-tables of the problem, because this problem is NP-head, which means that there does not exist an algorithm that solves this problem in polynomial-time. We propose a branch-and-bound algorithm. Our experiment result shows that the proposed algorithm is both efficient and effective for this problem.
Key words: Time-table, NP-problem, branch-and-bound method.
一个学校的教与学的安排是由学校的规模及一定的要求来决定,一个学校有自己的教学方向这在一定程度上决定了这个学校的教师分配及所教科目在一个学期内的课时数分配。为了适当安排好学校的教学进度,就必须要安排好教师的讲课、学生的授课和教室、体育场地等等的合理使用,以免出现冲突和不合理的安排。所以,合理的课表安排是学校工作的重要组成部分。
事实证明,课表的安排问题是一个NP完全问题,只能根据各个学校的特点来安排适当的课程表,我们发现,对于高中学校来说,很多时候,授课教师往往要考虑到对几个班他要同时上课,这就要求每个班的进度必须一致,所以在老师备课写教案的时候就要考虑到这个问题,本文也正是从老师的教案入手,采用分支定界算法来解决课表的安排问题。
我们来分析一下排课程表问题。我们可以把课程表问题看成在满足下列一系列条件的可行域中,寻找一个可行点的问题。而排课条件基本上可以很自然地归结为以下几条:
教师的教案问题(指一天教案)
每门课在一周内的均衡分配
每门课在一周内的上下午的均衡分配
每个教师的同一门课所有班的同等对待
集中排课
其他排课条件
(条件1)
在分析之后,我们发现,其实对于排课问题最简单的方法是采用原始枚举法进行求解。这实际上是对一棵庞大的树进行搜索(这棵树的根就是排课的起点),因此这样做非常费时。下面我们给出基于分支定界思想的算法。实际在枚举的过程中,将产生大量的分支是无可行点的分支。比如在排了一些课后,教师的教案问题不满足,主课不满足要求,副科排不了了等等。当不满足要求时,以下的所有分支都无可行点,所以可以大胆地把它们去掉。因而采用分支定界法来剪支。怎样定界?采用一种判别原则,也即在排课程表时,定义一种抽象的界,使得在排到某个课时,它是否超过了这个界,如果超过了这个界,就把它剪掉。同样,可以注意到,当先排某些课时将使得可行点很难找到,因为有各种排课条件。所以将适当调整这些课程的序列,使在枚举过程中尽早地出现可行点。我们将在下面给予具体的说明。
分支的方法
不妨设每个班第i门课有li个课时。首先对这n个班的所有l门课按课程进行适当的排
序(根据每个学校的情况而定)。然后再对每门课程按教师进行排序。这样就得到了一个教案序列J=(J1,J2,……Ji),其中Ji表示第i门课。而Ji=(Ji1,Ji2,…….jiti)表示第i门课共有ti个教师来教这n个班。排课时就按照这个序列进行。
现在开始排课。先排第一门课的第一个教师所教的第一个班,也就是树的根。这个课(n1,l11)的所有排法就是它的所有分支。当排定一个课后(也就是选定一个分支),不妨设排在一个位置(d,t),再排此教师的下一个班的这门课,当排完了此教师的此门课的所有班,再排此教师的此门课的第二轮教案。当排完了此教师的所有课程后,再排下一个教师的此门课的班,排完了这门课后,再排下一门课。如此建立了一课树,这棵树总共有S=n层(如果有可行解的话)。
我们的目的是要找到一种搜索方法F,使得F尽可能快的走到这棵树的第S层。在这棵树上可以看到会有大量的分支将达不到S层。为了剪掉那
原创力文档


文档评论(0)