vb.net 分班算法请教

问题描述

各位大神,请教一个算法的设计问题,还请各位大神帮忙!问题描述:在excel表中有学生的考试成绩,如班级、姓名、性别、是否住宿、语文、数学、英语、总分。(共1000人)。现在需要把这个电算表的学生分成15个班,要求各班平均分接近,总人数均衡、性别、男女住宿及住宿总数均衡。如果能各科平均分均衡就更好了。之前的算法比较简单,按照总分降序,然后按S形排列如1,2,3,4,5,5,4,3,2,1,这样的形式分班。先分男生住宿再分女生住宿,在分男生在分女生。这样能够做到基本均衡。但是会使各班各科的平均分差距较大,请教大家:1、如何设计一个算法,实现学生的分班呢?2、如果按照总分的S形分班,会造成各班男女生比例失衡,如何实现学生的调班呢。比如1班男生多,需要到3班(他们男生少),然后对应调换回来一个与1班这个男同学分数接近的男生,这样的算法如何实现。3、如果按照各科都进行一次S形分班,就会得到每个学生可能去的班级,如A同学语文分应该去2班、数学分应该去3班、英语分应该去2班,那么这个学生就去2班,请问这样的算法是否具有可行性?多谢!

解决方案

解决方案二:
我是这么想的,首先先分为男住宿池,女神住宿池,男归宅池和女神归宅池,每个池都按分数高低排好序,假设要分为4个班。首先从男住宿池里拿出分数最高者放入班A,次高者放入班B,班C和D也依次放入第三第四名,接着从女神住宿池里拿到成绩最高的女神放入分数最低的班D,次高者放入班级C,后面以此类推。放入一对狗男女以后,对班级ABCD按当前平均分重新排一次序,排序后再按之前规则再放入一对狗男女,重复上述操作直到男女住宿池中的一个用完,然后开始从归宅池里抓。
解决方案三:
引用1楼xdashewan的回复:

我是这么想的,首先先分为男住宿池,女神住宿池,男归宅池和女神归宅池,每个池都按分数高低排好序,假设要分为4个班。首先从男住宿池里拿出分数最高者放入班A,次高者放入班B,班C和D也依次放入第三第四名,接着从女神住宿池里拿到成绩最高的女神放入分数最低的班D,次高者放入班级C,后面以此类推。放入一对狗男女以后,对班级ABCD按当前平均分重新排一次序,排序后再按之前规则再放入一对狗男女,重复上述操作直到男女住宿池中的一个用完,然后开始从归宅池里抓。

解决方案四:
这种分配的结果可能导致如果分四个班,某个班级前十名人数会比其他班级多2-3个而且前两名可能会被分到一个班级
解决方案五:
引用3楼itcaicai的回复:

这种分配的结果可能导致如果分四个班,某个班级前十名人数会比其他班级多2-3个而且前两名可能会被分到一个班级

得到前两名的班级必然也会得到两个极差生,你要保证的是平均分,又不是按排名来分,你实在不想前2在一起,你先把前2分了,再去套这套逻辑不就好了
解决方案六:
引用4楼xdashewan的回复:

Quote: 引用3楼itcaicai的回复:
这种分配的结果可能导致如果分四个班,某个班级前十名人数会比其他班级多2-3个而且前两名可能会被分到一个班级

得到前两名的班级必然也会得到两个极差生,你要保证的是平均分,又不是按排名来分,你实在不想前2在一起,你先把前2分了,再去套这套逻辑不就好了

这样可以均衡总平均,如果想要各科也基本平衡应该如何处理?
解决方案七:
引用5楼itcaicai的回复:

这样可以均衡总平均,如果想要各科也基本平衡应该如何处理?

各科稍许有些麻烦,首先你按上述分完班,然后求出每个班级的各科平均分,自己定一个基准线,比如允许的波动值在上下5分,那么先找到大于这5分科目的班级,找到该科中最低或者比较低(是否取最低又关系到排位,你自己衡量)的人。再找到该科目小于或者最接近小于5分的班级,按照分数低于平均线,性别相同,住宿条件相同,其他科目成绩也最接近于平均线的那人,和之前找出人做班级交换。重新计算各科成绩,重复上述操作,直到所有班级所有科目都入允许的波动值内。
解决方案八:
引用6楼xdashewan的回复:

Quote: 引用5楼itcaicai的回复:
这样可以均衡总平均,如果想要各科也基本平衡应该如何处理?

各科稍许有些麻烦,首先你按上述分完班,然后求出每个班级的各科平均分,自己定一个基准线,比如允许的波动值在上下5分,那么先找到大于这5分科目的班级,找到该科中最低或者比较低(是否取最低又关系到排位,你自己衡量)的人。再找到该科目小于或者最接近小于5分的班级,按照分数低于平均线,性别相同,住宿条件相同,其他科目成绩也最接近于平均线的那人,和之前找出人做班级交换。重新计算各科成绩,重复上述操作,直到所有班级所有科目都入允许的波动值内。

对,我也有同样的想法,先分班,然后再根据一定条件调换就行了。实在不行先保存一个快照,然后随机调换两人,再计算总平均值、各科平均等,两班差值如果比原来的小,就保留,否则就还原原始的快照,重新再随机调换两人;然后添加个计数器,按这个方式循环几千次就停止。
解决方案九:
http://club.excelhome.net/thread-1034379-2-1.html

时间: 2024-10-01 15:56:55

vb.net 分班算法请教的相关文章

求大学新生英语分班的算法

问题描述 要对全校大一新生,根据其学院.专业.班级.英语成绩分班:基本要求:英语班分为A.B两种类型,成绩较好的分在A班,同班.同学院的优先分在同一个班 解决方案 解决方案二:数据来源是什么,如果是sql数据表中,那就直接根据查询语句分分钟解决了,但如果是list或者enum,那肯定又要不一样了

巧用WPS快速进行自动分班操作

前言:分班是教学管理信息化的一个热门话题,一般要用专门的软件,经过试验,用手头上的WPS电子表格,不需使用复杂的函数和公式,也可以轻松实现,现与大家一起分享. 一.处理思路 九年义务教育学校是不充许根据学生成绩进行分班的,所以各小学送上来的六年级学生名单只有两列:姓名.性别.学校要求实行自动编班,以实现校内义务教育均衡.分班要求如下: ①要求来自各小学的学生被平均分到各班中. ②各班的男生.女生比例要基本相同. 二.准备工作 1.确定算法.假设学校辖区有8间小学,共有400名学生,要分8个班,按

如何使用wps表格进行分班

  使用wps表格进行分班的方法 1.分配学生 1.1准备数据 启动WPS表格,按图1制好表格表头. 将包含姓名.性别和学科成绩的数据录入或复制.粘贴到表中.要得到总分,先拖选C3:J202区域,再单击工具栏上的求和按钮"∑". 拖选A2:J202区域,执行"数据→排序"命令,在打开的对话框中的"主要关键字"点击右侧三角箭头,在下拉列表中选择"总分",在其右侧选择"降序",在"次要关键字"

WPS表格来分班

在新的一学期,分班是学校的一项常规工作.传统方法按一定的顺序进行分班,就是假定按成绩分成4个班,第一轮,把1.2.3.4名次分到1.2.3.4班;第二轮,把5.6.7.8名次分别分到4.3.2.1班,依此类推.这样一来,1班和4班每两轮有最好的和最差的学生.以1班为例,分到1.8.9.16.17.24等名次,相邻两名次之间的差距两次中就有一次为7太大了,另外一次为1,太小了,这样会造成班主任的一点小意见. 改进方法:假定按成绩分成4个班,第一轮,把1.2.3.4名分别分到1.2.3.4班;第二轮

WPS表格教程:巧用函数轻松实现合理分班

班级授课制下,为学生分班是学校的常规工作.有时是为新生分班,有时是为特殊需要分班.无论如何分班,分班一定要科学合理,既要充分满足学生公平受教育的权利,又要充分满足教师公平竞争的权利;既要有利于学生的近期发展,更要有利于学生的后续发展. 分班标准因学段和学校的不同而不同,但班与班之间力求保持一种平衡.目前,小学新生和中职学校各专业多按性别分班,普通中学多按升学科目总分和学生性别分班.按性别均分有利于班级内部和谐与外部平等竞争;按成绩分班有利于对教师合理考核,调动教师的工作积极性. 如果生多班多,分

数据库-急求考勤循环排班算法

问题描述 急求考勤循环排班算法 给出一个循环周期的班次排班方案,如何按这个循环周期自动生成每一天的排班方案,数据库该如何设计,具体算法如何 解决方案 http://course.baidu.com/view/d125315e312b3169a451a4f1.html 解决方案二: 考勤排班算法和计算方式 http://jhnc.blog.163.com/blog/static/1365378200856112854897/ 解决方案三: oa系统设计---考勤系统算法 上网搜索了一下,大家基本上

r语言-TEST2:R语言算法请教,还请高手回复

问题描述 TEST2:R语言算法请教,还请高手回复 TEST2:R语言算法请教,还请高手回复,凑字数为凑字数到30个字 有点难度呀 解决方案 TEST 回答问题,自己可以回答自己的问题吗? 解决方案二: TEST 测试顶踩 发送不了了

赛车游戏相关算法请教

问题描述 赛车游戏相关算法请教 在赛车游戏中,远处的画面根据车速逐渐靠近的算法怎么写呢?就是根据车速画面由远至近的大小变化如何控制? 解决方案 我猜测是根据速度算出,图片显示的数序关系,完后投影映射?

巧用Excel完成文理分班

到了高一年级最后半学期,学校就要着手文理分班的工作了,学校要求班主任根据学生选科情况,将 前面四次大考的成绩按照高考"3+X+(文.理)综合"方案计算学生的总分以做分析留底.由于高一没有考综合科,综合科的成绩按相应科目取平均分得到,即选考物理.化学.生物的学生综合科成绩就取这三科成绩的平均分,选考政治.历史.地理的学生综合科成绩取这三科成绩的平均分. 新建一个工作簿,工作簿含四个工作表,用来放四次考试的成绩,分别命名为:I.II.III.IIII.成绩表I.II.III.IIII的结构