基于遗传算法的高校排课系统研究

基于遗传算法的高校排课系统研究

沈丽容  陈明磊

(南京林业大学信息学院计算机科学与工程系  南京 210037)

    摘  要   提出并实现了一种高校自动排课算法,利用遗传算法建立数据模型,定义一个包含教师编号、班级编号、课程编号、教室编号、上课时间段的染色体编码方案和适应度函数,通过初始化种群、选择、交叉、变异等过程不断进化,最后得到最优解。利用该算法对某高校的真实数据进行实验,结果显示无一例教室、教师、班级冲突,算法具有合理性和可行性。

    关键词  遗传算法; 排课问题; 适应度函数

1  前言

每个学期对本校教学任务进行合理安排是教务科的重要任务。其中排课是最为关键的环节。排课问题的本质是将课程、教师和学生在合适的时间段内分配到合适的教室中,涉及到的因素较多,是一个多目标的调度问题,在运筹学中被称为时间表问题(Timetable Problem,简称TTP)。目前由于学校扩招,学生和课程数量比以往大大增加,教室资源明显不足,在这种情况下排课人员很难在同时兼顾多重条件限制的情况下用人工方式排出令教师和学生都满意的课表。

排课问题很早以前就成为众多科研人员和软件公司的研究课题,但是真正投入使用的排课软件却很少。原因是多方面的,其中算法的选择是最关键的一个问题,S.Even等人在1975年的研究中证明了排课问题是一个NP-Complete问题,即若是用“穷举法”之外的算法找出最佳解是不可能的。然而由于穷举法成本太高,时间太长,根本无法在计算机上实现。因为假设一个星期有n个时段可排课,有m位教师需要参与排课,平均每位教师一个星期上k节课,在不考虑其他限制的情况下,能够推出的可能组合就有nm*k种,如此高的复杂度是目前计算机所无法承受的。因此众多研究者提出了多种其他排课算法,如模拟退火,列表寻优搜索,约束满意等[1]。其中,遗传算法(Genetic Algorithm, 简称GA)是很有效的求解最优解的算法。

遗传算法是一种通过模拟自然界生物进化过程求解极值的自适应人工智能技术,是由美国芝加哥大学Holland教授于1962年首先提出的。遗传算法借用了生物遗传学的观点,通过自然选择、遗传、变异等作用机制来提高各个个体的适应性,体现了自然界中“物竞天择、适者生存”的进化过程。遗传算法也因此吸引了一大批的研究者,并广泛应用于函数优化、组合优化、生产调度、机器学习、图像处理、模式识别等多个领域。

2  排课问题描述

在排课问题中,我们的主要任务是将班级、教室、课程、教师安排在一周内且不发生时间冲突[2]。据此,我们给出如下描述:

学校有R间教室,C个班,S门课程,T位教师,P个时间段。

●教室集合R(R1,R2,…Rn),每间教室分别可容纳(X1,X2…Xr)人;

● 班级集合C(C1,C2,…Cn),每个班级分别有(K1,K2,…Kc)人,其中有x个班级上合班课;

●课程集合S(S1,S2,…Sn),每门课对应Ci个班,1位教师,(1≤ Ci <Cn);

●教师集合T(T1,T2,…Tn),每位教师对应Sm门课,Cn个班,(1≤ Sm <Sn,1≤ Cn <Cn),在初始设置时设定教师的排课要求。

● 时间集合P(P1,P2,…,Pn),假设一周上五天课,每天分为五个教学单元,每个单元为2个课时,即上午2个,下午2个,晚上1个,则时间集合包含25个时间段。如11代表周一第一个教学单元,即周一1、2节,12代表周一第二个教学单元,即周一3、4节,以此类推,这些时间段构成一个时间集合P(11,12,13,….55)。

一张正确的课表应至少满足以下硬约束条件:[3]

⑴ 一个教师或者一个班级或者一个教室在同一时间段内只能安排一门课程;

⑵ 分配的教室可容纳人数应该大于学生数。

除了上述的硬性约束,还有些软约束,这些软约束有助于使得课表更加合理,更加人性化。这些软约束条件可能是[4]

⑴ 尽量在早上安排必修课,而下午安排选修课,晚上尽量不排课;

⑵ 尽可能满足个别教师的特殊上课时间要求;

⑶ 一门课尽量分散在一个星期中,即某天上完某一门课后,要隔一天以上再上这门课,以使教师有充足的时间备课和批改作业,而学生也有足够的时间复习消化;

(4)一个教师的课不能排满一整天;

(5)学生课表中的上课时间不能过分集中,应避免一天课程很满而另一天却一整天没课的情况。

这些软约束条件各院校有所不同,在我们的研究中,旨在我们定义的约束范围内给出一个遗传算法的解决方法,并对其进行优化操作。

3   遗传算法

遗传算法采用类似基因演化的循环过程,其演算过程如下:

1)随机产生一定数目的初始种群

2)对个体适应度进行评估,如果个体的适应度符合优化准则,则输出最佳个体及其代表的最优解,并结束计算,否则转向第3步。

3)依据适应度选择再生个体

4)按照一定的交叉概率和交叉方法生成新的个体

5)按照一定的变异概率和变异方法生成新的个体

6)由交叉和变异产生新一代的种群,然后返回第2步。如图1所示:

图1 遗传算法示意图

以下是遗传算法的伪代码。

BEGIN:

I = 0;

Initialize P(I);

Fitness P(I);

While(not Terminate-Condition)

{

I ++;

GA-Operation P(I);

Fitness P(I);

}

END.

4  设计

4.1  染色体编码

GA中首要考虑的是如何表现其问题,即如何对染色体编码,使之适用于GA操作。在经典的遗传算法中,常采用浮点数或二进制的编码方法,而研究中,每条染色体代表每位教师的课表,其结构表示如下:

教师ID 班级ID 课程ID 教室 上课时间安排

染色体在程序中可用十进制数编码,例如:某一教师编号为1247,要教授“数据库原理”这门课,“数据库原理”课程编号为8017,周学时为4,班级为01811、01812,随机产生上课时间,随机选择大于两班总人数的教室,则可生成染色体如:“124701811018128017024012241”其中02401,2241分别代表教室及上课时间星期二第二个教学单元(即上午3、4节)和星期四第一个教学单元(即上午1、2节)。

按如上编码,两条染色体对后9位作交叉操作,不会影响到每位教师所教授的课程,也不会造成教师课表内含其他教师的教授课程或每代演化后染色体结构不合理等问题。

每一条染色体表示一种可能的排课结果,至于排课结果的优劣,则由适应度函数评估染色体的适应值来决定。

适应度函数

遗传算法在进化中是以每个个体的适应度值为依据来选取下一代种群的。适应度函数设定的好坏直接影响到遗传算法的收敛速度和能否找到最优解。在本系统中,适应度函数的设计思想是对每条染色体中存在的冲突类型进行加权求和,其中权值Wi代表的是第i条规则的重要程度,若某条染色体违反了某条规则i,则将其值Pi置为1(若没有违反规则i,则Pi值为0),其受到的惩罚值为Wi*Pi,对染色体中存在的冲突进行加权求和并加上1后,再求其倒数,如以下公式所示。染色体适应度函数值越大,则表示其拥有较好的授课时段和教室,其在下一代的演化中的生存概率就较大。

4.2  遗传操作

(1)初始化[Initialize]

初始化的目的在于为后面的遗传操作提供初始种群。

在我们的算法中,由于每次对一位教师进行遗传操作,初始化时就需要考虑到教室及时间的设定,这其中包括教室可容人数的最优逼近(即避免一个30人的班级占用可容200人的教室这种情况),以及上课时间安排的合理性,这在排课问题描述中已有解释。

(2)选择[Select]

选择运算用于模拟生物界去劣存优的自然选择现象。它从旧种群中选择出适应度高的某种染色体,放入配对集合中,为染色体交叉和变异运算产生新种群做准备。适应度越高的染色体被选择的可能性越大,

选择操作的方法有许多,如轮盘赌选择法(roulette wheel selection),局部选择法(local selection),锦标赛选择法(tournament selection)等。

研究中,我们选用了局部选择法中的一种:截断选择法(truncation selection)。

在截断选择法中,染色体按适应度函数值由高到低排序,只有最优秀的个体才能被选作父个体。其中,用于决定染色体被选作父个体的百分比的参数称为截断阀值Trunc,其取值范围为50%~10%。在该阀值之外的个体不能产生子个体。算法中选择强度与截断阀值的关系如表1所示。

表1 选择强度与截断阀值的关系[5]

截断阀值 1%  10% 20% 40% 50% 80%
选择强度 2.66 1.76 1.2  0.97  0.8 0.34

其中选择强度是将正规高斯分布应用于选择方法,期望平均适应度。

选择强度表示为:

SelIntTrunc(Trunc) = 

式中fc为下列高斯分布的积分下限:

Trunc = 

(3)交叉[Crossover]

交叉是根据选择操作的结果,选取两条染色体作为父个体,再取一随机值(设为r)与系统预设的交叉率值(设为t)比较,若r<t则进行交换基因。

(4)变异[Mutate]

变异是随机改变染色体中任一授课时段,将时段随机抽取一点在设定范围内改变。变异运算模仿了生物在自然遗传环境中由于各种偶然因素引起的基因突变,通过变异,染色体适应度有可能加强也有可能降低,但它确保了种群中遗传基因类型的多样性,使搜索能在尽可能大的空间中进行,获得最优解的可能性大大加强。

变异操作与交叉操作类似,即定义一个变异概率pm,在变异时先产生一个随机数r,当r<pm时,执行变异操作,否则不执行。

例如:有一染色体编码为:“0872’01211’1005’04201’ 2122”,它表示星期二的第一、二教学单元节有编号为“1005”的课程,经变异,该染色体变成:“0872’01211’1005’04201’ 2152”,染色体的适应度大大提高。

5  冲突问题解决

排课问题是一个NP-Complete问题,无论采用哪种方法都无法避免各种冲突问题的出现,同一位教师在同一时段内排了两门课是冲突问题中最明显的一个。为了避免这种冲突产生,在本系统开发中引进了一个冲突检测函数fConflict(),当排完一位教师的所有课程之后,系统就会用该函数对此教师课程安排的冲突情况进行检测并作修正。

6  结果评估

本系统用Visual C++ 6.0软件实现上述遗传排课算法,并对某高校的真实数据作了测试。该校2002—2003学年上学期共有686个排课单元,上课教师356名,共有160间教室,412个行政班。图2显示了一代染色体在演化过程中最高适应值和平均适应值的变化情况,其中染色体为30条,交叉率为0.8,变异率为0.02,演化的代数为1000代。

图2算例最高适应值-平均适应值曲线

由适应值曲线图可以看出,该算法具有较好的收敛性,也说明了本文中提到的染色体编码方案和适应度函数能够较好地反映排课要求,染色体经过世代进化后可以得到令人满意的最优解。图3是利用遗传算法排出的01811,01812两个班级某个学期的课表,从课表中可以看出该课表不存在教师、教室、班级冲突,同一门课程两次上课时间间隔都达到一天以上,并且没有课程被安排在晚上,因此不管是硬约束条件还是软约束条件都得到较好的满足。

7  结论

本文论述了利用遗传算法求解高校课表的安排问题,实验证明文中提出的染色体编码方案和适应度函数是可行的,适应度函数值能够随着进化代数的增加而呈不断上升趋势,实验结果令人满意。在染色体编码方案方面,今后还准备考虑更复杂的课程安排要求。

图3  基于遗传算法的排课结果示例

参考文献

[1]业宁,梁作鹏,董逸生. 一种基于遗传算法的TTP问题求解算法. 东南大学学报(自然科学版).2003(1):41-44

[2]唐 勇,唐雪飞,王 玲.基于遗传算法的排课系统. 计算机应用.2002(1):93-94,97

[3]H.L.Fang,”Genetic Algorithms in Timetabling and Scheduling”,Ph.D. Thesis,Department of Artificial Intelligence, University of Edinburgh, UK,1994.

[4] E.K. Burke, D.G. Elliman, R.F. Weare, "A Genetic Algorithm Based University Timetabling System", East-West Conference on Computer Technologies in Education, Crimea, Ukraine, 1994, pp. 35-40.

[5] 王小平,曹立明.遗传算法——理论、应用与软件实现.西安:西安交通大学出版社,2002:31-33

收稿日期:8月21日    修改日期:8月29日

基金项目:江苏省自然科学基金项目(BK2005134);校引进(留学)人才基金(G2002-28);校十五人才基金(PG200518)

作者简介:沈丽容(1974-),女,博士,讲师,主要从事人工智能和数据库方面的研究

文章转载自:http://www.ahcit.com/lanmuyd.asp?id=2069

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1448122

时间: 2024-10-12 17:40:21

基于遗传算法的高校排课系统研究的相关文章

通用高校排课算法研究----3.基于时间片优先级排课算法

通用高校排课算法研究----3.基于时间片优先级排课算法 3   基于时间片优先级排课算法描述与分析 排课问题实质上是时间.教师.班级.教室.课程这五维关系的冲突问题,要合理的解决这个问题首先要了解排课中的一些基本原则以及排课的一些基本要求. 3.1排课中的基本原则 在课程的编排中应遵循一定的规则, 只有按照基本规则来进行课程的编排才能够减少冲突的发生, 这些基本规则主要有以下几条: 1) 同一班级的学生在同一时间(某些特定的选修课时间除外) 不能安排两门课程 2) 同一教师在同一时间不能安排两

通用高校排课算法研究----前言

1   绪 论 1.1课题背景与研究意义 1.2课题的应用领域 1.3 课题的现状 1.4解决NP问题的几种算法及其比较 2   目前流行的几种排课算法的介绍 2.1. 自动排课算法 2.2 基于优先级的排课算法 3   基于时间片优先级排课算法描述与分析 3.1排课中的基本原则 3.2排课的基本要求 3.3基于时间片优先级排课算法描述 3.4算法分析 参 考 资 料 1   绪 论 1课题背景与研究意义 排课问题早在70年代就证明是一个NP完全问题,即算法的计算时间是呈指数增长的,这一论断确立

目前流行的几种排课算法的介绍

通用高校排课算法研究----2 .目前流行的几种排课算法的介绍 2   目前流行的几种排课算法的介绍 2.1. 自动排课算法 1 .问题的描述 我们讨论的自动排课问题的简化描述如下: 设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一- 星期五;每个教学日最多安排4次课程教学,即1 - 2 节.3 - 4 节.5 - 6 节和7 - 8 节(以下分别称第1

眼下流行的几种排课算法的介绍

通用高校排课算法研究----2 .眼下流行的几种排课算法的介绍 2眼下流行的几种排课算法的介绍 2.1. 自己主动排课算法 1 .问题的描写叙述 我们讨论的自己主动排课问题的简化描写叙述例如以下: 设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一- 星期五;每一个教学日最多安排4 次课程教学,即1 - 2 节.3 - 4 节.5 - 6 节和7 - 8

JSP基于WEB的网上选排课系统,源码下载

大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON.PHP.C#.安卓等多项技术. 今天将为大家分析一个网上选排课系统(高校排课系统要求十分严格的可靠性和合理性.课表安排是保证高校顺利进行教学活动,按要求培 养合格人才的重要保证.课程表是一个院校日常教学工作的“指挥表”,是具体实施教学计划的重要组成部分,是教学管理的关键环节.如何科学合理地编排课程表 是每个学校教学管理的一项重要工作.因而开发一套符合实际需求的高校排课系统是非常必要的.),

基于UML的高校教务管理系统的设计与实现

一.基本信息 标题:基于UML的高校教务管理系统的设计与实现 时间:2018 出版源:南昌航空大学 领域分类:教育信息化:教务管理系统:UML:SSH:Oracle 二.研究背景 问题定义:高校教务管理系统的设计与实现 难点:想出新的数据录入方式,采用面向对象的分析方法和设计思路来逐步实现一个较为完善的高校教务管理系统 相关工作:了解并掌握相关技术,进行系统分析.设计,实现系统,测试系统可行性. 三.创新方法 1.多种技术构成的体系结构.平台.开发框架.交互技术的综合的系统 四.实验 实验1:相

基于SSH的高校网上选课系统的质量属性的实现

我对于基于SSH的高校网上选课系统的质量属性的实现是从可用性.性能.安全性.可维护性.易用性五个方面进行的实现. 可用性方面: 实现方式:(1)当系统试图超出限制范围来进行课程查询或选课时必须进行错误检测并且抛出异常,中止进一步的错误操作,所采用的战术为错误(异常)检测, 此异常属于Action层,只捕获自定义应用异常,其他异常上抛.Struts2提供了异常拦截器,拦截器会将定义的异常捕获,记录日志,然后根据配置的异常的类型顺序跳转到相应的页面.(2)遵从J2EE的系统提供了可以使用的事务服务,

关于排课系统的要求和思路

排课系统主要功能 1.可任意设定为每周安排1-7天,每天分上午.下午和晚上各0-5节,每节1-3小节[比如高校中专大都两小节连上],可以单独安排早晚自修,也可以单独安排周末补课: 2.自动处理一个老师上数门.数个班级课程之间的冲突,并可任意选择数门课程的进度保持一致[上完一个班的某门课,下节课到另一班再上同一门课]:同一教研组的老师在某些课时[比如上午最后一节]的教学任务可平均安排: 3.课程的上下午课时可指定也可自动分配,每门课可安排任意次连课: 4.自动安排高校和部分中学里的合班课[即一个或

《团队-排课系统-设计文档》

二零一七年九月二十一日十点一刻少一分钟 整体需求: 旨在帮助学校负责排课的教师编写一个方便排课教师教师进行排课的软件. 软件需求背景: 关于排课难的问题不仅仅是我们我们学校存在这样的问题,各个高校都有类似的难题.因为对于给各位教师排课,不仅仅要考虑到同一名老师的课程不能冲突,还需要兼具的考虑到老师们希望上课的时间,以及结合我们学校的实际情况,对于格微的教师需要优先排课(因为他们在公司还有工作),以及需要为体育老师优先排课(体育课班级学生最多)等等这些问题.对于课程方面还存在同一名教师的同一门课程