论文部分内容阅读
遗传算法自上世纪诞生以来,迅速运用到复杂科学计算、工程计算、资源调度、业务优化、时间表等复杂问题的求解上。这些传统难题的症结在于构建的数学模型非常复杂,需要用到积分、微分、概率论、矩阵方面的高深数学知识并进行推导,这对于很多程序员来讲很难完成。遗传算法模拟了自然界的“物竞天择、优胜劣汰”的思想,其只需要明确问题的目标,而不需要复杂的数学推导,通过类似“进化”的程序演化过程,就可以得到理想的答案,尤其在多目标任务求解与优化上,效果更加突出。时间表问题就是一个多目标优化问题。对于规模稍微大的时间表问题,如果采用传统的穷举法,则会因为计算时间过长而失去实际意义。遗传算法为求解时间表问题提出了新的思路。排课是时间表问题中的一个特例,几乎每所学校都会涉及到,但是各个学校对于课表的要求差异性较大,需要针对性的优化。 本文对于遗传算法在高校排课中的应用进行了研究,重点研究了基因和染色体的表示方法、三个子算子的优化、适应度的构成等方面的问题。基因采用结构体的方式,包含了更加丰富的信息,表示的概念和含义更加明确,而且也可以根据需要嵌入辅助信息;染色体采用二维数组结构,横纵坐标分别是时间和教室信息,从结构上避免了时间和教室分配方面可能引起的冲突问题,空间利用率也在可以承受的范围内。选择算子采用了灵活的方式,针对交叉和变异采用了不同的改进方案。交叉运算时,高的交叉率使得每一条染色体都有很大机率被选中,保证种群的多样性,同时又给予适应度高的染色体以更多的选择机会;变异算法时,较低的变异率保证了算法的稳定。交叉算予以1-5班的课程作为基因交换量,占染色体基因总量的2%至10%,即保证了染色体的稳定,又可以保证算法的较快收敛。变异算子采用了“定向”变异的方式,给予适应度最低的基因较高的变异机率,以期求得更好的基因;适应度高的基因也拥有一定的变异机率,以便在更广的空间上进行搜索。适应度采用了综合评价的方法,染色体的适应度由基因的适应度之和确定,引入的标志位可以给予“不合理”的基因以较高的“惩罚值”,从而对进化方向产生直接影响。