一种动态智能分班排课方法与流程

文档序号:17132148发布日期:2019-03-16 01:25来源:国知局
一种动态智能分班排课方法与流程

本发明属于教务管理领域,特别涉及一种智能分班排课技术。



背景技术:

目前,包含智能排课算法的软件系统主要应用于高校中,每个学期都需要课程、教室、师资和学生志愿进行自动调度从而实现智能排课功能。

然而,传统智能排课算法有三大问题:

第一,它是一次性排课算法,需要在所有课开课之前就排好课,中途的修改就只能通过手动调整,对于高校来讲可以满足需求,但对于教育培训机构而言,为了资源最大化利用,很多都是滚动开班,随时都有可能需要开班排课,不可能提前一次性排号所有课程;这样若仍旧采用传统的排课算法,则无法解决教育培训机构的排课需求;

第二,传统的智能排课算法无法支持根据报名人数进行自动分班的功能,在教育培训机构中,每个课程都有最大和最小开班人数,培训机构需要根据资源占用情况进行灵活开班;

第三,传统智能排课算法无法考虑老师自身的上课时间要求,在教育培训机构中老师属于稀缺资源,排课时需要考虑老师自身的时间安排,上课时间并不完全由培训机构决定。



技术实现要素:

为解决上述技术问题,本发明提出一种动态智能分班排课方法,基于红黑树,根据报名人数以及资源占用情况自动分班排课,能够实现排课结果最优化,并且实现资源利用最大化。

本发明采用的技术方案为:一种动态智能分班排课方法,包括:

s1、创建三维数组存储排课时间与教室信息,所述三维数组中的一维为一周中的x天,三维数组中的二维为一天中的y个时段,三维数组中的三维为全部的z个教室;

s2、将n个班级随机排入步骤s1创建的三维数组;将老师按照教授课程随机关联班级;然后采用红黑树记录三维数组中的位置;红黑树的节点中班级为键,位置为值;

s3、重复步骤s2得到m个红黑树;并从m个红黑树中随机选取2个红黑树,随机复制其中一个红黑树生成新的红黑树;

s4、生成一个0-1之间的第一随机数,若第一随机数小于第一概率,则执行步骤s7;否则执行步骤s5;

s5、遍历步骤s3选出的这2个红黑树的节点,随机选择这2个红黑树中其中一个红黑树的当前遍历节点复制到新的红黑树的对应位置;直至遍历完这2个红黑树的所有节点;

s6、生成一个0-1之间的第二随机数,若第二随机数大于第二概率,则执行步骤s8;否则执行步骤s7;

s7、将新的红黑树中随机k个节点对应的三维数组的位置进行调换;

s8、计算m个红黑树各自对应的完成度,若最小完成度大于新的红黑树的完成度,则执行步骤s10,否则执行步骤s9;

s9、用新的红黑树替换随机一个m个红黑树中完成度小于新的红黑树完成度的红黑树;

s10、若当前的m个红黑树中的最高完成度达到100%,则根据最高完成度的红黑树生成课表;否则返回步骤s5。

步骤s8所述红黑树完成度计算式为:

其中,i表示班级,j表示标准,sij=1表示第i个红黑树满足第j个标准,sij=0表示第i个红黑树不足第j个标准;j=1,2,3,4,5,j=1表示班级排进空教室,j=2表示班级人数小于教室容量,j=3表示班级课程类型包含于教室可排课类型列表中,j=4表示班级上课时间包含于可排课时间列表中,j=5表示班级上课时间包含于老师可排课时间列表中。

第一概率小于第二概率。

步骤s2所述n个班级为各课程所开班级数之和;各课程所开班级数根据分班策略、当前报名人数以及课程开班人数确定。

所述分班策略为最大化分班或最小化分班。

步骤s1之前还包括以下分步骤:

a1、配置可排课时间信息以及教室信息;所述可排课时间信息包括:确定一周7天中可排课的日期,以及可排课日期中的可排课时间段;所述教室信息包括:教室名称、可容纳人数以及可排课程列表;

a2、设定起始排课日期;

a3、根据起始排课日期获取各教师对应的可排课时间段;

a4、配置老师信息和班级信息,老师信息包括:老师id、老师名称、老师对应的教授课程列表、老师对应的可排课时间列表;班级信息包括:班级名称、课程id、单次课时、每周上课次数、班级对应的可排课时间列表。

本发明的有益效果:本发明的智能排课方法,根据报名人数以及分班策略,实现自动分班,然后基于红黑树完成度,得到排课最优解,使得教育培训机构排课结果最优,本发明的方法可在已排好课程基础上随时新增排课,实现实时动态排课的效果;本发明的方法提升了教育培训机构以及教育综合体等组织机构的分班排课效率,并且消除了人工或半人工可能造成的排课失误、提升排课灵活性和资源利用率。

附图说明

图1为本发明的一种动态智能分班排课方法流程图。

具体实施方式

为便于本领域技术人员理解本发明的技术内容,下面结合附图对本发明内容进一步阐释。

本发明的一种动态智能分班排课方法基于红黑树完成度,得到排课最优解,满足现有的教育培训机构动态排课需求,实现实时智能排课的效果;提升了教育培训机构以及教育综合体等组织机构的分班排课效率,并且节省人力成本,消除了人工或半人工可能造成的排课失误、提升排课灵活性和资源利用率。

本发明的实现过程包括三个部分:分班、排课准备以及排课算法;

a、分班部分确定开设n个班级,包括:

a1、配置课程信息;包括:课程id、名称、类型、班级、最小开班人数、最大开班人数和课时数等;

a2、读取每门课程当前报名人数;从数据库中读取每门课程当前报名人数,老师和教室资源占用情况;

a3、设置分班策略;少分班策略或多分班策略;

a4、根据分班策略和老师教师资源情况确定开班数量和学生班级分配实现自动分班。按照分班策略在老师和教室资源允许占用范围之内实现尽量多分班或尽量少分班。比如:一门课程开班人数为5-8人,现在有24名学生报名,那么既可以开3个班,也可以开4个班,如果希望达到师资的最大化利用,则a3设置为少分班策略,开3个8人班为宜,如果需要考虑分班后能持续会有学生报名插班,为了避免因为人数不足无法临时开班而失去学生的风险,则a3设置为多分班策略,开4个6人班为宜。

b、排课准备部分具体为:

b1、配置全局时间和教室信息;设置时间信息包括:一周七天哪些天可以排课,分几个时段以及每个时段的时间,教室信息包括教室名称、可排课程类型列表和可容纳人数;

b2、设置排课起始日期;通过设置排课起始日期,保证当前批次排课不早于起始日期;

b3、根据排课起始日期读取已排课时间和教室信息;确定教室已被占用的时间段;

b4、配置老师信息和班级信息;老师信息包括:老师id、名称、教授课程列表、可排课时间列表,班级信息包括:班级名称、课程id、单次时长、每周上课次数、可排课时间列表。

c、排课算法部分包括以下步骤:

c1、创建三维数组存储排课时间和教室信息,并排除已排课时间和教室;数组第一维为一周中的x天,数组第二维为一天中的y个时段,数组第三维为全部z个教室,并将已排课的w个教室时间标记为已占用,将排课问题转化为将需要排课的n个班级分配到这s=xyz-w个位置中(n<=s)。本申请中的y个时段应理解为一天中可以排课的若干个时间段。x,y,z的具体取值根据实际需要确定。

c2、将班级随机排入三维数组并用红黑树记录三维数组中的位置;将n个班级随机排入三维数组并用红黑树记录三维数组中的位置,红黑树中班级为键,位置为值;

c3、将老师按教授课程随机关联班级;

c4、重复步骤c2-c3随机生成m个这样的红黑树,m取值为m>=100,m数值越大算法运行时间越长;实际中根据需要确定具体取值。

c5、从m个红黑树中随机选择2个红黑树;复制其中一个红黑树生成新的红黑树,为了更好地保留最优解,本步骤还包括:生成0-1之间的随机数,若生成的随机数小于小概率p1(0<p1<=0.2),则进入步骤c9;否则进入步骤c6;

c6、对选出的2个红黑树的所有节点进行同时遍历;

c7、从当前2个红黑树结点中随机选择1个复制到新的红黑树中;

c8、重复步骤c7直至遍历完所有结点,生成一个同样大小的新红黑树;

c9、为了避免结果过早收敛无法达到最优解,本步骤生成0-1之间的随机数,若生成的随机数小于大概率p2(1>p2>=0.97),则执行步骤c11,否则进入步骤c10;

c10、对新红黑树的随机k个节点对应的三维数组位置进行随机调换;为避免计算时间过长,一般情况下k的取值为1<=k<=3。

c11、计算新红黑树对应的完成度;若红黑树最低完成度大于新红黑树完成度,则执行步骤c13;否则执行步骤c12;

本实施例中总共有n个班级,5个标准,每个班级的排课满足几个标准就得几分,可以是0-5分,总分是所有班级都满足5个标准,总共5n分,完成度就是计算当前排课方案的得分占总分的比例,比例越高说明离期望越近,当比例达到100%认为是最佳的方案;本实施例中每个红黑树对应的完成度的计算式为:

其中,i表示第i个班级,j表示第j个标准,如果第i个红黑树满足第j个标准,则sij=1,否则sij=0;标准1为班级排进空教室,标准2为班级人数小于教室容量,标准3为班级课程类型包含于教室可排课类型列表中,标准4为班级上课时间包含于可排课时间列表中,标准5为班级上课时间包含于老师可排课时间列表中。

c12、用新红黑树随机替换m个红黑树中完成度小于新红黑树完成度的某个红黑树;

c13、如果红黑树最高完成度没有达到100%,则重复步骤c5-c12,否则执行步骤c14;

c14、将最高完成度的红黑树对应的三维数组生成首周课表;

c15、根据首周课表和每个课程的课时数生成全部课表,班级单节课程时长i,每周上课次数f,课程总课时数t,班级上课总次数班级上课周数

本发明的智能排课方法,可以根据报名人数和资源占用情况进行自动分班,并根据课程的类型和课时、教室的类型和容纳人数、老师所能教授的课程和可上课的时间限制、班级的单节课时、上课频率和排课时间限制进行自动排课,且提供动态排课支持,实现实时智能排课功能。采用本发明可以为教育培训机构、教育综合体等组织机构节省人力成本、大大提升分班排课效率、完全消除人工或半人工可能造成的排课失误、提升排课灵活性和资源利用率。

本发明还提供一种智能排课系统,包括:资源池模块、配置模块以及算法模块;配置模块根据资源池模块的数据进行各项配置;算法模块根据配置信息计算得到最佳课表;具体的:

资源池模块包括:所开设课程的课程列表,学员报名表,采集的授课老师空闲时间表,教室可上课时间表。

配置模块包括:课程配置单元,策略配置单元,班级配置单元,时间配置单元,教室配置单元,老师配置单元;

课程配置单元包括:课程id、名称、类型、班级、最小开班人数、最大开班人数和课时数等;

策略配置单元为:设置分班策略;少分班策略或多分班策略;

班级配置单元包括:班级名称、课程id、单次时长、每周上课次数、可排课时间列表;

时间配置单元包括:一周七天哪些天可以排课,分几个时段以及每个时段的时间;

教室配置单元包括:教室名称、可排课程类型列表和可容纳人数;

老师配置单元包括:老师id、名称、教授课程列表、可排课时间列表,

算法模块包括:三维数组单元,红黑树单元,完成度计算单元,交叉复制单元,随机调换单元,课表推演单元;三维数组单元根据时间配置信息以及教室配置信息创建三维数组,数组第一维为一周中的x天,数组第二维为一天中的y各时段,数组第三维为全部z个教室,并将已排课的w个教室时间标记为已占用,将排课问题转化为将需要排课的n个班级分配到这s=xyz-w个位置中(n<=s)。

红黑树单元用于记录将将n个班级随机排入三维数组后,三维数组的位置,其中红黑树中班级为键,位置为值;本发明中班级随机排入三维数组;

完成度计算单元用于计算红黑树完成度,计算式为:

其中,i表示第i个班级,j表示第j个标准,如果第i个红黑树满足第j个标准,则sij=1,否则sij=0;标准1为班级排进空教室,标准2为班级人数小于教室容量,标准3为班级课程类型包含于教室可排课类型列表中,标准4为班级上课时间包含于可排课时间列表中,标准5为班级上课时间包含于老师可排课时间列表中。

交叉复制单元用于当第一随机数小于小概率p1时,从所生成的若干红黑树中随机选取两个红黑树进行交叉复制得到一个新的红黑树,具体过程为:

1、根据红黑树单元随机生成m个的红黑树,m取值为m>=100,m数值越大算法运行时间越长;实际中根据需要确定具体取值。

2、从m个红黑树中随机选择2个红黑树;复制其中一个红黑树生成新的红黑树,为了更好地保留最优解,本步骤还包括:生成0-1之间的随机数,若生成的随机数小于小概率p1(0<p1<=0.2),则进入步骤6;否则进入步骤3;

3、对选出的2个红黑树的所有节点进行同时遍历;

4、从当前2个红黑树结点中随机选择1个复制到新的红黑树中;

5、重复步骤4直至遍历完所有结点,生成一个同样大小的新红黑树;

随机调换单元用于当第二随机数小于大概率p2时,对交叉复制单元得到的新的红黑树中的若干节点进行互换处理,具体过程如下:

为了避免结果过早收敛无法达到最优解,本步骤生成0-1之间的随机数,若生成的随机数小于大概率p2(1>p2>=0.97),则返回完成度计算单元,否则执行以下过程;

对新红黑树的随机k个节点对应的三维数组位置进行随机调换;为避免计算时间过长,一般情况下k的取值为1<=k<=3。

课程推演单元用于根据完成度为100%的红黑树对应的三维数组生成首周课表;然后根据首周课表和每个课程的课时数生成全部课表,班级单节课程时长i,每周上课次数f,课程总课时数t,班级上课总次数班级上课周数

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1