基于遗传算法的高校网上排课系统.docx

上传人:b****1 文档编号:558489 上传时间:2022-10-11 格式:DOCX 页数:15 大小:86.60KB
下载 相关 举报
基于遗传算法的高校网上排课系统.docx_第1页
第1页 / 共15页
基于遗传算法的高校网上排课系统.docx_第2页
第2页 / 共15页
基于遗传算法的高校网上排课系统.docx_第3页
第3页 / 共15页
基于遗传算法的高校网上排课系统.docx_第4页
第4页 / 共15页
基于遗传算法的高校网上排课系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于遗传算法的高校网上排课系统.docx

《基于遗传算法的高校网上排课系统.docx》由会员分享,可在线阅读,更多相关《基于遗传算法的高校网上排课系统.docx(15页珍藏版)》请在冰豆网上搜索。

基于遗传算法的高校网上排课系统.docx

基于遗传算法的高校网上排课系统

 

本科生毕业论文(设计)

 

题  目

基于遗传算法的高校网上排课系统

AnOptimizedGeneticAlgorithmBasedUniversityTimetablingSystem

姓  名

学号0611701106

院  系

计算机科学学院

专  业

计算机科学与技术

指导教师

职称讲师

2010年5月20日

曲阜师范大学教务处制

 

 

目录

摘要1

关键词1

Abstract1

Keywords1

1引言1

1.1研究背景和意义1

1.2国内外研究的现状1

2课程表问题2

2.1课程表问题简介2

2.2课程表问题中的基本约束2

3排课系统的具体设计实现2

3.1模块划分2

3.2课程表问题基本数据结构介绍2

3.3遗传算法的设计与实现3

4结果分析6

5总结8

致谢8

参考文献8

附录9

基于遗传算法的高校网上排课系统

计算机科学与技术专业学生王坤

指导教师董兆安

摘要:

大学排课问题是一种NP难的组合优化问题。

在传统遗传算法的基础上,首先把问题分解以减少算法的复杂度,然后提出了适合本问题的染色体编码方案和操作方法,以尽量减少非法个体,并采用冲突检测和消解策略,对种群进行优化,提高种群的适应度,并有效缩短了产生最优解的时间。

最后使用ASP.NET和C#实现了一个网上自动排课系统,并使用本学院的真实数据进行测试,满足所用的约束条件,产生了满意的结果。

关键词:

大学排课问题遗传算法冲突检测在线

AnOptimizedGeneticAlgorithmBasedUniversityTimetablingSystem

StudentMajoringinComputerScience&Technology

TutorZhao’anDong

Abstract:

UniversityCourseTimetableProblemisNP-Hardcombinatorialoptimizationproblem.BasedonthetraditionalGeneticAlgorithm,wedecompensatetheproblemtodecreasethecomplexity,advancetheproblem-specificchromosomeandoperationstoavoidgenerateillegaltimetables,andusecollisiondetectionandresolutiontooptimizethepopulation,increasethefitnessanddecreasethetimeneeded.Finally,weimplementtheonlinetimetablingsysteminASP.NETandC#.Thealgorithmistestedwithrealdatefromourcollege,satisfiesalltheconstraintsofproblemandyieldpromisingresult.

Keywords:

UniversityTimetabling;GeneticAlgorithm;CollisionDetection;Online;

1引言

1.1研究背景和意义

长期以来,在高校的教务管理中通常使用手工或者辅助软件进行排课,手工排课相对更为常见,一般是对上一年的课表稍加修改然后予以沿用。

然而随着专业的发展和高校的扩招,在不同年级之间,不论从人数、授课教师还是开设的课程,与原来相比都有较大的不同。

因而往年的课表对于排课的借鉴作用逐步削弱,一种能满足各种排课约束条件的自动排课软件呼之欲出。

尤其在网络不断发展的今天,在线的排课系统更能给教务人员带来更多的便利。

1.2国内外研究的现状

排课问题,也称为课程表问题。

目前,国内外已经有很多人对于这个课题进行了研究,提出的解决方法也多种多样。

1963年,C.C.Gotlieb在其TheConstructionofClass-TeacherTime-Tables[1]一文中第一次提出了课表编排的数学模型。

1975年,Even.S证明了排课问题是一个NP完全问题,无法用计算机实现,从理论上对时间表问题有了全新的认识。

因而,众多的研究者们又开始考虑用其他方法来解决这一问题,比如使用组合逻辑、禁忌搜索、决策系统、贪心算法、图论、模拟退火算法、遗传算法[2,3]、免疫网络[4]等。

其中,遗传算法因为其良好的智能性、并行性、简单易用、鲁棒性强等特点,成为一种优秀的亚启发式算法,并成功的应用于例如TSP、地图着色、卫星轨道控制等方面,在解决课程表问题方面也有着不俗的表现。

在国内,虽然较国外起步较晚,80年代以来,清华大学、大连理工大学、原南京工学院、西安交通大学等国内高校都进行了相关的研究并研制了相应的软件。

比如清华大学的TISER系统,西安交大自行开发的排课系统,中山大学基于智能规划的排课系统,华中科技大学的基于模糊专家系统的排课系统,武汉大学基于回溯算法的排课系统等。

从实际情况来看,由于排课问题的复杂性和各个学校自身教学的特殊性,国内外研制开发的这些软件系统实用性仍然有待提高。

排课问题作为NP问题,它的解决也有着典型的代表性。

所以,对排课问题的研究无论从理论还是实践上都有着重要意义。

2课程表问题

2.1课程表问题简介

课程表问题是把教师、教室、班级、课程的组合安排到一天的各个时间段上。

根据本院实际情况,一周中每一天分为4个时间段,上午两个,分别为两个小时,下午和晚上各一个,分别为三个小时。

这样一周共有20个时间段。

2.2课程表问题中的基本约束

课程表问题在实际安排中的约束条件有以下几个方面。

2.2.1硬性约束,即必须满足的约束

1、教室不冲突:

一个教室同一时间不能安排两门课程,且人数不能超过教室的最大容量;

2、班级不冲突:

一个班级不能在同一时间段安排两门课或两门以上的课程,同一班级不能同一时间在不同地点上课;

3、教师不冲突:

一个教师不能同一时间在不同地点上课。

2.2.2弹性约束,即尽量满足的约束,满足此种约束更利于教学

1、英语这类课程应尽量安排在上午进行;

2、每周课时量较多的课程应在一周的五天中均匀安排;

3、每周多次的课程尽量安排在同一间教室;

4、时长为三个学时的课程应该安排在下午或晚上;

5、学校规定有统一活动的时间不能安排课程。

另外,学校已经安排公共课程的时间段是不能给相关班级安排课程的。

3排课系统的具体设计实现

3.1模块划分

系统主要分为以下几个模块:

1、系统登录模块:

作用是验证用户身份,并转入相应的界面。

2、信息管理模块:

在左侧菜单栏显示的用户的权限,用户可以点击各菜单使用相应的功能。

包括:

添加教室、添加课程、添加教师、添加班级。

3、信息显示模块:

包括显示、查询和修改管理员信息、教室信息、教师信息、课程信息、班级信息。

4、自动排课模块:

包括预排公共课、添加本学期课程安排、自动排课、显示排课结果、显示全系课表。

3.2课程表问题基本数据结构介绍

Professor类:

保存教师的基本信息和操作

StudentGroups类:

保存班级的基本信息和操作

Room类:

表示教室

Course类:

表示一门课程

CourseClass类:

表示一次课程安排,即某教师给某个班级上某节课

PreCourseClass类:

是CourseClass类的子类,表示一次预排课,即自动排课前已经确定的课程安排

GAAutomatedTT类:

本算法的核心类,定义了交叉、变异、计算适应度等函数及其配套使用的数据结构

3.3遗传算法的设计与实现

3.3.1问题分解

课程表问题虽然是教师、教室、班级、课程四者之间在时间上的组合和优化,在实际应用中我们发现,我们可以把教室根据容量进行分类,同一容量的教室在分配中的地位是平等的,所以可以统计出不同容量教室的个数,遗传算法进行求解时,无需考虑具体教室的分配,只要求每个时间段需要某类教室的个数在该类实际个数范围内即可。

在求解完毕后再使用一个算法来完成教室的分配就可以得到最终的解。

这样就把问题简化成为教师、班级和课程三者在安排课程时的组合优化。

3.3.2染色体设计

在消去教室这一因素后,排课过程中对约束条件判断,除了关于教师的硬性约束条件外,所有的弹性约束条件和预排课约束都是针对班级来说的。

所以,我们在设计染色体时以班级为中心。

染色体中班级的数据结构如下:

Dictionary>>_slotsOfStudentGroup

Dictionary中的第一项表示班级ID,其后的List>对应该班一周的课表,包括20个时间段。

其中的List表示在某个时间段安排的课程。

教师的数据结构与学生的相似:

Dictionary>>_slotsOfProfessor

图31染色体示意图

染色体直接使用类对象,省去了编码和解码的过程,可以直接使用类中的函数对类进行操作,获取相应的信息。

染色体中辅助用的数据结构及作用如下:

Dictionary>>_slotsOfProfessor教师课表,记录每个教师每周的课表;

Dictionary>>_slotsOfStudentGroup班级课表,记录每个班级每周课表;

Dictionary>_freetimeOfProfessor教师空余时间表,记录每个教师的空余时间;

Dictionary>_freetimeOfStudentGroup班级空余时间表,记录每个班级的空余时间;

Dictionary>_preScheduleTime班级预排课时间段表,班级已经预排课时间段;

Dictionary>>_CourseScheduleOfStudentGroup课程所在时间段表,记录每个班级每门课程所在的时间段;

Dictionary>_recordsOfBadOnesForThree记录未合理安排的每周三次的课程;

Dictionary>_recordsOfBadOnesForTwo记录未合理安排的每周两次的课程;

Dictionary>>_recordsOfBadOnesForProfessors记录教师出现冲突的课程;

Dictionary>_recordsOfBadOnesForDurationOf3记录未合理安排的三个课时的课程。

3.3.3种群初始化

初始化是为种群中的每个个体根据本学期的课程安排随机产生一份课表。

考虑到尽量减少遗传算法的进化压力,初始化的个体应该尽量满足所给出的约束条件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1