基于遗传算法的智能排课系统的设计和实现基于遗传算法的智能排课系统的设计和实现 摘要:本文针对遗传算法后期收敛速度慢,易陷入局部最优的困境,提出了改进方案,有效解决了智能排课问题。 关键词:遗传算法 ;排课问题;组合优化 中图分类号:N945.23 文献标识码: A 文章编号: 排课是一个比较复杂的过程,对于特别课程的排课实行的是手动方式,而一般课程则采纳自动方式。在自动排课前需要对一些参数进行初始化,课表生成后可以进行人工调整。 1 排课的约束条件 在排课的过程中,有些硬性约束条件必须遵循:如老师、教室、课程、时间和地点均不可存在冲突;也有一些软性约束因素值得考虑,这样能使课表更加的合理和人性化,如专业课尽量安排在效率较高的时间段;尽量满足某些老师的特别上课时间要求;同时排课也不能太零散,要尽量减少老师来校的次数;应尽量避开学生一天课程很满而另一天却整天没课的情况,学生的上课时间不能安排得太过集中;在某个时间段不做任何教学任务的安排,以便老师和学生能利用这个时间开展一些课余活动。 2 排课的遗传算法设计 2.1 遗传算法流程设计 遗传算法的核心内容包括:参数编码、初始群体的设定、适应度函数的设计、遗传操作设计及控制参数设定[1]。 (1)基因编码:对课程和授课老师进行组合编码,可以采纳老师编号(5 位)+班级编号(5 位)+教室编号(4 位)+课程编号(6位)+周学时(2 位)+特别要求(6 位)的编码方式。 (2)产生初始种群:首先把固定教学时间段的老师编码填入对应的时间段中,然后产生一个 1~20 的随机数,根据产生的随机数在相应的位置填入该班的其他老师编码。若填入的位置已有数据,则重新产生随机数,直到所有的老师编码无重复地填入数组。如此循环直至产生满足种群规模数量的个体,组成初始种群。可以看出,上述方式产生的。 (3)冲突检测:初始种群个体含有大量的冲突[4],由于我们在编码已经考虑到时间、班级、教室避开同时上一门以上课程的冲突,因此,只需对同一时间,同一个老师同时上一门以上课程的冲突进行检测和消除。 (4)冲突消除[5]:读取第一个课程表二维数组 KCB(BJS,20)中第一个数据(老师编号)。将读取的数据与 KCB 数组中该列下一行的数据进行比较,若一致,则选择该行随机列的数据,若可以调整,则互换这两个数据;若不可调整则再次对该行随机列的数据进行选取,直到数据互不相同。取该列第三行数据,重复操作至该列所有...