目前流行的几种排课算法的介绍

合集下载

高中选科排课方法

高中选科排课方法

高中选科排课方法
高中选科排课的方法主要有以下几种:
1. 全走班排课:全走班排课是一种比较常见的排课方式,主要按照学生的选科情况和科目特点进行排课。

首先收集学生的选课信息及统计选课人数,然后确定走班班级个数及走班班级上课顺序。

接着自动走班班级分班,配备走班班级教室与走班班级的任课教师。

自动生成每位学生的走班班级、走班教室、每个走班顺序表。

确定每天的走班时段,自动生成走班任课教师的教学总课表。

自动打印走班教师的个人课表及每位学生的走班一生一课表。

走班课表确定后,再在其他时段排好行政科目的课表。

2. 分类分班排课:分类分班排课是根据学生的选科情况,将学生分成不同的班级进行排课。

首先收集学生的选课信息及统计选课人数,然后确定分类分班的依据和标准。

接着根据分类分班的依据和标准将学生分成不同的班级,并确定每个班级的任课教师和上课时间。

最后根据分类分班的班级和上课时间进行排课。

3. 分层分班排课:分层分班排课是根据学生的学习水平,将学生分成不同的层次进行排课。

首先收集学生的选课信息及统计选课人数,然后确定分层分班的依据和标准。

接着根据分层分班的依据和标准将学生分成不同的层次,并确定每个层次的教学目标和教学内容。

最后根据分层分班的层次和教学目标进行排课。

以上是高中选科排课的几种方法,具体使用哪种方法需要根据实际情况进行选择。

在选择排课方法时,需要考虑学生的实际情况、学科特点、教师资源等因素,以保证排课的合理性和有效性。

高校排课系统算法探究

高校排课系统算法探究

高校排课系统算法探究排课问题早在上个世纪70年代,S.Even就证明是一个NP完全问题,即算法的计算时间是呈指数增长的,这一论断确立了排课问题的理论深度。

之后很多人尝试采用各种方法对此问题求解,如回溯算法、反复比较法、整数规划、规则系统、模糊理论。

这些非智能算法虽然在一定程度上解决了大学课程表问题,但都存在所求非最优解,课表质量不够满意的问题。

至9O年代初期,Colomim等人首先尝试应用遗传算法来解决课程表问题后,模拟退火、禁忌搜索、蚁群算法等智能优化算法,以及在此基础上的改进方法,都在课程表问题研究特别是理论研究上取得了一定的进展。

然而,面对纷繁复杂的实际情况,课程表问题在理论研究及其工程应用之间仍然存在很大的差距。

目前人们对NP完全问题研究的主要思想是如何降低其计算复杂度,即利用一个近似算法来代替,力争使得解决问题的时间从指数增长化简到多项式增长,这是解决排课问题一个很常见的思路。

一、几种常见排课算法1、遗传算法遗传算法是美国Michigan大学J.Holland教授于1975年首先提出来的,它是模拟达尔文生物进化论的计算模型,是一种具有鲁棒性、全局最优性、可并行处理性及高效性的搜索算法,用来对复杂系统进行优化,该算法应用到排课系统中的主要演算步骤如下:(1)根据排课因素产生基因编码和染色体,并随机产生一定数目的初始种群(一定数目的班级课程表);(2)对个体(班级课程表)适应度进行评估,如果个体的适应度符合优化准则,则输出最佳个体及其代表的最优解,并结束计算,否则转向第(3)步;(3)依据适应度选择再生个体;(4)按照一定的交叉概率和交叉方法生成新的个体;(5)按照一定的变异概率和变异方法生成新的个体;(6)由交叉和变异生成新一代的种群,然后返回第(2)步。

最后进行冲突的检测与消除。

2、蚂蚁算法20世纪90年代初意大利学者Dorigo.Maniez—ZO依照蚂蚁觅食原理提出了第一个“蚂蚁算法(antcolony algorithm)”。

天课时分配下的多阶段新高考走班制排课算法

天课时分配下的多阶段新高考走班制排课算法

天课时分配下的多阶段新高考走班制排课算法随着教育改革的推进,我国的高中教育也在不断地变革和创新中发展。

其中一项重要的改革就是实施多阶段的新高考制度,以提高学生的综合素质和能力,适应未来社会的需求。

而走班制排课算法的设计和实施则成为实施新高考制度的关键之一。

在多阶段新高考制度下,学生需要选择自己感兴趣和擅长的课程进行深入学习。

而走班制排课则要求学校根据学生的选课情况,科学合理地安排每个学生的上课时间和课程安排。

而天课时分配作为排课的基本要素之一,则是指根据每天的课程时间和学生的课时需求,合理分配每门课程的上课时间段。

走班制排课算法的设计首先需要根据学校的实际情况,确定每天的课程时间段和可用的教室资源。

一般情况下,每天会有若干个时间段,早上、上午、下午和晚上等。

同时,根据教室的大小和座位数,可以确定每个教室可容纳的学生数量和适合的课程类型。

其次,排课算法需要根据学生的选课情况和课时需求,确定每门课程的上课时间和所需教室资源。

例如,某门课程需要每周上两次课,每次课时为两个课时,那么就需要确定这门课程在哪几个时间段进行排课,并且需要保证在每个时间段内有足够的教室资源供该门课程使用。

针对,可以采用遗传算法等优化算法进行求解。

遗传算法是一种模拟大自然进化过程的优化算法,通过遗传和变异的操作,逐步寻找最优解。

在排课算法中,可以将每个时间段的可用教室作为一个基因,学生选课情况作为一个染色体,逐步优化每个时间段的教室资源分配,从而得到全局最优的排课结果。

为了提高算法的效率和准确性,还可以结合先进的排课软件进行实时调整和优化。

通过收集学生的选课意向和课时需求等信息,系统可以根据一定的规则和约束条件,自动进行排课,并及时反馈给学校和学生。

同时,还可以通过可视化和数据分析等手段,帮助学校了解课程优劣势、教室利用率和学生满意度等指标,为进一步优化排课算法提供参考依据。

综上所述,是一项复杂而关键的任务。

它不仅需要根据学生的选课情况和课时需求,合理分配每门课程的上课时间和教室资源,还需要确保整个排课过程的高效性和准确性。

经典排序算法总结

经典排序算法总结

经典排序算法主要包括以下几种:1. 冒泡排序(Bubble Sort):冒泡排序是一种简单的排序算法,通过重复遍历列表,比较相邻元素并交换它们的位置,使得较大(或较小)的元素逐渐从前往后移动。

2. 选择排序(Selection Sort):选择排序也是一种简单的排序算法,它通过不断选择最小(或最大)的元素并将其放到已排序部分的末尾,直到所有元素都排好序。

3. 插入排序(Insertion Sort):插入排序是将未排序部分的元素插入到已排序部分中的适当位置,从而实现整个列表的排序。

插入排序适用于较小规模的列表排序。

4. 快速排序(Quick Sort):快速排序是一种基于分治思想的排序算法,通过选取一个基准元素并将列表分为两部分,一部分是小于基准元素的,另一部分是大于基准元素的。

然后对这两部分分别进行递归排序,最终得到有序列表。

5. 归并排序(Merge Sort):归并排序也是一种基于分治思想的排序算法。

它将列表分为两部分,然后对这两部分进行递归排序,最后将排序好的两部分合并成一个有序列表。

6. 希尔排序(Shell Sort):希尔排序是一种插入排序的改进版本,通过定义一个增量序列并将列表分为多个子序列,然后对子序列进行插入排序。

随着增量的减小,子序列的数量逐渐减少,最后对整个列表进行一次插入排序。

7. 堆排序(Heap Sort):堆排序是一种基于二叉堆的排序算法。

它首先将列表构建成一个最大堆(或最小堆),然后将堆顶元素与堆尾元素交换,并将堆的大小减一。

重复这个过程,直到堆的大小为1,从而得到有序列表。

8. 计数排序(Counting Sort):计数排序适用于整数类型的列表排序。

它首先统计列表中每个整数的出现次数,然后将整数及其出现次数组成一个新的列表,最后对新的列表进行排序。

9. 基数排序(Radix Sort):基数排序是一种非比较排序算法,适用于整数和小数类型的列表排序。

它根据数字的位数进行分组,然后对每组数字进行排序,最后将所有组按照顺序合并得到有序列表。

自动排课算法的分析

自动排课算法的分析

2011年12月刊算法语言信息与电脑China Computer&Communication1.排课算法研究的意义不管是小初高还是大学,靠老师教课来学习还是占主要的部分,这是培养学生的主要途径。

在学期开始的时候,学校都会给每人发一张课程表,学生还有老师都是按照课程表来进行计划。

一张课程表打印出来十分简单,但是想把课程安排的紧凑合格,管理人员是需要下很大苦工的。

新学期开始前学校的管理人员都要整理教学计划,根据教学计划下教学任务书,然后结合教学计划和任务开始编排课程。

这个编排过程是繁重而关键的,因为在这些教学调度过程中,不仅有大量繁琐的数据整理工作,还有严谨思维的脑力劳动,需要填写并打印大量的表格。

21世纪以来,信息技术突飞猛进,计算机排课慢慢取代了手工排课,这一技术的发明大大减轻了管理人员的工作量,而且采用计算机排课有利于学校对老师教学贡献的评估,有利于优化学生的学习过程,也有利于学校领导决策更合理化,最为重要的是有利于学校教学质量的提高。

2.排课的现状分析在国外很早就有人研究课程编排问题,在 1962年,Gotlieb 提出了一个课表问题的数学模型,他利用匈牙利算法解决了三维线性运输问题。

然后,人们对课表问题的算法、解的存在性等方面做了许多深入探讨。

近40年来,在计算机新技术的基础上,人们又进行了不断地尝试,并取得一些成效。

如1965年,Mihoc 和Balas 将课表公式化为了一个优化问题;Krawczk 提出了一种线性编程的方法;Junginger 将课表问题简化为一个三维运输问题。

最近几年,我们在课程编排方面已经取得了一些成绩,但是对于多数学校而言,这种课表编排还不具备实用价值,只能在极为简单的情况下才能实现。

然而,人们并没有放弃研究课表问题,在九十年代,国外在课表问题研究方面的主要代表人物有加拿大Montreal 大学的Jean Aubin 和Jacques Ferland 、印度的Vastapur 大学管理学院的ArabindaTripathy 等。

排课系统几种常见算法

排课系统几种常见算法

排课系统几种常见算法谁说当前国内自动化的排课软件模式无一成功?今天看了一篇关于排课系统的文章,文章讲述了我国国内的排课系统没有一个是成功的,在高度智能化的今天,如果还有谁说有什么事计算机做不到的,那他绝对是农村来的,哦不,搞不好是火星来的,因为你像我们校管家的排课系统,很多农村都已经开始用这款软件自动化办公了。

然而当我以为这件事是计算机无法完成的时候,作者又跑出了一个让我都没有想到的问题,也许是外行看热闹,我只是觉得以计算机的处理性能,是不可能完不成的,却高估了编程者的水平,要想智能排课就需要编程呀,要编排课的程序就需要了解排课的意义和流程,最后还有最最核心的东西,那就是算法,算法的不同,会直接导致排课的结果不同,好的算法可以让你省时省力,而差的算法让你抓狂不已。

目前,已知的排课系统的算法有哪些呢?主要有四种第一种,一算法,这是美国一所大学的教授提出来的,它是一种迭代的启发式概率性的算法。

这种算发好处也很多,但是因为算法本身比较复杂,变量过多时,会严重影响排课速度,甚至可能导致崩溃。

第二种。

贪心算法,这种算法是具有侧重的,不会从全局考虑均衡优化,所以总的来说还是有一定缺陷。

第三种,动态规则法,这是一种用来解决多阶段决策的一种最优方式。

动态规划法与贪心法类似,都是将问题实例归纳为更小的、相似的子问题,并通过求解子问题产生一个全局最优解。

第四种,回溯算法,回溯法在用来求问题的所有解时,要回溯到根,且根的所有子都已被搜索过才结束;而在用来求问题的任一解时,只要搜索到问题的一个解就可结束,所以这种方法也过于耗时。

以上的每个算法,各有优缺,为了取长补短,高效的利用起这些算法,校管家的排课系统在通过无数的实验和总结之后,终于找到了一个均衡,使得排课的智能化成为了一种现实,而且,其独创的自动与手动混合模式,更是为该软件平添了许多赞。

高级自动化排程几种前沿算法浅析

高级自动化排程几种前沿算法浅析

⾼级⾃动化排程⼏种前沿算法浅析⽬前国内外主流的排程算法采⽤神经⽹络、遗传算法。

⼏种算法个有优点和缺点。

遗传算法: 理论基础为优胜劣汰、和XY染⾊体随机组合。

神经⽹络:理论基础为⽣物神经⽹络。

通过不断地寻找和组合神经元寻找最优路径和最优算法。

遗传算法:优点:根据XY染⾊体的配对关系能够准确的寻找⼯艺⽣产搭配⽅式,⼜根据优胜劣汰的⽣物竞争法则寻找最佳搭配⽅式,最终寻找出最优的⽣产路径。

1. 与问题领域⽆关切快速随机的搜索能⼒。

2. 搜索从群体出发,具有潜在的并⾏性,可以进⾏多个个体的同时⽐较,robust.3. 搜索使⽤评价函数启发,过程简单4. 使⽤概率机制进⾏迭代,具有随机性。

5. 具有可扩展性,容易与其他算法结合。

缺点:依赖初始条件,条件的更改反应慢。

对应时常更改需求的应⽤来说是⼀个挑战。

1。

没有能够及时利⽤⽹络的反馈信息,故算法的搜索速度⽐较慢,要得要较精确的解需要较多的训练时间。

2。

算法对初始种群的选择有⼀定的依赖性,能够结合⼀些启发算法进⾏改进。

3。

算法的并⾏机制的潜在能⼒没有得到充分的利⽤,这也是当前遗传算法的⼀个研究热点⽅向。

神经⽹络:优点:神经⽹络有很强的⾮线性拟合能⼒,可映射任意复杂的⾮线性关系,⽽且学习规则简单,便于计算机实现。

具有很强的鲁棒性、记忆能⼒、⾮线性映射能⼒以及强⼤的⾃学习能⼒,因此有很⼤的应⽤市场。

缺点:(1)最严重的问题是没能⼒来解释⾃⼰的推理过程和推理依据。

通过寻找神经元、组合神经元的⽅式获得路径。

(2)不能向⽤户提出必要的询问,⽽且当数据不充分的时候,神经⽹络就⽆法进⾏⼯作。

(3)把⼀切问题的特征都变为数字,把⼀切推理都变为数值计算,其结果势必是丢失信息。

(4)理论和学习算法还有待于进⼀步完善和提⾼。

适合中小学的简单排课算法

适合中小学的简单排课算法

1、模型及数据库表(1)时间模型假设每天可以使用的授课时间为8个时间单位,则一个星期可以使用的总授课时间为40=8×5(一周上课时间为5天)。

整个有效的周期时间域可以定义为集合Ω={1,2,3,4,…40},班级、教师被占用的时间是Ω的一个子集。

(2)信息对象的逻辑关系信息对象的逻辑关系体现在以下几个数据库表中:表1:课程—课时表表2:班级—课程表表3:教师—班级—课程表表4:教师—班级—时间分配表结构:教师工号、班级编号、时间分配(Ω的一个子集)表5:排课总表结构:教师工号、班级编号、课程编号、时间分配(Ω的一个子集)2、算法(1)排课算法排课算法的目的和关键是通过表1、表2、表3建立表4,然后由表4生成表5(这一步相对简单)。

根据表3我们可以得到一个教师—班级需求矩阵,矩阵的元素T ij表示教师j为班级i上的总课时量。

表4等价于这样一个矩阵,矩阵中的元素S ij表示教师j为班级i上课的时间集合,且S ij是Ω的一个子集,S ij中的元素个数等于T ij。

原则即,S ij每一行(同一个班级的课)尽量互斥,S ij每一列(同一个教师的课)尽量互斥。

步骤1:先排S ij的第一行,S11为从集合中任意取出的T11个时间单元,S12位从Ω-S11剩余的集合中任意取出的T12个时间单元,以此类推。

步骤二:排完S ij的第一行后,对S ij进行如下图初始化,目的是使每一行列的元素互斥。

然后在这基础上调整。

调整步骤看原文吧…(2)调整算法附:原文地址:/view/4f789e0b6c85ec3a87c2c54a.html表4等价于S ij,表示时间集合已知表,由表1、2、3可计算出T ij,表示课时量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2 目前流行得几种排课算法得介绍 2.1、 自动排课算法 1 、问题得描述 我们讨论得自动排课问题得简化描述如下: 设要安排得课程为{ C1 , C2 , 、, Cn} ,课程总数为n , 而各门课程每周安排次数(每次为连续得2 学时> 为{ N1 , N2 , 、, Nn} 。每周教案日共5 天,即星期一~ 星期五。每个教案日最多安排4 次课程教案,即1 ~ 2 节、3 ~ 4 节、5 ~ 6 节与7 ~ 8 节(以下分别称第1 、2 、3 、4 时间段> 、 在这种假设下,显然每周得教案总时间段数为5 ×4 = 20 ,并存在以下约束关系:

n ≤20 , (1> N = 6n, i =1, Ni ≤20、 (2> 自动排课问题就是:设计适当得数据结构与算法, 以确定{ C1 , C2 , 、, Cn } 中每个课程得教案应占据得时间段,并且保证任何一个时间段仅由一门课程占据、

2 、主要数据结构 对于每一门课程,分配2 个字节得“时间段分配字”(无符号整数> :{ T1 , T2 , 、, Tn} 、 其中任何一个时间段分配字(假设为Ti > 都具有如下格式:

Ti 得数据类型C 语言格式定义为:unsigned int 、 Ti 得最高位就是该课程目前就是否就是有效得标志,0 表示有效,1 表示无效(如停课等> 。其它各位称为课程分配位, 每个课程分配位占连续得3 个位(bit> ,表示某教案日(星期一~ 星期五> 安排该课程得时间段得值,0 表示当日未安排,1 ~ 4 表示所安排得相应得时间段(超过4 得值无效> 、

在这种设计下, 有效得时间段分配字得值应小于32 768 (十六进制8000> , 而大于等于32 768 得时间段分配字对应于那些当前无效得课程(既使课程分配位已设置好也如此> , 因此很容易实现停课/ 开课处理、

3 、排课算法 在上述假设下,自动排课算法得目标就就是确定{ C1 , C2 , 、, Cn} 所对应得{ T1 , T2 , 、, Tn} 、

从安排得可能性上瞧,共有20 !/ (20 - N> !种排法( N 得含义见(2> 式> 、 如果有4 门课,每门课一周上2 次,则N = 8 ,这8 次课可能得安排方法就会有20 !/ (20 - 8> ! = 5 079 110 400 ,即50 多亿种、 如果毫无原则地在其中选择一种方案,将会耗费巨大量得时间、 所以排课得前提就是必须有一个确定得排课原则、 我们采用轮转分配法作为排课原则:从星期一第1 时间段开始按{ C1 , C2 , 、, Cn} 中所列顺序安排完各门课程之后(每门课安排1 次> ,再按该顺序继续向后面得时间段进行安排,直到所有课程得开课次数符合{ N1 , N2 , 、, Nn} 中给定得值为止、 在算法描述中将用{ C[1 ] , C[2 ] , 、, C[ n ]} 表示{ C1 , C2 , 、, Cn} , 对{ N1 , N2 , 、, Nn}

与{ T1 , T2 , 、, Tn} 也采用同样得表示法、 算法1 排课算法 输入 { C1 , C2 , 、, Cn} 、{ N1 , N2 , 、, Nn} 、 输出 { T1 , T2 , 、, Tn} 、 ① 初始化: 星期值week = 1 时间段值segment = 1 { T [1 ] , T [2 ] , 、, T [ n ]} 中各时间段分配字清零 ② 新一轮扫描课程: 置继续处理标志flag = 0 对课程索引值c-index = 1 ,2 , 、, n 进行以下操作: 如果N[c-index ] > 0 ,则做以下操作: 把segment 得值写入T[c-index ]得第(week - 1> 3 3~week 3 3 - 1 位中 N[c-index ]得值减1

如果N[c-index ] > 0 ,则置flag = 1 如果week = 5 并且segment = 4 则:置flag = 1 并转③ 否则:如果segment = 4 则:置segment = 1 且week 增1 否则:segment 增1 检测就是否已全部安排完毕: 如果flag = 1 则:转② 否则:转③ ③ 检测就是否成功: 如果flag = 1 则:开课次数过多 否则:课程安排成功 ④ 算法结束 显然,本算法得时间复杂度为O ( N> ( N 为每周总开课次数, 见(2> 式> , 而存储时间段分配字所用空间为2 n 个字节( n 为课程门数> 、

4 、冲突检测算法 有时在自动排课完毕后,需要人工调整某些课程得安排时间,如把第i 门课程在人工干预下改成星期数为week 、时间段为segment 得位置,则根据上述数据结构需做如下运算:

T [ i ] = T [ i ] &(~ (7 << (week - 1> * 3> > + (segment << (week - 1>*3> , 其中&、~ 与n 分别为按位与、按位取反与按位左移运算符(下同> 、 问题就是如何判断就是否已有其它课程安排在同一个时间段上、 设人工调整得时间段分配 字为T[1 ] ,则该问题描述为:判断时间段分配字T [1 ] 与{ T[2 ] , T [3 ] , 、, T [ n ]} 中得某个分配字就是否存在相同课程分配位上得相等得非零时间段值, 或者说{ T [2 ] , T [3 ] , 、,T[ n ]} 中就是否存在与T [1 ] 冲突得时间段分配字、 为简化起见,在以下算法描述中假设所有时间段分配字得最高位为0、 算法2 冲突检测算法 输入 T1 与{ T2 , 、, Tn} 、 输出 与T1 冲突得{ T2 , 、, Tn} 中得时间段分配字、 ① 对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> ② 算法结束 本算法时间复杂度为O ( n> ( n 为课程门数> 5、算法分析

此算法以课程为中心,进行搜索匹配,取最先匹配得值;具有占有空间少,运算速度快得特点。但其未对数据进行择优选取,所以不能对教案资源殊要求合适些,有些课程不能安排到上午等)。

2.2 基于优先级得排课算法 从数学上讲, 排课问题就是一个在时间、教师、学生与教室四维空间, 以教案计划与各种特殊要求为约束条件得组合规划问题。其实质就就是解决各因素之间得冲突。在设计算法时, 为了降低课程调度得算法复杂性, 我们主要采用了化整为零得思想及优先级算法:

1.排课得预处理 1.等价类得划分 将具有共同听课对象得任务划分在同一等价类中, 在每个等价类之间只存在地点上得冲突, 而没有时间上得冲突。 然后按照得大小, 从大到小进行处理。 等价类得划分可以先按年级分, 然后再按系别分, 如下 所示:

听课对象等价类得划分 自控系机械系化工系管理系、 99 级N 1 子类1 子类2 子类3 子类4 、 98 级N 2 子类5 子类6 子类7 子类8 、 97 级N 3 子类9 子类10 子类11 子类12 、 96 级N 4 子类13 子类14 子类15 子类16 、 这样, 先按年级分为四个类: 99 级(N 1> , 98 级(N 2> , 97 级(N 3> , 96 级(N 4> , 而对每一个等价类N 1、N 2、N 3、N 4 又可以按院系分为若干个子类, 然后对每个子类分别进行排课处理, 这样做就可以大大降低算法得复杂性

2.教室分类 为了合理使用教室, 我们采用了教室分类得办法, 以便尽可能在课程编排过程中避免上课人数少得课程盲目强占容量大得教室现象。

首先将教室按照其类型分为若干个等价类, 如下所示,然后, 根据教室得容量再分别对每个教室等价类进行划分: 如分为0~ 30 人、30~ 60 人、60~90 人、90~ 120 人、120~ 180 人等若干种

教室等价类得划分: 教室类型等价类R 教室类型等价类R 普通教室R1 听力教授R5 投影教室R2 物理实验室R6 多媒体教室R3 化学实验教室R7 制图教室R4 计算机实验教案R8 3、时间预处理 1> 构造时间模式库 时间模式就是根据教务人员得经验, 为各种周学时数不同得课程指定得一种时间组合方式、例如, 一门课程得周学时数为4, 那么它得时间组合方式可以有:“11”,“41”。 表示该课程一周上两次, 分别为周一得12 节与周四得12 节L同时, 为了达到较好得上课效果, 也要对这些时间模式进行分级、如下 所示

时间模式分级举例 周学时优先级周一周二周三周四周五 4 1 11 41 ∶∶ 4 2 22 43 : : 其中, 将周一至周五用数字1~ 5 表示, 上课节次: 12 节、34 节、56 节、78 节、晚12 节、晚34 节分别用数字1~ 6 表示。 例如数字“42”表示周四得34 节

这个时间单元。这样, 对于每种周学时数, 可以将所有合理得时间组合形式存入模式库中。以便进行时间处理时可以用时间模式库中得各种模式进行匹配。

2> 时间数组 为了表示班级、教师、教室得可排课时间, 分别为她们建立一维数组L例如, 某位教师得初始可排课时间数组为(123456 123456 123456 123456 123456>。 其中共有五组数据, 分别表示一周中得五天。 而一组数据共有6 个字符“1、2、3、4、5、6”分别表示一天中得六个时间单元。 当为某位教师分配时间后, 相应得那位字符就置为0L 例如, 某位教师得可排课时间数组为( 020456 103456 003456 120456 023456> , 则表示这位教师在周一得12 节与56 节, 周二得34 节, 周三得12 节与34 节, 周四得56 节, 周五得12 节已经安排了课程, 如果要再安排课程得话, 就应该安排在非0 得时间单元L对于班级与教室也可以进行同样得处理, 分别标出可排课时间。

2. 每一子类得排课处理

相关文档
最新文档