高校自动排课算法 算法设计.doc_第1页
高校自动排课算法 算法设计.doc_第2页
高校自动排课算法 算法设计.doc_第3页
高校自动排课算法 算法设计.doc_第4页
高校自动排课算法 算法设计.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机算法分析与设计算法分析与设计论文高校自动排课算法姓 名:朱小波班 级:09医软一班学 号:09713054高校自动排课算法朱小波,09713054(安徽中医学院 医药软件开发专业,安徽 合肥 230031)摘 要: 提出并实现了一种高校自动排课算法,利用遗传算法建立数据模型,定义一个包含教师编号、班级编号、课程编号、教室编号、上课时间段的染色体编码方案和适应度函数,通过初始化种群、选择、交叉、变异等过程不断进化,最后得到最优解。利用该算法对某高校的真实数据进行实验,结果显示无一例教室、教师、班级冲突,算法具有合理性和可行性。 关键词 遗传算法; 排课问题; 适应度函数University automatic arrangement algorithm ZHU Xiao-bo, 09713054(anhui institute of traditional Chinese medicine and medical software development professional hefei, anhui 230031)Abstract:Put forward and realized a college automatic arrangement algorithm, setting up a data model by using the genetic algorithm, define a include teacher Numbers, class Numbers, course Numbers, classroom Numbers, the chromosomes of the class time coding scheme and fitness function, through the initial population, selection, crossover and mutation process continuously evolved, finally get the optimal solution. By using the approach of a university in the real data of experiment, the results showed that no case was the classroom, teachers, and class conflicts, and the algorithm has rationality and feasibility. Key words :Genetic algorithm; Curriculum arrangement problems; Fitness function作者简介:朱小波,09713054, 09医软一班0引言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,X2Xr)人; 班级集合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.80.34其中选择强度是将正规高斯分布应用于选择方法,期望平均适应度。选择强度表示为:式中fc为下列高斯分布的积分下限: (3)交叉Crossover 交叉是根据选择操作的结果,选取两条染色体作为父个体,再取一随机值(设为r)与系统预设的交叉率值(设为t)比较,若rt则进行交换基因。 (4)变异Mutate 变异是随机改变染色体中任一授课时段,将时段随机抽取一点在设定范围内改变。变异运算模仿了生物在自然遗传环境中由于各种偶然因素引起的基因突变,通过变异,染色体适应度有可能加强也有可能降低,但它确保了种群中遗传基因类型的多样性,使搜索能在尽可能大的空间中进行,获得最优解的可能性大大加强。 变异操作与交叉操作类似,即定义一个变异概率pm,在变异时先产生一个随机数r,当rpm时,执行变异操作,否则不执行。 例如:有一染色体编码为:“087201211100504201 2122”,它表示星期二的第一、二教学单元节有编号为“1005”的课程,经变异,该染色体变成:“087201211100504201 2152”,染色体的适应度大大提高。5 冲突问题解决排课问题是一个NP-Complete问题,无论采用哪种方法都无法避免各种冲突问题的出现,同一位教师在同一时段内排了两门课是冲突问题中最明显的一个。为了避免这种冲突产生,在本系统开发中引进了一个冲突检测函数fConflict(),当排完一位教师的所有课程之后,系统就会用该函数对此教师课程安排的冲突情况进行检测并作修正。6 结果评估本系统用Visual C+ 6.0软件实现上述遗传排课算法,并对某高校的真实数据作了测试。该校20022003学年上学期共有686个排课单元,上课教师356名,共有160间教室,412个行政班。图2显示了一代染色体在演化过程中最高适应值和平均适应值的变化情况,其中染色体为30条,交叉率为0.8,变异率为0.02,演化的代数为1000代。该算法具有较好的收敛性,也说明了本文中提到的染色体编码方案和适应度函数能够较好地反映排课要求,染色体经过世代进化后可以得到令人满意的最优解。图3是利用遗传算法排出的01811,01812两个班级某个学期的课表,从课表中可以看出该课表不存在教师、教室、班级冲突,同一门课程两次上课时间间隔都达到一天以上,并且没有课程被安排在晚上,因此不管是硬约束条件还是软约束条件都得到较好的满足。7 结论 本文论述了利用遗传算法求解高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论