- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于局部状态计算模拟退火算法求解排课问题
基于局部状态计算模拟退火算法求解排课问题
摘要:编排课程表是教学工作开展的基础,因此排课问题的解决有着重大的现实意义。作为典型的组合优化问题,随着课程规模的增加以及约束条件的多样化、复杂化,人工求解排课问题显得不现实。在分析排课问题需要满足的约束条件上建立课程表模型,使用基于局部状态计算的模拟退火算法来减小计算范围对模型求解。(近似)最优的求解结果证明了模型的有效性和求解方法的可行性。
关键词:排课系统 模拟退火 局部状态计算
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2016)08-0149-02
1 引言
排课工作是教学管理的一项重要内容,其实质是为每个班级安排合理的课程、时间、教室和教师,制定课程表以保证教学工作能按时有序进行。课程表编排的合理化和人性化直接影响着后续教学工作的效率。S.Even于1975年证明了排课问题在本质上属于NP完全问题[1]。随着班级、课程量的增加以及约束条件的复杂化,传统的人工排课方法耗时耗力,甚至难以排出合理的课程表。不少文献对遗传算法解决排课问题进行了研究[2][3][4],遗传算法在求解该问题时搜索效率较低,容易陷入局部极值。事实上,遗传算法更适用于无约束的优化问题求解。由于遗传算法的解和软色体基因编码间有着对应规则,因此适应度较高的两个个体经杂交后可能产生较差的子代,甚至子代会成为非法软色体(不满足基因编码规则)。文献[5]使用蚁群算法对排课问题进行了研究,蚁群算法的缺点是计算耗时较长,蚂蚁运动的随机性致使收敛速度较慢, 算法容易停滞不前。鉴于以上,本文使用基于局部状态计算的模拟退火算法对排课问题进行求解。
2 问题描述和建立模型
2.1 问题描述
作为典型的组合优化问题,排课问题涉及班级、课程、教师、时间和教室五个因素,其实质是给定资源在一系列约束条件下的分配,因此排课问题属于约束满足问题[6]。一方面,课程表必须满足硬约束以保证不发生时空冲突,另一方面,课程表要尽量满足软约束去考虑某些课程或者教师的特殊要求。教学的最小单位定义为基本时间段BTD(Basic Time Duration),一个BTD可以认为是一节课或者一个课时。
课程表必须满足硬约束,从教学资源分配的观点看,硬约束有下面三点:
(1)班级约束:一个班级在一个课时内只能上一门课。
(2)教师约束:一个教师在一个课时内只能上一门课。
(3)教室约束:一个教室在一个课时内只能上一门课。
软约束随具体情况而变,综合看来有下面几点:
(1)教师A的课程只能安排在上午。
(2)教师B的课程需要有连课(比如1、2节都为英语课)。
(3)教师C的课只能安排在周一和周三。
(4)某些课只能安排在特定教室(实验课等)。
(5)考虑到备课负担和教学效果,课程编排要尽量均匀。
2.2 模型建立
如前所述,排课问题中所涉及的因素有班级、课程、教师、教室、时间。我们对教学资源的假定如下:有m间教室,每周上n天课,每天有p个课时,(比如上午四节,下午三节,那么一天的课时数为7),则每周共有m*n*p个时空单元(课时单元)。我们把所有的时空单元划分为一个行数为m、列数为p*n的二维数组TimeTable[m][p*n]。如果有8间教室,每周上课5天(星期一至星期五),每天7节课,那么该二维数组就为TimeTable[7×5]。二维数组的每个元素TimeTable[i][j](0≤i≥7,0≤j≥34)与哪一天(date)、哪一节(order)的对应关系为:
date=j/7(取整)
order=j%7(取余)。
3 基于局部状态计算的模拟退火排课算法
模拟退火算法[4](Simulated annealing,SA)的基本原理是模拟固体在退火过程中总是从能量高的状态向能量最低的平衡态转换的思想寻找最优解,通过冷却温度的不断降低来控制退火过程。SA在每个温度下设计解的随机变化,并以一定的概率接受差的解。随着能量的降低,接受差的解的概率也显著降低。因此,SA在高能状态下具有逃离局部最优解的能力,在低能状态下可以收敛得到全局最优解。
模拟退火算法的关键是要找到一个目标函数,排课问题中的各种约束是建立目标函数的依据,这些约束分为硬约束和软约束。我们对不同的约束赋予不同的影响因子(权重),硬约束决定了排课方案是否可行,软约束决定排课方案是否够好。
3.1 算法流程
为了算法流程的描述简洁,T0表示退火的初始温度,Tmin表示退火的结束温度,降温方式使用指数衰减。INNER_TIMES为每个温度下的课程表随机变化次数。算法流程如图1所示。
3.2 模型求解的算
文档评论(0)