毕业设计自动排课系统论文

上传人:仙*** 文档编号:65749750 上传时间:2022-03-25 格式:DOC 页数:42 大小:512.02KB
返回 下载 相关 举报
毕业设计自动排课系统论文_第1页
第1页 / 共42页
毕业设计自动排课系统论文_第2页
第2页 / 共42页
毕业设计自动排课系统论文_第3页
第3页 / 共42页
点击查看更多>>
资源描述
本科生毕业设计(论文)自动排课系统摘 要新学期开始,对每个高校来说,首当其冲的问题就是安排学生的课程设置。由于高校班级、课程数都相对较多,手工排课不可避免地要带来教师资源或教室资源的冲突的问题。在信息高速发展的今天,把纷繁芜杂的事情交给计算机来做,才能快速,高效地解决问题。排课管理的主要任务是把各系或各授课部门的课程申请进行汇总,然后根据教学计划或教学环节制订全校各班级的课表。为了使课表的编排更准确、合理、快速,高校教务部门已用计算机来进行排课管理,并先后开发出一些适用的排课软件系统。这个自动排课系统,便是集中考虑了课程、学生、教师及教室等各个方面的因素而开发出来的集合理、方便、快捷于一体的优秀的软件,它遵循了高校编排课表所依据的基本原则和模糊性原则。其主要功能包括:教学计划设置,自动排课与手工排课相结合,优秀的查询功能,课表打印功能。教学计划包括班级、课程、教师信息的设置.在系统设计过程中,本着“抓大放小”的原则,考虑主要因素,用评价函数的思想将“组合爆炸”问题进行简化,自动排课与手动调整相结合,能够解决这些问题。关键词:信息管理系统;教务管理;自动排课;DelphiAbstractAs new term comes, the first important thing for every high school must be faced is the Subjects Arranging. Because of the large amounts of the classes and students, itis inevitably that there are conflicts in the sources of teachers and classrooms when wearrange the subjects by hand. In the days of Information runs so rapidly, only we put thecomplex task into the computer, let the computer finish the miscellaneous things, can we able to solve the problem more quickly and conveniently and more efficiently.The task of the subjects arranging system is to collect the subject tables from every department or school teaching department, and then stipulate for the curriculum schedule for all the classes of the school according to the teaching plan or teaching tache. In order to arrange the curriculum schedule by true and line, reasonably and rapidly, the educational administration need badly a software for using the computer to build the curriculum schedule. This automatically subjects arranging system, is explored immediately combined with reasonable and convenience and shortcut .It involves all the factors includes the course , the students and the teachers .It follows the rules which high school obeys when build the curriculum schedule ,including the material and the blur .Its main function consists of : inputting the teaching plan; integrating subjects arranging by automation and by hand ;searching ;printing the curriculum schedule and so on. Teaching plan is composed of the classes, the courses and the teachers.In the course of the designing, following the rules of getting hold of the main factor, canceling the secondary factor. Using appraising function, predigesting the bombination blasting problem. The thinking of combining subjects arranging by hand and by automation, solve the problem succeeded.Key words: MIS; Educational Administration Management; Automatic Subjects Arranging; Delphi目 录第1章 绪 论11.1 排课问题提出及实现意义11.2 自动排课系统简介2第2章 可行性研究32.1 排课系统要考虑的因素32.2 系统设计过程中所面临的困难32.3 可行性研究42.4 系统流程图5第3章 需求分析73.1 系统总体要求73.2 系统逻辑模型8第4章 系统总体设计134.1 系统总体设计思路134.2 软件结构图134.3 系统各功能模块介绍144.4 数据库设计14第5章 系统核心算法的实现165.1 涉及到的数据结构165.2 算法要点165.3 算法实现过程205.4 有分组情况的排课实现过程255.5 对单、双周排课的处理285.6 手动排课285.7 关于一门课可以安排在不同教室里的情况28第6章 系统测试296.1 软件测试的目标及测试方法296.2 本系统设计测试方案要点29参考文献30结束语31致 谢32III本科生毕业设计(论文)第4章 系统总体设计4.1 系统总体设计思路 这个排课系统的核心是完成自动排课,打印各专业、教师和教室的课表。由各系教务管理员输入本学期的课程计划,系统管理员对系统进行初始化,然后由系统开始排课,执行查询,打印报表功能。根据系统的功能设置,本系统主要由四大模块组成:输入模块,编排课表模块,查询模块,打印模块。其中,输入模块包括:输入教学计划信息,输入教室基本情况信息;编排课表模块包括自动排课和手动排课;查询模块可根据自主设置的查询条件,进行教师、专业、教室课表的查询。打印模块完成教师、专业、教室课表的打印。 4.2 软件结构图总控模块输入模块排课模块数据查询自动排课处理手动排课处理按专业查询按教师查询按班级查询报表打印打印专业课程表打印教师聘书打印教室课程表系统维护数据备分功能用户权限管理工作量管理教师工作量统计输入教学计划输入教室信息图4.1系统模块图4.3 系统各功能模块介绍输入模块:数据输入模块包括教学计划的输入和教室基本信息的输入.教学计划的输入包括输入各专业的课程信息和任课教师.系统要求:如果某个专业的班级数大于6时,需要分组排课,这时的任课教师至少有2个,输入教师姓名时注意用一定的格式分开。同时必须说明多媒体设备情况.教室基本信息的输入必须将教室的多媒体设备信息写清楚.排课模块:排课模块包括自动排课与手动排课两部分.自动排课模块是主要部分.先将教学计划中的数据进行自动排课,遇到有不能排的课程时,系统会提示:自动排课失败,请手动调整,同时将此记录保存到一个临时数据库中.手动排课在最后进行.查询模块:查询模块主要用查询教师,教室,和专业的课程表信息,查询教师的工作量.用户只要输入所要查询的条件,系统会以表格的形式将查询结果返回.教室的查询包括教室的课表查询和空课表查询,主要方便手动排课查询空教室.打印模块:打印模块包括教师,教室,专业课表的打印.系统维护模块:完成数据的备分和恢复功,同时管理用户权限。这里对用户权限进行简要介绍。自动排课系统包括两级用户:各系管理员和系统管理员。各系管理负责包括各系教学计划的设置,各种课表的打印。系统管理员负责进行自动排课与手工调整排课的设置和管理。 4.4 数据库设计本系统的数据库设计如下:教学计划库(plan.db):其结构由课程名,专业名,班级数,任课教师,周学时数,总学时数,多媒体设备等字段构成。考虑到班级很多的专业的排课情况,系统规定:如果班级数超过6,任课教师至少有两个。此数据库是本系统最重要的数据库,是生成排课数据库的依据。教室基本信息库(classroom.db):其结构为:教室号,容纳班级,多媒体设备情况3个字段。容纳班级字段和多媒体设备字段决定排课时所使用的教室类型。课程表库包含三个表:教师任课信息表(teacheruse.db):该数据库文件记录了教师任课的历史信息,在程序运行过程作为将要排课的参考。其结构包括:教师名,课程名,上课时间(星期数,节数两个字段),教师号,说明信息(单双周说明)。教室占用信息表(roomuse.db):该数据库文件记录了教室的占用信息。结构为:教室号,占用时间(包括周数、星期数、节数三个字段)。注意:这里必须具体到每一周。专业课程表(kechengbiao.db)的结构为专业名、课程名、上课时间(星期数,节数),教室号字段。此外,还有个系数库,系数表库中记录了与一周内排课次相应的排课系数表。此数据库存放在各种不同的排课模式下的评价值设置。这里所说的排课模式是指:一门课程在一周内天数上的分布方式,比如对于每周上3次的一门课,它的最佳分布模式为:1-3-5,即周一,周三,周五。第5章 系统核心算法的实现排课系统的核心部分-自动排课过程的实现是这次毕业设计的重中之重。这一章主要介绍算法实现的要点、技巧和整个过程。5.1 涉及到的数据结构算法中用到的数据结构主要是二维数组,用来记录专业或教师或教室的课程表。数组的内容是在程序运行过程中根据数据库中的对应记录动态生成的。数组大小是4*5的,4行5列。在没有分组情况的排课中,有3张这样的表就足够;而在有分组的情况下,需要5张4*5的表。5.2 算法要点5.2.1公平性的实现这里所说的公平性,是指利用评价函数思想进行排课意义上的公平。排课系统是以课程为单位来进行的,教学计划库数量庞大,如果从第一条记录开始顺序取排课记录,按照评价函数的思想来解决排课问题时,难免不会出现先排的课程在时间、位置分布上占优势,出现“进水楼台先得月”的情况。解决的方法之一就是采取随机取记录的方式。随机函数具有在概率上分布均匀的特点,所以采用随机方式对库中的记录进行排课能够做到相对公正。程序开始先初始化随机函数发生器,然后以库中的记录数目作为随机函数的参数范围,每产生一个随机数就作为库中记录的序列号。由于随机函数是等概率的,每次产生的随机数可能与前面的有重复,这在排课过程中是不允许的。可以设置一个数组来记录前面已经产生的随机数,每产生下一个随机数时,将这个随机数与这个数组做比较,如果有相同的则继续产生下一个随机数,否则可作为记录号,开始排课过程。5.2.2 评价函数的思想排课系统由于课程多,学生多,教师,教室等因素变化多,再加上很多主客观因素而显得杂乱无章,让人感觉没有一个好的算法来结果如此繁多的因素。在这个系统里,引进评价函数的思想使问题大大简化。评价函数在很多领域都有涉及到。这里所用的评价函数主要是对所设计的排课方案进行评价,具体地说就是按照前面提到过的各种因素对时间、空间、教师三个因素进行评价。从中找出最优的一个。评价函数的设计过程如下:首先给学生、教师、教室都设置一个评价值,用来记录三种因素在排课过程中所占的比重。设参数a,b,c分别为学生、教师、教室的评价值,(a,b,c均为百分数的形式),程序开始设定学生、教师、教室得分都为100分,考虑在星期组合、教室组合和节数组合的各种方案中,根据前面提到的各种因素:天数分布均匀、节数分布均匀、教师上课是否连续、教室利用率最后分别计算出分数score1,score2,score3,然后分别乘以他们的权值得到最终评价函数score.评价函数计算公式为:score=score1*a+score2*b+score3*c每个因素内部又可设置评价函数。1. 先考虑学生因素方面:可设置天数分布均匀性的评价值为t1,节数分布均匀性的评价值为t2,对每个天数的组合设置一个系数评价值,这个体现在前面数据库设计中的系数表库中。例如:对于每周上3次课的课程来说,天数分布为I-j-k,系统默认的系数表如表5-1所示。(t1的取值即为表中的各个评价值)表5-1 排课模式表天数分布评价值星期一星期二星期三50%星期一星期二星期四80%星期一星期二星期五75%星期一星期三星期四70%星期一星期三星期五100%星期一星期四星期五70%星期二星期三星期四50%星期二星期三星期五75%星期二星期四星期五80%星期三星期四星期五50%在上面的表格中指定一个排课模式(指定一个星期数的组合),节数分布有三种情况:在三天中的同一时间或都不在同一时间,或其中有两个在同一时间。可以表示为x-x-x; x-y-z; x-x-y或x-y-x或x-y-y.做到节数分布均匀,自然希望得到x-y-z的节数分布。对于其它两种分布形式,可以用扣掉百分比的形式来评价。对于x-x-x分布方式扣掉的百分比要多一些,有两节相同的扣掉的少一些。例如这个在程序中可以如下方式实现:用I,j,k来表示节数if I=j=k then score1:=score1*(1-10%)else if (i=j)and (jj) or (j=k)and(ki)or(k=i)and(ij) then score1:=score1*(1-20%); 2. 再看教师因素:影响教师的评价函数的因素主要有两个,教师上课是否连续和教师在一天中上课的次数。教师上课连续性的含义用下表来表示:表格5-2 教师上课连续性节数星期星期一星期二星期三星期四星期五上午第一大节1第二大节11下午第三大节11第四大节1在某一天的上午或下午存在两节课都排的话,认为是连续的;如果一天中第2和3节课都安排的话认为是不连续的。如上表格4-6中,星期一上午第一、第二节都为1,星期三下午第三、第四节都为1,他们都是连续的。而星期二上午第二节与下午第一节都为 1,认为是不连续的。如果某一排课方案使教师的课表出现了连续,同样可以用扣掉百分比的方式进行评价;对于教师在一天内的上课次数,越多扣掉的百分比越大。例如:教师课程表用ttemp数组来描述,I,j分别表示节数和星期数If ttempI,J*ttempI+1,j=1 then score2:=score2*(1-20%); 用sum来记录教师一天内上课的次数,p表示星期数: for p:=1 to 5 do begin if sump=2 then score2:=score2*(1-5%); if sump=3 then score2:=score2*(1-10%); if sump=4 then score2:=score2*(1-20%); end; 3. 影响教室的因素只有一个:就是教室的利用率,每个教室的评价值与它的利用率的乘积便得到这个教室的最后得分score3。无论是对于各个因素内部,还是整个排课过程,评价函数的各个评价值的设置都是可以改变的。如果侧重教师方面,可以将b设置大点;如果侧重学生方面的因素,可以将a设置大一点(这里的设置是1%a,b6的时候便要进行分班。分班的前提是:用户输入的这条记录班级数6时,必须至少有两个任课教师。要进行分组排课,必须保证分开后的两个组在同一时间排课。5.4.1要保证在同一时间内对两个组进行排课,需要做下列工作:1 数据结构:这里要用到5个是数组。两个数组,命名为A和B,分别用来记录两个教师的课程表。两个数组C和D,用来记录两个教室的课程表。一个数组E,记录专业课程表。2 保证教师、教室、专业不发生冲突前面没有分组情况的排课实现已经提到了,要保证教师、教室、专业三种资源不发生冲突,只要将三者所对应的课程表做逻辑或运算,可以排课的位置是做或运算后的空闲位置。具有分组情况与之类似,将5张表相重叠。要保证在同一时间内排课,必须同时满足两个教师和两个教室的条件。首先将A和B重叠,得出教师的空闲位置;再将C和D重叠,得出教室的空闲位置;然后再与E重叠,得出最终可以排课的位置。3 评价函数的设计在同一时间内对两个组进行排课,不能对两个组分别运用评价函数,最后得出各自的最优时间和地点,因为这样有可能各自的最优不是在同一时间内的;要设计一个评价函数,使之对两个组同时评价。在我的程序里,运用了求平均值的方法。就是在相同的排课时间下,运用评价函数分别做出各自的方案值,然后对两个值求平均。比较不同的模式下,不同的教室组合和节数组合下的平均值大小,取最大的作为最终排课结果。我在程序中是这样实现的:scoref:= paike (I,x,j,y,k,z:integer; var a,b,c:arr);scoreb:= paike (I,x,j,y,k,z:integer; var a,b,c:arr);score:= ( scoref + scoreb)/2;4 对满足条件的教室的处理前面的程序已经指明,根据班级数和多媒体设备字段对教室进行筛选,这样得到的教室可能是一个集合。对于没有分组情况的一个整体进行排课,可以对集合中的每个教室分别计算评价函数的值。现在要在同一时间内对两个分组进行排课,理论上应对从这个集合中取出两个教室的所有组合用评价函数,而考虑到这个专业的两个分组实质是一个整体,无论哪个分组,对于每个教室的评价函数都是一样的,所以这里简化组合的次数,只要对满足条件的教室组合顺序取来分别指定给两个分组,然后计算评价函数就可以了。这部分的程序流程图如下:取一个教室集合中记录空?取一个教室调用评价函数记录最优排课方案集合中记录空?数据集记录下移N结束数据集记录下移NYY开始N 图5.5 分组排课下教室处理流程图开始排课模式记录为空?取待排课记录教师字段作字符串分割生成两个教师课程表生成排课模式生成满足条件的教室集合处理满足条件的教室用评价函数进行评价记录较好的排课方案记录下移一条排课记录为空?记录下移一条结束NYNYYYNN 开始排课模式记录为空?取待排课记录教师字段作字符串分割生成两个教师课程表生成排课模式生成教室集合处理满足条件的教室用评价函数进行评价记录较好的排课方案记录下移一条排课记录为空?记录下移一条结束NYNY图5.6:有分组排课的程序流程图5.5 对单、双周排课的处理前面介绍过的排课情况都是周学时数为偶数的情况,当某门课程的周学时数为奇数时,比如周学时数为3的情况,每周的平均上课次数为1.5次,平均两周上3次课,这时在单周或双周排课的情况就出现了。可以认为每周上2次课,只是在写入数据库的时候将其中的一次改为在单周上课或双周上就可以了,这个在写入教师数据库和专业数据库的时候都要注明。5.6 手动排课前面所给出的各种排课的情况,都采用评价函数的方法,按照设计者的思路去排课。随着排课过程的进行,资源库中的记录数目越来越多,就有可能出现没有符合的位置的情况:在程序中的表现是:评价函数的值为0。这是系统变会发出警告:说没有位置可排!请进行手工调整。手工调整也要遵循不冲突这个基本原则,与前面自动排课类似,先将专业课程表和教师课程表做重叠,然后根据周学时数和多媒体设备字段查找符合条件的教室。然后直接写入数据库中。这时排课过程就忽略了教师连续性和教室利用率的问题,也会出现同一门课程排在不同的教室里的情况。自动排课过程不可能做到所有的条件的最佳配置,这也就是要进行手动排课的原因之一。5.7 关于一门课可以安排在不同教室里的情况如果优先考虑学生的上课时间分布的话,可以在固定排课模式的情况下,如果没有一个教室满足这个所设定的排课方案,可以选择在不同的教室的情况。这仅仅是个组合问题。首先把符合条件的教室过滤出来,如果没有符合条件的教室,可以先两两组合,在给定的模式下进行排;如果没有满足条件的,可以每次选择3个教室,进行比较。当然是在3次/周的排课情况下进行的!这一点不难实现。因为这仅仅是个组合问题。如果有多个教室满足条件的话,进行两两组合,或三三组合的工作量是很大的。鉴于计算量繁杂所花费的时间代价,我只考虑了一门课程安排在一个教室里的情况。自动排课系统摘 要新学期开始,对每个高校来说,首当其冲的问题就是安排学生的课程设置。由于高校班级、课程数都相对较多,手工排课不可避免地要带来教师资源或教室资源的冲突的问题。在信息高速发展的今天,把纷繁芜杂的事情交给计算机来做,才能快速,高效地解决问题。排课管理的主要任务是把各系或各授课部门的课程申请进行汇总,然后根据教学计划或教学环节制订全校各班级的课表。为了使课表的编排更准确、合理、快速,高校教务部门已用计算机来进行排课管理,并先后开发出一些适用的排课软件系统。这个自动排课系统,便是集中考虑了课程、学生、教师及教室等各个方面的因素而开发出来的集合理、方便、快捷于一体的优秀的软件,它遵循了高校编排课表所依据的基本原则和模糊性原则。其主要功能包括:教学计划设置,自动排课与手工排课相结合,优秀的查询功能,课表打印功能。教学计划包括班级、课程、教师信息的设置.在系统设计过程中,本着“抓大放小”的原则,考虑主要因素,用评价函数的思想将“组合爆炸”问题进行简化,自动排课与手动调整相结合,能够解决这些问题。关键词:信息管理系统;教务管理;自动排课;DelphiAbstractAs new term comes, the first important thing for every high school must be faced is the Subjects Arranging. Because of the large amounts of the classes and students, itis inevitably that there are conflicts in the sources of teachers and classrooms when wearrange the subjects by hand. In the days of Information runs so rapidly, only we put thecomplex task into the computer, let the computer finish the miscellaneous things, can we able to solve the problem more quickly and conveniently and more efficiently.The task of the subjects arranging system is to collect the subject tables from every department or school teaching department, and then stipulate for the curriculum schedule for all the classes of the school according to the teaching plan or teaching tache. In order to arrange the curriculum schedule by true and line, reasonably and rapidly, the educational administration need badly a software for using the computer to build the curriculum schedule. This automatically subjects arranging system, is explored immediately combined with reasonable and convenience and shortcut .It involves all the factors includes the course , the students and the teachers .It follows the rules which high school obeys when build the curriculum schedule ,including the material and the blur .Its main function consists of : inputting the teaching plan; integrating subjects arranging by automation and by hand ;searching ;printing the curriculum schedule and so on. Teaching plan is composed of the classes, the courses and the teachers.In the course of the designing, following the rules of getting hold of the main factor, canceling the secondary factor. Using appraising function, predigesting the bombination blasting problem. The thinking of combining subjects arranging by hand and by automation, solve the problem succeeded.Key words: MIS; Educational Administration Management; Automatic Subjects Arranging; Delphi目 录第1章 绪 论11.1 排课问题提出及实现意义11.2 自动排课系统简介2第2章 可行性研究32.1 排课系统要考虑的因素32.2 系统设计过程中所面临的困难32.3 可行性研究42.4 系统流程图5第3章 需求分析73.1 系统总体要求73.2 系统逻辑模型8第4章 系统总体设计134.1 系统总体设计思路134.2 软件结构图134.3 系统各功能模块介绍144.4 数据库设计14第5章 系统核心算法的实现165.1 涉及到的数据结构165.2 算法要点165.3 算法实现过程205.4 有分组情况的排课实现过程255.5 对单、双周排课的处理285.6 手动排课285.7 关于一门课可以安排在不同教室里的情况28第6章 系统测试296.1 软件测试的目标及测试方法296.2 本系统设计测试方案要点29参考文献30结束语31致 谢3239第4章 系统总体设计4.1 系统总体设计思路 这个排课系统的核心是完成自动排课,打印各专业、教师和教室的课表。由各系教务管理员输入本学期的课程计划,系统管理员对系统进行初始化,然后由系统开始排课,执行查询,打印报表功能。根据系统的功能设置,本系统主要由四大模块组成:输入模块,编排课表模块,查询模块,打印模块。其中,输入模块包括:输入教学计划信息,输入教室基本情况信息;编排课表模块包括自动排课和手动排课;查询模块可根据自主设置的查询条件,进行教师、专业、教室课表的查询。打印模块完成教师、专业、教室课表的打印。 4.2 软件结构图总控模块输入模块排课模块数据查询自动排课处理手动排课处理按专业查询按教师查询按班级查询报表打印打印专业课程表打印教师聘书打印教室课程表系统维护数据备分功能用户权限管理工作量管理教师工作量统计输入教学计划输入教室信息图4.1系统模块图4.3 系统各功能模块介绍输入模块:数据输入模块包括教学计划的输入和教室基本信息的输入.教学计划的输入包括输入各专业的课程信息和任课教师.系统要求:如果某个专业的班级数大于6时,需要分组排课,这时的任课教师至少有2个,输入教师姓名时注意用一定的格式分开。同时必须说明多媒体设备情况.教室基本信息的输入必须将教室的多媒体设备信息写清楚.排课模块:排课模块包括自动排课与手动排课两部分.自动排课模块是主要部分.先将教学计划中的数据进行自动排课,遇到有不能排的课程时,系统会提示:自动排课失败,请手动调整,同时将此记录保存到一个临时数据库中.手动排课在最后进行.查询模块:查询模块主要用查询教师,教室,和专业的课程表信息,查询教师的工作量.用户只要输入所要查询的条件,系统会以表格的形式将查询结果返回.教室的查询包括教室的课表查询和空课表查询,主要方便手动排课查询空教室.打印模块:打印模块包括教师,教室,专业课表的打印.系统维护模块:完成数据的备分和恢复功,同时管理用户权限。这里对用户权限进行简要介绍。自动排课系统包括两级用户:各系管理员和系统管理员。各系管理负责包括各系教学计划的设置,各种课表的打印。系统管理员负责进行自动排课与手工调整排课的设置和管理。 4.4 数据库设计本系统的数据库设计如下:教学计划库(plan.db):其结构由课程名,专业名,班级数,任课教师,周学时数,总学时数,多媒体设备等字段构成。考虑到班级很多的专业的排课情况,系统规定:如果班级数超过6,任课教师至少有两个。此数据库是本系统最重要的数据库,是生成排课数据库的依据。教室基本信息库(classroom.db):其结构为:教室号,容纳班级,多媒体设备情况3个字段。容纳班级字段和多媒体设备字段决定排课时所使用的教室类型。课程表库包含三个表:教师任课信息表(teacheruse.db):该数据库文件记录了教师任课的历史信息,在程序运行过程作为将要排课的参考。其结构包括:教师名,课程名,上课时间(星期数,节数两个字段),教师号,说明信息(单双周说明)。教室占用信息表(roomuse.db):该数据库文件记录了教室的占用信息。结构为:教室号,占用时间(包括周数、星期数、节数三个字段)。注意:这里必须具体到每一周。专业课程表(kechengbiao.db)的结构为专业名、课程名、上课时间(星期数,节数),教室号字段。此外,还有个系数库,系数表库中记录了与一周内排课次相应的排课系数表。此数据库存放在各种不同的排课模式下的评价值设置。这里所说的排课模式是指:一门课程在一周内天数上的分布方式,比如对于每周上3次的一门课,它的最佳分布模式为:1-3-5,即周一,周三,周五。第5章 系统核心算法的实现排课系统的核心部分-自动排课过程的实现是这次毕业设计的重中之重。这一章主要介绍算法实现的要点、技巧和整个过程。5.1 涉及到的数据结构算法中用到的数据结构主要是二维数组,用来记录专业或教师或教室的课程表。数组的内容是在程序运行过程中根据数据库中的对应记录动态生成的。数组大小是4*5的,4行5列。在没有分组情况的排课中,有3张这样的表就足够;而在有分组的情况下,需要5张4*5的表。5.2 算法要点5.2.1公平性的实现这里所说的公平性,是指利用评价函数思想进行排课意义上的公平。排课系统是以课程为单位来进行的,教学计划库数量庞大,如果从第一条记录开始顺序取排课记录,按照评价函数的思想来解决排课问题时,难免不会出现先排的课程在时间、位置分布上占优势,出现“进水楼台先得月”的情况。解决的方法之一就是采取随机取记录的方式。随机函数具有在概率上分布均匀的特点,所以采用随机方式对库中的记录进行排课能够做到相对公正。程序开始先初始化随机函数发生器,然后以库中的记录数目作为随机函数的参数范围,每产生一个随机数就作为库中记录的序列号。由于随机函数是等概率的,每次产生的随机数可能与前面的有重复,这在排课过程中是不允许的。可以设置一个数组来记录前面已经产生的随机数,每产生下一个随机数时,将这个随机数与这个数组做比较,如果有相同的则继续产生下一个随机数,否则可作为记录号,开始排课过程。5.2.2 评价函数的思想排课系统由于课程多,学生多,教师,教室等因素变化多,再加上很多主客观因素而显得杂乱无章,让人感觉没有一个好的算法来结果如此繁多的因素。在这个系统里,引进评价函数的思想使问题大大简化。评价函数在很多领域都有涉及到。这里所用的评价函数主要是对所设计的排课方案进行评价,具体地说就是按照前面提到过的各种因素对时间、空间、教师三个因素进行评价。从中找出最优的一个。评价函数的设计过程如下:首先给学生、教师、教室都设置一个评价值,用来记录三种因素在排课过程中所占的比重。设参数a,b,c分别为学生、教师、教室的评价值,(a,b,c均为百分数的形式),程序开始设定学生、教师、教室得分都为100分,考虑在星期组合、教室组合和节数组合的各种方案中,根据前面提到的各种因素:天数分布均匀、节数分布均匀、教师上课是否连续、教室利用率最后分别计算出分数score1,score2,score3,然后分别乘以他们的权值得到最终评价函数score.评价函数计算公式为:score=score1*a+score2*b+score3*c每个因素内部又可设置评价函数。1. 先考虑学生因素方面:可设置天数分布均匀性的评价值为t1,节数分布均匀性的评价值为t2,对每个天数的组合设置一个系数评价值,这个体现在前面数据库设计中的系数表库中。例如:对于每周上3次课的课程来说,天数分布为I-j-k,系统默认的系数表如表5-1所示。(t1的取值即为表中的各个评价值)表5-1 排课模式表天数分布评价值星期一星期二星期三50%星期一星期二星期四80%星期一星期二星期五75%星期一星期三星期四70%星期一星期三星期五100%星期一星期四星期五70%星期二星期三星期四50%星期二星期三星期五75%星期二星期四星期五80%星期三星期四星期五50%在上面的表格中指定一个排课模式(指定一个星期数的组合),节数分布有三种情况:在三天中的同一时间或都不在同一时间,或其中有两个在同一时间。可以表示为x-x-x; x-y-z; x-x-y或x-y-x或x-y-y.做到节数分布均匀,自然希望得到x-y-z的节数分布。对于其它两种分布形式,可以用扣掉百分比的形式来评价。对于x-x-x分布方式扣掉的百分比要多一些,有两节相同的扣掉的少一些。例如这个在程序中可以如下方式实现:用I,j,k来表示节数if I=j=k then score1:=score1*(1-10%)else if (i=j)and (jj) or (j=k)and(ki)or(k=i)and(ij) then score1:=score1*(1-20%); 2. 再看教师因素:影响教师的评价函数的因素主要有两个,教师上课是否连续和教师在一天中上课的次数。教师上课连续性的含义用下表来表示:表格5-2 教师上课连续性节数星期星期一星期二星期三星期四星期五上午第一大节1第二大节11下午第三大节11第四大节
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!