资源描述
窗体顶端
体能测试时间安排的优化设计(仅供参考)
摘要
本文根据体能测试时间安排的实际问题,首先确定了研究对象.主要考虑在体能测试仪器数量、测试班级数目及人数一定的情况下,将测试仪器充分利用,以达到测试时间段最少,且尽量节省学生等待时间的目的.
首先根据测试仪器的数量和测试速度,解出平均每位同学做各项测试所需的时间,由各项测试仪器的测试速度差,经合理转化,考虑整个流程简单化,得出测试仪器充分利用问题.台阶测试,立定跳远测试,和肺活量测试的最优排序问题,从而得出了一种最优的测试流程.
在对测试流程分析时,计算出在每个时间段最先测试的一组,测试时间为450秒,当进入正常运行后,最小测试周期为210秒.根据最小测试周期,分别算出了上午,下午测试人数的上限值和下限值.
其次以每个时间段测试总人数为目标函数,根据装箱子问题的算法,利用turbo C求出了所用的时间段(四个)和每个时间段所测试的班级,然后计算出了各班具体的测试时间.
在模型验证中分别从所需时间段最少和尽量减少学生的等待时间两方面入手,进行验证,得出了模型的合理性.
最后从测试时间段的选择,测量仪器的引进,测试场所的人员容量及班级怎样分组等四个方面给学校提供了参考意见.
关键词
装箱问题 配置比 优化设计 上限值 下限值 turbo c
一.问题重述
学校为了解学生的身体状况,新生入学都会进行体能测试,包括身高与体重、立定跳远、肺活量、握力和台阶试验共5个项目,均由电子仪器自动测量、记录并保存信息.
当然测试进展的快慢是由学校的测试场所和测量仪器决定的,而且还和测试的时间排序有关系.学校的测试仪器一定了,如下表所示:
仪器名称 身高与体重测量仪 握力测量仪 肺活量测量仪 立定跳远测量仪 台阶式测量仪
仪器数量(台) 3 2 1 1 2
一次测试人数/台11115测试用时(S) 10 15 20 20 210
测试场所的容量一定综合分析,通过已知的条件来定下测量的最优顺序.
学校要求同一班的所有学生在同一时间段内完成所有项目的测试,并且在整个测试所需时间段数最少的条件下,尽量节省学生的等待时间.
题一:请你用数学符号和语言表述各班测试时间安排问题,给出该数学问题的算法,尽量用清晰、直观的图表形式为学校工作人员及各班学生表示出测试时间的安排计划,并且说明该计划怎样满足学校的上述要求和条件.
题二:请对学校以后的体能测试就以下方面提出建议,并说明理由:如引进各项测量仪器的数量;测试场所的人员容量;一个班的学生是否需要分成几个组进行测试等.
二. 问题分析
由场地容量的限制为150人(最大),故一次性入场不得超过150人.由于仪器的限制,共有九台机器,最多同时测量17人.由题我们可以知道,学校要求同班同学必须在同一时间段内完成,这就说明测试现场的五项测试每个时间段所测试的人数是相等的.由仪器的性能及单个测量所用时间可以看出五项测量项目中,台阶测量最费时间,而握力及身高体重的测量所用时间很少,根据问题重述的条件我们可以简单计算出,平均每位同学握力所用时间为15/2=7.5S(不考虑录入个人信息用时,两台仪器同时开展工作,在这里可以视为一台)、身高测量平均每位同学用时10/3S(与上同理),这样即使加上五秒的录入个人信息时间也不会大于20S(立定跳远和肺活量测试的用时),故不论后两项测试时,学号有多乱,也不会影响其它项的测量.我们可以视其为附加项,可以忽略,可在任意位置测量.
立定跳远和肺活量的测量时间都是20S,二者可以视为同一测试项目的两台机器(即每位同学在同一项目测量两次).这样进一步是问题简单化.这样测试的顺序问题就迎刃而解,可以堪看成是台阶测试和立定调匀的排序问题,或者是台阶测试和测试肺活量的顺序.由此看来,台阶测试所用时间还是比较费时,故依然安排同学开始先测试台阶测试,之后在继续依次往后测试,直到结束.测试的顺序如下图所示:
三.模型的基本假设
1.假设测试过程中每位同学体能的消耗不影响测试.
2.假设负责测试的老师都能提前到岗,每位同学都可以准时到达测试地点.
3.假设同班的同学学号是连续的,不同班级学号不连续.
4.假设每个同学都是一次通过测试,不出现误测的情况.
5.假设测试过程中无外界因素的干扰,仪器皆按时投入工作,不出现故障.
6.假设学生转换过程中的时间已包括在各项测试时间内.
四.符号说明
X1……………………每组的人数
C1……………………中午所测组数的最大上限值
C2……………………中午所测组数的最小下限值
CS……………………下午所测组数的最大上限值
C4……………………下午所测组数的最小下限值
P1……………………台阶式测验仪器其中一台的编号
P2……………………台阶式测验仪器另一台的编号
T1……………………第一天上午实际测试的总时间
T2……………………第一天下午实际测试的总时间
T3……………………第二天上午实际测试的总时间
T4……………………第二天下午实际测试的总时间
ti……………………第i个班级测试所需要的总时间
五.模型的建立与求解
5.1模型分析
通过对问题分析,建立的测试过程可以看出,在第一小组同学进行测试的时候后边的机器有空闲,但是综合考虑其总体测试进程可以将进行第一小组测试的同学所用的时间忽略,当测试第二小组及以后的小组时,测试进入正常的运行,每个小组进行台阶测试的时间为210秒(学号相连),当两个小组做完台阶测试后,他们分别去做,立定跳远和肺活量的测试,然后这两个小组进行互换测试(即做立定跳远的去做肺活量,做肺活量的去做立定跳远),这样在上两个小组分别做完这两项测试后,下两个小组,都得有2次输入学号的过程,如果把这两个测试,看做一个整体计算其所用的时间为秒,正好与台阶测试的时间相等,这正好充分利用了机器,而且同学的等待时间在这3项测试中为最短.
在握力测试中,每20秒,过来一个同学测试,而握力测试只需要15秒,所以中间还有5秒的空闲时间,但是学生在这个过程中没有等待时间.在身高的测试中,每15秒,过来一个同学进行测试,而身高测试只需10秒,所以也有5秒的空闲时间,同时还有一台测身高的机器空闲着,但是学生同样没有等待时间.
假如不让所有的机器闲着,但是台阶测试,立定跳远和肺活量的测试中器已经充分利用所以这样会增加更多学生的等待时间,因此我们忽略机器的闲置问题.
所以在不考虑有班级间隔和每个时间段首先测量的小组所需时间下,可以得出测试仪器要完成一个小组完整的测试的工作量所需的最短时间为210秒,既为测试的最小周期.
每个时间段首次测量小组所需要的时间为:
215+210+10+15=450秒5.2模型的建立
根据所求得的最小测试周期长我们可得出学校中午,下午所测组数的最大值和最小值,从而得出所测人数的最大值和最小值
中午所测组数的上限值为:
当时,C1取到最大值 : C1=69
以中午所测人数的上限值为
中午所测组数的下限值为:
得C2=67
所以中午所测人数的下限值为
因此我们可得中午所测人数的取值范围为【670,690】
下午所测组数的上限值为:
得C3=53
所以下午所测人数的上限值为:
下午所测组数的下限为:
得C4=52
所以下午所测人数的下限值为:
因此我们可得下午所测人数的取值范围为【520,530】
将一个完整的时间段看作整体,完整时间段内所测最多人数作为目标函数:
即: 中午:
下午:
5.3 模型的求解
在问题,所求的每个时间段内的班级数量不是定值,即最优解只受总人数的限制而与班级数目无关,所以我们利用装箱子问题的算法,来对此数学模型求解.只要 和在中午和下午两个时间段所测人数的取值范围内
我们就认为是所求的最优解.
经Turbo C程序【见附录2】运行TC解得:
一.(第一天中午测试的班级)
班级 2 3 6 13 14 15 16 33 37 44 45 47 50 54
人数 45 44 44 45 45 45 44 51 44 50 50 43 45 75
二.(第一天下午测试的班级)
班级 1 4 7 19 24 31 34 41 42 46 48 49 51
人数 41 44 42 39 25 41 39 42 40 42 41 42 42
三.(第二天上午测试的班级)
班级 5 8 10 11 12 18 20 22 23 25 26
人数 26 20 38 37 25 30 35 38 28 30 3
班级 27 29 30 32 38 39 40 43 52 53
人数 20 32 33 33 37 38 39 37 19 39
四.(第二天下午测试的班级)
班级 9 17 21 28 35 36 55 56
人数 20 20 38 24 20 20 17 17
有以上结果我们可以得出结论,整体的测试是分成四个时段的.鉴于台阶式测试仪有两台,由此,我们可以对班级进行分组制定分布时间表,分布如下:
一组上午 机器号:P1
班级 2 15 33 44 45 54 47
到达时间 7:50 8:30 9:00 9:30 10:00 10:30 11:20
二组上午 机器号:P2 班级 3 6 13 14 16 37 50 47
到达时间 7:50 8:20 8:45 9:15 9:45 10:10 10:35 11:00
一组下午 机器号:P1
班级 1 4 19 24 31 42 34
到达时间 13:20 13:50 14:20 14:50 15:00 15:25 15:50
二组下午 机器号:P2
班级 7 41 46 48 49 51 34
到达时间 13:20 13:50 14:20 14:50 15:15 15:40 16:10
一组上午 机器号:P1
班级 5 8 39 40 29 20 26 32 38 53
到达时间 7:50 8:10 8:25 8:50 9:10 9:35 10:00 10:20 10:40 11:05
二组上午 机器号:P2
班级 10 11 12 18 22 23 25 27 30 43 52
到达时间 7:50 8:10 8:40 8:55 9:15 9:40 10:00 10:20 10:35 10:55 11:20
一组下午 机器号:P1
班级 9 17 21 35
到达时间 13:20 13:40 13:50 14:15
二组下午 机器号:P2
班级 28 26 55 56 35
到达时间 13:20 13:40 13:50 14:00 14:10
(备注:以上时间皆为提前10分钟集合时间,工作人员都提前二十分钟到达测试地点.)
5.4 模型的验证
1)对于分组的验证
因为每次都是两个小组同时进行台阶测试,然后他们在分别测试完立定跳远和肺活量后,分别交换测试场地进行测试,然后同时在进行握力的测试,所以中午实际测量所用的时间为在这个时间段内测试总人数所用时间的1/2.
第一天上午实际测试的总时间为:
第一天下午实际测试的总时间为:
、
第二天上午实际测试的总时间为:
第二天下午实际测试的总时间为:
由计算可以得出: T1<15000 ; T3<15000 ;
T2<11700 ; T4<11700
所以该模型符合学校的分组要求.
2) 对于学生尽量接省学生等待时间的验证
因为各个班级都是提前10分钟到,所以可把这段时间看为硬性规定的等待时间,在求解学生的等待时间时我们可以将其忽略,而不去考虑.
对于每一个班级在开始测试时都是排在一起,站在其中一台台阶测试的机器前,因此在这个测试范围内,每5位同学的等待时间是相同的,且排在第n个小组的等待时间为秒 .
如果不是按照班级进行测试还有5秒的输入学号的时间,则此时第n组的等待时间为 :
不考虑学号输入的时间到考虑学号的输入 即[,]
显然可以看出同班排队测试时学生的等待时间最短.
在测试肺活量和立定跳远时第 n(n≤5)个同学的等待时间为,肺活量和立定跳远仪器前各自最多有5位同学在等待,等待的最长时间为85秒,所以在该两项测试中同学的等待时间是最优的.
在测试握力时前边测试肺活量和立定跳远的每20秒来一位同学进行测试,而测握力只需15秒,所以每台机器每次都空闲5秒,且学生没有等待时间.
在测试身高和体重时,前面测握力的每15秒来一位同学进行测试,而测身高和体重只需10秒所以,机器每次都空闲5秒,且还有一台机器闲着没用,学生没有等待时间.
六.模型的改进
6.1 建立新模型
根据上一个模型的建立,已知所有测试的人数均在最值范围内,并且所用时间符合学校的要求,由此得出可以减少一台身高体重的测试仪器,因考虑到中午间隔时间较短,学生全部提前10分钟到,老师则需要提前20分钟到,若保持老师在一定的工作量下能得到更多的休息时间,设计更合理,故建议让学生都在上午的时间段测试,经计算得需要三个时间段,这样根据上个模型的计算,若把下午测试的学生合在一起均在第三天上午测试,人数在最值范围内则(同理于上一模型的分组计算)解得:
这两组上午测试所需的总时间为3小时55分,综合所用的时间段最少(三个时间段),符合学校要求.前两天上午测试的学生及时间不变.
6.2引进仪器测试数量
由于仪器测试的时间不同,可以看出在购置仪器时存在配置相对比问题.通过上个模型的求解,我们得出两台身高和体重测量仪器即可满足需求.总共三台身高和体重测量仪器,那么这里我们可以视其中一台始终处于闲置状态,闲置即为资源的浪费,所以建议学校只购置两台测试身高和体重的仪器.这样我们可以得出学校各测量仪器的数量为
仪器 身高与体重测量仪 立定跳远测量仪 肺活量测量仪 握力测量仪 台阶测量仪
数量(台) 2 1 1 2 2
实际上根据测试的速度比我们可得出购置仪器时的配置比为:
身高与体重测量仪:立定跳远测量仪:肺活量测量仪:握力测量仪:台阶测量仪
=8:4:4:3:2
在该种比例条件下是较合理的配置方案(考虑到投资成本问题)
所以建议学校在引进体能测量仪器时参考我们所给出的各仪器的配置比.
6.3测试场所的容量
通过上述模型我们可得在握力测试、身高与体重的测试、肺活量及立定跳远测试仪器前可视为没有人员的等待问题,测试场所人员容量,主要取决于在两台阶测试仪器前等待的人数,这些人为某两个班级中还没有进行台阶测试的人数.经上述模型知最小测试周期为210秒,所以每210秒就测完10人,同时有10人进来,所以场地的容量计算为,所有参加测试的班级中人数最多的两个班级的和为参考依据,只要能容纳这两个班级的人数就可以.
又由在附表中可以看出没有两个班级的总人数会超过150人的最大容量,故场所是满足需求的.
6.4一个班的学生分组情况
根据上面的模型我们已经计算出测量仪器的配置比,如果配置比公系数为K,我们可以计算班级的分班情况.
如果机器的配置比系数为1,既学校没有引进仪器的情况下,我们仍然可按上述模型的流程图进行测量,在测试时以班级为整体,然后5人一小组分,最后人数不够一小组的与下一个测试的班级进行分组.
如果机器的配置比系数为2,即测试机器数是原来的2倍,这样我们可以明显的看出,此时测试是2个上述模型的组合,测试速度会更快,但是考虑到场地的限制我们只能对2个班级进行测试,即把每个班级的人数分为2大组然后每5个人作为一小组,最后人数不够一小组的与下一个测试的班级进行分组,把这4大组分到4个台阶测试仪器前进行测试.虽然把班级分成两大组,但在输入学号时是同时输入的所以与前个模型的最小周期是一样的.
如果机器的配置比系数为3时,此时机器比较的多,测试场所相应的增大,容纳的人数也相对增多,在测试场所容纳人数允许的范围内,尽量保持班级的整体性,当人数不允许,如果有台阶测量仪空着则可优先选择班级人数为5的倍数的班分成2组,直到所有台阶测量仪都被利用为止.
如果机器的配置比系数大于3时,班级的分组情况与机器的配置比系数为3时原理相同.
七. 参考文献
[1]. 田文秋,宋振新,《高等数学》,北京:经济日报出版社,2005年[2]. 蔡海涛,《运筹学——典型例题与解法》 国防科技大学出版社出版, 2003年[3]. 王东琳,《数学建模及实验》,北京:国防工业出版社,2004年[4].《学生体质健康标准》数据上报,山东省教育厅卫艺处,2005年八. 附录
1. 附表 参加体能测试的各班人数
班号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
人数 41 45 44 44 26 44 42 20 20 38 37 25 45 45 45
班号 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
人数 44 20 30 39 35 38 38 28 25 30 36 20 24 32 33
班号 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
人数 41 33 51 39 20 20 44 37 38 39 42 40 37 50 50
班号 46 47 48 49 50 51 52 53 54 55 56
人数 42 43 41 42 45 42 19 39 75 17 17
2. c程序:
#include "stdio.h"
main()
{ int *a,s,j,i,m,c[4],e[56],f[56],g[56],w[56];
s=0;j=0;m=0;
int b[56]={41,45,44,44,26,44,42,20,20,38,37,
25,45,45,45, 44,20,30,39,35,38,38,28,25,30,
36,20,24,32,33,41,33,51,39,20,20,44,37,38,39,
42,40,37,50,50,42,43, 41,42,45,42,19,39,75,17,17};
a=b;
for(i=0;i<4;i++)
c[i]=0;
for(i=0;i<56;i++)
{ e[i]=0;f[i]=0;g[i]=0;w[i]=0;}
for(i=0;i<56;i++)
{ if(s<690)
{ s=s+a[i];e[m++]=i;a[i]=0;}
else{a[i-1]=b[i-1]; e[--m]=0; s=s-a[i-1];
if(s>670) c[j++]=s;
}
}
s=0; m=0;
for(i=0; i<56; i++)
{ if(s<530)
{s=s+a[i];f[m++]=i;a[i]=0;}
else { a[i-1]=b[i-1];f[--m]=0;s=s-a[i-1];
if(s>520) c[j++]=s;
}
}
s=0;m=0;
for(i=0;i<56;i++)
{ if(s<690)
{ s=s+a[i]; g[m++]=i;a[i]=0;}
else{ a[i-1]=b[i-1];g[--m]=0;s=s-a[i-1];
if(s>670) c[j++]=s;
}
}
s=0; m=0;
for (i=0;i<56;i++)
{ if( s<530)
{ s=s+a[i]; w[m++]=i;a[i]=0;}
else{ a[i-1]=b[i-1]; w[--m]=0;s=s-a[i-1];
if(s>520) c[j++]=s;
}
}
for(i=0;i<4;i++)
ptintf("c[i]=%6d/n",c[i]);
for(i=0;i<56;i++)
printf("%4d",e[i]);
printf("/n");
for(i=0;i<56;i++)
printf("%4d",f[i]);
printf("/n");
for(i=0;i<56;i++)
printf("%4d",g[i]};
printf("/n");
for(i=0;i<56;i++)
printf("%4d",w[i]);
展开阅读全文