《网络工程毕业设计(论文)基于遗传算法的高校排课系统设计实现.doc》由会员分享,可在线阅读,更多相关《网络工程毕业设计(论文)基于遗传算法的高校排课系统设计实现.doc(44页珍藏版)》请在三一办公上搜索。
1、本科毕业论文(设计)题 目 基于遗传算法的高校排课系统学 院 计算机与信息科学学院、软件学院 专 业 网络工程 年 级 200X 级 学 号 姓 名 指 导 老 师 成 绩 200X 年 4 月 30 日 1.引言12.问题分析12.1业务需求分析12.2 数据需求分析22.2.1时间问题32.2.2 教师和课程问题42.2.3教室的问题42.3功能需求分析42.3.1院管理模块52.3.2校管理模块52.3.3自动排课模块52.4排课过程的约束条件63.数据模型73.1 问题陈述73.2 数据流程图84.问题解决104.1 数据库设计104.1.1 概念模型设计104.1.2 逻辑模型设计1
2、24.1.3 数据库的物理设计164.2自动排课系统的设计164.2.1遗传算法的思想164.2.2构建基因编码和染色体174.2.3 初始化种群204.2.4 冲突检测及排除214.2.5 构造适应度函数224.2.6遗传算子244.2.7设置控制参数264.3教室位置填充设计274.4功能模块的设计284.4.1 登录模块284.4.2主界面模块294.4.3学院管理模块304.4.4校管理模块304.4.5查询模块314.4.6 排课模块315.系统运行结果及分析315.1结果315.2分析326.总结及后续工作35参考文献:35基于遗传算法的高校排课系统XXXXXX大学计算机信息与科学
3、学院,重庆 400715摘要:排课问题是当今各大高校在教学资源管理、最优化配置上面临的主要问题之一。本文将遗传算法应用于排课问题的求解中,采用基于轮盘赌算法的选择操作方法和优化的个体适应度计算方法,满足了排课过程中多部分软硬约束条件,实现了各种类型课程的排课。针对之前研究者未解决的运行时间太长问题,本文提出了一套基于二维编码的改进的编码方法和教室位置填充方法,精简了染色体信息量而大大缩短了系统的运行时间。此外,在系统设计中,运用了基于容器的容器编程技术,实现了不定数据量的便捷处理。关键词:遗传算法;排课;教室安排;University Timetabling System based on g
4、enetic algorithm Zhang XiaodongThe college of Computer Information and Science ,Southwest University, Chongqing 400715, ChinaAbstract:Timetabling problem is one of the major problem,which todays universities face in teaching resource management and the optimized configuration.This article,where gene
5、tic algo-rithm will was applied to solve problems,uses the course choice operation method based on rou-lette algorithm and the optimization calculation method of individual fitness, satisfying most ofthe soft and hard constraint conditions int the timetabling process and achieving the timetablation
6、of various types of courses. According to the problem that running time is too long,which the res-earchers didnt resolved well before,this paper puts forward a improved method based on two-dimensional coding and the classroom filled method, simplifying the chromosome informationand greatly shortenin
7、g the syetem operation time. In addition, in the system design, we use the programming method of container based on container , realizing the convenient and fast processing of uncertain quantity data. Key word: Genetic Algorithm; Timetabling; Classroom Arrangement;1.引言随着高校招生逐年扩张,大学课程向着广度和深度发展,高校的教师、
8、教室等一些资源越发显得紧张,不管是在时间还是效率方面,用人工排课已不能够解决现有的问题。排课是高校日常教学工作和其他活动的基础,是教师和学生正常科学工作学习的依据。所以计算法自动排课已成为一个重要的研究课题1。国内学者在自动排课系统方面曾做过一些研究,如用到到退火算法、回溯算法、遗传算法,但运行结果尚有待改进的地方,排课效果不尽人意5。我们认为,问题不尽在数学建模上,还与问题的处理方式有关。将遗传算法应用于排课问题中,首先,初始化课表种群,其次,检测初试种群中的冲突,然后,对种群做选择,杂交,突变操作,一直迭代到具体指定的代数,最后就会得到较优解。文1中提到编码时染色体上基因片存储信息大小为1
9、1字节,而本文的编码方式一个基因片只用了6字节,轻装运行,经试验得出,速度更快。还有,文1介绍把教室与时间等信息共同处理的思路,这可能会产生空间上的冲突,而本文提出将教室分离出以单独处理,就完全解决了空间上的冲突问题。本文根据高校开课的具体情况,采用优化的编码方案,满足排课过程中的一些硬性和软性约束因素,利用遗传算法对课表进行了优化,从而得到了最终的无冲突、更人性的排课方案。2.问题分析2.1业务需求分析排课工作是一项十分繁重而复杂的工作,就以一般高校而言,它涉及到几千多门课程进行合理的组织安排,而所使用的教室资源却在学生规模每年都在增加的趋势下越发显得紧张了。排课的整个过程中充满了矛盾运动,
10、其中包括上课班级、所开课程、任课教师、上课时间、上课地点这5个方面在排列组合中发生的冲突和矛盾现象。课程门类多、班级多、教师少、教室少、教师连续上课的要求、班级连续上课的时间合理安排是排课时发生冲突和矛盾的主要因素,而班级多、教室少则是矛盾的重要方面。课程表则是解决这些矛盾的舞台,是提高教学管理水平、组织师生进行有序教学的规范之一,对有效地提高教育教学质量有重要作用。如果课程表编排得不合理、不科学,将影响课堂教学的效率和教学的整体效果。要想编排好学校的课程表,需要综合考虑学校的教师、教室、学生、班级、时间等多方面因素,反复调整,避免冲突。分析一般高校的排课流程,其过程将如下,下面将排课整个流程
11、作个介绍:(1)各学院从教学计划中导入开课任务书,让各学院安排好教师及教师的各种相关要求,比如班级、教室类型、时间类型等。同时做好教学楼、教室和时间基础数据的输入(已存在数据库中)。这一时间段主要做好班级、课程、教师的协调。(2)把各个学院开课任务书集合为学校开课任务书,同时规划好学院上课所在的教学楼形成位置表,以减少学生的跑动范围。(3)系统会根据校开课任务书自动排课。这一过程主要完成班级、课程、教师及上课时间的安排。(4)把上一步排出的结果与位置表结合,就完成了课表的安排,中间整个过程都要解决冲突问题。(5)课表确定后,进行课表的查询。图2-1排课流程图Chart 2-1 timetabl
12、ing flow chart2.2 数据需求分析排课涉及的相关数据主要包括:时间、班级、课程、教室(空间)、教师等5个要素。开始算法设计的基础是对这些数据之间的问题的透彻分析和适当的处理。2.2.1时间问题在本文中考虑的是周课表,通过对全国部分高校做的调查,综合分析了其中大部分高校的教学特点,我们在此做出了一个较大众化的且较合理的时间划分模式。设定周一至周五,共五天上课,一天有十节课,上课方式都为一大节包括2个相邻的小节,不能在上、下午之间跨时段。把每天用于上课的时间划分为5个时间片,根据学院开课的实际情况,一般每学时是45分钟,为1小节课,每2小节课合为一大节课,故把每2小节课时间定为一个时
13、间片,一天划分为5个时间片: (1)上午1, 2节课8:10-9:50; (2)上午3, 4节课10:10-11:50; (3)下午5, 6节课2: 30-4:10; (4)下午7, 8节课4:20-5:50; (5)晚上9, 10节课7:30-9:10; 这样,每周5天涉及25个时间片。用Tl, T2,.,T25表示,其中TI, T2, T3, T4, T5为星期一的5个时间片,依次类推。则排课问题类似于填充55的周时间片安排表。 表2-1周时间片分布表Table2-1 the management table of the week time slip 周一周二周三周四周五T1T6T11T
14、16T21T2T7T12T17T22T3T8T13T18T23T4T9T14T19T24T5T10T15T20T25根据时间片编号,可进一步转化为125的表格。全校有N个教学班级,则周课表为:以25个时间片为列,形成一维的时间序列,每个班级为行组成的一个二维数据表。我们在此系统的排课都是按一个大节开设的,符合按25个时间片划分的设计,但确有少量的课程的周学时数为单数,如“3学时”或“5学时”,在此仍按“4学时”或“6学时”进行编排,虽然这会浪费一小节课程。2.2.2 教师和课程问题每个课程都有自己的编号、名称以及开课学院。每个课程都要有授课教师。每门课程都有指定的教室类型。如普通教室、语音室、
15、操场、实验室或机房等等。每门课程都有授课计划,包括起始周和截止周以及周学时安排。在处理课程与教师时要注意以下几个问题:(1)“授一班多门课”问题:同一教师可以只上一门课,也可上多门课,如果同一教师在同一个班级教授多门课程,那么把课程和教师作同一变量考虑就会引起课程的混乱,此问题须分情况解决,我们将在系统设计中,学院安排开课任务时解决此问题。 (2)“一师多班”冲突问题:一位教师可能只给一个班讲课,也可能同时给多个班级讲课,也就是说同一教师可以在多个班出现,这样可能会出现同一时间,同一教师在多个班级上课的冲突,在编排课程表时此类冲突必须解决。(3)“多学时”问题:对于有些课程既可能只上一次,既2
16、学时课程,而有些课程可能上多次,如4学时、6学时等,多学时的课程如何处理也是在编排课程表时必须解决的问题。(4)“固定课”问题:有的教师因为某些原因需要安排特定的教学时一段,如教室受到其他课程的影响,或者某学院部门领导,因工作性质关系,须指定安排上课时间为“星期五的第5、6节”,这样的要求在编排课程表时必须满足,即“固定时段”问题。(5)“特殊课”问题:像体育课,要跟硬件设施有关,故要妥善处理。2.2.3教室的问题如今的大学都有很多的教学楼,校园面积也很大,宿舍与教学楼,教学楼与教学楼之间的距离可能会比较大,如果安排不佳的话,会导致学生上课时要跑动很远距离,浪费不必要的时间。本文在地理位置上是
17、学校统一规划,进而综合解决位置问题,学校要规划好各个学院的学生在哪些教学楼里就近上课,而这样做的目的就是为了减少学生和教师的走动范围。至于如何去确定一个教室,例如5-0122,就表示5教学楼,1楼22号教室。每个教室在同一时间内只能接纳一门课程的授课,并且教室容量应该大于等于上课的人数。当上课的人数远远小于教室容量时,这种情况也往往不合适的。2.3功能需求分析根据业务分析和数据分析,可得出排课系统主要完成以下几个功能:2.3.1院管理模块这一模块首先是每个学院从教学计划中安排自己学院的开课任务书,具体就是对本学院课程和教师的安排。这一模块由学院排课工作人员来设置,如设置学年学期就是设置即将排课
18、的学年学期,合并本学院的两个班级组成一个新班一块上一门公共课,设置一门课程则为上课周数、每周上课节次、有哪位老师讲授等等信息; 这个模块很好的解决了每个学院不同的特殊情况,以教师为重点,学院可以随意调整。另一个功能,学院在这块可以查询本学院的课表,还有学院内班级的课表。还有对已排好的课程做一些调整操作。2.3.2校管理模块这一模块则主要是由教务处管理人员来操作。因为把每个学院的开课任务书聚合成校开课任务书,然后学院在规划每个学院在哪个教学楼上课,以合理的安排地理上问题,形成一个学院上课地理位置表。2.3.3自动排课模块 这一模块主要完成课程上课时间、上课地点的安排。它的实现运用了遗传算法中的选
19、择、交叉、变异等操作,对算法得出的结果中最好的一个个体保留,就是要求的结果,虽然不是最完美符合的,但是它的适应度值已经完全可以符合学校教学所要求的了。然后,对这个(班级,教师,课程,时间)记录做变换,让位置表去填充它,当然是按条件填充,就可以完成整个排课的大部分工作了,从而得到课表。此图描述了功能模块图,如图2-2示: 图2-2 功能模块图Chart 2-2 the function model chart 2.4排课过程的约束条件 排课是将教师与学生在时间和空间上根据不同的约束条件进行排列组合,在此同时也要安排课程,以使教学正常进行。在本文约束条件主要为避免冲突,所谓冲突,它所包含的内容很广
20、泛,几乎发生在所有两个或多个排课涉及因素之间。避免冲突也是排课问题中要解决的核心问题。只有在满足全部约束条件和避免所有冲突的基础上,才能保证整个教学计划合理正常进行。而对教师、教室、学生及时间等几部分资源进行最优化组合配置,才能保证充分发挥各资源的优势和提高教学质量。在本文中,我们把排课过程中的约束条件分为三类:基本硬约束、硬约束和软约束。其中基本硬约束是指教师、学生和教室在时空概念上发生了不可能发生的事情,既是时间,空间,人之间的矛盾,它是排课过程中最基本的约束条件,也是众多排课模型中都要涉及的约束条件;硬约束是根据学校的实际情况,排课时必须遵循的原则,否则将会导致排课结果无意义,所以要因地
21、制宜;软约束是指排课过程中满足更佳但不满足又无妨的约束条件,这些条件的目的就是使课表更加人性化,每个排课都是要突出解决软约束这个问题的,违背这些约束就与实际情况相悖。所以,可知在三类约束条件之中,前两者是衡量排课方案是否切实可行的基本标准,软约束是衡量排课方案是否人性化的标准,通常判别一个排课方案的优劣标准有多个。可以把排课过程常见的约束条件分类罗列如下表2-2所示,这些约束条件也比较符合排课过程的实际情况。表2-2 约束表Table 2-2 constraint table基本硬约束B1同一时间,同一班级不能上两门不同的课程B2同一时间,同一个教师不能上两门不同的课程B3同一个时间,同一个教
22、室不能上两门不同的课程硬约束H1课程的学时在每周要均匀化H2满足每门课的特定教学资源H3教室足够大,能够容纳学生H4某些课程要特定安排,如某些教师的课程要固定H5教师学生上课不能用于在路途上的奔波H6体育课尽量安排在下午软约束S1课程的分布要做到离散化S2一周有些时段处于最佳利于学习时间S3尽量不让老师连着上课S4班级相邻上课地点尽量近些3. 数据模型3.1 问题陈述设课程集合:L=l1,l2,. lA;班级集合:C = c1,c2,., cB;教室集合:R = r1,r2,., rQ;教师集合:S=s1,s2,., sK;时间集合:T=t1,t2,.tD2、4。首先初始化种群,即编码,编码时
23、形成班级集合、课程集合与教师集合形成课程教师对L_S=(c1,l1,s2),(c2,l3,s8).(cB,la,sK),然后再在时间集合上排序形成时间上无冲突的一个班级-课程-时间-教师对集合A=(cb,lr,ti,sp),.,(cB,lR,tI,sK)。最后,根据限制条件,把班级-课程-时间-教师对关联到教室集合。最后形成完整的课表TB=(cb,lr,ti,sp,rj),.(cB,lR,tI,sK,rJ),同时也解决了空间上的冲突。3.2 数据流程图系统的数据流程图如图3-1,3-2,3-3,3-4所示:图3-1 排课系统数据流图第1层Chart 3-1 the first layer of
24、 timetabling system data flow chart 如图3-2所示,用户在登录系统时,根据自己的用户名和密码,去登录系统。数据库中记录每一个登录者的信息,并会及时反馈。图3-2 排课系统数据流第2层Chart 3-2 the second layer of timetabling system data flow chart 根据登录者不同的身份,进入不同的功能模块,分别进行不同的操作,学院身份进入图3-3的学院管理模块,落实学院开课任务书,教务处身份进入图1-5的校管理模块,汇聚校开课任务书,并且进行排课。图3-3 排课系统数据流图第3层Chart 3-3 the thi
25、rd layer of timetabling system data flow chart 正如数据流图的第二层所示,数据分流后,在此模块,学院会根据自己学院的特殊情况完成学院的开课任务书,所谓开课任务书,既是课程、班级和老师的组合,还没有结合时间和地点此二维因素,仅仅表达此班上哪位老师讲授的哪门课程的问题。图3-4 排课系统数据流图第3层Chart 3-4 the third layer of timetabling system data flow chart 在此层中,所谓的开课任务书的聚合,并不是人工操作的,而是所有学院处理好院开课任务书后,反馈到数据库后,即会完成校开课任务书的聚合
26、。完成教室位置规划需要考虑整个学校教学楼的情况,所以必须在校模块中实现。4.问题解决4.1 数据库设计数据库设计是建立系统数据库及其应用系统的重要环节,系统的各个部分能否紧密地结合在一起以及如何结合,关键在数据库,只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的排课系统。本文的数据库设计及其实现如下:4.1.1 概念模型设计因为概念结构是面向现实世界的,用户容易理解,能够参加设计讨论,提出意见,在将分析结果抽象为逻辑数据库时可以降低设计的难度。这会将数据库的概念结构转换为逻辑结构方法简单,易于实现。对于排课问题要进行的分析主要有:教学计划、各学院教学任务、教室基础数据、时间
27、模式、开课任务、及各种课表等数据。这些关系用E-R图表示如图4-1,4-2,4-3:图4-1 院管理E-R图Chart 4-1 the E-R chart of college management图4-2 校管理E-R图Chart 4-2 the E-R chart of school management图4-3 总E-R图Chart 4-3 the overall E-R chart4.1.2 逻辑模型设计在逻辑模型设计中,并不是划分数据的粒度越小越精确就会越好,而是要符合设计现状要求和系统实现便捷,也就是说,范式越高也不一定越好。具体来说创建了以下各表:表 4-1 用户表:UserTa
28、ble 4-1 user table:User编号数据项数据项别名数据类型数据项含义1用户名username Char(12)唯一2密码passwdChar(20)3学院academyChar(20)学院名,如果空的话就是代表教务处表4-2 教学计划表:TeachPlanTable 4-2 teaching plan table:TeachPlan编号数据项数据项别名数据类型数据项含义1班级classChar(15)主属性2班级编号CnoChar(10)主属性3课程courseChar(15)4课程编号courseNoSmallint(2)主属性5学院academyChar(15)6人数Pno
29、int7课程属性courseAtrrChar(15)8周节数pitchNumSmallint(2)9周数weekSumSmallint(2)10开课学期semesterChar(15)表4-3 教室表:ClassroomTable 4-3 classroom table:Classroom编号数据项数据项别名数据类型数据项含义1教学楼TbuildingChar(10)主属性2门号houseNoChar(10)主属性3容纳人数containSumint4教室属性houseAtrrChar(10)表4-4语音课体育课上机课位置表:Y_T_STable 4-4 the place table:Y_T
30、_S编号数据项数据项别名数据类型数据项含义1类别categoryChar(1)区别三类教室2教室名roomnameChar(15)3教室编号roomIDsmallint4班级classChar(15)加上班级就可以确定班级上课的位置范围5学院academyChar(15)表 4-5 理论课教室表:LLKAddressTable 4-5 the classroom table of theory course:LLKAddress编号数据项数据项别名数据类型数据项含义1学院AcademyChar(20)2班级classChar(15)3教学楼TbuildingChar(10)表4-6 学院表:A
31、cademyTable 4-6 academy table:Academy编号数据项数据项别名数据类型数据项含义1学院academyChar(20)2学院编号academyIDChar(10)主键表4-7 专业实验课位置表:ZYSYRoomTable 4-7 the lab classroom place:ZYSYRoom编号数据项数据项别名数据类型数据项含义1学院academyChar(20)2教室名roomnameChar(15)3教室编号roomIDsmallint4班级classChar(15)5容纳人数containSumsmallint表4-8 位置表:AddressTable 4
32、-8 place table:Address编号数据项数据项别名数据类型数据项含义1学院academyChar(15)唯一2教学楼TbuidingChar(10)3班级ClassChar(15)表4-9 教师_课程表T_CTable 4-7 teacher and course table编号数据项数据项别名数据类型数据项含义1教师名Tnamechar(10)2教师编号TnoSmallint主属性3课程courseChar(15)4课程编号courseNoSmallint主属性表4-10 教师表:TeacherTable 4-10 teacher table:Teacher编号数据项数据项别名
33、数据类型数据项含义1教师名Tnamechar(10)2教师编号TnoSmallint唯一3学院academychar(15)4年龄TageSmallint正整数5职称Titlechar(10)表 4-11开课任务表:ClassTaskTable 4-11 the plan table:ClassTask编号数据项数据项别名数据类型数据项含义1开课学期semesterChar(15)主属性2学院academyChar(15)3班级classChar(15)主属性4教师名Tnamechar(10)5教师编号TnoSmallint主属性6课程编号courseNoSmallint7人数Pnosmall
34、int8课程coursesmallint9课程属性courseAtrrchar(15)10周数weekSumSmallint11上课次数timesSmallint12是否固定IsSettledChar(1)为0则不固定13固定时间位置TimePitchsmallint表4-12 课表:CourseTableTable 4-11 course table:CourseTable编号数据项数据项别名数据类型数据项含义1开课学期semesterChar(15)主属性2学院academyChar(15)3班级classChar(15)主属性4教师名Tnamechar(10)5教师编号TnoSmalli
35、nt(2)主属性6课程courseChar(15)7地点addressChar(20)主属性8周数weekSumSmallint(2)9时间timeChar(15)主属性4.1.3 数据库的物理设计数据库的物理设计这一环节也是很重要的,它要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。消除冗余数据虽然能提高空间的利用率,但同时也会提高检索的代价,因此,这三方面必须权衡,选择一个折中方案。4.2自动排课系统的设计4.2.1遗传算法的思想在本课题中,遗传算法解决的问题只是求出班级+课程+教师+时间的记录集,得到比较优的一个解,然后再去按条件用教室去填充这个记录集,就形成了可行可用的课表。
36、这块的设计在整个系统是最重要的,效率的高低,课表的优劣都由本模块确定。整个系统的流程分为以下几个主要的过程:(1)初始种群的产生:首先基因的编码,根据制定的编码方案,对每条染色体进行初始化,其次一条条染色体组成一个个体,既是形成一个二维表(可称为课表,但是适应度值不高)。(1)冲突检测和消除:初始化种群后,先对其进行各类冲突的检测,如存在冲突则消除它,而且在每次产生下一代后都要进行冲突检测。(2)计算出每个个体的适应度函数值,以进行优胜劣汰。(3)遗传操作:包括选择算子、交叉算子和变异算子,产生子代,逐渐优化。(4)迭代第四步,直到进化停止,就是generation=终止代数N。(5)班级+课
37、程+教师+时间的记录集的产生。图4-4 遗传算法流程图Chart 4-4 genetic algorithm flow chart4.2.2构建基因编码和染色体实施遗传算法的第1步,就是把与求解目标相关的实际参数进行基因编码,这是算法的关键与难点。(1) 混合式编码构造合适的基因结构是遗传算法能否顺利实现的关键,设定混合式的教师编码作为本系统遗传算法的“基因”。二进制基因构成规则为:是否固定*教师编号号*课程编号*课程性质分别对应的宽为1+15+16+16共6B。下面我们给了很清晰的解释:图4-5 编码结构图Chart 4-5 coding structure chart下面我们对每个字段给予
38、解释:a.是否固定有些教师的课程是固定在某个时间段的,所以在排课过程中,判断第一位就可以得知可否移动此基因片。这也反应了排课要人性化,毕竟有些教师有特殊的要求,例如,年龄、事物等等。b.教师编号我们给了15bit去表示教师,15bit能表示215个数,足矣满足任何一所高校的教师编号,所以,在数据库里,教师表里教师编号的数据项要为短整型。c.课程编号唯一确定一门课程,216个数,也足以表示一个学校的课程。d.课程性质 为了解决“特定资源”冲突问题,可在教师编码中加上2B表示该教师所教授的课程的性质。每一门课程都有其各自不同的特点,比如上机课需要在机房上课,英语口语需要在语音室上课,体育课需要在操
39、场上课,为此我们规定:把16bits分开,前后8bits各有不同的意思;图4-6 比特信息图Chart 4-6 bit information chart在此我们把课程分为专业必修课,专选科,公共课,上机实验课,专业实验课,体育课,英语语音课,前三个属于理论课,不在此分配教室。区分:计算机专业的实验课是和非计算机专业的上节实验课不同的,他们有自己的实验室,属于专业实验课。前8位编码不同时表示不同的意思:表4-13 编码课程关联表Table 4-13 the relational table of coding and course编码值表示课程类10000000专业必修课11000000专业选
40、修课11100000公共课11110000上机实验课11111000专业实验课11111100体育课11111110语音课后8位编码表示当此教师固定在这个时间片上课时,所在的时间片值。(2) 染色体的表示对于每一门课程既可能只上一次(规定2学时课占用一个时间片),也可能上多次,如4学时、6学时等。上2学时课时,该教师编码只能出现1次,上4学时课时该教师编码出现2次,依次类推。在大多数,每周上6学时的课程不会太多,大多数时4学时和2学时; 通过以上把课程与教师等同的处理后,原课表的五要素(班级、教室、课程、时间、教师)转化为四要素(班级、课程、时间)和班级。功能室(实验室机房、语音室等)已经在编
41、码时分配好,而理论课的那些,要等到后面再去分配。为了更好地阐述排课遗传算法,定义排课遗传算法名词:a.“基因”混合型的教师编码,即TI-T25时间片中的值;b.“染色体”班级名称与Tl-T25中的“基因”组成的串;c.“个体”由bjs(班级数)个染色体组合而成的二维数据表,即对应于一张课表。其中BJS为参与课表编排的班级总数;d.“种群”由ZQS个个体构成。其中ZQS为种群大小。4.2.3 初始化种群每一个“染色体”都是班级的一个课表,是开课任务书中的一个班级所有记录组成的,形成的是班级+教室+课程+时间一条记录。 对每一个课程表可以形成一个二维数组kcb (25,bjs),每一列就表示一个班
42、级的课表。首先把固定教学时间的教师编码填入该行中,然后使用随机函数产生一个125的数,将该班的其它教师编码填入其中。如产生的随机数对应的时间片中己有数据,则重新产生,直到将所有教师编码无重复地填入该行中。这样就有了一条染色体(一个初始的班课程表)。如此循环bjs次,产生了与班级数目对等的染色体数目。于是,一个初始个体便产生了。按种群规模的大小ZQS,产生一定数量的个体,每个个体都存放到一个按序编号的表中,由这些个体组成初始种群。很明显,由上述方式产生的个体通常含有大量的冲突。另外,在初始化种群时,基于容器的容器使其更加简捷。对于数据库中教学楼,教室,班级等一些数量都未知的数据进行存储,运用数组
43、显然不能解决,会出现很多的冗余,浪费内存,并且处理繁琐。关联容器的使用方法如图4-7所示:图4-7 容器结构图Chart 4-7 vessel structure chart完成种群初始化后,个体的数据结构如下图示:图4-8 个体结构图Chart 4-8 individual structure chart4.2.4 冲突检测及排除对每一个课程表二维数组kcb (25,bjs)进行冲突检测,然后用自动定位变异算子消除冲突。因为对于同一时间,一个班级同时上一门以上课程的冲突,在编码的过程中己经避免,不会发生;对于同一时间,关于教室的冲突我们先不去考虑,在后面我们再去解决。我们只要对同一时间,一个教师同时上一门以上课程的冲突和同一时间,一个实验室(计算机房、语音室等)同时有一个以上的班级上课的冲突进行检测和消除即可。消除同一时间,一个教师同时上一门以上课程的冲突:(1)构造一个结构体,结构体成员依次为:教师编码;一个教师25个时间片有无课的标识;同一时间有多次课的