智能排课系统参考文档.docx
《智能排课系统参考文档.docx》由会员分享,可在线阅读,更多相关《智能排课系统参考文档.docx(42页珍藏版)》请在冰豆网上搜索。
智能排课系统参考文档
智能排课系统设计及实现
摘要
排课,是给学校各专业的教学计划中设置的课程安排合适的时间和地点,也就是给每个班的课程安排时间和地点。
排课工作在教学管理中很重要也很繁琐,计算机智能排课系统,可以降低排课人员的工作量,减少排课中的人为因素[1-2]。
但排课问题属于NP问题,即无法直接得到答案,只能通过猜测获取可能结果。
通常NP问题虽无答案,却有算法,算法不能直接告诉答案,但可以用来判断可能的结果是否正确可行。
因此,要做好排课工作,提高排课效率,实现智能排课是必不可少的。
本文在查阅大量相关文献的基础上,对高校的排课问题进行了分析,设计和实现了该功能,此系统主要被分为三个部分:
界面的设计、排课算法的设计、以及报表的自动生成。
本系统是采用MicrosoftVisualStudio2005作为前台开发工具,SQLServer2005作为后台数据库平台的管理系统。
关键词:
智能排课、贪心、分治、VisualStudio2005、SQLServer2005。
1绪论
1.1系统开发背景
在高校各项教学管理工作中,排课一直是最基本的、最重要的工作,其实质就是给教学计划中设置的课程安排合适的时问和地点,保证整个教学工作能够顺利地进行;同时,排课工作也是一项很复杂的工作,排课是一个NP问题,就是始终找不到一个最优的方法能够解决的问题,因为这个问题涉及了多种因素进行组合规划,有教师、学生的因素,也有教室的因素。
尤其在目前各高校规模不断扩大,教学资源面临紧张,教师总数不足的前提下,排课工作问题更为凸出。
随着计算机技术的飞速发展,特别是计算机的应用已普及到经济和社会生活的各个领域。
使原本的旧的管理方法越来越不适应现在社会的发展。
许多人还停留在以前的手工操作。
这大大地阻碍了人类经济的发展。
为了适应现代社会人们高度强烈的时间观念,利用计算机实现高校排课系统势在必行。
对于各大高校来说,利用计算机支持学校管理员排课,是适应现代学校的制度要求、推动学校管理走向科学化、系统化、规范化的必要条件,从而达到提高校管理效率的目的。
给同学和老师带来方便。
1.2系统开发环境及方法
1.2.1.开发环境
在计算机硬件和软件快速发展的今天,计算机硬件和软件已经远远满足本管理系统的要求。
在数据库编程工具方面,各种可视化编程方法的出现,一改过去程序设计的概念和方法,用户用鼠标就可以快速、简捷地创建应用程序,极大地提高了编程效率。
选用MicrosoftVisualStudio2005中文版数据库开发的应用程序可以独立运行于windows平台,而且SQLServer2005产生的数据库适用范围广,因此本系统采用MicrosoftVisualStudio2005中文版来完成高校排课系统的设计。
VisualStudio是微软公司推出的开发环境。
是目前最流行的Windows平台应用程序开发环境。
2005年,微软发布了VisualStudio2005。
.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。
它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。
总体来说是一个非常庞大的软件,甚至包含代码测试功能。
这个版本的VisualStudio包含有众多版本,分别面向不同的开发角色。
同时还永久提供免费的VisualStudioExpress版本。
使用VisualStudio2005,专业开发人员能够:
(1)使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境;
(2)在统一的开发环境中,开发并调试多层次的服务器应用程序;
(3)使用集成的可视化数据库设计和报告工具,创建SQLServer2005解决方案;
(4)使用VisualStudioSDK创建可以扩展VisualStudioIDE的工具[6-8]。
VB2005是visualStudio2005中最重要的组件之一,是新一代的VB,但它并不是VB.NET2003的简单升级,从开发界面到控件,VB2005及VB.NET2003之间还是有比较大的区别[6]。
新一版SQLServer的设计目标正是帮助企业单位应对上述挑战。
作为Microsoft公司的下一代数据管理及分析软件,SQLServer2005有助于简化企业数据及分析应用的创建、部署和管理,并在解决方案伸缩性、可用性和安全性方面实现重大改进。
基于SQLServer2000技术优势构建的SQLServer2005将提供集成化信息管理解决方案,可帮助任何规模的组织机构:
(1)创建并部署更具伸缩性、可靠性和安全性的企业级应用。
(2)降低数据库应用创建、部署及管理的复杂程度,进而实现IT效率最大化。
(3)凭借可供创建更具安全保障之数据库应用的丰富、灵活、现代化开发环境增强开发人员工作效能。
(4)跨越多种平台、应用和设备实现数据共享,进而简化内部系统及外部系统连接。
(5)实现功能强劲的集成化商务智能解决方案,从而在整个企业范围内推进科学决策,提高工作效率。
(6)在不必牺牲性能表现、可用性或伸缩性的前提下控制成本费用水平[9-10]。
1.2.2开发方法
以各高校的排课需求为应用背景,开发一个典型的高校智能排课系统。
考虑实际情况,本系统将采用结构化生命周期法进行系统分析和设计,并采用原型法进行系统实施。
图1-1原型法生命周期图
原型法的基本思想是在投入大量的人力,物力之前,在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善,直到完全满足用户的需求为止。
这样能有效避免盲目开发问题,同时能充分的发挥原型法的优势,能顺利实现系统的实施[4-5]。
2可行性分析
2.1技术可行性
该系统对软、硬件系统要求较低,所需硬件设备,市场上销售且价格较低,甚至可以使用原有的设备。
软件上,操作系统采用Windows系列操作系统、MicrosoftVisualStudio2005作为前台开发工具,它具有的“编辑后继续运行(editandcontinue)”的特性,超越了旧的编辑—编译—测试模式。
它还引入了面向对象的程序设计思想和“控件”概念,使得大量已经编好的VisualBasic程序可以直接拿来使用。
同时, VisualBasic又是最容易学习及应用的程序语言之一。
它的功能非常强大,已成为一种专业化的开发语言和环境。
采用SQLServer2005作为后台数据库平台的管理系统,它在电子商务、数据仓库和数据库解决方案等应用中起着核心作用,可为企业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性、数据的安全性以及数据的可靠易用性等等。
这些软件在高校排课系统开发中已被大量应用,技术上都比较成熟。
因此在技术上是可行的。
2.2经济可行性
当今学校内部没有完善的高校排课系统,管理水平差,学校课程不能得到合理分配。
迫切需要提高现代化管理水平、管理质量和管理高校课程。
高校排课系统的初步现代化的开发和使用,能够大大提高学校管理者的工作效率,节省成本提高经济效益。
它把从事教务管理的人员从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它重要的活动中去,从而达到节省人力、物力,财力的目标;它能使决策、计划和其它管理活动更加科学、精确、灵活。
因此,开发一个专门针对高校排课系统,在经济上也是可行的。
2.3操作可行性
本系统灵活方便,快捷迅速,适应处理多项数据。
采用友好、直观的视窗界面,鼠标、键盘两种操作方式任意选择,方便快捷。
界面统一规范,提示信息功能完整,稍一接触就可以上手进行所有操作。
2.4法律可行性
本系统纯为个人设计,在开发过程中没有涉及合同、责任、版权等及国家相关法律规定相抵触的方面。
因此,本系统在法律上是可行的。
3系统需求分析
3.1系统功能需求
智能排课系统需要实现对学校教师、教室、班级、及课程的信息管理,对高校排课,都有智能的管理,主要实现如下的一些功能:
班级各种信息的输入,包括班级号,班级名称,年级,班级人数,是否合班。
教师各种信息的输入,包括教师号,教师姓名,职称,联系方式。
学校课程的增加,删除,修改。
学校课程计划的制定。
学校的自定义排课,根据需要,人工排课。
学校的智能排课,根据需要,随机智能排课。
有一些相关的提示。
课表查课界面,根据不同条件,查看课程安排。
3.2系统非功能需求
3.2.1排课中的基本原则
在课程的编排中应遵循一定的规则,只有按照基本规则来进行课程的编排才能够减少冲突的发生,这些基本规则主要有以下几条:
1)同一班级的学生在同一时间(某些特定的选修课时间除外)不能安排两门课程
2)同一教师在同一时间不能安排两门课程
3)同一教室在同一时间不能安排两门课程
4)同一时间安排的课程总数不能大于所能提供的教室总数
5)某一课程参加学习的总人数不应大于所安排教室的座位数
6)所提供教室的属性及课程所需教室的属性一致
在时间、教师、班级、教室、课程这五维关系中,时间、教师、班级三者之间存在着紧密关系。
相对而言,教室及它们关系就不那么密切。
3.2.2排课的基本要求
课程的安排不是任意的,为了达到最好的教学效果应遵循一定的要求。
这些要求主要有:
1)要尽量为所排课程安排上该类课效果最好的时间
2)课程在一周上多次时,要有一定的间隔性
3)公共课等涉及面广、学时多的课程应优先处理
4)对同一教师,同一上课对象应尽量选择相对固定的几个教室
5)对同一个班级的课程应选择相对固定的教室
6)连着的课的教室选择不应相隔太远
7)同一天有几门课时尽量把课分散
8)优先满足一些特殊要求(比如有些教室喜欢上上午的课,可以优先满足)
4总体设计
4.1系统总体构架
本系统采用客户/服务器(Client/Server)模式。
又叫主从式架构,简称C/S结构,是一种网络架构,它把客户端(Client)(通常是一个采用图形用户界面的程序)及服务器(Server)区分开来。
每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
图4-1系统体系结构图
C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销对应的优点就是客户端响应速度快。
4.2系统功能结构
高校排课系统可以用于支持各高校完成高校排课的难题,有如下几个个方面的目标:
支持各高校输入班级信息;支持各高校输入教师信息,班级教师的增删改等方面。
支持输入教室,还有自定义排课和智能排课以及课表查询。
系统分为四大模块:
条件设置、课程计划、排课管理、课表查询、系统管理。
图4-2功能模块图
具体设计目标如下:
(1)界面友好,操作简单,帮您轻松上手。
(2)系统具有灵活、严格的权限设定功能,采用非常周密有效的权限设置,确保高校各类资料的可靠性和保密性,防止错误和违规操作。
系统管理:
可修改管理员权限及密码。
(3)高校排课系统,资料详细周到,同窗多页的界面方式让你轻松完成所有工作。
(4)友善的登录界面,包括学生登录,教师登录,和管理员登陆,根据身份不同,进入的界面也
4.3排课算法
4.3.1目前常用算法
目前,解决排课问题常用的方法有:
着色算法[11],通过研究时间资源库的形成策略,分析基于时间资源的排课算法[12]。
基于分层分治、贪心算法的排课系统的设计及实现[13],基于图论方法的自动优化排课模型研究[14],基于资源受限的非线性约束多目标排课模型及算法[15],整数规划解决排课问题[16],基于遗传禁忌算法结合解决排课问题[17]等。
这些方法虽然提高了搜索效率,但由于高校普遍存在课程量大,教室、教师资源紧张,排课约束条件多且条件经常变化等问题,排课算法的应用仍然受到很大限制[19]。
4.3.2排课问题描述
4.3.2.1排课问题的约束条件
排课即要满足一定的硬约束条件来协调处理教师、教室、学生、时间之间的多维冲突,同时还要尽可能满足一些软约束条件,从而使排出的课表更加合理,满足人性化需求。
硬约束条件要求系统必须满足的条件,而软约束条件是在满足硬约束条件以后要考虑的约束条件,软约束条件不要求系统必须满足,但满足这些条件能得到较优解。
常用的硬约束条件有:
(1)所有的课程都必须被安排;
(2)除合班课外,同一时间,一个教室只能被一个班级占用;
(3)除选修课外,同一时间,一个班级只能安排一门课程;
(4)同一时间,一个教师只能在一个教室上课;
(5)同一个教师所上的不同课程不能发生在同一时间;
(6)两门课程不能在同一个时间安排在同一个教室;
(7)教室的类型必须及课程要求一致;
(8)教室的最大容纳人数必须大于等于在该教室上课的学生人数等;
(9)不同课程时间段不同,如体育课只能在白天且不安排在第一节,选修课不能安排在早上等。
常用的软约束条件有:
(1)同一门课程的上课时间尽量间隔均匀。
例如某课程周学时为4学时,以2学时为一个教学单位,需安排两次。
两次的安排时间尽量间隔一天或者一天以上;
(2)每个学生的课程均匀的分布在工作日中;
(3)学生的上课时间要尽量选择在较好的上课时间段;
(4)对班级、教室、教师的单双周上课时间点尽量匹配,以节约教学资源;
4.3.3排课问题的数学表示
如果用C表示课程、S表示班级、N表示时间、R表示教室,T表示教师,排课问题的目标就是找出满足约束条件的(C,S,N,R,T)组合。
并且,这五种元素之间存在一定的对应关系:
①C及S之间的对应关系,即每个班级有其特定要上的课程;
②C及T之间的对应关系,即每门课程有一定的任课教师;
③(N,R)及(S,C,T)之间的对应关系,即每个教室在某一时间段只能有一个班级上一门课程。
排课问题的实质就是对于给定的一组(S,C,T)要分配其一个满足上课条件的时空片(N,R)。
即找到(N,R)及(S,C,T)之间的一一对应关系。
4.3.4排课问题的优先级问题
排课中有很多等待分配时空片的(S,C,T),如何安排它们的分配次序,不仅关系到算法的性能、安排的合理性,更关系到最终能否求出可行解。
因此,分配次序的好坏也是每个算法中要仔细处理的问题。
在本文的算法中,是对每一组(S,C,T)设定优先级,然后按照优先级的高低次序分配时空片。
设定(S,C,T)优先级要考虑的因素有:
①(S,C,T)中课程C的类别,对于不同类别的课程,给它们设定相应的优先值,本算法中针对课程类别的优先级设定如下:
专业基础课、公共基础课、专业限选课、专业选修课、公选课优先级别依次降低,其中专业基础课级别最高,公选课级别最低;
②(S,C,T)中课程C在一周内要上的次数。
即一门课程周学时越多,优先级越高;
③(S,C,T)中班级S所需要上的课程总数的大小。
即学生每周要上的课程总数越多,优先级越高;
④(S,C,T)中学生S中的人数的大小。
最后根据各个因素的重要性不同,给每个因素设置一定的权重系数p[0]、p[1]、p[2]、p[3],最后求四种因素的带权累加和,即得到一个(S,C,T)的优先级,每次按照(S,C,T)的优先级的降序次序来分配时空片。
4.3.5算法思想
该算法在选择每一组教学任务(S,C,T)时是按贪心策略来选择,即按(S,C,T)优先级的降序次序选择优先级最高的教学任务。
接下来在进行时空片分配过程中采用分治的策略,在分配过程中分为三个层次:
1)即先分配要上课的星期数(星期数是指星期一到星期五的任意一天),
2)再分配其该天的上课时间段(在本文中某天的上课时间段分为5个时间段,上午1、2节为第1个时间段,上午3、4节为第2个时间段,下午1、2节为第3个时间段,下午3、4节为第4个时间段,晚上1、2节或者1、2、3节为第5个时间段),
3)最后分配上课的教室。
同时在每一阶段的分配过程中,都要对资源总数和使用状况作统计和记录,从而防止不计后果的资源滥用。
算法主要步骤如下:
Step1:
初始化。
Step1.1:
初始化,将所有教室按类型划分,并在每一类型中按教室容量统计可用教室资源的数目。
例如,可将教室划分为:
普通教室、多媒体教室、语音室、物理实验室、机房等。
然后按教室可容纳人数分为0-60人、60-120人、120-140人这4个不同等级。
然后统计记录每一类型不同容量范围的可用教室资源数目。
Step1.2:
预排序,将待排的所有课程先按周学时降序排列,然后再将待排的所有课程先按所需教室类型升序排列,再按所需教室容量降序分配,即先为上课人数多的课程分配教室,防止较小的班级占用大教室,最后再将所有需要使用同一类型和容量教室的课程按优先级降序排序。
Step2:
分配上课的星期数。
按照排序后的次序,再参照剩余的可用资源记录来分配每组(S,C,T)在一周内要上课的星期数。
同时参考总课表,使得班级和教师的上课时间在一周内尽可能均匀分布。
Step3:
分配某天内上课的时间段。
Step3.1对每种类型和大小的教室资源按其在一周内的某一天的5个时段的分配情况作统计。
Step3.2在分配时间段的时候,从第一个时段到第5个时段依次查看是否还有剩余资源,若有,则为其分配相应的是时间段,否则看能否将某个已被占用的时间段调整后再为其分配。
分配的过程中要参照总课表,防止时间冲突。
Step3.3若有不能分配的,查找及其相关的已经分配了时间段的课程,并看看能否重新为它分配时间段,从而将原来的时间段让给不能成功找到时间段的那个课程使用。
Step4:
分配上课的教室:
根据每一课程要求的上课时间和教室类型及大小为其分配教室。
对于每个已经分配了星期数和时间段的课程,一般来说,都是找得到可用教室的,因为在前两个分配阶段中,是严格按照资源剩余状况来进行分配的。
同时在分配上课所用的教室时,也考虑到单双周情况,以便充分利用教室资源。
4.3.6算法分析
基于分治贪心相结合的排课算法主要分为3个阶段:
即分配上课星期数、分配上课时间段、分配上课的教室。
这里对算法的时间复杂度进行分析。
第一阶段:
分配上课星期数,为每一门课程分配上课星期数的运算次数主要及课程数目有关;
第二阶段:
分配上课的时段,为一次课分配上课时段所进行判断的次数最坏为5次,分配上课时段的运算次数主要和每周上的总课程次数有关。
第三阶段:
根据上课星期数和上课时段分配教室;
因此该算法主要和问题的规模有关,即及要排课的课目数、课程的周学时数及教室数目有关。
和基于贪心策略、基于随机分配时间片的排课算法进行比较,该算法的运行时间介于二者之间,效率略低于基于贪心策略的排课算法,比基于随机分配时间片的排课算法效率要高。
但该算法在成功排课的数量上,性能比基于贪心策略的算法会略好。
因为分治及贪心相结合的算法中是当有满足条件的资源时,便一定会为其分配。
而贪心策略中,可能虽然存在可用资源时仍会遗漏可行解。
5数据库设计
5.1系统数据表
根据系统需求分析,以及考虑到数据表之间的关联性,系统需要建立7个表,2个视图,其用途说明如下表4.1所示。
表5-1系统数据表
数据表名称
数据表描述
Class
保存班级基本信息
Hb
保存组成各合班的班级号
Teacher
记录教师信息
Classroom
记录教室信息
Course
保存课程信息
Lesson_plans
保存教学计划
R_L
存储总课表
表5-2系统视图
数据表名称
数据表描述
Lp_view
保存需要排课的信息,利于排课
RL_view
保存教室安排信息,利于查询班级时间及教室时间
5.2UML建模图
下图主要是对应实体关系图,经过分析了各实体及其属性,用MicrosoftOfficeVisio2007画出下图。
图5-1UML建模图
5.3数据字典
下列表5.2到表5.8给出7个数据表:
班级信息表、合班表、教室信息表、教师信息表、课程信息表、教学计划表、总课表的具体描述,包括数据描述、数据名称、数据类型等。
表5-3Course-班级信息表
字段名称
说明
数据类型
长度
主/外键
约束
备注
Class_id
班级编号
Char
10
主键
Class_name
班级名
Char
20
非空
Department
专业
Char
20
grade
年级
Char
10
number
人数
Int
非空
Hb
是否合班
int
非空
默认0(否)
表5-4hb-合班表
字段名称
说明
数据类型
长度
主/外键
约束
备注
Hb_id
合班号
Char
10
主键
Class_id
小班号
Char
10
外键
非空
表5-5classroom-教室信息表
字段名称
说明
数据类型
长度
主/外键
约束
备注
Cr_id
教室编号
Char
10
主键
Capacity
教室容量
Int
Category
教室类别
Char
10
非空
表5-6Teacher-教师信息表
字段名称
说明
数据类型
长度
主/外键
约束
备注
T_id
教师编号
Char
10
主键
T_name
教室姓名
Char
10
非空
profession
职称
Char
10
age
年龄
Int
Department
所属学院
Char
10
表5-7Course-课程信息表
字段名称
说明
数据类型
长度
主/外键
约束
备注
C_id
课程号
Char
10
主键
C_name
课程名
Char
20
非空
表5-8lesson_plans-教学计划表
字段名称
说明
数据类型
长度
主/外键
约束
备注
Lesson_id
课程计划号
Char
10
主键
C_id
课程号
Char
10
外键
非空
参照course表中的c_id
Class_id
班级号
Char
10
外键
非空
参照class表中class_id
T_id
教师编号
Char
10
外键
非空
参照Teacher表中t_id
C_nature
课程性质
Char
10
W_jieci
周节次
Int
非空
Z_jieci
总节次
Int
Paike
是否排课
Int
默认为0(未排课)
Category
教室性质
Char
10
Qz
权重
Int
自动计算
表