孙玮
摘 要:针对高校新生分班分寝室工作的关联性和重要性、分寝室问题算法较少等问题,对高校分班分寝室问题进行了数学建模,设计了基于矩阵的算法实现,提出了分班分寝室一体化系统。系统以新生招生数据和班级数作为输入,自动完成学生班级、寝室床位及学号的编排。本系统已正式上线运行多年,具有操作简单、效率高等优点。
关键词:分班;分寝室;建模;算法
中图分类号:TP311 文献标识码:A
Abstract:Considering the correlation and importance of assigning classes and dormitories,as well as the lack of algorithms,we proposed an integrated system of assigning classes and dormitories for colleague based on matrix algorithm modeling.By inputting the number of class and new students,the system can automatically complete the assignment of class,dormitory and student number.This system has been officially in use for a few years,and owns the advantages like simple operation and high efficiency.
Keywords:assigning classes;assigning dormitories;modeling;algorithm
1 引言(Introduction)
新生分班分寝室工作是高校展开迎新工作遇到的第一个问题,如何充分利用有限的资源,减少学生报到环节,加快报到速度,尽快安排学生入住宿舍成为了高校迎新工作的关键所在[1]。如果采用手工分班的方法,一方面,由于数据量大,工作人员将花费大量时间在这一环节上,另一方面,数据的准确性、科学性也得不到保证,不利于各部门之间数据的共享性[2]。因此,合理利用计算机开发分班分寝室系统,实现自动化成为必然选择[3]。
班级和寝室的风气和氛围,直接或间接影响学生人生观、价值观的形成,影响学生学习、生活习惯的养成,影响学生与人和睦相处能力的培养,因此,科学、合理、人性化地对学生进行班级编排、宿舍分配,是高校学生管理工作中比较重要的一环,也是老师、家长、学生普遍关心的问题。但是学生分班分寝室问题影响因素较多,综合情况复杂,要把各个班级分得合理、均衡确非易事。因此实现学生班级的科学、合理编排,是值得我们关注和研究的课题[4]。
目前的文献都是对分班问题单独进行探讨的[4-8],对分寝室问题的算法研究更是甚少[9,10],但在实际过程中,多数高校的学号编排都是按照寝室及床位编号来排序,而寝室的安排则是在完成班级编排的基础上进行的,因此本文设计了分班分寝室一体化系统,系统仅以新生数据和班级数作为输入,就可以实现学生的班级、寝室床位及学号的自动编排,大大减少了工作人员的工作量和工作时间,保证了数据的准确性和科学性。
2 数学建模(Mathematical modeling)
2.1 问题描述
分班问题,可概括为多约束条件下的合理分配问题,即根据学生的某些特征,按照一定的算法,将具有同一属性的学生集合里的每个个体,分别编排到各个班级中[4,5]。分寝室问题跟分班问题类似。
我校的分班分寝室问题,主要考虑以下几个要素:
(1)按学生专业进行分班。
(2)同专业每个班级的总人数应平均为第一约束条件。
(3)同专业每个班级的男女生人数应平均为第二约束条件。
(4)同专业每个班级的学生的来源省份分布应平均为第三约束条件。
(5)按专业班级进行寝室及床位安排。
(6)每个班级的学生的来源省份在每个寝室的分布应平均。
2.2 模型设计
以某一专业为例,设该专业有n个学生,学生的来源省份共计m个,这一专业将被分成p个班。
3 算法设计(Algorithm design)
3.1 相关定义
还是以某一专业为例描述算法。
定义1:为阶矩阵,用于存储所有班级的基本编排信息,其中,p为该专业的班级数,每个班级对应矩阵的一行;其中,第1列元素表示第k个班级应有的总人数,第2列元素表示第k个班级现有女生人数,第3列元素表示第k个班级现有男生人数,第4列元素表示第k个班级现有人数。
定义2:为阶矩阵,用于存储所有班级的学生来源省份编排信息,其中,p为该专业的班级数,m为该专业学生来源省份的总数,每个班级对应矩阵的一行;其中,第j列元素表示第j个省份在第k个班级的现有人数。
定义3:为阶矩阵,用于存储每个学生的基本信息,其中n为该专业学生的总数,每个学生对应矩阵的一行;其中,第1列元素表示第i个学生的班级编号,第2列元素表示第i个学生的性别,“1”表示女生,“0”表示男生,第3列元素表示第i个学生的来源省份编号。
定义4:为阶矩阵,用于存储该专业所有女生寝室的基本编排信息,其中,为分配给该专业的寝室数,每个班级对应矩阵的一行;其中,第1列元素表示第个寝室可安排的人数,第2列元素表示第个寝室已安排的女生人数,第3列元素表示第个寝室第①号床位的安排情况,“1”表示已安排,“0”表示未安排,以此类推,第4、5、6列分别表示第个寝室第②、③、④号床位的安排情况,第7列表示第个寝室是否已完成编排,如果,则为“1”,反之,为“0”;endprint
定义5:为阶矩阵,用于存储该专业所有女生寝室的学生来源省份编排信息,其中,为分配给该专业的寝室数,为该专业女生的来源省份的总数,每个寝室对应矩阵的一行;其中,第列元素表示第个省份在第个寝室的现有人数。
定义6:为阶矩阵,用于存储该专业每个女生的基本信息,其中为该专业女生的总数,每个女生对应矩阵的一行;其中,第1列元素表示第个女生的寝室编号,第2列元素表示第个女生的床位,第3列元素表示第个女生的来源省份编号。
3.2 算法主要步骤
算法的主要步骤如下:
(1)初始化矩阵:输入参数班级数p,计算得到和的值分别为和。如果,则每班的总人数均为;如果,则随机选择个班,将这些班级的总人数定为,其余个班的总人数为,完成对矩阵第一列所有元素的赋值,矩阵其他列的所有元素的值均初始化为0。
(2)初始化矩阵:将矩阵所有元素均赋值为0。
(3)初始化矩阵:将矩阵第一列所有元素赋值为0,其余列各元素的值跟从数据库表中读取学生基本信息,并根据定义3依次赋值。
(4)初始化矩阵:分配给该专业的寝室数和各床位的安排情况均为已知,从数据库表中读取寝室和床位的基本信息,按照定义4依次对各元素赋值即可。
(5)初始化矩阵:将矩阵所有元素均赋值为0。
(6)依次从矩阵S的每一行中选择一个学生i,计算矩阵C第4列各元素的最小值,得到现有人数最少的班级集合K;根据该学生的性别,如果该学生为女生,则计算矩阵C第2列各元素的最小值,得到现有女生人数最少的班级集合,如果为男生,则计算矩阵C第3列各元素的最小值得到;根据该学生的生源省份j,计算矩阵第j列各元素的最小值,得到该省份j现有人数最少的班级集合。根据约束条件优先原则,如果,则随机选择中的一个班级;如果,则判断的情况,如果,则随机选择中的一个班级,如果,则随机选择K中的一个班级即可。
(7)根据步骤(4)得到的班级编号,结合学生i的基本信息,依次对矩阵C和中与班级所关联的元素进行+1的操作,并将班级编号写入矩阵S对应的学生i所在行的第一个元素里。
(8)重复步骤(4),直到矩阵C中每一行,有,即每个班的现有人数等于每个班应有的总人数。
(9)根据以编排好的班级信息,按班级编号升序方式依次读取该专业所有女生的基本信息,按定义6对矩阵的第3列进行赋值,而第1列和第2列的元素,因为尚未开始寝室编排,所以全部初始化为0。
(10)依次从矩阵的每一行中选择一个女生,选取的行,计算矩阵L第2列各元素的最小值,得到现有可安排人数最少的寝室集合;根据该女生的生源省份,计算矩阵第列各元素的最小值
,得到该省份现有人数最少的寝室集合。如果,则随机选择中的一个寝室,如果,则随机选择中的一个寝室,然后在该寝室中随机选择一个状态标记为“0”的床位即可得到寝室编号和床位编号。
(11)根据步骤(10)得到的寝室编号和床位编号,结合女生的基本信息,根据定义依次对矩阵L和中与寝室和床位所关联的元素进行+1的操作,并将寝室编号和床位编号写入矩阵对应的女生所在行的相应元素里。
(12)重复步骤(10),直到矩阵L中每一行,有,即每个寝室的应安排人数等于每个寝室已安排人数。
(13)根据已编排好的班级、寝室和床位信息,按学生班级、女生寝室号、女生床位号、男生寝室号、男生床位号的先后次序进行排序后,根据学号编码规则,学号末位从1开始,依次+1递增,即可完成该专业学生学号的编排。
4 系统实现(System implementation)
5 结论(Conclusion)
系统自2008年运行以来,广受师生好评。本校每年的本科新生规模在4000人左右,涉及专业共计40个左右,需编排的班级数大概80个左右。如果全部采用本系统进行自动编排,最多耗时1小时即可完成,为开展后续其他迎新工作节省了大量的宝贵时间。而且,每次使用系统之前,本校都会对往年和当年的新生数据及编排结果进行分析,对编排算法进行微调,以使系统的编排效果最佳。
参考文献(References)
[1] 徐峻.高校迎新流程的优化及迎新系统的设计与开发[D].电子科技大学,2012.
[2] 解辉,杨亚辉.基于VFP的新生分班系统[D].陕西国防工业职业技术学院学报,2005,23(1):16-19.
[3] 张定国.VFP在高校新生分班的应用[J].科技信息,2010,35:720.
[4] 马燕,王文发,李宏达.基于矩阵存储的学生分班问题的回溯算法[J].计算机工程与设计,2009,30(12):3022-3025.
[5] 朱珣.分班问题的拉斯维加斯算法实现[D].江汉大学学报,2007,35(4):56-59.
[6] 陈英.高校教务管理系统中的一种新的分班算法及实现[J].新余高专学报,2007,12(5):85-86.
[7] 许志国,高艳玲,谭小容.高校学号编排与自动化实现技术[J].文教资料,2005,32:21-22.
[8] 申子明.高职院校新生注册管理系统的构建与实现[D].电子科技大学,2012.
[9] 陆健.大学生寝室怎么分更好[N].光明日报,2013-8-26(006).
[10] 刘世坤,龚涛.从控制论角度探讨大学生寝室管理模式[J].中国科教创新导刊.2013,19:219.
作者简介:
孙 玮(1983-),女,硕士,工程师.研究领域:网络信息系统.endprint
定义5:为阶矩阵,用于存储该专业所有女生寝室的学生来源省份编排信息,其中,为分配给该专业的寝室数,为该专业女生的来源省份的总数,每个寝室对应矩阵的一行;其中,第列元素表示第个省份在第个寝室的现有人数。
定义6:为阶矩阵,用于存储该专业每个女生的基本信息,其中为该专业女生的总数,每个女生对应矩阵的一行;其中,第1列元素表示第个女生的寝室编号,第2列元素表示第个女生的床位,第3列元素表示第个女生的来源省份编号。
3.2 算法主要步骤
算法的主要步骤如下:
(1)初始化矩阵:输入参数班级数p,计算得到和的值分别为和。如果,则每班的总人数均为;如果,则随机选择个班,将这些班级的总人数定为,其余个班的总人数为,完成对矩阵第一列所有元素的赋值,矩阵其他列的所有元素的值均初始化为0。
(2)初始化矩阵:将矩阵所有元素均赋值为0。
(3)初始化矩阵:将矩阵第一列所有元素赋值为0,其余列各元素的值跟从数据库表中读取学生基本信息,并根据定义3依次赋值。
(4)初始化矩阵:分配给该专业的寝室数和各床位的安排情况均为已知,从数据库表中读取寝室和床位的基本信息,按照定义4依次对各元素赋值即可。
(5)初始化矩阵:将矩阵所有元素均赋值为0。
(6)依次从矩阵S的每一行中选择一个学生i,计算矩阵C第4列各元素的最小值,得到现有人数最少的班级集合K;根据该学生的性别,如果该学生为女生,则计算矩阵C第2列各元素的最小值,得到现有女生人数最少的班级集合,如果为男生,则计算矩阵C第3列各元素的最小值得到;根据该学生的生源省份j,计算矩阵第j列各元素的最小值,得到该省份j现有人数最少的班级集合。根据约束条件优先原则,如果,则随机选择中的一个班级;如果,则判断的情况,如果,则随机选择中的一个班级,如果,则随机选择K中的一个班级即可。
(7)根据步骤(4)得到的班级编号,结合学生i的基本信息,依次对矩阵C和中与班级所关联的元素进行+1的操作,并将班级编号写入矩阵S对应的学生i所在行的第一个元素里。
(8)重复步骤(4),直到矩阵C中每一行,有,即每个班的现有人数等于每个班应有的总人数。
(9)根据以编排好的班级信息,按班级编号升序方式依次读取该专业所有女生的基本信息,按定义6对矩阵的第3列进行赋值,而第1列和第2列的元素,因为尚未开始寝室编排,所以全部初始化为0。
(10)依次从矩阵的每一行中选择一个女生,选取的行,计算矩阵L第2列各元素的最小值,得到现有可安排人数最少的寝室集合;根据该女生的生源省份,计算矩阵第列各元素的最小值
,得到该省份现有人数最少的寝室集合。如果,则随机选择中的一个寝室,如果,则随机选择中的一个寝室,然后在该寝室中随机选择一个状态标记为“0”的床位即可得到寝室编号和床位编号。
(11)根据步骤(10)得到的寝室编号和床位编号,结合女生的基本信息,根据定义依次对矩阵L和中与寝室和床位所关联的元素进行+1的操作,并将寝室编号和床位编号写入矩阵对应的女生所在行的相应元素里。
(12)重复步骤(10),直到矩阵L中每一行,有,即每个寝室的应安排人数等于每个寝室已安排人数。
(13)根据已编排好的班级、寝室和床位信息,按学生班级、女生寝室号、女生床位号、男生寝室号、男生床位号的先后次序进行排序后,根据学号编码规则,学号末位从1开始,依次+1递增,即可完成该专业学生学号的编排。
4 系统实现(System implementation)
5 结论(Conclusion)
系统自2008年运行以来,广受师生好评。本校每年的本科新生规模在4000人左右,涉及专业共计40个左右,需编排的班级数大概80个左右。如果全部采用本系统进行自动编排,最多耗时1小时即可完成,为开展后续其他迎新工作节省了大量的宝贵时间。而且,每次使用系统之前,本校都会对往年和当年的新生数据及编排结果进行分析,对编排算法进行微调,以使系统的编排效果最佳。
参考文献(References)
[1] 徐峻.高校迎新流程的优化及迎新系统的设计与开发[D].电子科技大学,2012.
[2] 解辉,杨亚辉.基于VFP的新生分班系统[D].陕西国防工业职业技术学院学报,2005,23(1):16-19.
[3] 张定国.VFP在高校新生分班的应用[J].科技信息,2010,35:720.
[4] 马燕,王文发,李宏达.基于矩阵存储的学生分班问题的回溯算法[J].计算机工程与设计,2009,30(12):3022-3025.
[5] 朱珣.分班问题的拉斯维加斯算法实现[D].江汉大学学报,2007,35(4):56-59.
[6] 陈英.高校教务管理系统中的一种新的分班算法及实现[J].新余高专学报,2007,12(5):85-86.
[7] 许志国,高艳玲,谭小容.高校学号编排与自动化实现技术[J].文教资料,2005,32:21-22.
[8] 申子明.高职院校新生注册管理系统的构建与实现[D].电子科技大学,2012.
[9] 陆健.大学生寝室怎么分更好[N].光明日报,2013-8-26(006).
[10] 刘世坤,龚涛.从控制论角度探讨大学生寝室管理模式[J].中国科教创新导刊.2013,19:219.
作者简介:
孙 玮(1983-),女,硕士,工程师.研究领域:网络信息系统.endprint
定义5:为阶矩阵,用于存储该专业所有女生寝室的学生来源省份编排信息,其中,为分配给该专业的寝室数,为该专业女生的来源省份的总数,每个寝室对应矩阵的一行;其中,第列元素表示第个省份在第个寝室的现有人数。
定义6:为阶矩阵,用于存储该专业每个女生的基本信息,其中为该专业女生的总数,每个女生对应矩阵的一行;其中,第1列元素表示第个女生的寝室编号,第2列元素表示第个女生的床位,第3列元素表示第个女生的来源省份编号。
3.2 算法主要步骤
算法的主要步骤如下:
(1)初始化矩阵:输入参数班级数p,计算得到和的值分别为和。如果,则每班的总人数均为;如果,则随机选择个班,将这些班级的总人数定为,其余个班的总人数为,完成对矩阵第一列所有元素的赋值,矩阵其他列的所有元素的值均初始化为0。
(2)初始化矩阵:将矩阵所有元素均赋值为0。
(3)初始化矩阵:将矩阵第一列所有元素赋值为0,其余列各元素的值跟从数据库表中读取学生基本信息,并根据定义3依次赋值。
(4)初始化矩阵:分配给该专业的寝室数和各床位的安排情况均为已知,从数据库表中读取寝室和床位的基本信息,按照定义4依次对各元素赋值即可。
(5)初始化矩阵:将矩阵所有元素均赋值为0。
(6)依次从矩阵S的每一行中选择一个学生i,计算矩阵C第4列各元素的最小值,得到现有人数最少的班级集合K;根据该学生的性别,如果该学生为女生,则计算矩阵C第2列各元素的最小值,得到现有女生人数最少的班级集合,如果为男生,则计算矩阵C第3列各元素的最小值得到;根据该学生的生源省份j,计算矩阵第j列各元素的最小值,得到该省份j现有人数最少的班级集合。根据约束条件优先原则,如果,则随机选择中的一个班级;如果,则判断的情况,如果,则随机选择中的一个班级,如果,则随机选择K中的一个班级即可。
(7)根据步骤(4)得到的班级编号,结合学生i的基本信息,依次对矩阵C和中与班级所关联的元素进行+1的操作,并将班级编号写入矩阵S对应的学生i所在行的第一个元素里。
(8)重复步骤(4),直到矩阵C中每一行,有,即每个班的现有人数等于每个班应有的总人数。
(9)根据以编排好的班级信息,按班级编号升序方式依次读取该专业所有女生的基本信息,按定义6对矩阵的第3列进行赋值,而第1列和第2列的元素,因为尚未开始寝室编排,所以全部初始化为0。
(10)依次从矩阵的每一行中选择一个女生,选取的行,计算矩阵L第2列各元素的最小值,得到现有可安排人数最少的寝室集合;根据该女生的生源省份,计算矩阵第列各元素的最小值
,得到该省份现有人数最少的寝室集合。如果,则随机选择中的一个寝室,如果,则随机选择中的一个寝室,然后在该寝室中随机选择一个状态标记为“0”的床位即可得到寝室编号和床位编号。
(11)根据步骤(10)得到的寝室编号和床位编号,结合女生的基本信息,根据定义依次对矩阵L和中与寝室和床位所关联的元素进行+1的操作,并将寝室编号和床位编号写入矩阵对应的女生所在行的相应元素里。
(12)重复步骤(10),直到矩阵L中每一行,有,即每个寝室的应安排人数等于每个寝室已安排人数。
(13)根据已编排好的班级、寝室和床位信息,按学生班级、女生寝室号、女生床位号、男生寝室号、男生床位号的先后次序进行排序后,根据学号编码规则,学号末位从1开始,依次+1递增,即可完成该专业学生学号的编排。
4 系统实现(System implementation)
5 结论(Conclusion)
系统自2008年运行以来,广受师生好评。本校每年的本科新生规模在4000人左右,涉及专业共计40个左右,需编排的班级数大概80个左右。如果全部采用本系统进行自动编排,最多耗时1小时即可完成,为开展后续其他迎新工作节省了大量的宝贵时间。而且,每次使用系统之前,本校都会对往年和当年的新生数据及编排结果进行分析,对编排算法进行微调,以使系统的编排效果最佳。
参考文献(References)
[1] 徐峻.高校迎新流程的优化及迎新系统的设计与开发[D].电子科技大学,2012.
[2] 解辉,杨亚辉.基于VFP的新生分班系统[D].陕西国防工业职业技术学院学报,2005,23(1):16-19.
[3] 张定国.VFP在高校新生分班的应用[J].科技信息,2010,35:720.
[4] 马燕,王文发,李宏达.基于矩阵存储的学生分班问题的回溯算法[J].计算机工程与设计,2009,30(12):3022-3025.
[5] 朱珣.分班问题的拉斯维加斯算法实现[D].江汉大学学报,2007,35(4):56-59.
[6] 陈英.高校教务管理系统中的一种新的分班算法及实现[J].新余高专学报,2007,12(5):85-86.
[7] 许志国,高艳玲,谭小容.高校学号编排与自动化实现技术[J].文教资料,2005,32:21-22.
[8] 申子明.高职院校新生注册管理系统的构建与实现[D].电子科技大学,2012.
[9] 陆健.大学生寝室怎么分更好[N].光明日报,2013-8-26(006).
[10] 刘世坤,龚涛.从控制论角度探讨大学生寝室管理模式[J].中国科教创新导刊.2013,19:219.
作者简介:
孙 玮(1983-),女,硕士,工程师.研究领域:网络信息系统.endprint