基于数据库关系运算排课算法设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于数据库关系运算排课算法设计

基于数据库关系运算排课算法设计   摘要:高校因其需要在固定时间内开设门类众多的课程,排课问题显得尤为突出。排课不仅是通过合理的课程安排使得学生能符合规律的学习成长,也是在探寻多因素问题的求解方式和过程。基于关系运算就排课的一般问题进行分析,包括变量的规范化界定和排课问题的理论分析,提出“分层规划”的解决方案,并采用数据库的关系运算完成排课算法的设计。该算法有效地降低了排课问题的复杂度,并满足了用户的期望和各种约束。   关键词:排课算法;分层规划;关系运算;SQL;数据库   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)25-5665-08   排课问题与时间表问题(Time Table Problem,TTP)密切相关,具有复杂性和难解性,一直没有十分有效的解决方法。1965年,Gotlieb最早提出了排课问题的数学模型,并被Cooper等人证明是NP完全类问题[1-2],即多项式复杂程度的非确定性问题。目前,解决排课问题的算法有遗传算法、模拟手工法、启发式函数、图论法、贪婪算法、拉格朗日法、优先级法、二次分配法、染色问题、整数规划和回溯算法[3-9]等,这些方法在时间复杂度、空间复杂度和算法推广方面的效果都不是很理想。   国内外的研究表明,仅依靠传统的数学方法来求解高校排课问题是难以实现的。运筹学的“分层次规划”思想[10],是把因素进行合理的组合与分配,使问题转换为不同的层次和方向以降低问题的复杂性,是一个解决复杂问题的有效途径。数据库技术中的投影、选择、连接、除法和外连接是关系代数中的基本操作,也是一个完备的操作集[11];它以关系寻找关系,在规范和处理复杂问题时有很好的作用。因此,该文试图尝试采用分层次规划和关系运算来实现排课算法的设计。   1 排课范畴定义   定义排课问题涉及的6个因素为班级、课程、教师、教室、天次和节次,标识符依次为G、C、T、R、D和J;时间范围为一个学期,排课形式为周循环形式,课程范围为全校各班级的所有课程,每周教学天次范围为周一至周日;每天教学节次范围及优先级设置、单门课程周课时数的分配方式及优先级设置如表1、表2所示。   3 排课??法设计   3.1 排课算法总体框架   排课算法总体框架包括合分班课程数据连接模块、非合分班课程数据连接模块、教室性质匹配算法模块、时间算法模块和数据传递算法模块五个模块,如图5所示。图中实线上的序号用来表示运行先后顺序或区分不同分支,虚线箭头表示循环,三角符表示该分支先运行(下同)。   1)确定一组课程/班级、教师、进行容量匹配的教室   对于A类课程(合分班类课程),按图5左上框图流程运行;对于B类(非合分班类课程),按图5右上框图流程运行。   2)确定进行性质匹配的教室   在1)的基础上,根据CT.Rnum的取值状态从几个已进行容量匹配的教室中选择性质匹配的教室。   3)确定两组时间   在2)的基础上,从天次选择模式中选择一个不为空的模式,选择相应天次并查询各天剩余节次,再选择剩余里最优的节次,然后进行教师时间冲突检测和教室时间冲突检测,若有冲突或无可用节次,返回下一优先级节次或天次组合模式。   4)数据传递与保存   若没有冲突,对于A类,进入数据传递算法模块,把前四步的结果传递给相应的班级,并把结果保存在ST表中,并进入下一门课程的上述流程操作;对于B类,把前三步的结果保存在ST表中,并进入下一门课程的上述流程操作。   5)班级循环   对于B类,当班内课程安排完成后,跳转到下一班级,重复前四步操作,直到全部班级完成安排。   3.2 非合分班课程数据连接模块   非合分班课程数据连接模块算法流程如图6所示,该模块的功能是,从某一班级中选择一门非合分班课程,为该门课程分配适合的教师和进行容量匹配的教室组。先选择一个班级,该班级与CT连接,得到该班所有课程,并选择其中非合分班性质的课程,按照课程数目从多到少选择其中一门课程;再判断该课程是否有指定上课教室,若没有,则选择上一次无指定教室的课程所选择的教室,若有,则选择容量匹配的教室组。   3.3 合分班课程数据连接模块   合分班课程数据连接模块算法流程如图7所示,该模块的功能是,为一门合分班课程分配适合的教师和进行容量匹配的教室组。从非合分班性质的课程中选择一门课程,该课程与TT连接,得到该课程的授课教师组,选择其中优先级最高的教师;再查询上该课程的相关班级,计算这些班级的总人数,并从RT中选择容量匹配的教室组。对于分班课程,要确定与分班数目相同的教室数。   3.4 教室性质匹配算法模块   教室性质匹配算法模块流程如图8所示,该模块的功能是,在“非合分班课程数据连接”和“合分班课程

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档