ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:530.73KB ,
资源ID:6913571      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6913571.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(排课建模.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

排课建模.docx

1、排课建模排课问题的数学建模摘要为了解决日益繁琐的排课问题,针对本校情况,我们将在本文对排课问题进行分析和讨论(课程分类,课室条件,老师要求等),利用排课软件,设计程序,建立各种模型来进行排课。背景由于受教育人口的增加,教育制度的改革完善,科学领域的日益广泛,人们将面对越来越多排课问题。据了解,很多学校机构还是用人工排课,人工操作不仅工作量大而且容易出错。因此,利用计算机建立排课模型,模拟排课是非常有必要的。问题提出随着现代教学的改革及各项教育工程的实施,新的教育体制对课表的编排提出了更高的要求。但现实生活中,排课问题屡屡皆是,小学如此,中学如此,大学更是如此,不仅科目多样,而且教室、老师多变,

2、这使得排课问题往往是很令人费解的。经过分析,排课问题就是多资源组合问题,问题的求解就是找出各个元素之间的对应关系。进而将各个元素之间的联系进一步确定,转化成一个可以量度其大小的值,从而确定优先级。下面我们将通过分析得出数学模型来模拟排课。关键词课程分类 优先考虑 分2个课表 软件排课 程序排课 分元素排课数据收集与分类首先确定排课的对象,这里我们以本校为对象,考虑到学校课程规模过于庞大,为简化问题,这里把对象缩小为信息工程的应用电子技术方向专业的课程。经过我们的收集和分类,课程总共可分为1公共基础理论课,2专业基础理论课,3实验实习实训课,4专业基础理论课,5专业理论课,6设计课这六类课程。然

3、后我们把地点,也就是教室分为1(400人),2(200人),3(100人),4(50人),5体育馆,6实验室这六个场地。接着是老师,由于对老师的情况并不十分了解,而且老师的特性分化不明显,这里简单地把老师分为1男教师和2女教师。数据性质和意义公共基础理论课:该课程数目多,课时长,而且需要的教室多为大教室,但是课程类型表现明显,所以排这类课规模大但容易排。专业基础理论课:科目多,一般为两个班同时授课,容易排。专业理论课:课程不难安排,最大问题是老师的分配。课程设计:上课地点单一,课时以周计算,容易安排。实验实习实训课:数目少,地点多变且不充足,容易冲突,不易排。教室:不考虑设备故障等情况,所以教

4、室状况对排课没影响。老师:老师的要求因人而异,而且多变,所以暂时把老师分为男女两类,男教师课适应高强度工作。学生:完全服从分配,对排课没有影响。排课算法和假设规定规则: 1 必修课安排在上午或下午,选修课安排在晚上或周末;2 公共基础课优先在早上,实验课优先在下午安排;3 同一科目每天只能安排一次;4 老师一天上课不多于3节(6小节);假设:1 学生完全服从课程安排;2 场地(课室)足够,完全可用状态,不考虑场地故障等因素;3 老师处于工作和健康状态;4 根据课程性质和上课场地的不同,将课程分为理论课和实验课两个课表;模型建立:模型一:由于排课中各个元素关系复杂,首先考虑用排课高手软件排课。主

5、要流程如下:1 先输入全校的教师:2 设置课程表,包括循环天数,每天节数,班级数并输入全校的课程和班级名称和班主任:3 确定课程安排的规则,如连课,n班同上的课程,尽量不安排在哪节的课程等:4 模拟教室(设置教学楼名称,层数,每层的课室数并对课室编号):5 老师的要求(每天的最多课数,末节不排等):6 老师选课,确定哪位老师上哪班的课和每周上多少节课:7 最后由软件自动排课,完成后可查看每个班的课表并打印出来:用排课高手排课可以省去了排课室和时间的问题,减少了不少的工作量,能比较全面地排课,是一款比较典型的排课软件。模型二:元素划分法:将课表抽象为一个空格,这个空格由四种元素组成,分别是课程,

6、地点,班级和时间。由于老师教哪门课,教多少门课,哪个班的课是不定的,所以这里没有把老师编排到课表里面,而是完成课表后再由老师来选课,这样可以满足老师的各种要求,以老师为优先考虑条件。但是老师必须按照规定去选,不能不选或多选。同样我们也可以把元素班级改为老师,让班级去选。这样可以让学生选自己喜欢的老师,满足学生的需要。但是得规定学生必须按先到先得的原则选课和不能不选课。模型三:编程排课:设要安排的课程为 C1 , C2 , ., Cn ,课程总数为n , 而各门课程每周安排次数(每次为连续的2 学时) 为 N1 , N2 , ., Nn ;每周教学日共5 天,即星期一 星期五;每个教学日最多安排

7、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 ) 都具有如下格式:T

8、i 的数据类型C 语言格式定义为:unsigned int . Ti 的最高位是该课程目前是否是有效的标志,0 表示有效,1 表示无效(如停课等) ;其它各位称为课程分配位, 每个课程分配位占连续的3 个位(bit) ,表示某教学日(星期一 星期五) 安排该课程的时间段的值,0 表示当日未安排,1 4 表示所安排的相应的时间段(超过4 的值无效) .在这种设计下, 有效的时间段分配字的值应小于32 768 (十六进制8000) , 而大于等于32 768 的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如此) , 因此很容易实现停课/ 开课处理.3 .排课算法在上述假设下,自动

9、排课算法的目标就是确定 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

10、 次) ,再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合 N1 , N2 , ., Nn 中给定的值为止. 在算法描述中将用 C1 , C2 , ., 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

11、 = 0对课程索引值c-index = 1 ,2 , ., n 进行以下操作:如果Nc-index 0 ,则做以下操作:把segment 的值写入Tc-index 的第(week - 1) 3 3week 3 3 - 1 位中Nc-index 的值减1如果Nc-index 0 ,则置flag = 1如果week = 5 并且segment = 4 则:置flag = 1 并转否则:如果segment = 4则:置segment = 1 且week 增1否则:segment 增1检测是否已全部安排完毕:如果flag = 1则:转否则:转检测是否成功:如果flag = 1则:开课次数过多否则:课程

12、安排成功算法结束显然,本算法的时间复杂度为O ( N) ( N 为每周总开课次数, 见(2) 式) , 而存储时间段分配字所用空间为2 n 个字节( n 为课程门数) .4 .冲突检测算法有时在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i 门课程在人工干预下改成星期数为week 、时间段为segment 的位置,则根据上述数据结构需做如下运算:T i = T i &( (7 (week - 1) * 3) ) + (segment (week - 1)*3) ,其中&、 和n 分别为按位与、按位取反和按位左移运算符(下同) .问题是如何判断是否已有其它课程安排在同一个时间段上. 设

13、人工调整的时间段分配字为T1 ,则该问题描述为:判断时间段分配字T 1 与 T2 , 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 做以下操作:如果T1 &

14、 mask 等于Tc-index & mask ,而且二者不等于0则: T 1 与Tc-index 相冲突,转mask 左移3 位(或乘8)算法结束本算法时间复杂度为O ( n) ( n 为课程门数)5.算法分析 此算法以课程为中心,进行搜索匹配,取最先匹配的值;具有占有空间少,运算速度快的特点。但其未对数据进行择优选取,所以不能对教学资源(教师、教室)合理分配,也不能满足一些特殊要求(比如有些老师喜欢上午上课,有些老师偏向于集中式上课;有些课程安排到上午会更合适些,有些课程不能安排到上午等)。心得体会经过本次建模,我们深刻地了解到对建模对象的认识和了解非常重要,没有对建模对象的认识,就很难有

15、建模的思维。要对建模对象有全面的了解,经过搜集资料和数据,然后分析,对象可以用什么模型才合适。建模的时候需要借助其他很多的资源,例如论文,软件工具,图像模型等,比较分析得出最优方案。参考文献1自动排课算法分析纳米程序员 论文2011-08-032排课高手教学管理软件 智能电脑排课系统 21.10版资料附录:排课高手部分排课数据各班排课设置(每班第1行:级号,班号,班级名;若已有班级排课设置则以下各行为:课程号、教师号、每周全周节数、教室号、其中每周补课节数,如果其中每周补课节数为“0”则表示该课程不允许排在补课位置,如果其中每周补课节数空则表示该课程在补课位置可排可不排。):13,01, 9

16、, 42 , 5 , 0 , 12 , 56 , 5 , 0 , 39 , 85 , 5 , 0 , 13 , 70 , 4 , 0 , 50 , 89 , 4 , 0 , 21 , 100 , 3 , 3 , 8 , 27 , 2 , 0 , 1 , 114 , 2 , 0 , 3 , 0 , 9 , 0 , 0 , 0 , 2 , 0 ,-113,02, 9 , 35 , 5 , 0 , 12 , 56 , 5 , 0 , 39 , 85 , 5 , 0 , 13 , 70 , 4 , 0 , 50 , 95 , 4 , 0 , 21 , 100 , 3 , 3 , 8 , 27 , 2

17、, 0 , 1 , 114 , 2 , 0 , 3 , 0 , 9 , 0 , 0 , 0 , 2 , 0 ,-113,03, 12 , 46 , 5 , 0 , 39 , 95 , 5 , 0 , 9 , 42 , 4 , 0 , 13 , 70 , 4 , 0 , 50 , 95 , 4 , 0 , 21 , 100 , 3 , 3 , 8 , 27 , 2 , 0 , 1 , 114 , 2 , 0 , 11 , 42 , 1 , 0 , 3 , 0 , 9 , 0 , 0 , 0 , 2 , 0 ,-113,04, 38 , 82 , 6 , 0 , 12 , 53 , 5 , 0 ,

18、 9 , 41 , 4 , 0 , 13 , 73 , 4 , 0 , 5 , 29 , 4 , 0 , 22 , 102 , 3 , 3 , 1 , 114 , 2 , 0 , 11 , 41 , 1 , 0 , 3 , 0 , 10 , 0 , 0 , 0 , 2 , 0 ,-1每周天数: 6 每天节数: 7 各年级名称下面的“1”表示该班级课表已排,“0”表示该班级课表未排。13年级01班, 1 星期 1 0390850000050089000005008900000030000000021*021*0020010065星期 2 00904200000090420000012056000

19、00120560000003000000000111400000030000000星期 3 0390850000039085000000300000000030000000013070000001307000000030000000星期 4 0120560000012056000005008900000500890000009042000000300000000000000000星期 5 00802700000080270000039085000003908500000011140000021*0030000000星期 6 01307000000130700000012056000000000

20、0000000904200000090420000003000000013年级02班, 1 星期 1 0500950000050095000000903500000090350000039085000000300000000020010065星期 2 021*021*00300000000000000000012056000001205600000011140000星期 3 0130700000013070000003908500000390850000003000000000300000000030000000星期 4 050095000005009500000120560000012056

21、0000009035000000903500000030000000星期 5 0390850000039085000000802700000080270000003000000000300000000000000000星期 6 0120560000021*0030000000001114000001307000000130700000009035000013年级03班, 1 星期 1 0090420000009042000000300000000030000000039095000000111400000020010065星期 2 0500950000050095000000300000000

22、030000000013070000001307000000120460000星期 3 0390950000039095000001204600000120460000008027000000802700000030000000星期 4 021*021*00904200000090420000001114000000300000000000000000星期 5 0500950000050095000001307000000130700000039095000003909500000030000000星期 6 021*011042000000300000000030000000012046000

23、00120460000000000000013年级04班, 1 星期 1 0120530000012053000000502900000050290000001114000000300000000020010065星期 2 01307300000130730000022*022*038082000003808200000030000000星期 3 0120530000012053000000904100000090410000003000000000300000000030000000星期 4 0380820000038082000000502900000050290000003000000000300000000011140000星期 5 0110410000022*00300000000030000000013073000001307300000000000000星期 6 0090410000009041000003808200000380820000012053000000300000000000000000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1