一种可视化快捷智能排课方法与流程

专利2022-05-09  52



1.本发明涉及教学管理技术领域,尤其涉及一种可视化快捷智能排课方法。


背景技术:

2.随着计算机技术与internet技术的飞速发展,推广数字化和智能化技术已成为推动我国社会发展的重要步骤之一。教务管理是高校十分重要又是相当复杂的一项管理工作,随着我国教育体制的改革深入,学生人数的迅速增多,课程设置也不断向深度和广度发展。排课管理是学校教务管理系统设计的重要环节,同时也是十分复杂的管理工作之一。为减少排课的工作量,现高校广泛采用智能排课系统。高校排课具有多阶段、分级安排的特点。教务处首先使用智能安排,处理大部分的课程,再由学院进行安排或者调整剩余的课程。因此智能排课系统的排课效果优劣,直接关系到整个排课过程的效率和质量。
3.经检索,中国专利申请号为cn201310418983.6的专利,公开了一种智能排课方法和装置。本发明的排课方法将历史课程表生成历史q表单,历史q表单中包含排课状态、排课动作和综合回报值,然后从历史q表单中根据排课状态的比较以及综合回报值的比较找出类似的排课动作,再根据类似排课动作生成当前课程的排课动作,执行该排课动作实现排课;排课失败状况下,采用回溯的方法实现再排课。上述专利中的智能排课方法和装置存在以下不足:排课时不能针对性满足一些教师或课程的特殊要求,使得课时容易出现重复或空闲的问题,导致教学资源不能合理利用。


技术实现要素:

4.本发明的目的是为了解决现有技术中存在的缺点,而提出的一种可视化快捷智能排课方法。
5.为了实现上述目的,本发明采用了如下技术方案:
6.一种可视化快捷智能排课方法,包括如下步骤:
7.s1:鼠标选择需要排课的课程;
8.s2:拖拽该课程放入课程表中;
9.s3:填写课程教师,上课时间必要信息;
10.s4:保存;
11.所述需要排课的课程设为{c1,c2

cn},课程总数为n,而各门课程每周安排次数为{n1,n2

nn},各门课程每次为连续的2学时,每周教学日共5天,每周的教学总时间段数为5
×
4=20,并存在以下约束关系:
12.n≤20;
13.n=6n,i=1,ni≤20;
14.所述可视化快捷智能排课方法还包括设计适当的数据结构和排课算法;
15.所述数据结构包括对于每一门课程,分配2个字节的时间段分配字:{t1,t2

tn},有效的时间段分配字的值应小于32768,而大于等于32768的时间段分配字对应于那些当前
无效的课程;
16.所述排课算法的目标为确定{c1,c2

cn}所对应的{t1,t2

tn}。
17.优选地:所述排课算法包括自动排课算法、冲突检测算法和基于优先级的排课算法,所述自动排课算法:输入{c1,c2

cn}、{n1,n2

nn},输出{t1,t2

tn};所述冲突检测算法为根据数据结构做如下运算:t[i]=t[i]&(~(7<<(week

1)*3)) (segment<<(week

1)*3);所述基于优先级的排课算法包括排课的预处理、每一子类的排课处理和人工干预的处理。
[0018]
优选地:所述自动排课算法包括以下步骤:
[0019]
s51:初始化:星期值week=1,时间段值segment=1,{t[1],t[2]

t[n]}中各时间段分配字清零;
[0020]
s52:新一轮扫描课程:置继续处理标志flag=0,对课程索引值c

index=1,2

n进行以下操作:
[0021]
c1:如果n[c

index]>0,则把segment的值写入t[c

index]的第(week

1)33~week33

1位中n[c

index]的值减1;
[0022]
c2:如果n[c

index]>0,则置flag=1,如果week=5并且segment=4,则置flag=1,并转s53,否则如果segment=4,则置segment=1,且week增1,否则segment增1;
[0023]
c3:检测是否已全部安排完毕:如果flag=1,则转s52,否则转s53;
[0024]
s53:检测是否成功:如果flag=1,则开课次数过多,否则课程安排成功;
[0025]
s54:算法结束:本算法的时间复杂度为o(n),而存储时间段分配字所用空间为2n个字节。
[0026]
优选地:所述冲突检测算法包括判断同一个时间段是否已有其它课程安排,具体判断方式分为两步:一、设人工调整的时间段分配字为t[1];二、判断时间段分配字t[1]与{t[2],t[3]

t[n]}中的某个分配字是否存在相同课程分配位上的相等的非零时间段值,或{t[2],t[3]

t[n]}中是否存在与t[1]冲突的时间段分配字。
[0027]
优选地:所述冲突检测算法:输入t1和{t2

tn},输出与t1冲突的{t2

tn}中的时间段分配字。
[0028]
优选地:所述冲突检测算法包括以下步骤:
[0029]
s101:

对c

index=2,3

n做初始化屏蔽字mask=7;

对星期值week=1,2,3,4,5,如果t[1]&mask等于t[c

index]&mask,而且二者不等于0,则t[1]与t[c

index]相冲突,转

,mask左移3位或乘8;
[0030]
s102:算法结束:本算法时间复杂度为o(n)。
[0031]
优选地:所述排课的预处理包括用于将具有共同听课对象的任务划分在同一等价类中,在每个等价类之间只存在地点上的冲突,而没有时间上的冲突,然后按照的大小,从大到小进行处理的等价类的划分、教室分类及时间预处理;
[0032]
所述教室分类包括如下方式:
[0033]
s301:首先将教室按照其类型分为若干个等价类;
[0034]
s302:根据教室的容量再分别对每个教室等价类进行划分;
[0035]
所述时间预处理包括以下操作方式:
[0036]
s401:构造时间模式库:时间模式库为根据教务人员的经验,为各种周学时数不同
的课程指定的一种时间组合方式;
[0037]
s402:时间数组。
[0038]
优选地:所述每一子类的排课处理包括以下步骤:
[0039]
s501:根据分治法的思想把整个排课过程分成时间分配和教室分配两个阶段;
[0040]
s502:依据贪婪法的算法思想,在时间分配时,总是在尚未分配的时间单元中选择上课效果最好的单元;
[0041]
s503:而在时间分配发生死锁时,会向上回溯搜索到发生冲突的最近一个记录,然后对它进行重排以解决冲突。
[0042]
优选地:所述每一子类的排课处理具体处理过程如下:
[0043]
b101:设定优先级:对子类中的课程计算优先级l设优先级函数为:d(g)=j(g)*c1 t(g)*c2 p(g)*c3;
[0044]
b102:查询可用时间单元;
[0045]
b103:查找适当的时间模式:找到可排课时间后,根据课程的周学时数在时间模式库中匹配适当的时间模式;
[0046]
所述查询可用时间单元包括以下步骤:
[0047]
a101:初始化某门课程的最大可安排时间数组;
[0048]
a102:找出参加该课程学习的所有班级;
[0049]
a103:查询每个班级的时间数组,得到班级的已排课时间,并将其与课程的最大时间数组相“与”,得到该课程不能安排的时间单元;
[0050]
a104:依次处理教师时间数组和相关教室时间数组。
[0051]
优选地:所述人工干预的处理中人工干预过程有等价类划分中参数的设置、教室类型的设置、时间模式库的设置、优先级函数中参数的设置。
[0052]
本发明的有益效果为:
[0053]
1.本发明以拖拽式操作对课程表中所有课程快速调整,大大缩短了排课周期,提高排课准确性,提高了教务人员管理效率,通过系统合理安排教师资源,教室资源,老师课表,学生课表,教室课表,班级课表查看,让课程管理和日常排课清晰有序,采用了化整为零的思想及优先级算法,有效降低课程调度的算法复杂性,以教学计划和各种特殊要求为约束条件进行组合规划,解决各因素之间的冲突。
[0054]
2.本发明便捷的排课系统自动生成的课程表,可清晰的查看教师和教室的空余时间,学校可充分利用空余时间来安排教室和教师,便于学校安排课程以及教室出租等,学员选班排课,学校排课软件系统自动检测排课冲突,有效避免撞课现象,解决传统排课繁杂问题。
[0055]
3.本发明采用了教室分类的办法,以便尽可能在课程编排过程中避免上课人数少的课程盲目强占容量大的教室现象,合理使用教室。
[0056]
4.本发明计算机自动排课配合人工干预,以便可以使得各个高校能够根据自己的具体要求对排课算法中的一些参数进行设置和调整,从而得到用户满意的课程表。
[0057]
5.本发明按排课课程学员刷卡考勤上课,系统自动扣除课时,并可查询时间段内课时消耗情况,运用学校排课软件,可以帮助教务工作运转准确高效智能化,既省时又省力,直观的数据反馈,让学校的资源利用更合理,大大提高了办公效率。
附图说明
[0058]
图1为本发明提出的一种可视化快捷智能排课方法的流程示意图。
具体实施方式
[0059]
下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
[0060]
下面详细描述本专利的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利,而不能理解为对本专利的限制。
[0061]
实施例1:
[0062]
一种可视化快捷智能排课方法,如图1所示,包括如下步骤:
[0063]
s1:鼠标选择需要排课的课程;
[0064]
s2:拖拽该课程放入课程表中;
[0065]
s3:填写课程教师,上课时间等必要信息;
[0066]
s4:保存。
[0067]
所述s1中设需要排课的课程为{c1,c2

cn},课程总数为n,而各门课程每周安排次数为{n1,n2

nn},各门课程每次为连续的2学时,每周教学日共5天。即星期一~星期五,每个教学日最多安排4个时间段的课程教学,即1~2节、3~4节、5~6节和7~8节。在这种假设下,显然每周的教学总时间段数为5
×
4=20,并存在以下约束关系:
[0068]
n≤20;
[0069]
n=6n,i=1,ni≤20。
[0070]
所述可视化快捷智能排课方法还包括设计适当的数据结构和排课算法,以确定{c1,c2

cn}中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据。
[0071]
进一步的,所述数据结构包括对于每一门课程,分配2个字节的“时间段分配字”(无符号整数):{t1,t2

tn},其中任何一个时间段分配字(假设为ti)都具有如下格式:
[0072]
ti的数据类型c语言格式定义为unsignedint,ti的最高位是该课程目前是否是有效的标志,0表示有效,1表示无效(如停课等);其它各位称为课程分配位,每个课程分配位占连续的3个位(bit),表示某教学日(星期一~星期五)安排该课程的时间段的值,0表示当日未安排,1~4表示所安排的相应的时间段(超过4的值无效)。在这种设计下,有效的时间段分配字的值应小于32768(十六进制8000),而大于等于32768的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如此),因此便于实现停课/开课处理。
[0073]
进一步的,所述排课算法的目标为确定{c1,c2

cn}所对应的{t1,t2

tn}。
[0074]
从安排的可能性上看,共有20!/(20

n)!种排法,如果有4门课,每门课一周上2次,则n=8,这8次课可能的安排方法就会有20!/(20

8)!=5079110400,即50多亿种,如果毫无原则地在其中选择一种方案,将会耗费巨大量的时间,所以排课的前提是必须有一个确定的排课原则,我们采用轮转分配法作为排课原则:从星期一第1时间段开始按{c1,c2

cn}中所列顺序安排完各门课程之后(每门课安排1次),再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合{n1,n2

nn}中给定的值为止,在算法描述中将用{c[1],c[2]

c[n]}表示{c1,c2

cn},对{n1,n2

nn}和{t1,t2

tn}也采用同样的表示法。
[0075]
所述排课算法包括自动排课算法、冲突检测算法,所述自动排课算法:输入{c1,c2

cn}、{n1,n2

nn},输出{t1,t2

tn};所述冲突检测算法为根据上述数据结构需做如下运算:t[i]=t[i]&(~(7<<(week

1)*3)) (segment<<(week

1)*3),其中&、~和n分别为按位与、按位取反和按位左移运算符。
[0076]
进一步的,所述自动排课算法包括以下步骤:
[0077]
s51:初始化:星期值week=1,时间段值segment=1,{t[1],t[2]

t[n]}中各时间段分配字清零;
[0078]
s52:新一轮扫描课程:置继续处理标志flag=0,对课程索引值c

index=1,2

n进行以下操作:
[0079]
c1:如果n[c

index]>0,则把segment的值写入t[c

index]的第(week

1)33~week33

1位中n[c

index]的值减1;
[0080]
c2:如果n[c

index]>0,则置flag=1,如果week=5并且segment=4,则置flag=1,并转s53,否则如果segment=4,则置segment=1,且week增1,否则segment增1;
[0081]
c3:检测是否已全部安排完毕:如果flag=1,则转s52,否则转s53;
[0082]
s53:检测是否成功:如果flag=1,则开课次数过多,否则课程安排成功;
[0083]
s54:算法结束:本算法的时间复杂度为o(n),而存储时间段分配字所用空间为2n个字节。
[0084]
所述n为课程每周安排次数,n为课程门数。
[0085]
所述冲突检测算法包括判断同一个时间段是否已有其它课程安排,具体判断方式分为两步:一、设人工调整的时间段分配字为t[1];二、判断时间段分配字t[1]与{t[2],t[3]

t[n]}中的某个分配字是否存在相同课程分配位上的相等的非零时间段值,或者说{t[2],t[3]

t[n]}中是否存在与t[1]冲突的时间段分配字。为简化起见,在以下算法描述中假设所有时间段分配字的最高位为0。
[0086]
进一步的,所述冲突检测算法:输入t1和{t2

tn},输出与t1冲突的{t2

tn}中的时间段分配字。
[0087]
进一步的,所述冲突检测算法包括以下步骤:
[0088]
s101:

对c

index=2,3

n做初始化屏蔽字mask=7;

对星期值week=1,2,3,4,5,如果t[1]&mask等于t[c

index]&mask,而且二者不等于0,则t[1]与t[c

index]相冲突,转

,mask左移3位(或乘8);
[0089]
s102:算法结束:本算法时间复杂度为o(n)。冲突检测算法算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。
[0090]
本实施例在使用时,利用冲突检测算法可实现在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i门课程在人工干预下改成星期数为week、时间段为segment的位置;以教学计划和各种特殊要求为约束条件进行组合规划,解决各因素之间的冲突。本申请拖拽式操作对课程表中所有课程快速调整,大大缩短了排课周期,提高排课准确性,提高了教务人员管理效率,通过系统合理安排教师资源,教室资源,老师课表,学生课表,教室课表,班级课表查看,让课程管理和日常排课清晰有序。同时,便捷的排课系统自动生成的课程表,可清晰的查看教师和教室的空余时间,学校可充分利用空余时间来安排教室和教师,便于学校安排课程以及教室出租等,学员选班排课,学校排课软件系统自动检测排课冲
突,有效避免撞课现象,解决传统排课繁杂问题;按排课课程学员刷卡考勤上课,系统自动扣除课时,并可查询时间段内课时消耗情况,运用学校排课软件,可以帮助教务工作运转准确高效智能化,既省时又省力。直观的数据反馈,让学校的资源利用更合理,大大提高了办公效率。
[0091]
实施例2:
[0092]
一种可视化快捷智能排课方法,如图1所示,包括如下步骤:
[0093]
s1:鼠标选择需要排课的课程;
[0094]
s2:拖拽该课程放入课程表中;
[0095]
s3:填写课程教师,上课时间等必要信息;
[0096]
s4:保存。
[0097]
所述s1中设需要排课的课程为{c1,c2

cn},课程总数为n,而各门课程每周安排次数为{n1,n2

nn},各门课程每次为连续的2学时,每周教学日共5天。即星期一~星期五,每个教学日最多安排4个时间段的课程教学,即1~2节、3~4节、5~6节和7~8节。在这种假设下,显然每周的教学总时间段数为5
×
4=20,并存在以下约束关系:
[0098]
n≤20;
[0099]
n=6n,i=1,ni≤20。
[0100]
所述可视化快捷智能排课方法还包括设计适当的数据结构和排课算法,以确定{c1,c2

cn}中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据。
[0101]
进一步的,所述数据结构包括对于每一门课程,分配2个字节的“时间段分配字”(无符号整数):{t1,t2

tn},其中任何一个时间段分配字(假设为ti)都具有如下格式:
[0102]
ti的数据类型c语言格式定义为unsignedint,ti的最高位是该课程目前是否是有效的标志,0表示有效,1表示无效(如停课等);其它各位称为课程分配位,每个课程分配位占连续的3个位(bit),表示某教学日(星期一~星期五)安排该课程的时间段的值,0表示当日未安排,1~4表示所安排的相应的时间段(超过4的值无效)。在这种设计下,有效的时间段分配字的值应小于32768(十六进制8000),而大于等于32768的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如此),因此便于实现停课/开课处理。
[0103]
进一步的,所述排课算法的目标为确定{c1,c2

cn}所对应的{t1,t2

tn}。
[0104]
从安排的可能性上看,共有20!/(20

n)!种排法,如果有4门课,每门课一周上2次,则n=8,这8次课可能的安排方法就会有20!/(20

8)!=5079110400,即50多亿种,如果毫无原则地在其中选择一种方案,将会耗费巨大量的时间,所以排课的前提是必须有一个确定的排课原则,我们采用轮转分配法作为排课原则:从星期一第1时间段开始按{c1,c2

cn}中所列顺序安排完各门课程之后(每门课安排1次),再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合{n1,n2

nn}中给定的值为止,在算法描述中将用{c[1],c[2]

c[n]}表示{c1,c2

cn},对{n1,n2

nn}和{t1,t2

tn}也采用同样的表示法。
[0105]
所述排课算法包括自动排课算法、冲突检测算法和基于优先级的排课算法,所述自动排课算法:输入{c1,c2

cn}、{n1,n2

nn},输出{t1,t2

tn};所述冲突检测算法为根据上述数据结构需做如下运算:t[i]=t[i]&(~(7<<(week

1)*3)) (segment<<(week

1)*3),其中&、~和n分别为按位与、按位取反和按位左移运算符;所述基于优先级的排课算法
包括排课的预处理、每一子类的排课处理和人工干预的处理。
[0106]
进一步的,所述自动排课算法包括以下步骤:
[0107]
s51:初始化:星期值week=1,时间段值segment=1,{t[1],t[2]

t[n]}中各时间段分配字清零;
[0108]
s52:新一轮扫描课程:置继续处理标志flag=0,对课程索引值c

index=1,2

n进行以下操作:
[0109]
c1:如果n[c

index]>0,则把segment的值写入t[c

index]的第(week

1)33~week33

1位中n[c

index]的值减1;
[0110]
c2:如果n[c

index]>0,则置flag=1,如果week=5并且segment=4,则置flag=1,并转s53,否则如果segment=4,则置segment=1,且week增1,否则segment增1;
[0111]
c3:检测是否已全部安排完毕:如果flag=1,则转s52,否则转s53;
[0112]
s53:检测是否成功:如果flag=1,则开课次数过多,否则课程安排成功;
[0113]
s54:算法结束:本算法的时间复杂度为o(n),而存储时间段分配字所用空间为2n个字节。
[0114]
所述n为课程每周安排次数,n为课程门数。
[0115]
所述冲突检测算法包括判断同一个时间段是否已有其它课程安排,具体判断方式分为两步:一、设人工调整的时间段分配字为t[1];二、判断时间段分配字t[1]与{t[2],t[3]

t[n]}中的某个分配字是否存在相同课程分配位上的相等的非零时间段值,或者说{t[2],t[3]

t[n]}中是否存在与t[1]冲突的时间段分配字。为简化起见,在以下算法描述中假设所有时间段分配字的最高位为0。
[0116]
进一步的,所述冲突检测算法:输入t1和{t2

tn},输出与t1冲突的{t2

tn}中的时间段分配字。
[0117]
进一步的,所述冲突检测算法包括以下步骤:
[0118]
s101:

对c

index=2,3

n做初始化屏蔽字mask=7;

对星期值week=1,2,3,4,5,如果t[1]&mask等于t[c

index]&mask,而且二者不等于0,则t[1]与t[c

index]相冲突,转

,mask左移3位(或乘8);
[0119]
s102:算法结束:本算法时间复杂度为o(n)。冲突检测算法算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。
[0120]
所述排课的预处理包括等价类的划分、教室分类及时间预处理。
[0121]
再进一步的,所述等价类的划分用于将具有共同听课对象的任务划分在同一等价类中,在每个等价类之间只存在地点上的冲突,而没有时间上的冲突,然后按照的大小,从大到小进行处理。
[0122]
具体的,等价类的划分可以先按年级分,然后再按系别分,如下所示:听课对象等价类的划分,
[0123]
自控系机械系化工系管理系:
[0124]
99级n1子类1子类2子类3子类4;
[0125]
98级n2子类5子类6子类7子类8;
[0126]
97级n3子类9子类10子类11子类12;
[0127]
96级n4子类13子类14子类15子类16;
[0128]
这样,先按年级分为四个类:99级(n1),98级(n2),97级(n3),96级(n4),而对每一个等价类n1、n2、n3、n4又可以按院系分为若干个子类,然后对每个子类分别进行排课处理,这样做就可以大大降低算法的复杂性。
[0129]
再进一步的,所述教室分类包括如下方式:
[0130]
s301:首先将教室按照其类型分为若干个等价类:教室等价类的划分如教室类型等价类r、教室类型等价类r、普通教室r1、听力教授r5、投影教室r2、物理实验室r6、多媒体教室r3、化学实验教室r7、制图教室r4、计算机实验教学r8等;
[0131]
s302:根据教室的容量再分别对每个教室等价类进行划分:如分为0~30人、30~60人、60~90人、90~120人、120~180人等若干种。
[0132]
再进一步的,所述时间预处理包括以下操作方式:
[0133]
s401:构造时间模式库:例如一门课程的周学时数为4,那么它的时间组合方式可以有:“11”,“41”;表示该课程一周上两次,分别为周一的12节和周四的12节l同时,为了达到较好的上课效果,也要对这些时间模式进行分级,如时间模式分级举例:周学时优先级周一周二周三周四周五
[0134]
411141
[0135]
∶∶
[0136]
422243
[0137]
∶∶
[0138]
其中,将周一至周五用数字1~5表示,上课节次:12节、34节、56节、78节、晚12节、晚34节分别用数字1~6表示,例如数字“42”表示周四的34节这个时间单元,这样,对于每种周学时数,可以将所有合理的时间组合形式存入模式库中,以便进行时间处理时可以用时间模式库中的各种模式进行匹配。
[0139]
s402:时间数组:为了表示班级、教师、教室的可排课时间,分别为他们建立一维数组l例如,某位教师的初始可排课时间数组为(123456、123456、123456、123456123456),其中共有五组数据,分别表示一周中的五天;而一组数据共有6个字符“1、2、3、4、5、6”分别表示一天中的六个时间单元。当为某位教师分配时间后,相应的那位字符就置为0l,例如某位教师的可排课时间数组为(020456、103456、003456、120456、023456),则表示这位教师在周一的12节和56节,周二的34节,周三的12节和34节,周四的56节,周五的12节已经安排了课程,如果要再安排课程的话,就应该安排在非0的时间单元l对于班级和教室也可以进行同样的处理,分别标出可排课时间。
[0140]
进一步的,所述时间模式库是根据教务人员的经验,为各种周学时数不同的课程指定的一种时间组合方式。
[0141]
所述每一子类的排课处理包括以下步骤:
[0142]
s501:根据分治法的思想把整个排课过程分成时间分配和教室分配两个阶段;
[0143]
s502:依据贪婪法的算法思想,在时间分配时,总是在尚未分配的时间单元中选择上课效果最好的单元;
[0144]
s503:而在时间分配发生死锁时,会向上回溯搜索到发生冲突的最近一个记录,然后对它进行重排以解决冲突。
[0145]
进一步的,所述每一子类的排课处理具体处理过程如下:
[0146]
b101:设定优先级:对子类中的课程计算优先级l设优先级函数为:d(g)=j(g)*c1 t(g)*c2 p(g)*c3;
[0147]
其中,j(g)表示课程级别,选修课的课程级别设置为1,必修课的课程级别设置为2;t(g)表示该课程的周学时数;p(g)表示该课程的参与人数;c1、c2、c3是可以调整的参数。由公式可以看出课程级别越高、周学时越多、参加人数越多的课程,其d(g)值越大,其优先级也越高;反之,d(g)值越小,其优先级越低。这样,就可以根据计算的优先级的高低对课程进行排序,优先级高的优先调度。
[0148]
b102:查询可用时间单元;
[0149]
b103:查找适当的时间模式:找到可排课时间后,根据课程的周学时数在时间模式库中匹配适当的时间模式。完成以上工作后,就确定了课程的上课时间和地点,如果在处理中发生锁死,则可根据回溯法的思想向上回溯搜索到发生冲突的最近一个记录,然后对它进行重排以解决锁死,如果仍不能解决锁死问题,则可以将该课程信息输出到冲突列表中。
[0150]
进一步的,所述查询可用时间单元包括以下步骤:
[0151]
a101:初始化某门课程的最大可安排时间数组,为(123456、123456、123456、123456、123456);
[0152]
a102:找出参加该课程学习的所有班级;
[0153]
a103:查询每个班级的时间数组,得到班级的已排课时间,并将其与课程的最大时间数组相“与”,得到该课程不能安排的时间单元;
[0154]
a104:依次处理教师时间数组和相关教室时间数组。这样,该课程最终的可安排时间数组就是班级、教师、教室可排课时间的交集。
[0155]
所述人工干预的处理中所设计的人工干预过程有:等价类划分中参数的设置、教室类型的设置、时间模式库的设置、优先级函数中参数的设置。用户可以根据自己的具体要求对这些参数和库进行设置,另外,对于计算机排出的课程表,用户也可以通过人机交互进行适当调整,从而得到用户满意的课程表。
[0156]
本实施例在使用时,利用冲突检测算法可实现在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i门课程在人工干预下改成星期数为week、时间段为segment的位置;为了降低课程调度的算法复杂性,我们主要采用了化整为零的思想及优先级算法,以教学计划和各种特殊要求为约束条件进行组合规划,解决各因素之间的冲突。为了合理使用教室,我们采用了教室分类的办法,以便尽可能在课程编排过程中避免上课人数少的课程盲目强占容量大的教室现象,计算机自动排课配合人工干预,以便可以使得各个高校能够根据自己的具体要求对排课算法中的一些参数进行设置和调整,从而得到用户满意的课程表。本申请以拖拽式操作对课程表中所有课程快速调整,大大缩短了排课周期,提高排课准确性,提高了教务人员管理效率,通过系统合理安排教师资源,教室资源,老师课表,学生课表,教室课表,班级课表查看,让课程管理和日常排课清晰有序。同时,便捷的排课系统自动生成的课程表,可清晰的查看教师和教室的空余时间,学校可充分利用空余时间来安排教室和教师,便于学校安排课程以及教室出租等,学员选班排课,学校排课软件系统自动检测排课冲突,有效避免撞课现象,解决传统排课繁杂问题;按排课课程学员刷卡考勤上课,系统自动扣除课时,并可查询时间段内课时消耗情况,运用学校排课软件,可以帮助教务工作运转准确高效智能化,既省时又省力。直观的数据反馈,让学校的资源利用更合理,
大大提高了办公效率。
[0157]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

技术特征:
1.一种可视化快捷智能排课方法,其特征在于,包括如下步骤:s1:鼠标选择需要排课的课程;s2:拖拽该课程放入课程表中;s3:填写课程教师,上课时间必要信息;s4:保存;所述需要排课的课程设为{c1,c2

cn},课程总数为n,而各门课程每周安排次数为{n1,n2

nn},各门课程每次为连续的2学时,每周教学日共5天,每周的教学总时间段数为5
×
4=20,并存在以下约束关系:n≤20;n=6n,i=1,ni≤20;所述可视化快捷智能排课方法还包括设计适当的数据结构和排课算法;所述数据结构包括对于每一门课程,分配2个字节的时间段分配字:{t1,t2

tn},有效的时间段分配字的值应小于32768,而大于等于32768的时间段分配字对应于那些当前无效的课程;所述排课算法的目标为确定{c1,c2

cn}所对应的{t1,t2

tn}。2.根据权利要求1所述的一种可视化快捷智能排课方法,其特征在于,所述排课算法包括自动排课算法、冲突检测算法和基于优先级的排课算法,所述自动排课算法:输入{c1,c2

cn}、{n1,n2

nn},输出{t1,t2

tn};所述冲突检测算法为根据数据结构做如下运算:t[i]=t[i]&(~(7<<(week

1)*3)) (segment<<(week

1)*3);所述基于优先级的排课算法包括排课的预处理、每一子类的排课处理和人工干预的处理。3.根据权利要求2所述的一种可视化快捷智能排课方法,其特征在于,所述自动排课算法包括以下步骤:s51:初始化:星期值week=1,时间段值segment=1,{t[1],t[2]

t[n]}中各时间段分配字清零;s52:新一轮扫描课程:置继续处理标志flag=0,对课程索引值c

index=1,2

n进行以下操作:c1:如果n[c

index]>0,则把segment的值写入t[c

index]的第(week

1)33~week33

1位中n[c

index]的值减1;c2:如果n[c

index]>0,则置flag=1,如果week=5并且segment=4,则置flag=1,并转s53,否则如果segment=4,则置segment=1,且week增1,否则segment增1;c3:检测是否已全部安排完毕:如果flag=1,则转s52,否则转s53;s53:检测是否成功:如果flag=1,则开课次数过多,否则课程安排成功;s54:算法结束:本算法的时间复杂度为o(n),而存储时间段分配字所用空间为2n个字节。4.根据权利要求3所述的一种可视化快捷智能排课方法,其特征在于,所述冲突检测算法包括判断同一个时间段是否已有其它课程安排,具体判断方式分为两步:一、设人工调整的时间段分配字为t[1];二、判断时间段分配字t[1]与{t[2],t[3]

t[n]}中的某个分配字是否存在相同课程分配位上的相等的非零时间段值,或{t[2],t[3]

t[n]}中是否存在与t[1]冲突的时间段分配字。
5.根据权利要求4所述的一种可视化快捷智能排课方法,其特征在于,所述冲突检测算法:输入t1和{t2

tn},输出与t1冲突的{t2

tn}中的时间段分配字。6.根据权利要求5所述的一种可视化快捷智能排课方法,其特征在于,所述冲突检测算法包括以下步骤:s101:

对c

index=2,3

n做初始化屏蔽字mask=7;

对星期值week=1,2,3,4,5,如果t[1]&mask等于t[c

index]&mask,而且二者不等于0,则t[1]与t[c

index]相冲突,转

,mask左移3位或乘8;s102:算法结束:本算法时间复杂度为o(n)。7.根据权利要求2所述的一种可视化快捷智能排课方法,其特征在于,所述排课的预处理包括用于将具有共同听课对象的任务划分在同一等价类中,在每个等价类之间只存在地点上的冲突,而没有时间上的冲突,然后按照的大小,从大到小进行处理的等价类的划分、教室分类及时间预处理;所述教室分类包括如下方式:s301:首先将教室按照其类型分为若干个等价类;s302:根据教室的容量再分别对每个教室等价类进行划分;所述时间预处理包括以下操作方式:s401:构造时间模式库:时间模式库为根据教务人员的经验,为各种周学时数不同的课程指定的一种时间组合方式;s402:时间数组。8.根据权利要求7所述的一种可视化快捷智能排课方法,其特征在于,所述每一子类的排课处理包括以下步骤:s501:根据分治法的思想把整个排课过程分成时间分配和教室分配两个阶段;s502:依据贪婪法的算法思想,在时间分配时,总是在尚未分配的时间单元中选择上课效果最好的单元;s503:而在时间分配发生死锁时,会向上回溯搜索到发生冲突的最近一个记录,然后对它进行重排以解决冲突。9.根据权利要求8所述的一种可视化快捷智能排课方法,其特征在于,所述每一子类的排课处理具体处理过程如下:b101:设定优先级:对子类中的课程计算优先级l设优先级函数为:d(g)=j(g)*c1 t(g)*c2 p(g)*c3;b102:查询可用时间单元;b103:查找适当的时间模式:找到可排课时间后,根据课程的周学时数在时间模式库中匹配适当的时间模式;所述查询可用时间单元包括以下步骤:a101:初始化某门课程的最大可安排时间数组;a102:找出参加该课程学习的所有班级;a103:查询每个班级的时间数组,得到班级的已排课时间,并将其与课程的最大时间数组相“与”,得到该课程不能安排的时间单元;a104:依次处理教师时间数组和相关教室时间数组。
10.根据权利要求9所述的一种可视化快捷智能排课方法,其特征在于,所述人工干预的处理中人工干预过程有等价类划分中参数的设置、教室类型的设置、时间模式库的设置、优先级函数中参数的设置。
技术总结
本发明公开了一种可视化快捷智能排课方法,涉及教学管理技术领域;为了解决不能针对性满足一些教师或课程的特殊要求问题;具体包括如下步骤:鼠标选择需要排课的课程;拖拽该课程放入课程表中;填写课程教师,上课时间必要信息;保存;所述需要排课的课程设为{C1,C2


技术研发人员:虞晓波 吴欢
受保护的技术使用者:上海网梯数码科技有限公司
技术研发日:2021.04.06
技术公布日:2021/6/29

转载请注明原文地址:https://doc.8miu.com/read-14737.html

最新回复(0)