本发明涉及医学教育领域,尤其涉及一种基于自适应混合算法的排课方法及系统。
背景技术:
随着教育事业的不断发展,计算机智能排课系统在教务信息管理系统中得到越来越广泛的应用,目前市面上的排课系统基本上都是基于遗传算法、模拟退火算法、粒子算法、穷举算法等方法来实现,能够达到较好的效果。
但是针对在一系列的约束条件下,在限定的时间内,给出最优的排课结果,目前没有较成熟的实现方法。
技术实现要素:
为了解决上述问题,本发明提供了一种基于自适应混合算法的排课方法,包括如下步骤:
s1,获取排课的约束条件;
s2,利用遗传算法获得排课序列;
s3,利用穷举算法对所述排课序列进一步优化,得到排课结果。
进一步的,s2包括:
s201,生成初始课表;
s202,对所述初始课表中的个体进行随机配对;
s203,对随机配对结果进行遗传杂交;
s204,对遗传杂交结果进行遗传突变,产生新课表;
s205,计算所述新课表中的新个体的适应度;
s206,判断所述新个体的适应度是否为当前最优,是,进入步骤s207;否,则进入步骤s208;
s207,所述新个体替换所述初始课表中的个体;
s208,判断所述新个体是否达到预设代数,是,进入步骤s209;否,则进入步骤s210;
s209,更新变异率和杂交率;
s210,判断所述新个体是否达到预设迭代值,是,结束;否,则返回步骤s202。
进一步的,s209包括:
当所述新个体的适应度为当前最优时,重置变异率和杂交率;
否,则:代数阈值=代数阈值*1.5;变异率=变异率+5%;杂交率不变。
进一步的,s3包括:
s301,根据所述排课序列,获取适应度达到预设阈值的排课子序列;
s302,依次对未排课课程进行排课安排,得到排课结果。
进一步的,s301包括:
s3011,选取所述排课序列中前i个课程,计算当前所述前i个课程的适应度;
s3012,判断所述适应度是否达到预设阈值,是,则进入步骤s3013;否,则结束;
s3013,判断第i个课程是否为最后一个课程,是,结束;否,则i=i+1,并返回s3011。
进一步的,所述预设阈值为1.0。
进一步的,s302包括:
s3021,提取未排课课程;
s3022,获取所述未排课课程的排课安排,判断当前的排课安排的适应度是否为历史最优,是,则当前排课安排为所述未排课课程的排课安排;否,则历史最优为所述未排课课程的排课安排;
s3023,重复s3021、s3022,得到全部未排课课程的排课安排;
s3024,输出排课结果。
进一步的,s3022还包括,随机获取所述未排课课程的排课安排,并设置随机获取次数。
本发明的有益效果是:通过本发明提供的一种基于自适应混合算法的排课方法及系统,可以结合排课的各种约束条件,如教室数量、容纳人数、课程、教师等,利用自适应遗传算法找到全局最优解,再通过穷举算法实现进一步优化结果,从而实现在有限的时间内获得排课最优解。
附图说明
图1是本发明实施例一种基于自适应混合算法的排课方法的流程图。
图2是本发明实施例遗传算法流程图。
图3是本发明实施例穷举算法流程图。
图4是本发明实施例获取排课子序列的流程图。
图5是本发明实施例进一步优化排课安排的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有的其他实施例,均属于本发明的保护范围。
为了在一个合理的时间内生成一个最优解的排课结果,本发明实施例,如图1所示,提供了一种基于自适应混合算法的排课方法,包括以下步骤:
s1,获取排课的约束条件;
在实际的排课过程中,往往面临很多排课的约束条件,如,课程的数量、课程的教师、课程的教室、课程的课时、教室容量、班级等。在一些实施例中,有些约束条件存在优先级,属于优先考虑的约束条件,如某个专家教师的授课时间,或某个特殊环境教室的使用时限等,也可以根据课程的难易度等条件设置不同的权重,约束条件越多的权重越大,优先级越高。约束条件可以是以文档、表格等其他计算机可读的形式储存和获取。
s2,利用遗传算法获得排课序列;
利用遗传算法,可以将每代最优的个体保留下来,实现最优个体代替最差个体,从而得到全局最优解。
s3,利用穷举算法对所述排课序列进一步优化,得到排课结果;
将遗传算法得到的全局最优解利用穷举算法进一步优化,可以在有限的时间内满足一系列的约束条件,具有较高的排课效率和较小的排课冲突。
步骤s2包括:
s201,生成初始课表;
s202,对所述初始课表中的个体进行随机配对;
s203,对随机配对结果进行遗传杂交;
s204,对遗传杂交结果进行遗传突变,产生新课表;
s205,计算所述新课表中的新个体的适应度;
s206,判断所述新个体的适应度是否为当前最优,是,进入步骤s207;否,则进入步骤s208;
s207,所述新个体替换所述初始课表中的个体;
s208,判断所述新个体是否达到预设代数,是,进入步骤s209;否,则进入步骤s210;
s209,更新变异率和杂交率;
s210,判断所述新个体是否达到预设迭代值,是,结束;否,则返回步骤s202。
步骤s209包括:
当所述新个体的适应度为当前最优时,重置变异率和杂交率;
否,则:代数阈值=代数阈值*1.5;变异率=变异率+5%;杂交率不变。
步骤s3包括:
s301,根据所述排课序列,获取适应度达到预设阈值的排课子序列;
s302,依次对未排课课程进行排课安排,得到排课结果。
步骤s301包括:
s3011,选取所述排课序列中前i个课程,计算当前所述前i个课程的适应度;
s3012,判断所述适应度是否达到预设阈值,是,则进入步骤s3013;否,则结束;
s3013,判断第i个课程是否为最后一个课程,是,结束;否,则i=i+1,并返回s3011。
通过设置适应度的预设阈值,得到满足预设阈值要求的排课子序列,预设阈值可以程序控制,也可以根据需求自行设置,一些实施例中,预设阈值为1.0,即满足全部的约束条件,从而得到满足全部要求的排课子序列。
步骤s302包括:
s3021,提取未排课课程;
s3022,获取所述未排课课程的排课安排,判断当前的排课安排的适应度是否为历史最优,是,则当前排课安排为所述未排课课程的排课安排;否,则历史最优为所述未排课课程的排课安排;
s3023,重复s3021、s3022,得到全部未排课课程的排课安排;
s3024,输出排课结果。
未满足上述预设阈值条件的课程列入为未排课课程,依次对每个课程进行排课安排,选取适应度最佳的排课安排为当前课程的排课安排。
一些实施例中,采取随机获取的方式,对每个课程进行排课安排,并对每个排课安排的适应度进行对比。
一些实施例中,还可以通过设置随机获取的次数,来限制每个课程的排课安排次数,有效提高排课效率。