来源:中国知网
一、华北科技学院计算机专业实验室排课系统的设计与实现(陆静)
1.一种基于分类优化、优先级算法的自动排课算法。该算法首先对分类优化课程。接下来按优先级进行运算,最后引入矩阵的迭加匹配运算,使大问题分散在各个子问题当中,将整个问题分类分层处理,最终能实现自动排课。并且排课的科学性、高效性和合理性能够得到更好的提高,并更具有人性化。
2.实验室编排课表遵循的原则
(1)对于有特殊要求的,特定时间和地点的课程,必须无条件的先进行安排。
(2)指定时间或地点其中之一的设为二级,排课时也要优先考虑。
(3)人数多的也要优先考虑,由于教学任务安排有困难需要合班上课的情况。
(4)优先安排周学时多者。
(5)最后,人数不是很多的班级,对时间和地点又没有什么要求的最后考虑。
3.1对选定资源进行排序
教室资源
(1)对教室资源进行排序,我们要把已经被占用的教室的时间段表示出来。例如有些教室在某个时间段可能在开会或进行重修考试等有某些特殊用途,但是大多数的教室在正常上课其间是没有其他用途的。
(2)根据教室占用的情况扫描开课表,统计出占用百分比的数据以后把它代入“教室占用表”里,然后开课表根据教室占用的百分比对课程优先级进行设计。
如图5.1,各个教室占用的百分比都不一样,图示东205教室和东305教室利用率最高,那么就要给在这个教室上的课加一个较高的权值,如开课表中的“计算机基础”,要在东305上,那么他搜索教室占用表,东305的占用是85%就要给相应的课程“计算机基础”返回一个较高的权值,而东202、东302、东203、东303的教室占用率比较低,那么就给相应的在这个教室上的课程加一个较低的权值。
(对于实验室的资源整合,可以按照每个实验室的器材种类进行分类,实验室种类多的,可以开设更多科目的权值高,反之,权值低)
3.2算法的预处理
(1)首先课程预处理
我院计算机专业通过各学院各专业各年级开课情况制订出合理开课计划。实验室管理员确定该课程的优先级,根据我院老师所授的班级和课程并依据该课的需学时以及重要程度、课程的类型等来确定,最终确定自动排课的排课号。
我们把按每天上课的时段把课程分为五种类型,上午第一二节上的为1型,三四节上的为2型,下午五六节上的为3型,七八节上的为4型,九十节上的为5型。
(2)其次教室预处理
根据实验室资源的实际情况,我们把实验室分为多媒体1型、多媒体2型、多媒体3型,普通1型(xx人内)、普通2型(xx-xx人)、普通3型(xx人以上)等等类型,这样划分是为使教室资源的浪费得到避免。我们为了降低算法的复杂性,先把问题进行分类,化整为零,在相应的实验室中安排最接近教室容量的人数,然后再逐一分类进行排课处理,这样就可以提高排课的速度和质量。见表5.2教室类型表。
在选择教室时,先按学生人数匹配相应的实验室,如找不到相匹配的实验室,就选择与此类型相近但尽量大的实验室,尽量避免实验室资源浪费。
(3)最后时间预处理
①首先演示预处理过程,设2个小时为1个课程单元。用g表示1周的课时单元数。用i表示1学期的周数,让我们分别定义出3张时间矩阵表,用Tn[i,g]表示老师的矩阵表,Cn[i,g]表示 学生班级的矩阵表,最后一张为教室的矩阵表,用Rn[i, g]表示。把所有课表都安排在这三个矩阵内是我们排课的最终目的,并且尽量遵循人工排课的规律使这三张矩阵表能够迭加匹配成功。那么一天有10节课,设一天为5个单元课时,一周上五天课,所以按一周5天计算,那么一共就是25个课时,g 的最大值就是25,即定义可用时间代码,g=1…25, 其中g=1…5表示周一的排课情况,g6…10表示周二的排课情况,g=7…15, 以此类推。例如教师一学期上20周的课,一周上5天的时间矩阵表为见表5.3所示。
开会总结:
1.时间元有点局限,可以考虑一下三节连上课。
2.考虑学生选课问题,比如必修课大于选修课
3.权值反了
4.考虑能不能在优先必修课的前提下,尽可能给选修课让路,让选修课有更多选择