论文部分内容阅读
排课问题也称为课程时间表问题,是一个有约束、多目标的组合优化问题,排出的课表既要可行,又要满足教师和学生等所有相关人员的需求,由于排课问题属于人文范畴的问题,涉及到的因素很多,各个学校规模,教学政策及约束条件的不同,排课问题已被证明为一个NP完全问题。一般情况下,排课问题无法获取到足够的约束条件,因此无法找到最优解,而随着时间段和课程等的增加,排课组合方案数量急剧上升,并很可能产生组合爆炸,因为而在最优解的寻找过程中往往需要大量的时间,让人无法忍受,而导致系统无法使用。模拟退火以其理论完善,局部寻优能力强,计算时间快等优点,被越来越多地应用于排课问题。本文放弃寻找最优的排课方案,而在现有资源情况下,根据已有约束,满足所有硬约束,尽量满足软约束,产生可行课表,并对其不断优化,降低适应度函数值,得到近优解,这样求解效率高,算法灵活,能够满足系统实用性和高效性的需求。将模拟退火算法应用于排课问题的求解,本文的研究工作主要有以下几个方面:1.对排课要素、求解目标做出了系统完整的分析,并仔细剖析了排课问题涉及的约束条件,本文根据约束条件在排课算法中所起到的实际作用,将其划分为七大类,并一一阐述其归属为硬约束还是软约束。2.根据对排课问题的分析,对排课问题进行数学描述,对符号做了统一的定义,并以部分约束条件为例,对其进行了形式化描述,并建立了的排课问题的数学模型。3.通过和迭代局部搜索算法结合,弥补模拟退火算法容易陷入局部最优的缺点,将改进后的模拟退火算法应用到排课问题中。首先采用图着色方法产生初始可行解,再对其应用模拟退火算法,在模拟退火中交替使用标准邻域和双Kempe链邻域,并阐述了各参数的设定及求解方法。4.采用面向对象的思想完成了排课系统的整体设计和详细设计,并在Windows7系统和QT集成开发环境下,采用C++语言完成了排课系统开发,将排课算法应用到实际中。5.通过实验,对排课结果进行分析,不断改进算法及调整系统参数,使其达到更好的排课效果。