混合泳接力队选拔[终稿]
2012西京学院数学建模选拔竞赛
题目:混合泳接力队选拔
参赛队员:
姓名: 学号: 参赛院系:
姓名: 学号: 参赛院系:
2012年06月23日
摘 要
针对体育赛事中混合泳队员的选拔问题,本文结合运筹学中的指派问题及应用线性规划理论,建立0-1整数规划模型,结合运用matlab软件求解得出了科学的选拔
。
本文研究体育赛事中混合泳队员的选拔问题,针对第一问运动员选拔问题,本文建立0-1整数规划模型,在建立模型中,本文对外界因素和运动员自身原因问题进行简化,即运动员在比赛中正常发挥的这种理想状态下,利用运筹学中的指派问题及应用线性规划理论,建立0-1整数规划模型,结合运用matlab软件求解得出了科学的选拔方案。
针对第二问,同样是运动员选拔问题,故而我们使用了与第一问相同的模型得出了另外一种方案,从而我们解决了这个问题。
关键词:混合泳队员的选拔;指派问题;线性规划理论;0-1规划模型
一、问题重述
4100,现拟从6名候选人中选出4名队员组成接力队,参加米混合泳比赛。6名队员的4种泳姿的百米平均成绩如下表,应如何选择队员进行接力队才能获得最佳成绩,
若队员丁的蛙泳成绩退步到1’15”2,戊的自由泳成绩进步到57”5,组成接力队的方案又当如何,是否应该重新进行调整?
甲 乙 丙 丁 戊 己 蝶泳 1’06”8 57”2 1’18” 1’10” 1’07”4 1’02”8 仰泳 1’15”6 1’06” 1’07”8 1’14”2 1’11” 1’06” 蛙泳 1’27” 1’06”4 1’24”6 1’09”6 1’23”8 1’16” 自由泳 58”6 53” 1’06”8 57’2 1’02”4 1’02”
二、问题
从6名队员中选出4名组成接力队,每人一种泳姿,且4人的泳姿各不相同,使接力队的成绩最好。容易想到的一个办法是穷举法,组成接力队的方案共6~=720种,逐一计算逼供内比较,即可以得到最优方案。显然这不是解决这类问题的最好方法,随着问题规模的变大,穷举法的计算量是我们无法接受的。 我们可以用0-1变量表示一个队员是否入选接力对,从而建立这个问题的0-1规划模型,并借助matlab软件进行求解。
三、模型假设
1、选拔应遵循公平公正的原则;
2、每名候选人在选拔时能够完全的、充分的发挥自己的正常水平,即排除候选人在选拔时的一切外界因素和个人问题;
3、每名候选人的成绩是相互独立的,互不影响的。
四、符号说明
ixj 队员是否选择泳姿 ij
icj 第个队员的第项泳姿的平均成绩 ij
ii 第个队员 i,1,2,6?
jj 第种泳姿 j,1,2,4?
五、模型的建立与求解
i,1,2,3,4,5,6记甲乙丙丁戊己分别为队员;记蝶泳、仰泳、蛙泳、自由泳分别为泳
i姿。记队员的第种泳姿的百米最好成绩为,即有 xjj,1,2,3,4ij
i,1i,2i,3i,4i,5i,6 cij
66.8 57.2 78 70 67.4 62.8 j,1
75.6 66 67.8 74.2 71 66 j,2
87 66.4 84.6 69.6 83.8 76 j,3
58.6 53 66.8 57.2 62.4 62 j,4
i引入0-1变量,若选择队员参加泳姿的比赛,记,否则记。xx,1x,0jijijij
如下
1, 队员选择泳姿ij,x, ,ij0, 队员不选择泳姿ij,
根据组成接力队的要求,应满足两个约束条件: xij
第一,每一个队员只能在四种泳姿中选择一种,既有
4
x,1() i,1,2,3,4,5,6,ij1j,
第二,每种泳姿有且只能有一个人被选中,即有
6
() j,1,2,3,4x,1,ij,i1
icx,0cxj当队员当选泳姿时,表示他(她)的成绩,否则。于是接力队的总ijijijij
成绩可以表示为:
45
Z,cx() ij,,1,2,3,4,5,6;1,2,3,4,,ijij,,ji11
综上所述,本问题的0-1规划问题可描述为:
45
Z,cxmin (ij,,1,2,3,4,5,6;1,2,3,4) ,,ijij,,ji11
4,xi,,11,2,5?,,,ij,1j,,5, stxj..11,2,4,,?,,,,ij1i,,
,x,0,1,,ij,
,
针对本问题,对于问题(1)有
min66.875.68758.657.26666.453zxxxxxxxx,,,,,,,,1112131421222324
,,,,,,,,7867.884.666.87074.269.657.2xxxxxxxx3132333441424344
,,,,,,,,67.47183.862.462.8667662xxxxxxxx5152535461626364
xxxx,,,,1,11121314,xxxx,,,,121222324,
,xxxx,,,,131323334,xxxx,,,,141424344,
,xxxx,,,,151525354,,xxxx,,,,1 st..61626364,
,xxxxxx,,,,,,1112131415161,
xxxxxx,,,,,,1,122232425262
,xxxxxx,,,,,,1132333435363,
,xxxxx,,,,,,x1142434445464,xorij,,,011,2,3,4,5,6;1,2,3,4,,,ij,
运用matlab计算可以得到xxxx,,,,1,即入选队员和对应参加的泳姿种14214362
类如下表
甲 乙 丙 丁 戊 己 蝶泳 ? 仰泳 ? 蛙泳 ? 自由泳 ?
zs,251.4此时的比赛最佳总得分为
对问题(2)有目标函数
min66.875.68758.657.26666.453zxxxxxxxx,,,,,,,,1112131421222324
,,,,,,,,7867.884.666.87074.275.257.2xxxxxxxx3132333441424344
,,,,,,,,67.47183.857.562.8667662xxxxxxxx5152535461626364
xxxx,,,,1,11121314,xxxx,,,,121222324,
,xxxx,,,,131323334,xxxx,,,,141424344,
,xxxx,,,,151525354,,xxxx,,,,1 st..61626364,
,xxxxxx,,,,,,1112131415161,
xxxxxx,,,,,,1,122232425262
,xxxxxx,,,,,,1132333435363,
,xxxxx,,,,,,x1142434445464,xorij,,,011,2,3,4,5,6;1,2,3,4,,,ij,
运用matlab求解,有,则有入选的队员和对应参加的泳姿种xxxx,,,,123324461
类如下表
甲 乙 丙 丁 戊 己 蝶泳 ? 仰泳 ? 蛙泳 ? 自由泳 ?
zs, 254.2此时的比赛最佳总得分为
故而若队员丁的蛙泳成绩退步到1’15”2,戊的自由泳成绩进步到57”5,组成接力队的方案应该重新进行调整,调整方案如上表所示。
六、模型的评价与推广
本文中队员的选拔方案具有简单,实用,快捷等优点,避免了穷举法的大量繁琐计算,对各种大型体育赛事中大量队员的合理选拔等具有实际参考价值。但在假设中忽略了外界坏境以及运动员自身因素对运动员发挥水平的影响,故而对模型运算结果的准确性可能会造成一定的影响。
七、参考文献
[1]姜启源,数学模型(第三版),高等教育出版社,2002 [2]胡运权,运筹学习题集,清华大学出版社,2002 [3]江世宏,《MATLAB语言与数学实验》,科学出版社 2007 [4]苏金明,王永利,MATLAB7.0使用指南,电子工业出版社 2004
八、附录
问题(1)程序:
C=[66.8 75.6 87 58.6 57.2 66 66.4 53 78 67.8 84.6 66.8 70 74.2 69.6 57.2 67.4
71 83.8 62.4 62.8 66 76 62];
A=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1]; b=[1;1;1;1;1;1];
Aeq=[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0;
0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0;
0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0;
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1]; beq=[1;1;1;1];
VLB=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; VUB=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]; [x,fval]=linprog(C,A,b,Aeq,beq,VLB,VUB) 问题(1)运行结果:
x =
0.0000
0.0000
0.0000
1.0000
1.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
fval =
251.4000
问题(2)程序:
C=[66.8 75.6 87 58.6 57.2 66 66.4 53 78 67.8 84.6 66.8 70 74.2 75.2 57.2 67.4
71 83.8 57.5 62.8 66 76 62];
A=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1]; b=[1;1;1;1;1;1];
Aeq=[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0;
0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0;
0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0;
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1]; beq=[1;1;1;1];
VLB=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; VUB=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
[x,fval]=linprog(C,A,b,Aeq,beq,VLB,VUB)
问题(2)运行结果:
x =
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
fval =
254.2000