排课冲突检测的设计及实现

合集下载

教务处排课系统建模精编WORD版

教务处排课系统建模精编WORD版

教务处排课系统建模精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】教务处排课系统建模摘要:为解决教务处排课系统选课问题,通过对问题的分析,设计解决问题的主要数据结构,再设计出算法程序,从时间、教师、周开课次数、冲突检测及解决等方面处理排课问题。

关键词:排课系统,数据结构,算法,冲突检测,建模。

每年开学时需要选课,有时排课系统会出现各种各样的问题,一部分是因为排课系统本身的算法问题。

设计一个合理算法对于学生选课方便至关重要,以下是一个排课系统的介绍。

1.排课系统的基本要求:1.必修课尽可能的排在上午;例如,数学、英语、专业课等安排在上午,而体育、计算机、实验等安排在下午。

2.一个教师如果上午连续上四节课,尽可能的将四节课都安排在一个教室;3.一周上多次的课程尽可能间隔至少一天,比如高数,如果一周上六节课,则尽可能安排周1、3、5上午上课;因此同一节的课程一周最多上六节课,且只能在周一、周三、周五。

4.同一专业的课程不能有冲突。

2. 问题的描述:根据排课的优先级,应该先将全校各个专业本学期的专业课安排好,再考虑教师的教学问题,即如果某一个教师某天上午或下午连续教四节课,确保后一节课的教室号与前一节相同。

判断同一课程一周上几次,一次则可以在五天中无课程的时间中随机抽取一天安排课程,两次则可以分为周一和周三、周二和周四、周三和周五三周时间来排课,三次则只能是周一、周三、周五一种排课时间。

3.基本算法的描述:设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数为{ 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 } 中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据.4. 主要数据结构对于每一门课程,分配2 个字节的“时间段分配字”(无符号整数) :{ T1 , T2 , ., Tn} . 其中任何一个时间段分配字(假设为Ti ) 都具有如下格式:Ti 的数据类型C为:unsigned int 。

常用的几种高校排课算法

常用的几种高校排课算法
现象 。 ( 二 )时 间预 处理 、
P S O算法是基于群体的 , 根据对环境 的适应度将群体中的个体 移到
1 . 构造 时间模式 库 时间模 式是根据教务人员 的经验, 为各种周学 时数不同的课程指定
好 区域 。 将每个个 体看作是具有 唯一速度在多维搜索空间中飞行的没有
体 积的粒子, 每个个体的速度 由它飞行的经验和 同伴 的飞行经 验来 动态
调整。进 一步分析出用来结束迭代过 程的条件。 粒子群优化算法 P S O ( P a r t i c l e S w a r m O p t i m i z a t i o n ) 是由 : K e  ̄e d y和 E b e r h a r t 通过对鸟群 、鱼群和人类社会某些行为的观察研究, 于1 9 9 5 年 提 出的一 种新 颖的进化算法与遗传算法类似, 它也是基 于群体迭代 。变 异算子 , 群体在解空 间中追 随最优粒子进行搜索 。P S O 的优势 在于简单 且容 易实现, 同时 又有 深刻 的智 能背景, 既适合科 学研究, 又适 合工程应 用 。鉴于 P S O的发展历史 尚短, 它在理论基础与应用 推广上都还存在一 些 问题, 有待解决。当前 P S O算法存 在的问题, 如: 收敛速度慢 、 求解多峰
的一种时间组合方式. 例如广- f 丁 课程的周学时数为 4 那 么它的时间组合
方式可 以有 : “ 1 1 ”, “ 4 1 _ ’ ’ ;表示该课程一周上两次 子 别为周一的 1 2 节
和周 四的 1 2 节L 同时, 为了达到较好的上课效果, 也要对这些时间模式进
行分级 。 2 . 时 间数组 为 了表示班 级、 教 师 、教室 的可 排课 时间, 分别为他们建 立一维数 组 。例 如 , 某位 教师 的初 始可排课 时 间数组 为( 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6

单片机多级通信系统中的冲突检测与解决方案研究

单片机多级通信系统中的冲突检测与解决方案研究

单片机多级通信系统中的冲突检测与解决方案研究随着技术的不断发展,单片机多级通信系统在各个领域得到广泛应用。

然而,在多个单片机之间进行通信时,冲突问题常常会出现。

冲突的发生会导致丢失数据、降低系统性能以及错误的信息传输等问题。

因此,为了确保通信系统的稳定性和高效性,冲突的检测与解决方案就显得尤为重要。

本文将对单片机多级通信系统中的冲突检测与解决方案进行研究。

首先,为了避免通信冲突的发生,我们可以采用时间分割技术。

时间分割技术是将通信时间按照一定的规则进行划分,每个单片机在特定的时隙内进行通信。

通过这种方式,可以使得每个单片机的通信时间不重叠,避免了冲突的发生。

同时,为了进一步提高通信效率,可以根据通信需求动态调整时隙长度,以适应不同数据传输的要求。

其次,还可以采用信号冲突检测技术来解决单片机多级通信系统中的冲突问题。

信号冲突指的是当多个单片机同时发送信号时发生的冲突。

为了检测信号冲突,可以在每个单片机发送器上安装冲突检测电路。

该电路可以用来监测信号的冲突情况,一旦发现冲突,就会通过某种方式向待发送的单片机发出信号,指示其暂时停止发送,等待下一个时隙再次发送。

通过这种方式,可以有效地避免信号冲突的发生,提高通信系统的可靠性和稳定性。

此外,还可以采用分组通信技术来解决冲突问题。

当多个单片机同时发送信息时,可以将这些信息按照一定的规则划分成多个组,并为每个组设定特定的发送时隙。

在每个时隙内,只有对应组的单片机可以发送信息,其他组的单片机需等待。

通过这种方式,可以避免信息的混乱和冲突,确保信息的准确传输。

在冲突解决方案的研究中,还可以考虑采用优先级调度策略。

不同单片机在通信时可以为其分配不同的优先级,优先级高的单片机将具有较高的发送权。

在冲突发生时,优先级高的单片机将被优先选择进行通信,从而减少冲突的发生。

通过合理的优先级调度,可以提高通信系统的效率和可靠性。

此外,在冲突检测与解决方案的研究中,还可以考虑引入冲突处理协议。

高校排课流程及冲突检测分析

高校排课流程及冲突检测分析

排好 。 以排 课 系统 主要用 于新 生 的排课 以及高 年级 的部分 特 所
殊课 程 。
部排 完 . 结束 自动 排课 。整个 流程 如 图 1 所示 :
根据实 际需求 , 分析 出我 校本科 教学的 自动排课流 程如下 :
设 : 建 5个 集 合 : 程 = 班 级 = 教 师 = 教 室 = 时 构 课 A, B, C, D, 间片- E。
节 课 时间 片的字 符 串表示 , : 如 全 周 的 周 1第 2节 用 “ 1 ” 表 示 ,单 周 的 周 3第 6节 用 02 “3 ” 示 , 周 的周 4第 1 16 表 双 0节 用 “4 表 示 , … 2 A” … 在 排 课 过 程 中 , 们 根 据 以 人 为 本 、 学 编 排 的 原 则 , 定 我 科 制
以 排 好 序 的课 程 A, 上 到 下 , 门 课 程 开 始 排 课 试 探 。 从 逐 排 课 流 程 为 : 课 程 A 中 取 出 一 门需 要 排 的 课 , 时 间 片 从 按 取 用 规 则 从 时 间 片 E 中 提 取 一 个 时 间 片 ,在 这 个 时 间 片 中 进 行 各 种 冲 突 检 测 ( 要 对 班 级 B 教 师 C和 教 室 D 在 时 间 片 上 主 、 的检测 )如果 发现 冲突 , 排课不 成 功 , 取下 一个 时 间片 , 。 则 提 继 续 进 行 冲 突 检 测 … … ; 果 在 一 个 时 间 片 上 没 有 冲 突 , 标 记 如 则
了时 间片 的取用 规则 : 数为偶 数 的课 程 ( : 节 如 2节 、 4节 ) 尽 可 ,
需求, 自主开发 。
本 文 所 述 的排 课 问题 及 解 决 方 法 , 全 贴 近 我 校 本 科 教 学 完

面向高校教务管理的智能排课系统设计与实现

面向高校教务管理的智能排课系统设计与实现

面向高校教务管理的智能排课系统设计与实现随着信息技术的快速发展和高校规模的不断扩大,高校教务管理日益复杂化。

为了提高教务工作效率和质量,智能排课系统的设计与实现成为高校教务管理的重要课题。

本文将围绕面向高校教务管理的智能排课系统,从需求分析、系统设计和实现等方面进行讨论。

一、需求分析1. 教学资源管理:教务系统需要对教学资源进行管理,包括教室、教学设备以及教师等资源的管理与调配,以保证教学的顺利进行。

2. 课程安排与调整:教务系统应具备对课程的安排和调整功能,可以根据学生的选课情况和教师的排课要求进行智能调配。

3. 课程冲突检测与解决:系统应具备检测课程冲突的功能,当出现课程时间冲突时,能够自动解决冲突并给出解决方案。

4. 学生选课管理:系统需要提供学生选课的功能,并能够根据学生的选课结果自动生成课表,并进行课程地点和时间的智能安排。

5. 教学评价与分析:系统应具备对教学质量进行评价和分析的功能,包括学生的学习成绩、教师的教学反馈等指标的统计与分析。

二、系统设计1. 架构设计:系统采用分布式架构,包括前端、后端和数据库三个层次。

前端负责与用户进行互动,后端处理业务逻辑,数据库存储相关数据。

2. 数据库设计:根据需求分析,系统需要设计合理的数据库结构,包括学生、教师、课程、教室等表,以及相关的关系表。

3. 界面设计:系统的界面应简洁明了,方便用户操作,通过图表、表格等可视化方式展示排课结果和教学评价等信息。

4. 智能算法:系统需要设计智能的排课算法,结合学生选课情况、教师排课要求和教室资源等因素进行排课,尽量避免课程冲突。

三、系统实现1. 技术选择:基于需求分析和系统设计,选择合适的开发技术和工具进行系统实现,如Java、Python等编程语言和相关的框架和库。

2. 功能开发:根据需求分析和系统设计的结果,按模块逐步实现系统的各项功能,包括教学资源管理、课程安排与调整、学生选课管理等功能。

3. 测试与优化:在系统实现的过程中,不断进行功能测试和优化,确保系统的稳定性和性能。

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

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

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.算法分析此算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。

冲突行为的研究方法

冲突行为的研究方法
研究冲突行为的方法可以根据研究目的和对象的不同选择不同的方法,以下为几种常用的研究方法:
1. 实验研究:通过控制变量和操作冲突场景,观察和测量被试的冲突行为。

例如,可以设计实验场景,观察不同因素对冲突行为的影响,并通过问卷、观察或生理指标等方式进行数据收集分析。

2. 问卷调查:通过设计问卷,收集被试的主观看法和体验,了解他们在冲突情境中的行为和心理状态。

问卷调查可以通过人口统计学信息、心理测量工具等来衡量和分析冲突行为。

3. 观察方法:通过近距离观察和记录冲突行为的细节,从而了解冲突行为的模式和特点。

观察可以通过实地观察、录像或者其他可记录行为的手段来进行。

4. 文献综述:通过搜集和分析已有的相关文献,了解冲突行为的研究现状和发展趋势。

这种方法可以通过查找学术期刊、会议论文、书籍和报告等来进行。

需要注意的是,冲突行为的研究方法选择应当根据研究目的和可行性进行综合考虑,并结合多种研究方法的优势来进行深入和全面的研究。

冲突检测方案

冲突检测方案冲突是在许多领域中都存在的问题,无论是个人生活还是工作环境中都会不可避免地遇到。

为了有效解决冲突,提高冲突解决的效率和准确性,我们需要制定一套冲突检测方案。

本文将介绍一种可行的冲突检测方案,旨在帮助大家更好地处理冲突,建立和谐的人际关系。

一、冲突检测方案背景冲突作为一种常见问题,对于个人和团队的发展都会带来阻碍。

在工作环境中,冲突可能导致员工之间的紧张关系、团队效率下降甚至项目进展受阻。

因此,制定一个有效的冲突检测方案至关重要。

二、冲突检测方案流程1. 识别冲突:第一步是识别冲突的存在。

冲突可以是个人之间的冲突,也可以是团队内部或团队之间的冲突。

要通过观察和交流来识别冲突的迹象,例如言语不和、态度消极等。

2. 收集信息:一旦发现冲突存在,下一步是收集相关的信息。

这可以通过与相关人员交谈、查阅文件和记录等方式进行,以了解冲突的具体内容、原因和影响。

3. 分析冲突:在收集到足够的信息后,需要对冲突进行分析。

这包括确定冲突的根本原因、相关的利害关系和潜在的解决方案。

通过分析冲突,可以更好地了解冲突的本质,并为解决冲突提供参考。

4. 制定解决方案:分析冲突后,就需要制定相应的解决方案。

这要求各方合作,以寻求一种既符合各方利益又能够解决冲突的方法。

可以采用协商、妥协、调解等方式来制定解决方案。

5. 实施解决方案:确定解决方案后,就需要开始实施。

这要求各方共同努力,积极配合,确保解决方案的有效执行。

可能需要制定时间表、分工合作等具体步骤来落实解决方案。

6. 评估结果:解决方案实施后,需要对结果进行评估。

这可以通过观察实施后的效果、听取各方反馈等方式来进行。

评估的目的是了解解决方案是否达到预期效果,并根据评估结果进行必要的调整和改进。

三、冲突检测方案的关键要素1. 敏感度和观察力:对于冲突的发现,需要具备一定的敏感度和观察力,及时发现冲突的存在,避免问题的进一步扩大。

2. 沟通和交流技巧:冲突的解决过程中,良好的沟通和交流技巧至关重要。

基于Web的非规范课表管理系统的设计与实现

第3 1卷 第 1 1期 21 年 1 01 1月
湖 北 广 播 电 视 大 学 掌 报
J u a f Be or l n o Hu i TV i e st Un v ri y
Vo131 N o 1 . , .1
No e e . 01 , 8 0 9 v mb r 2 1 01  ̄ 1
本文 以宁波 电大课表管理系统 为例 ,介绍 了基 于 We b 的非规范课表管理系统的总体设计 、 型问题解 决方 案和 关 典 键技术 , 出了通过设计上课 时段编码 , 取固定部分排课 提 采 元素,降低 问题空 间维度 的方法 , 解决 非规 范课表排 课冲 突 检测算法 。
电大 课 表 的 非 规 范 特 点 不 同学生类型对上课 时段 、 上课 周次有不 同的要求 ,众 多的生源导致课表的非规范化 。以宁波 电大 为例 ,生源包 括 高职生 、脱产成教生 、在职 开放 生、在值研 究生等类 型,与
重叠 ;
#n 、
一ห้องสมุดไป่ตู้
№I -
)1
! } f一 } !苎l 塑 I l! j兰。 ! ! 坠!J c ! I
t:l= ! I !: ! = l 固 = 竺 =
■ ‘ tI鼍 寓
— — —

篓 H ! H ! 墨l 篓 兰
2 .上课周次设置灵活 ,周次 设置 不是普通 高校课表中 的单周 、双 周和全 周三种情形 ,而是形如 “ ,3 ”的周 1 ~8 次序列 ,上课周次可 以 自由设置 ; 3 .同一班级 同一课程可 能由多名 教师 在不同的时段和 不 同的教室授课 , 因此一个教学班的~门课程可能包含多个
课程安排 。 4 由于网考或其它原 因,需要经 常对现有 的排课进行 . 调整 。 二 、系统总体设计

(完整)CSMA冲突检测和冲突避免

CSMA/CDCSMA/CD(Carrier Sense Multiple Access/Collision Detect)即载波监听多路访问/冲突检测方法在以太网中,所有的节点共享传输介质。

如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。

一、基础篇:是一种争用型的介质访问控制协议。

它起源于美国夏威夷大学开发的ALOHA网所采用的争用型协议,并进行了改进,使之具有比ALOHA协议更高的介质利用率。

CSMA/CD控制方式的优点是:原理比较简单,技术上易实现,网络中各工作站处于平等地位,不需集中控制,不提供优先级控制。

但在网络负载增大时,发送时间增长,发送效率急剧下降.CSMA/CD应用在 OSI 7层里的数据链路层它的工作原理是:发送数据前先监听信道是否空闲,若空闲则立即发送数据.在发送数据时,边发送边继续监听.若监听到冲突,则立即停止发送数据。

等待一段随即时间,再重新尝试。

二、进阶篇:CSMA/CD控制规程:控制规程的核心问题:解决在公共通道上以广播方式传送数据中可能出现的问题(主要是数据碰撞问题)控制过程包含四个处理内容:侦听、发送、检测、冲突处理(1)侦听:通过专门的检测机构,在站点准备发送前先侦听一下总线上是否有数据正在传送(线路是否忙)?若“忙”则进入后述的“退避”处理程序,进而进一步反复进行侦听工作。

若“闲”,则一定算法原则(“X坚持”算法)决定如何发送。

(2)发送:当确定要发送后,通过发送机构,向总线发送数据。

(3)检测:数据发送后,也可能发生数据碰撞。

因此,要对数据边发送,边接收,以判断是否冲突了.(参5P127图)(4)冲突处理:当确认发生冲突后,进入冲突处理程序。

有两种冲突情况:①侦听中发现线路忙②发送过程中发现数据碰撞①若在侦听中发现线路忙,则等待一个延时后再次侦听,若仍然忙,则继续延迟等待,一直到可以发送为止。

每次延时的时间不一致,由退避算法确定延时值。

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

排课冲突检测的设计及实现
摘要:排课是高校一项重要而繁琐的教务工作,使用计算机排课是必然的选择,在排课系统中冲突检测算法的设计是关键,目前对于上课时段重叠、周次自由设置的排课冲突检测研究较少。

结合宁波电大课表编排的特点,提出了降低问题空间纬度进行冲突检测的算法,该算法在实际使用中有较好的效果。

关键词:排课;冲突检测
0 引言
电大系统生源的种类较多,有高职生、脱产成教学生、在职开放生、在职研究生等,各类学生对上课时间有不同的要求,加上各门课程不同的教学需求,因此电大与普通高校的排课有所不同,以宁波电大为例,排课有下列特点:
(1)上课时段有重叠,现有的上课时段有8个:上午1-2节、上午3-4节、上午1-4节、下午5-6节、下午5-7(13:00开始)节、下午5-7节(13:40开始)、晚上,另外还有非以上情况的自由设置时段。

在上述时段中,上午1-4节与上午另外两个时段有重叠,下午的3个时段也有重叠。

(2)上课周次设置灵活,周次设置不是普通高校课表中的单周、双周和全周3种情形,而是形如“1,3-8”的周次序列,一个课程安排(以下简称课元)的上课周次可以自由设置。

(3)同一班级同一课程可能由多名教师在不同的时间和不同的教室授课,因此一个教学班的一门课程安排可能包括多个课元。

由于上述原因,为普通高校排课系统设计的冲突检测方法根本不适用,采用全自动排课很难表述这种特殊性要求,实现起来比较困难,因此,宁波电大排课系统采取半自动排课方式,课表编排手工输入,而每当更改排课元素时,系统自动进行排课冲突检测,当所有课表编排都没有冲突时,所得课表就是一份没有冲突的有效课表。

1 排课冲突检测算法设计
1.1 排课冲突介绍
排课问题是满足教学计划和各种约束条件的组合规划问题,约束条件就是要避免课元的各排课元素之间存在冲突,排课元素包括课程、时间、教师、教室和班级,在冲突检测中,必须要满足的基本约束条件有:①教师不冲突,同一时间,一个教师只能给一个班级上课;②教室不冲突,同一时间,一个教室不能安排两门不同的课程;③班级不冲突,同一时间不能给同一班级安排
两门不同的课程。

在排课冲突检测中还有一些其它的约束条件也要满足,例如上课的班级人数必须小于教室座位数等,本文不做考虑。

1.2 冲突检测算法的概念设计
考虑到上课时间可以细分为周次、星期和上课时段,一个教学班一门课程安排的课表问题空间T可表示为:T=P×C×Z ×W×S,P
C Z
W为星期集合,具体为“周一”、“周二”…“周日”;S
上述的8个上课时段。

课元a对应T中的一个向量,记做a=(pα,cβ,z γ,wδ,sκ),其中pα∈P,cβ∈C,zγ∈Z,wδ∈W,sκ∈S。

假设课表P有n条记录,为了检测课元a与课表P是否有冲突,那么系统要进行n
排课的5个元素,而每当排课元素修改后,系统都要进行冲突检测,那么系统运行效率会很低。

考虑到教师冲突、教室冲突、班级课程冲突都是因为课元所选的教师、教室、班级没有空闲时间,它们都与时间关系密切,排课冲突检测的关键就是时间的冲突检测。

因此可以采取固定几个排课元素,缩小问题空间维度的方法进行检测,具体就是,固定课元中除周次外的4个排课元素,从课表中筛选有可能存在冲突的待检测数据集,然后将课元中的周次和
待检测数据集中的周次进行冲突检测,如果周次有冲突,则该课元与课表有冲突,否则,该课元与课表没有冲突。

在课表P中筛选出与课元a有可能冲突的待检测数据集Y :
设a=(p,c,z,w,s),则Y={t|t∈P,(t.p=a.p 或t.c=a.c)且t.w=a.w 且t.s与a.s时间冲突},其中“.”表示向量的分量,t.p 表示课元t的教师(p)
有效课表P不冲突可表示为: P T且a∈P,b∈P,a≠b有a与b
1.3 上课时段冲突检测
在上述上课时段中,上午1-4节与上午1-2节、上午3-4节冲突,下午5-6节、下午5-7(13:40开始)节和下午5-7节(13:00开始)冲突。

为了判断上课时段是否有冲突,对上课时段的编码设计如表1所示:
1.4 周次冲突检测
设一个学期有20周,课元的周次设置可以用一个20位的二进制数z表示,z的位数对应周次,z数位上的值表示有无课程安排,“1”表示有课程安排,“0”表示无课程安排,例如,周次设置“1-2,15,20”的二进制编码为:
判断一个课元a与待检测数据集Y的周次设置是否存在冲突,可采取下列方法:
a.z∧(y 1.z V y 2.z V y 3.z V …V y n.z )
0 a与Y有冲突0 a与Y没有冲突
其中 a.z表示课元a周次设置的二进制编码,其余符号类似地表示数据集Y
1.5 算法流程图
在上述基本概念的基础上,排课冲突检测算法的流程。

2 实现
宁波电大排课系统采用B/S结构,选用Visual 2008开发平台,开发语言开发,系统开发采用面向对象的技术,数据访问技术选用。

2.1 排课页面
排课页面如图2所示,该图显示经管系对课程“会计”进行课表编排,该门课程有两个教学班,教学班各有1、2个课元,其中教学班1有排课冲突。

在该页面中用户可以增删教学班,教学班中的课元也可增删,课元的排课元素除了周次和非固定时段是直接输入外,其余排课元素都为下拉列表,下拉列表数据来自对应的数据表。

如果排课没有冲突,在总课时栏会显示总的课时,否则显示冲突的详细信息。

页面中教学班和教学班内的课元由具有主细关系的Repeate 和GridView两个控件表示,Repeate控件负责显示教学班、Gridview控件负责显示教学班内的课元,表格的内容和样式在控件单元格数据绑定的事件中编程控制。

每当排课元素修改后,页面将自动刷新,重新进行冲突检测,返回冲突的结果。

2.2 数据库的逻辑设计
数据表中存储了排课信息和各类排课基础信息,为了保证冲突检测时排课元素的唯一性,对排课元素记录进行自动编码,在课元表中保存的是排课元素的ID号,冲突检测以ID为准,教学班与课元是一对多的关系,通过关键字“教学班ID”关联。

数据表关系如图3所示。

2.3 冲突检测类
冲突检测由自定义类GetDayFromStr实现,类中包含用来设置课元排课元素的方法,在设置了待检测教学班的排课元素后,调用方法GetCount()实现冲突检测。

GetCount()方法在不存在排课冲突的情况下,返回周次序列所表示的课时数,否则,将冲突的详细信息保存到类的错误属性(ErrorMsg)中,并返回一
个负数,不同的返回值代表不同的冲突类型,具体情况见表2。

3 结束语
本文提出了解决上课时段重叠、周次自由设置的排课冲突检测算法,并在宁波电大排课系统中加以实现,在2011年春季排课的试用中,排课系统能准确地检测出上课冲突,验证了该算法的正确性和可行性。

通过采取缩小问题空间纬度的方法,将排课冲突检测问题空间的纬度从5降低为1,能提高排课冲突检测的效率,并且算法简单,有一定的通用性,稍做修改可以应用到多种排课情况。

参考文献:
[1]陶滔,毛宁,夏石莹,等.有限维冲突算法及应用研究[J].南华大学学报(自然科学版),2005(9).
[2]彭秀萍.排课系统的研究与实现[D].成都:电子科技大学,2009.
Design and Implementation of Conflicts Detecting of Curriculum Scheduling
Abstract:Curriculum scheduling is an important and
complicated university educational management puter aided curriculum scheduling becomes the inevitable choice.The key of the curriculum scheduling system is the algorithms of conflict detection .Few studies have been taken on conflict detection in course overlaps and arbitrary setting of cycles number.Considering the curriculum scheduling features of Ningbo Radio & TV University,the algorithms of conflict detection are proposed to reduce the dimensions of problem space.The algorithms have good effect in the practical applications.
Key Words: Curriculum Scheduling;Conflict Detecting。

相关文档
最新文档