一种高效智能的排课方法及系统与流程

文档序号:11865510阅读:533来源:国知局
一种高效智能的排课方法及系统与流程

本发明涉及教学管理领域,特别是一种高效智能的排课方法及系统。



背景技术:

在学校教学管理工作中,排课一直是一项极其繁重且非常重要的工作,一个完善的排课方案是保证教学秩序正常进行的前提和基础。而随着招生规模的扩大、教学资源紧缺以及教学形式多样化等一系列现象,实际排课过程中碰到的约束条件及规则冲突也是越来越强,而传统的手工排课方法要么耗时很久,要么很难出一个比较完善的排课方案。

排课问题是经典的NP完全问题,目前也产生了很多排课的方法及思路,如基于贪心算法、基于回溯算法、基于遗传算法等等。贪心算法虽然时间复杂度比较低,但是比较容易出现局部最优,也可能找不到可行解;回溯算法虽然有通用解题法之称,但走不通就退回再走的思路注定了需要较长的时间;而遗传算法需要通过生成大量的初始值后再不断的优胜劣汰,需要消耗大量的空间,而没有主动依据条件生成课表,存在一定的随机性,也导致大量时间的浪费。

本发明针对教学管理领域中的排课问题进行了算法和系统的设计,先利用模拟人工排课的快速排课方法快速生成初始课程表,再利用迭代逼近的深度优化排课方法进行深度优化。经实践,该方法和系统能够高效智能的生成完善的课程表,大大降低了学校排课任务的工作量。



技术实现要素:

本发明目的是,在现有技术背景下,提出一种高效智能的排课方法及系统主要针对教学管理中的排课问题进行了算法和系统的设计,先利用模拟人工排课的快速排课方法快速生成初始课程表,再利用迭代逼近的深度优化排课方法进行深度优化。该方法和系统能够高效智能的生成完善的课程表,大大降低了学校排课任务的工作量。

本发明技术方案是,一种模拟人工排课的快速排课方法,包括:

步骤一:对数据库中的班级、学科、课程、周课时、老师、教室等基础数据和用户设定的约束规则进行预处理,生成一张排课用的基础表:先对基础数据进行关联生成基础表,再根据用户约束规则对基础表中的标记进行更新。

步骤二:定义排课优先规则,约束条件强的优先,对各个班级、各个学科、各门课程进行排课前的优先级排序,生成排课优先级顺序表。

步骤三:从排课优先级顺序表中依次取出待排的班级和学科,先从排课用的基础表中生成候选时间集,再按照约束规则在基础表中选择周课时对应的时间集合,并将所选时间集合标记更新至排课用的基础表。这里,约束规则一方面根据用户设定的“一定”>“尽量”>“无设定”,另一方面,在可选时间集合内,尽可能挑选比较分散的时间集合,如一周3节课,优先选择每天1节课且、不连续3天上课的时间集合。

步骤四:依次取出待排的班级和学科循环进行步骤三,直到排课优先级顺序表中所有班级的学科排课完毕,该方法快速生成了初始课程表。

进一步,本发明公开一种迭代逼近的深度优化排课方法,包括:

步骤一:定义目标评价函数f(S),初设总迭代次数c_a,初设未发生变更的次数c_b,用于新解旧解的比较依据及迭代终止条件。目标评价函数f(S)综合考虑未排学科课时数、课程均匀分布程度、老师上课均匀程度等因素。

步骤二:对课程表S0,随机选择某些班级的某些学科,依据模拟人工排序的快速排课方法,对这些学科进行重排,获得新的课程表S1。

步骤三:计算f(S0)与f(S1),若S1优于S0,则用S1替换S0,若S1差于S1,则以极小概率a用S1替换S0。这里,以小概率的将差解替换优解,可以跳出局部最优的情况。

步骤四:重复上两步(步骤二和步骤三),直到总迭代次数>c_a或者S0未发生变更的次数>c_b,则停止,最终S0为该学校的深度优化课程表。

本发明公开一种高效智能的排课系统,包括:数据源模块、数据预处理模块、模拟人工排课的快速排课模块、迭代逼近的深度优化排课模块。

所述数据源模块,用于录入学校的基础信息及用户自定义的排课规则。学校基础信息包含学校信息、班级信息、老师信息、学科信息、课程信息、教室信息等等;用户自定义的排课规则如某学科某时间一定、优先或者不排课,某老师某时间是否排课,是否设置连堂课和合班课等等。

所述数据预处理模块,对基础数据进行关联,生成排课用的基础信息表,并根据用户规则对基础信息进行标记设定。其中包括两个个子模块:数据关联子模块、标记设定子模块。所述数据关联子模块,对基础数据进行关联,生成排课用的基础信息表,包含班级、学科、老师、学科周课时数、上课时间段、连堂时间段、上下午时间段、标记1、标记2、…、标记n、排课标记等等。所述标记设定子模块,对用户设定的“一定”、“尽量”、“一定不”进行标记,如默认0,“一定”记为2,“尽量”记为1,“一定不”记为-1,对其他连堂课、合班课等规则采用类似的规则分别进行标记。通过所述两个子模块可以生成排课用的基础信息表。

所述模拟人工排课的快速排课模块,利用模拟人工排课的快速排课方法,快速生成尽可能满足规则的课程表。

所述迭代逼近的深度优化排课模块,利用迭代逼近的深度优化排课方法,对快速生成的课程表进行深度优化,迭代出一个最优的课程表。

有益效果:本发明提出一种高效智能的排课方法,先利用模拟人工排课的快速排课方法快速生成初始课程表,再利用迭代逼近的深度优化排课方法进行深度优化。本发明方法和系统能够高效智能的生成完善的课程表,大大降低了学校排课任务的工作量,课程表的安排更加合理科学。

附图说明

图1是本发明实施例中的模拟人工排课的快速排课方法的流程示意图。

图2是本发明实施例中的迭代逼近的深度优化排课方法的流程示意图。

图3是本发明实施例中的高效智能的排课系统的结构示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。

在本发明中,在对学校基础数据进行关联、标记等预处理后,通过模拟人工排课的快速排课方法快速生成初始课程表,再通过迭代逼近的深度优化排课方法进行深度优化,迭代出一个完善的课程表,大大降低了学校排课任务的工作量。

参阅图1所示,本发明实施例的模拟人工排课的快速排课流程,具体步骤为:

步骤11:对数据库中的班级、学科、老师等基础数据和用户设定的约束规则进行预处理,生成一张排课用的基础表。先对基础数据进行关联生成基础表,再根据用户规则对基础表中的标记进行更新。在本发明实施例中,预处理后的排课基础表字段包括:班级ID、学科ID、教师ID、学科周课时数、周-时段ID、周ID、时段ID、连堂课时段ID、上下午时段ID、优先排标记、连堂课标记、最终排课标记。其中:

●学科周课时数:每个班级每个学科每周上的课时数

●关于时段相关ID:周ID为1~5,时段ID为1~n(n表示该班级每天n堂课),周-时段ID为周ID和时段ID的交叉集合(共5*n个时段集合),连堂课时段ID为1~3(若早上4节下午2节),上下午时段ID为1~2(1表示上午,2表示下午)

●关于优先排标记:-1~2,取值根据用户设定的规则,2表示“一定排”,1表示“尽量排”,-1表示“一定不排”,用户无设定规则时默认0

●关于连堂课标记:0~1,1表示连堂课方式上课,0表示无连堂课

●最终排课标记:排课过程中更新,0表示未排,1表示已排

生成的基础表中,每个班级每个学科每个时段均生成记录,即每个班级每个学科5*n条记录,优先排标记、连堂课等用户规则标记按用户设定规则更新,最终排课标记初始默认为0,排课过程中更新。

步骤12:定义排课优先规则,约束条件强的优先,对各个班级各个学科进行排课前的优先级排序,生成排课优先级顺序表。在本发明实施例中,排课优先级顺序表字段包括:班级ID、学科ID、教师ID、学科周课时数、主副课标记、优先排标记、连堂课标记、老师周课时数、老师互斥标记、教室数量、优先排标记计数、排序优先级标记。其中:

●主副课标记:主课记为1,副科记为0

●老师周课时数:每个老师每周上的课时数

●老师互斥标记:部分老师不能同时上课,如存在互斥老师,则记为1,否则为0

●教室数量:学校能够支持同时上课的教室数量

●优先级标记计数:优先排标记>0的时段集合计数

●排序优先级标记:根据定义的排课优先规则生成的排课优先级,在本发明实施例中按照如下规则:教室数量(升序)>连堂课标记(倒序)>主副课标记(倒序)>优先排标记(倒序)>优先级标记计数(升序)>老师互斥标记(倒序)>老师周课时数(倒序)。

步骤13:从排课优先级顺序表中依次取出待排的班级和学科,先从排课用的基础表中生成候选时间集,再按照约束规则选择周课时对应的时间集合,并将所选时间集合标记更新至排课用的基础表。在本发明实施例中,选择时间集合的方法如下:

●将每天的可选时间集合按照优先级标记倒序,主课按照连堂课时段ID升序,副课按照连堂课时段ID倒序,再随机排序,得到每天的有序可选时间集合;

●若学科周课时n=1,则随机取一天的第一个时间;

●若学科周课时n=2,则随机取非连续两天的第一个时间;

●若学科周课时n=3,则随机取非连续三天的第一个时间;

●若学科周课时n=4,则随机取四天的第一个时间;

·若学科周课时n=5,则随机取五天的第一个时间;

●若学科周课时n>5,则先取五天的第一个时间,再循环以上步骤。

步骤14:循环步骤13,直到排课优先级顺序表中所有班级的学科排课完毕,该方法快速生成了初始课程表。。

参阅图2所示,本发明实施例的迭代逼近的深度优化排课流程,具体步骤为:

步骤21:定义目标评价函数f(S),总迭代次数c_a,解未发生变更的次数c_b,用于新解旧解的比较依据及迭代终止条件。目标评价函数f(S)综合考虑未排学科课时数、课程均匀分布程度、老师上课均匀程度等因素。在本发明实施例中,未排学科课时数为A,班级连续两天上同一学科的课时数为B,老师每天课时数方差为C,f(S)=w1*A+w2*B+C。

步骤22:对课程表S0,随机选择某些班级的某些学科,依据模拟人工排序的快速排课方法,对这些学科进行重排,获得新的课程表S1。在本发明实施例中,每次选择某些班级的某些学科,共计k=所有班级的所有课程数*20%个。

步骤23:计算f(S0)与f(S1),若S1优于S0,则用S1替换S0,若S1差于S1,则以极小概率a用S1替换S0。这里,以小概率的将差解替换优解,可以跳出局部最优的情况。

步骤24:重复上两步(22-23),直到总迭代次数>c_a或者S0未发生变更的次数>c_b,则停止,最终S0为该学校的深度优化课程表。

参阅图3所示,本发明实施例的系统结构,包括:

数据源模块31、数据预处理模块32、模拟人工排课的快速排课模块33、迭代逼近的深度优化排课模块34。

数据源模块31,用于录入学校的基础信息及用户自定义的排课规则。学校基础信息包含学校信息、班级信息、老师信息、学科信息、课程信息、教室信息等等;用户自定义的排课规则如某学科某时间一定、优先或者不排课,某老师某时间是否排课,是否设置连堂课和合班课等等。

数据预处理模块32,对基础数据进行关联,生成排课用的基础信息表,并根据用户规则对基础信息进行标记设定。其中包括两个个子模块:数据关联子模块321、标记设定子模块322。

数据关联子模块321,对基础数据进行关联,生成排课用的基础信息表,包含班级ID、学科ID、教师ID、学科周课时数、周-时段ID、周ID、时段ID、连堂课时段ID、上下午时段ID、优先排标记、连堂课标记、最终排课标记。

标记设定子模块322,对用户设定的“一定”、“尽量”、“一定不”进行标记,默认0,“一定”记为2,“尽量”记为1,“一定不”记为-1,连堂课有设定记为1,无设定记为0,最终排课标记初始化为0。

模拟人工排课的快速排课模块33,利用模拟人工排课的快速排课方法,快速生成尽可能满足规则的课程表。

迭代逼近的深度优化排课模块34,利用迭代逼近的深度优化排课方法,对快速生成的课程表进行深度优化,迭代出一个最优的课程表。

以上所述仅为本发明专利的一种实施例而已,并不用以限制本发明专利,凡在本发明专利的精神和原则之内所作的任何修改、等同替换和改进等,均以包含在本发明专利的保护范围之内。

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