贪婪算法在排课问题中分析与应用

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

贪婪算法在排课问题中分析与应用

摘要:排课问题是教学管理中重要的问题,对教学质量起到十分重要的影响。随着计算机和信息技术的快速发展,通过合理的算法编制排课系统是十分合适的。本文通过排课问题算法的分析,选择贪婪算法来解决排课问题。通过实验表明,目前的算法能够很好的解决排课问题,对问题的解决的复杂度大大降低,使得排课变得十分简单和高效。

关键字:排课,贪婪算法,优先级

1、绪论

在高校日常管理中,教学计划是重要的组成部分。而教学计划的重要体现方式之一就是排课表,其在教学管理中的地位和作用不可低估,课表的管理对教学管理是起到基础和重要的作用。因此排课问题是教学管理中重要的问题,对教学质量起到十分重要的影响。

由于上课约束条件多,课表的编制十分复杂,是一个耗时耗力的工作。目前随着高校人数的越来越多,其很难用手工去编制课表,其工作时间长,工作量大和繁琐的编制过程是一般人很难驾驭的。随着计算机和信息技术的快速发展,通过合理的算法编制排课系统是十分合适的。通过计算机算法的求解来对问题进行抽象和解决。

2、排课算法算法简介

目前对于排课问题的算法较多,主要有蚁群算法、模拟退火算法、遗传算法、整数规划法和贪婪算法等。

(1)蚁群算法

蚁群算法就是将模拟蚂蚁的活动,对参数设置较少。这种算法具备较强的全局搜索能力,但其效率较低,且容易出现停滞[1]。

(2)模拟退火算法

这个算法被较多的学者用来解决排课问题,它是模拟退火的现象,对自然事物进行抽象而来。其比较适合约束条件较少的问题。如果约束条件少,其很快就能获得最优解。但这种算法的参数选择较难,且资源开销大[2]。

(3)遗传算法

遗传算法是基于自然选择和生物遗传的全局优化策略。其优点在于在非线性问题上能够表现出全局最优,可以并行处理而且算法效率相对较高[3]。

但遗传算法本身较为复杂,由于排课问题的约束条件较多,其算法的效率较低,如果排课要求十分严格的话,很有可能造成找不到解。

(4)整数规划法

整数规划法来解决排课问题计算量很大,只适合规模较小排课问题,对于规模较大的,至今都很难找到一个可行算法。

(5)贪婪算法

贪婪算法是指在解决问题的时候,不会考虑整体最优,而是采取局部最优的思想进行最优思想[4]。也就是说,该算法将解决问题分解为每一个步骤,根据其难易程度进行解决,通过满足局部最优的方式来尽可能的获得最满意的解决。虽然在某些情况下,贪婪算法并不能得到最优解,但能得到相对满意的解。

3、排课问题综述

(1)排课原则

排课问题的本质是一个优化问题,是对教师、上课课程、上课时间和上课地点等因素的优化。其目的就是将全校所开设课程在有限的时间和地点下进行合理的安排,确保教学的顺利进行,以达到最优的效果。

为了能够产出一张满意合格的排课表,在排课中要满足一些约束条件。我们将一些约束

条件进行归纳和整理,将约束分为基本硬约束、硬约束和软约束。

①基本硬约束:这个约束是指在排课中绝对不能发生的事情。主要有:一个教室在同一时间只能安排一门课程;一个学生不能在同一时间只能上一门课程;一个教师只在同一时间只能教授一门课程。

②硬约束:这个约束是指排课过程中需要遵守,不然就毫无意义的约束。主要有每一个课程有特定的功能教室类型进行匹配;有一部分课程由于特殊原因,可以在与系统之前进行手工确定安排;上课按照时段形式进行组织安排;课程的学时分配有一定的规律;课程被安排在特定的预分配区域中

③软约束:这个约束是指,如果在排课过程中,如果能够满足这些约束,那么其效果将更好。主要有班级课程表尽量在一周内分布平均;教师对上课时间有某些偏好;周末尽量不安排课程,一般学生安排在白天,夜校的学生安排在晚上

(2)排课目标

排课问题其本质是一个多目标规划求最优解的问题。在目前问题规模越来越多的情况下,使得其方案增加越来越快。如何对目标进行限制是排课的关键问题。

在排课过程中,其思想就是放弃寻找单个最优解,而是在满足基本硬约束和硬约束的前提下,尽可能的满足软约束。所以我们的排课目标主要有:①没有硬性冲突:这个目标首先要满足基本硬约束,同时也需要对硬约束进行满足;②安排可行,体现人性化;③不能出现没有安排的课程。

4、基于贪婪算法的排课分析

(1)算法选择

对常用的算法进行了综述,各个算法都有优缺点,目前没有非常成熟的排课算法和系统,在我们系统中,为了取得较为满意的效果,根据实际,我们采用贪婪算法。

贪婪算法只考虑获得较为满意的解,不追求全局最优,虽然贪婪算法并不能对所有的问题找到最优解,但他是一种最直接的算法,通过寻求局部最优以达到全局最优[5]。

(2)贪婪算法的排课流程

笔者采用贪婪算法进行对人工排课进行仿照,对资源进行最优的利用。为了降低算法的复杂度,采用优先级的贪婪算法。其排课步骤如下:

开始

确定排课班

计算各班每门课

优先权

根据优先权值逐个班

级、逐门课程排课

出现冲突?

人工干预

结束排课N

1)确定排课班

在班级划分上,行政班是从行政角度进行划分的,而排课班是指在同一课程教室上课的班级。假如有M,N行政班,而他们需要进行合并上课,形成Z排课班,每个排课班都有自己的一张课程表。

2)确定优先原则

排课时间、排课地点等因素都可以成为优先因素,其关系十分复杂,且排课原则也会对其产生影响。由于课程本身和教师自身的癖好等因素,很多教师在排课前都会提出自己的特殊要求,比如上课时间最好在晚上、上课地点必须安排有多媒体的教室等最优因素。

在优先级原则确定需要根据学校自身情况。笔者认为在排课过程中将排课原则确定如下:①唯一特殊的要求优先;②对资源占用较大、资源紧缺、课程重要的优先,比如政治基础课程或者实验类课程等优先;③对没有特殊要求的进行最后考虑。

3)计算优先权值

在排课过程中,需要对优先级进行量化,这样有利于系统处理。为了对优先级进行量化,引入优先权值概念。这里对一些相关变量进行定义:一周排课时间片总数为FT,某一课程可以安排的时间片数量为AT,可以排课的教室数量为FR,符合排课要求的(对教师大小、硬件设备等符合要求的)教室数量为AR,课程的课时单元数为M,课程的合班的数量为

N,则这门课程的优先级权重值计算方式如下:=FT FR

W M N

AT AR

⨯⨯⨯。

假如某一个高校有排课时间片为4个,而一周可安排时间为5天,学校可用教室为150个,某一个课程的课时单元为3个,合并班为2个,上课人数为100人,其上课需要使用多媒体教师,且安排在下午,而学校大于100的多媒体教室只有30间。故这门课程的优先级权值为40。

将所有需要安排的课程进行优先权值计算,然后按照这个值进行排序。如果出现优先级相同,则随机选取进行再排序。

(3)死锁问题处理

死锁问题就是在输入正确有效的情况下,目前的排课资源无法满足排课需求。造成这种情况的原因有很多,但主要原因是资源约束条件和排课原则产生了冲突。由于目前并不存在一个十分完备的排课算法,所以死锁的出现也比较正常。

当遇到死锁时,系统对中断目前的排课运行,同时弹出提示框告诉管理者出现死锁的原因,并告知其进入人工调整步骤。目前的人工调整主要有以下几个方法:①通过对排课条件进行适当的放宽;②对课程相关信息进行调整;③对某一课程进行重新时间,以转向解空间的其他区域;④对系统重新运行,重新排课。以上方式依据不同的情况,进行选择。

5、结论

本文通过排课问题算法的分析,选择贪婪算法来解决排课问题。通过实验表明,目前的算法能够很好的解决排课问题,对问题的解决的复杂度大大降低,使得排课变得十分简单和高效。

参考文献

[1]张忠.蚁群算法在课程表问题中的应用.华南金融电脑,2007,10(6):91-93.

[2]刘继清,陈传波.模拟退火算法在排课中的应用.武汉船舶职业技术学院学

报,2003(3):41-43

[3]陈远.基于遗传算法的排课系统的设计.高等函授学报(自然科学版),2009(4):47-49.

[4]曾光清.贪婪算法在高校排课系统中的运用.福建金融管理干部学院学报,2007(6):49-45.

[5]聂小东,李振坤,陈平华.基于贪婪算法的排课系统的探讨与实现.现代计算

机,2007,11:109-112.

相关文档
最新文档