




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自动排课系统以Visual Basic开发摘要 本文建立了自动排课系统的数学模型,并利用遗传算法对问题进行求解。在演化过程中采用一种新的遗传策略,加速了群体的收敛速度。若对本系统做适当的修改,可适用于其他的时间表问题。关键词 自动排课系统,遗传算法 一、引言自动排课系统实际上是时间表的优化问题,从而是一类NP完全问题。如何根据班级的课程设置、课程的周内次数、现有教室资源、以及现有教师资源进行科学的合理安排,提供给学校的教务部门一个自动排课系统,在实际工作中具有一定的应用价值。在排课过程中,我们考虑了三类资源:一类是教师资源,一类是教室资源,一类是时间资源。教师资源包括在编教师和每个教师历年所上过的课程、以及所上过课程的评价值。同一课程可能有多名教师能开课,在资源分配允许的情况下,自然选择评价值高的教师上这门课。多数情况下,在进行教学任务安排时,已经人为考虑了教师和课程之间的固定联系。教室资源是指现有可用教室。时间资源是指允许可用的时间段。此外,按每学期教学大纲,本学期每个班(专业)所上课程和每门课的周学时数(次数)是预定的。同时,我们还需要考虑不同时间段的上课效果。排课问题是根据现有教师资源、教室资源和时间资源,如何使排课结果最佳。适当定义相应的一些评价系数后,排课问题变成了一个时间表的优化问题。本文考虑排课问题中的一些约束条件,定义了相关的评价系数,建立了排课问题的数学模型,利用遗传算法对问题进行求解。然后生成各类时间表。遗传算法(简称GA)是1975年美国Michigan大学J.Holland教授等首次提出的,近年来,遗传算法在求解优化问题中得到了成功的运用。GA是一种抽象于生物进化过程的、基于自然选择和生物遗传机制的优化技术,它是一种全局优化策略,能避免陷入局部最优。按照“优胜劣汰,适者生存”的原则,通过快速随机搜索力求找到最优解或次优解。二、自动排课系统的数学模型设计1、集合定义(1)课程集合:subject1,subjectn2其属性包括课程名称、课程号、周次数、每次学时数等。(2)教师集合:teacher1,teachern1其属性包括姓名、教工号、年龄、已上过课程、所上课程的评价值等。(3)班级集合:class1,classn3其属性包括班级名称(系名、年级、专业、班级号)、学生人数等。(4)教室集合:classroom1,classroomn4其属性包括教室名称、容量、类别(一般、多媒体)等。基本数据库如图所示:课程库:(课程名称,周次数,每次学时数,已上过课程)教师资源库:(姓名,职称,年龄,已上过课程) 时间表: (星期,时间段)教室库:(教室名称,容量,类别一般,多媒体)班级库:(班级名称系名,年级,专业,班级号, 学生人数)而结果数据库则由教师时间表、教室时间表、班级时间表构成。2、变量定义(1)时间变量:T(tij) 每周按7天计,每天按6个时间段计。用一个76矩阵T表示。 tij:星期i第j时间段。 第1时段:上午1、2节;第2时段:上午3、4节; 第3时段:下午1、2节;第4时段:下午3、4节; 第5时段:晚上1、2节;第6时段:晚上3、4节。(2)时间段效率变量:(ai)用一个长为6的数组表a表示。ai:第i时段上课效果值。比如,我们可以规定每天各个时间段的效果值如下表所示:时段号12345610.90.80.70.80.7 (3)教室利用率变量:rijclassi.value/classroomj.value 其中,classi.value表示i班的学生人数,classroomj.value表示j教室的容量。(4)时间表初始约束变量:C(cij) cij1:表示星期i第j时间段可排课;cij0:表示星期i第j时间段不能排课。(5)时间间距约束变量:B(bij)(一个4242时间段关联矩阵) i6wd,j6wd。0w,w6;0d,d5。 i,j表示两个时间段,w为星期号,d为时间段号。 时间间距约束考虑的是一个班级某门课的周次数超过一次的情况,若同一班级同一门课程安排在同一天、或相邻近的两天属于低效率。3、关联关系的局部描述关联关系的局部描述如图所示:教师班级教室课程时间2时间1 在模型中,我们需要建立如下关系:(1) 教师-课程:布尔变量: (手工定义变量初值, i教师本学期上j课程)。 (2) 班级-课程:布尔变量: (手工定义变量初值, i班级本学期上j课程) (3) 课程-教室:布尔变量: (i课程被安排在j教室) (4) 课程-时间:布尔变量: (i课程被安排时间段,课程结点度数表示重复次数) (5) 教室-时间:布尔变量: (i教室被时间段时间段占用) 4、可行解的检验条件(1) 同一个教师不能在同一时间段上两门课程。(2) 同一个教室不能在同一时间段被两门课程占用。(3) 同一个班级不能在同一时间段安排两门课程。(4) 教室容量大于拟安排的班级的学生人数。三、具体实现 准备工作选定教师集合、课程集合及每周课程重复次数、班级集合。1建立教师集合、课程集合、班级集合的关联关系。 (初始关联关系,由各系教学任务计划书可以确定)2. 预留每周可排课时间段。(可以取超过取班级课程量最大值作为周可排课时间段。 如:星期一至五,上午和下午1、2作为周排课时间段表)3.总时间段空间:班级集合周时间段可用空间。4. 利用课程与班级的关联关系,限制课程选择时间段的范围。即,一个班级对应一张课程表,一对一。5. 随机产生解空间。解的形式为:班级课程表序列为一个解。6.检验每个解的协调条件,选出可行解集合。7.计算每一个可行解的评价值;取最大值对应的解为一个满意解。8.上述过程可以重复进行。9.保存最终解。10.根据教师、课程、班级、教室的关联关系。由最终解生成分类课程表:a. 教师时间表, b. 教室时间表, c. 班级时间表(当无解时,逐步放大时间约束条件)(如: 允许下午1、2排课)。(二)、系统结构排课系统主要包括课表设置、添加/删除课程、添加/删除教师、添加/删除班级、添加/删除教室、课表查询、新建课程、排课等功能(如下图)。 排课系统 查 询排 课新建课程设 置教室课表教师课表班级课表约束检验协调检验随机课表设定学时选择班级选择教室选择教师教室教师课表班级课程(三)、自动排课系统模块: 1、 课表设置模块2、 添加/删除课程模块;3、 添加/删除教师模块;4、 添加/删除班级模块;5、 添加/删除教室模块;6、 课表查询模块;7、 新建课程模块;8、 排课模块。(四)、系统功能及部分代码1、 排课系统的“设置”中有课表设置、添加/删除课程、添加/删除教师、添加/删除班级、添加/删除教室四项。a、 点击“课表设置”按钮进入课表样式设置(如图1)每周上课天数的下拉框中可选值为07;每天上午上课节数的下拉框中可选值为04;每天下午上课节数的下拉框中可选值为04;每天晚上上课节数的下拉框中可选值为04;选定各项的值后,按确定按钮,系统将自动保存和生成课表样式。 图1 课表样式设置模块代码:private void button1_Click(object sender, System.EventArgs e)long day,morning,afternoon,night;day=Int64.Parse(comboBox1.SelectedValue.ToString();morning=Int64.Parse(comboBox2.SelectedValue.ToString();afternoon=Int64.Parse(comboBox3.SelectedValue.ToString();night=Int64.Parse(comboBox4.SelectedValue.ToString();WindowsApplication5.Form2.ActiveForm.Close();b、点击“添加/删除教师”按钮进入教师设置(如图3) 在输入框中录入教师名,按添加按钮,教师名被录入教师库;删除教师,可以先选中要删除的教师名,按删除按钮即可,此处不支持复选,如要重新录入教师可按全部全部清空按钮即可;设置该教师的时间表,选定教师的时间,(添加)或(删除),设置并保存这个教师的时间表。 图3添加/删除教师模块代码:private void button1_Click(object sender, System.EventArgs e)listBox1.Items.Add(textBox1.Text);teachern=listBox1.Text;n=n+1;private void button2_Click(object sender, System.EventArgs e)listBox1.Items.RemoveAt(listBox1.SelectedIndex);teachern=null;n=n-1;private void button3_Click(object sender, System.EventArgs e) listBox1.Items.Clear();c、点击“添加/删除课程”按钮进入课程设置(如图2)在输入框中录入课程名,按添加按钮,课程名被录入课程库;删除课程,可以先选中要删除的课程名,按删除按钮即可,此处不支持复选,如要重新录入课程可按全部全部清空按钮即可。 图2添加/删除课程模块代码:private void button1_Click(object sender, System.EventArgs e)listBox1.Items.Add(textBox1.Text);subjectn=listBox1.Text; n=n+1;private void button2_Click(object sender, System.EventArgs e)listBox1.Items.RemoveAt(listBox1.SelectedIndex);subjectn=null; n=n-1;private void button3_Click(object sender, System.EventArgs e)listBox1.Items.Clear();d、点击“添加/删除教室”按钮进入教室设置(如图4) 在输入框中录入教室名,按添加按钮,教室名被录入教室库;如教室可同时容纳多个班级上课,将教室的容量选定;删除班级,可以先选中要删除的教室名,按删除按钮即可,此处不支持复选,如要重新录入教室可按全部全部清空按钮即可;设置该教室的时间表,选定教室的时间,(添加)或(删除),设置并保存这个班级的时间表。 图 5添加/删除教室模块代码:private void button1_Click(object sender, System.EventArgs e)listBox1.Items.Add(textBox1.Text);classroomn=listBox1.Text;n=n+1;private void button2_Click(object sender, System.EventArgs e)listBox1.Items.RemoveAt(listBox1.SelectedIndex);classroomn=null;n=n-1;private void button3_Click(object sender, System.EventArgs e)listBox1.Items.Clear();e、点击“添加/删除班级”按钮进入班级设置(如图4) 在输入框中录入班级名,按添加按钮,班级名被录入班级库;删除班级,可以先选中要删除的班级名,按删除按钮即可,此处不支持复选,如要重新录入班级可按全部全部清空按钮即可;设置该班级的时间表,选定班级的时间,(添加)或(删除),设置并保存这个班级的时间表。 图4添加/删除班级模块代码:private void button1_Click(object sender, System.EventArgs e)listBox1.Items.Add(textBox1.Text);classn=listBox1.Text;n=n+1;private void button2_Click(object sender, System.EventArgs e)listBox1.Items.RemoveAt(listBox1.SelectedIndex);classn=null;n=n-1;private void button3_Click(object sender, System.EventArgs e)listBox1.Items.Clear();2、 新建课程新建课程模块包括选择教师、选择教室、选择班级和设定学时四项。a、 选择教师按下新建课程进入选择教师模块。从下拉框中选择一门课程(下拉框中的课程从课程库中读入),按下添加/删除老师按钮,为该门课制定授课教师;按下添加/删除教师按钮,为该门课添加可以使用的教室。 点击确定后回到选择老师界面,按下一步按钮进入XX课程,从下拉框中选择一个老师(从课程库中获取),设定学时数,选择所教班级,保存老师信息。3、 排课排课模块包括随机课表、协调检验、约束检验三项。按下随机课表,此时系统根据数据库中的数据随机生成时间表,分别存于教师、教室、班级时间表中。方法:从数据库中得到班级、教师、课程固定关系,然后随机产生一个局限于最大时间段的时间点(最大时间段=每周上课天数*每天上课节数),这时就得到了班级、教师、课程、时间的固定关系,同样将能使用的教室加入固定关系中,得到随机课表。协调检验是根据协调条件,将随机产生的时间表进行过滤,能满足协调条件的班级课程表形成可行解序列。方法:用协调条件检验随机产生的课表序列。从教师时间库中得到每一个教师上课的时间段,检验是否重复,如重复则表示该教师在同一时间段上了两门课,此课表不能用,舍弃;从教室时间库中得到每一个教室使用的时间段,检验是否重复,如重复则表示该教室在同一时间段被两门课占用,此课表不能用,舍弃;从班级时间库中得到每一个班级上课的时间段,检验是否重复,如重复则表示该班级在同一时间段排了两门课程,此课表不能用,舍弃;再从生成的课程表中检验教室容纳的学生人数是否大于上课班级的人数。最后通过协调条件的课程表形成可行解序列。约束检验是在可行解序列中,选出符合初始约束并且效率值最大的课程表。方法:先对时间表的初始约束。约束时间表中某些时间段不能排课。用一个与T同型的矩阵C定义。 表示星期i第j时间段可排课, 表示星期i第j时间段不能排课。再从可行解序列中求出各自的效益值,取其最大值。效益值=上课效果值+教室利用率+课程时间间距。上课效果值的计算:用一个长为6的数组表 a表示。:第i时段上课效果值时段号12345610.90.80.70.80.7教室利用率:学生人数/ 教室容量;课程时间间距: 同一班级同一门课程安排在同一天、或相邻近的两天属于低效率。 定义一个时间段关联矩阵B=() 。, 4、查询按下查询全部课表,弹出查询课表界面(如图6)。根据需要选择班级课程表、教室时间表、教师课程表。方法:根据所选的查询条件,分别从教师时间库、教室时间库、班级时间库中得到相应数据显示于指定区域,形成课程表。、遗传算法进行求解并优化遗传算法的基本原理是:首先采用某种编码方式(如二进制编码)将解空间映射到编码空间,每个编码对应问题的一个解(称为染色体或个体)。一般通过随机方法确定初始的一群个体(称为种群),在种群中根据适应值或某种竞争机制选择个体,利用各种遗传操作算子产生下一代,如此进化下去,直到满足期望的终止条件。1、 解的表示表单元:一个班级的课程表为一个表单元。每周按7天计、每天按6个时间段计。如果周末和某些时间段不能排课,可以在初始约束时用一个布尔变量关闭。时间段填充:单元中的时间段上用2元组(课程号,教室号)进行填充,当课程有重复次数时,固定课程号做重复填充。原子码:班级码+课程码+星期码+时段码+教室码。 其中,班级码和课程码之间的关系是固定的。表单元码:相同班级码的原子码集合。个体码:假设有n个班,n个表单元码构成的序形成一个个体码。可行解:满足协调条件的个体码。2、 选择初始群体(1) 根据给定的班级、该班级本学期所要上的课程集合、以及每门课的重复次数。随机产生星期码、时段码、教室码。与班级码和课程码构成一个原子码。(2) 由原子码生成表单元码。(3) 由表单元码生成个体码。(4) 根据初始群体大小,生成由个体组成的初始群体。3、 确定评价函数评价函数在遗传过程中起着环境的作用,根据评价函数产生每个个体的适应值。这里,我们将时间段效率、时间间距约束、教室利用率等因素结合起来定义评价函数。时间段效率和时间间距约束涉及到上课的效果,教室利用率涉及到资源的利用问题。因此,应该优先考虑时间段效率和时间间距约束,在保证这两者的前提下,再考虑教室利用率。在评价函数中,前两者所占的比重相对较高。在每个个体中,每个三元组(星期码,时段码,教室码)对应着时间段效率和教室利用率。对于每个班的重复课程,对应着一个时间间距约束问题。将这三个因素按比例进行累加,就可以得到每个个体的适应值。4、 遗传策略通常,我们在遗传过程中采用三种算子:复制、杂交、变异,三者概率分别为Pr,Pc,Pm。(1)复制算子(reproduction): 复制算子从群体中按照某一概率选择个体,某个体si被选择的概率Pi与其适应值成正比。通常,我们用轮盘赌(roulette wheel)方法进行实现。轮盘赌方法的实现如下:设群体S:s1,s2,sn,每个个体的适应值分别为f(s1),f(s2),f(sn),令sumf(s1)+f(s2)+f(sn),某个体所si被选择的概率Pif(si)/sum (i=1,2,n),在0与sum之间产生一个随机数A,令B0,依概率p1,p2,pn在1到n之间随机产生一个个体编号m,将f(sm)累加进B中,直到BA,将此sm作为被选个体。 (2)杂交算子(Crossover): 杂交算子将被选中的两个个体的基因链按概率Pc进行杂交,即在某一确定段上,对等交换代码,生成两个新的个体,杂交位置是随机的。 (3)变异算子(Mutation): 变异算子将新个体的基因链的各位按概率Pm进行变异,对二进制基因链来说就是对某些随机选取的位置取反。 在本系统中,对每一代群体,我们首先用协调条件进行一次筛选,剔除不满足协调条件的个体。然后才对个体进行演化计算产生下一代,从而加快了进化速度。我们结合上述三种算子,采取了一种新的遗传策略。在得到群体中每个个体的适应值后,首先用轮盘赌方法将群体选择到交配池中,然后从交配池中每次取两个个体依概率进行杂交或变异产生临时新群体,此时,临时新群体数目与父代群体数目相同。接着,再将临时新群体中每个个体依概率选择或直接复制到下一代,或与上一代对应个体进行竞争(即若其适应值比上一代对应个体差,则将上一代个体保留下来,否则将其保留至下一代)。另外,将每一代中最优个体进行保存,每次产生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《英语口译》课程介绍与教学大纲
- 统编版小升初语文专项复习:修辞手法(有解析)
- 特是如何运作
- 统编版八年级语文下册名著梳理与整合【学生版】
- 荔枝吃法有哪些
- 老年人地震教育知识培训课件
- 赏析小说形象(知识清单)-2026年高考语文一轮复习原卷版
- 生于忧患死于安乐-中考语文复习古诗文专项讲义(原卷版)
- 老年人保护胃课件
- 生物工程及其安全伦理问题(有解析)-高二生物学浙科版作业
- 艺康servsafe培训课件
- TDT1067-2021不动产登记数据整合建库技术规范
- 加气站投诉处理管理制度
- 2025-2030年再生铝行业市场现状供需分析及投资评估规划分析研究报告
- Unit 3 Same or Different?Section A 课件 人教版英语八年级上册
- 智能仓储物流管理平台的设计与开发
- 2025上海戏剧学院辅导员考试试题及答案
- 中国热射病诊断与治疗指南(2025版)
- 眼科患者的体位管理
- 物流中级考试试题及答案
- 小学一年级100以内加减法练习题3000道
评论
0/150
提交评论