013082组 黄梦遥 朱文意 李培一
一、摘要
全国大学生数学建模竞赛[1](以下简称“国赛”)是全国高校规模最大的课外科技活动之一。数学建模是一种运用数学语言和方法,通过抽象、简化建立模型,能近似刻画并“解决”实际问题的强有力的数学手段。数学建模在物流、交通等领域中日益广泛的应用对数学建模竞赛产生了很大的促进作用。由此,各大高校也越发看重学生在这项大赛中取得的成绩,如何选拔参赛队员以及如何合理组队这些问题就显得非常重要。本文以清晰的思路建立了数学模型,并对模型做了合理的假设,对队员选拔、成员组队等问题进行了较为深入的探讨,并提出了模型的解答。
1.每名队员的优势能力不同,问题一要求我们在这20名队员中做出取舍,我们想到了用层次分析法。我们给各项能力按照题目的要求合理地给定了权重,并按照层次分析法的步骤利用MATLAB计算出了每名队员的综合实力,在Excel中按降序排列,8、9两名队员是最后两名,因此落选。
我们又想到了每学期期末考试后我们计算平均学分绩的方法,对20名队员的能力进行了简便的直接加权,那么每名队员的综合实力可表示为:
bmij16j16Sijwjj
同样按照降序排列,淘汰8、9两名队员。
2.对问题二,我们有两个思路。
思路1.用逐项选优方法,用目标函数fbSk,Sl,Smjk,Sl,Sm,wjbSwj表示成员编jw6j1号为SkSlSm的队伍的整体竞赛水平:。利用上述目标函数在18名队员中找到3个人,使队伍整体竞争水平最高,接着按以上方法依次选队员,直到18名队员分
成6组。
思路2.用仿真法,使得六个组的平均竞赛水平达到最大值并且六个组的竞赛水平方差最小。首先将18名队员按综合实力降序排名分成人数相等的三组,三组中各取出一名队员使之组成一支参赛队伍,用MATLAB编程,取10万个可能的组合,由此计算出使得六个组的平均竞赛水平最高且各组水平最均衡的分组情况。
3.问题三我们使用了仿真法和顺序挑选模型。从公平的角度来看,每个教练带的队的竞赛水平差不都(即方差尽可能的小),因此可以用仿真法求得最小方差和最小方差下的整体竞赛水平。从教练的一般挑选规律看,我们使用了顺序挑选模型,即认为教练先挑选综合能力最强或者在某一项特别占优势的队员,然后挑选能弥补第一位队员弱项的第二位队员,然后挑选第三位队员使得自己所带队伍的竞赛水平最高。
4.问题四提出了在报名人数更多的情况下该如何选拔队员的问题。我们有两种策略。第一种是无淘汰情况下的选拔策略模型,根据他们的综合实力将他们分成提高组和基础组两组。第二种是有淘汰情况下的选拔策略模型,按照题目中给
定的评定标准将各队员的综合实力降序排名,分数低者淘汰,若是遭淘汰者有至少一项的能力得分是名列前茅的,则有机会留下。根据此策略进行几次淘汰,直至剩下队员都能拿到参赛名额。
关键词:加权 Excel 层次分析法 MATLAB逐项选优 仿真 顺序补弱
二、问题重述
为了准备全国大学生数学建模竞赛(以下简称“国赛”),必须对报名队员进行严格的筛选,如何制定科学合理的选拔组队策略是一个有待研究的课题。现有20名队员,根据其能力选拔18名参加竞赛。选拔队员主要考虑的条件依次为学习成绩,智力水平(反映思维能力、分析问题、解决问题的能力),动手能力(计算机的使用和其它方面的实际操作能力),写作能力,协作能力(相互协作能力),其它特长(如身体素质等)。每个队员的基本条件如所示(满分10分记),具体信息见附录。
现在要解决的问题是:
(1)在20名队员中选择18名优秀队员,参加建模竞赛。
(2)给出由18名队员组成6个队的组队方案使各队整体竞赛水平最高,并给出每队的竞赛水平。
(3)在实际分队过程中教练们采取NBA的选秀模式,将由教练选取自己的队员,每个教练按事先抽取的次序依次挑选自己的队员,共选3轮,每个教练都想让自己的队员更强一些,搭配更合理些,试给出该情况下的仿真,并计算最优的平均竞赛水平。
已知六位主教练的挑选次序为:(横向从左到右为一轮) A B C D E F; F E D C B A;B D F A C E。
(4)试讨论报名人数更多一些的时候,比较适宜采用的选拔策略。
三、问题分析
3.1 问题一
为了选拔出优秀的队员代表学校参加全国数学建模竞赛,我们要有良好的选拔标准,数学建模竞赛的成绩是各队伍综合实力的体现,也是每个队员综合实力的体现,因此问题一的选择问题是一个多目标决策问题,学习能力、智力能力等都是优秀的数学建模队员应该具备的素质,但它们对队员的综合实力有着不同的影响程度。题中所列的六项能力已按主次进行了排序,我们有两种思路来解决这个问题。
思路1.用层次分析法[2]250,将决策问题分解为3个层次,通过题目所给的各项能力的主次考虑顺序构造适合的权重,生成成对比较矩阵,计算出权向量,若能通过一致性检验,则可利用Excel计算出每位队员的综合实力,进行降序排序,即可得到综合实力排名前18的队员。
思路2.用加权平均数法。根据题目所给的各项能力的考虑主次问题,由主到
次分别给定8,6,4,3,2,1的权重,数值越大则表示影响程度越大,同时也适当考虑了相对的影响程度。在Excel中通过公式计算出每位队员的综合实力并按降序排序,前18位就是题目所要选择的优秀队员。
3.2 问题二
在20位队员中选择了18位进行组队,要求6支队伍的整体竞赛水平最高。由于同组队员是相互合作的,因此每个队的各项能力水平都是由该项能力最高的队员决定的,各项能力水平各自乘以权重,就得到了队伍的竞赛水平。
思路1.出于“强强联手”的考虑,我们选择利用MATLAB用逐项选优的方法选出使得第一组的总体竞赛水平最高的三个队员,然后依次选出第二组、第三组直至第六组队员,由此也可以看出,第一组的竞赛水平是最强的,最有希望冲击全国大奖。
思路2.可以看到思路1中竞赛水平最高的队伍与竞赛水平最低的队伍之间差距还是很大的,为了使参赛队员尽可能多地获奖,我们可以这样分组:使得六个组的竞赛水平相近,同时保持六个组各自较高的竞赛水平。我们将队员们按综合实力降序排名,分成ABC三组,从这三组中各出一名队员,组成参赛队伍。我们用仿真法使MATLAB计算10万次可能的分组情况并求出它们的平均竞赛水平和六个组竞赛水平的方差,平均竞赛水平达到最高且方差最小的的组合情况即为所求。
3.3 问题三
NBA的选秀规则[3]之一是排名越靠前的球队,在选秀的顺序上越靠后;排名越靠后的球队,在选秀的顺序上越占先机。这是一种很公平的模式。因此在既定选择顺序下,对每个教练来说,结果也是公平的。我们可以不细究每个教练是根据什么条件挑队员的,因为最后的结果一定是对每个教练都公平的,换言之,每个教练带的队伍的竞赛水平是比较均衡的,于是我们建立了模型Ⅰ,采用问题二的思路2所用的仿真法。但是考虑到第一轮选择时先选的教练一定会选择综合实力高的或者是某项能力特别突出的,因此需要对求得六个分组与六个教练相对应。
模型Ⅱ,为了使每个教练都对自己的队员满意,我们建立了顺序挑选模型,第一次挑选综合实力最高的队员,第二次根据第一位队员的弱项挑个能弥补该弱项的第二位队员,第三次则挑选剩下队员中,能使本队的竞赛水平达到最高的队员。
3.4 问题四
情况1.如果报名人数比较多,但是学校培训教室、机房的容纳量足够,教师也有精力为这么多人上课、辅导,那么我们可以假设,这些报名人员组成的队伍数不超过学校的参赛队伍名额,因此我们将保留所有参赛队员,根据他们的水平分成提高组和基础组,因材施教,因此我们的目标是使提高组尽可能冲击国奖,基础组中水平较高的队伍尽可能冲击省奖。
情况2.如果报名情况很火爆,学校的教室、机房没有办法容纳所有的报名人员,辅导老师的指导工作也很难开展,那么就要考虑放弃一部分水平不高、没有得奖希望的队员。在培训期间进行小测验,然后将评定队员水平的各项分数按重要性进行加权,得分低者淘汰。进行几次淘汰以后,留下综合竞赛能力较高的队
员。
四、模型假设
1.假设题中所给的数据能真实可靠地反映每位队员的各项能力。
2.假设每位队员的各项能力是独立的,不会因为队友的不同而发生变化。 3.假设队伍的各项能力水平为组内该项能力得分最高的那位队员的得分。 4.假设每位教练选择队员的条件只有一个:使得队伍的整体竞赛水平最高。
五、符号说明
Si——初始队员编号(i=1,...,20);
ibSj——编号Si的队员的第j项能力的得分(j=1,...,6分别对应学习成绩、智
力水平、动手能力、写作能力、协作能力、其他特长) wj——第j项能力在综合实力中占的权重
mi——编号i队员的综合实力
qjk——第j项能力与第k项能力的影响程度大小之比(j,k1,...,6)
Dk——第k种组合的竞赛水平方差 gk——第k种组合的整体竞赛水平
Li——第i组的竞赛水平
六、模型的建立与求解
6.1 问题一的模型建立与求解
6.1.1 由思路1(层次分析法)建立的模型及其求解
将决策问题分为三个层次,如图一(各层间表示联系的图线省略)
目标层 选择参赛的队
准则层 学习成智力水
动手能力 写作能协作能其他特
方案层
淘汰S1S2 淘汰S1S3
…… 图一
淘汰S18S19
淘汰S19S20
通过相互比较我们将各准则的权重,确定了以下比较尺度:
表1 比较尺度的含义 尺度qjk 含义 第j项能力与第k项能力影响程度相同 第j项能力比第k项能力影响程度稍强 第j项能力比第k项能力影响程度较强 第j项能力比第k项能力影响程度强 第j项能力比第k项能力影响程度明显的强 第j项能力比第k项能力影响程度绝对的强 16项能力之间的比较结果可用成对比较矩阵Q(qjk)66,其中qjk0且qkj。
qjk1 2 3 4 6 8 2346811/2123471/31/21235Q=………………………………………(1)
1/41/31/21241/61/41/31/2131/81/61/41/31/21利用MATLAB求得矩阵A的最大特征值为6.1592,最大特征值对应的归一化的特征向量为:
阵,所以要进行一致性检验。美国运筹学家T.L.Saaty将CI定义为一致n1性指标[1]253,CI越小则Q的不一致程度越小,代入6.1592,n6,得到
[2]254
得n6时随机一致性指标CI=0.0318。查表
CI0.0318RI1.24,CR0.02560.1,可以认为Q的不一致程度在允许范围
RI1.24之内,可用其特征向量作为权向量。利用Excel的sumproduct函数和sum函数对方案层按照进行加权求和,得到20位队员的综合实力降序排序,前18位即为入选的优秀队员,编号S8和编号S9的两位队员由于综合实力得分较低而未入选。求解过程的MATLAB代码详见附录9.2
=0.39280.25190.15780.10080.06390.0328 ,由于矩阵Q不是一致
n[3]
T
6.1.2 由思路2(加权平均法)建立的模型
由学校教务处平均学分绩的算法得到灵感,每位队员的综合实力也可以类似
b表达为mij16j16Sijwj,按照各项能力在队员综合实力考虑评定中的重要性,我们
jw适当给定了每项能力的权重。在Excel中将数据引入,批量求得每位队员的各项能力加权平均数,按降序排列,排名最后两位是编号S8和编号S9的队员,前18位就是入选的优秀队员,排序结果见附录9.3。
6.2 问题二的模型建立与求解 6.2.1 逐项选优法
k我们想让实力强的队伍去争取最高的奖项,因此采用逐项选优法。设bSj,
SmlbSj,bj(j=1,2,...,6)表示在20个队员中任意取三个编号为Sk,Sl,Sm的队员各
k,Sl,Sm自的第j项能力的得分,bS表示编号为Sk,Sl,Sm的三个队员的第j项能力得j分中的最大值,即可用如下式子表示:
SlSmk,Sl,SmkbSmaxbSjj,bj,bj
wj表示第j项能力在综合实力中占的权重系数。我们可以用三个队员的第j项能力的得分中的最大值乘以第j项基本能力在综合实力中占的权重系数,然后把六
项乘积相加后得到和,用此和作为这三个人组成的队伍的整体竞赛能力水平,即可以建立如下的目标函数作为一个三人队伍的竞赛能力水平:
fb
利用上述目标函数找到每次选取队员组队后,竞赛能力水平达到最高的队伍即可。每次选取队员组成队伍的方法如下: 1.根据问题一的要求,编号S8和编号S9的两名队员得分较低遭到了落选,因此我
j1Sk,Sl,Smjk,Sl,Sm,wjbSwjj6们将这两名队员的各项能力得分都归为0,如此不影响18名入选队员的组队。
先从20个人中任意取3个编号分别为Sk,Sl,Sm的队员组成一个队伍,通过MATLAB编程,取遍所有的3人组队情况,然后取所有情况中竞赛能力水平最高的队伍。
2.在上述过程进行后,选出了3个人组成第一支队伍,剩下15个人也是先从15个人中任意取3个人组成一个队伍,通过MATLAB编程
取遍剩下的所有3人组队情况,取竞赛能力水平最高的组成第二队。以此类推,直到选出6个队伍为止。
最终我们利用MATLAB编程实现上述过程(程序见附录9.4),并得到组队结果见表2.
6.2.2 仿真法
表2 整体竞赛能力最高的组队情况
我们可以看到6.2.1的逐项选优法将各组的竞赛能力拉开了,竞争能力最高的队伍可以达到9.617分而竞争能力最弱的队伍只有8.57分,因此我们用仿真法,目的是求得使六个队的平均竞赛水平达到最高的分组情况。将18名队员的综合实力降序排列在Excel表格中,将数据导入MATLAB,用MATLAB编程(程序详见附录9.5),使18名队员按照排序六人一组分为ABC三组,为了使组队后六个组的整体竞赛水平最高且均衡(六个组的竞赛水平方差Dk=(LiL)最小),
i162其中六个组的整体竞赛水平gkmaxbij。那么每组的三个成员必定
j1i166分别来自ABC三组,计算每种组合方式的平均竞赛水平。假定每种组合方式出
现的概率相同,当随机组合实验的次数很大时(我们实验了10万次),我们可以认为所有可能的组合方式都已经出现,得到最高的平均竞赛水平为9.1262,方差最小,为0.0913.组合方式见表3。
表3 整体竞赛水平最高的的分组情况
6.3 问题三的模型建立与求解 6.3.1 模型Ⅰ
NBA的选秀模式是一个很公平的公式,它使得球队的实力相当,促进了比赛的公平。采取NBA选秀模式来选择队员的教练们都希望自己的队员更强一些,搭配更合理一些,在这种公平的选择模式下,我们可以不细究每个教练挑选队员的条件,因为最后的组合结果会使六个组的竞赛能力相当,因此我们可以继续采用6.2.2的仿真法(程序见附录9.6),得到使得六个组的平均竞争水平最高的组合方式。但是考虑到教练在第一轮按A,B,C,D,E,F的顺序挑选队员时一定会选择综合实力最强或者某项能力特别突出的队员,因此六个分组与六个教练的对应结果如表4
表4 模型Ⅰ 教练与分组情况
6.3.2 模型Ⅱ
为了使每个教练都对自己的队员满意,我们建立了顺序挑选模型,第一次挑选综合实力最高的队员,第二次根据第一位队员的弱项挑个能弥补该弱项的第二位队员,第三次则挑选剩下队员中,能使本队的竞赛水平达到最高的队员。在MATLAB中编程(程序详见附录9.7),首先选出了每队分别来自AB两组的队员,由于第一轮时教练一定会选择综合实力最强或者某项能力最突出的队员,因此教练与本队队员的关系如表5所示。挑选第三位队员的时候,教练一定会选择剩下的队员里能使本队的竞赛水平最高的那一个,利用MATLAB编程(详见附
录9.8),得到的分组结果如表6所示。此时六个组的整体竞争水平为9.1867.
表6 顺序挑选模型的分组结果
6.4 问题四的模型建立与求解
6.4.1 无淘汰情况下的选拔策略模型
首先,按照题目中给定的评定标准将报名人员综合实力进行排名,根据某一分数线将他们分成提高组和基础组两组。我们已经假设报名参赛的队伍数量不超过名额限制,因此不存在淘汰。由于要尽可能争取更多的奖项,我们将同在提高组的队员按问题二中用到的方法进行组队,基础组中实力不错的队员组成一队冲击省奖,剩下的队员互相取长补短,组成参赛队伍。
6.4.2 有淘汰情况下的选拔策略模型
国赛对每个学校的参赛队伍有数量限制,由于报名人数过多,超出名额,而且学校的资源有限,不能满足这么多人同时使用,因此,需要淘汰一部分人。按照题目中给定的评定标准将各队员的综合实力降序排名,分数低者淘汰,若是遭淘汰者有至少一项的能力得分是名列前茅的,则有机会留下。根据此策略进行几次淘汰,直至剩下队员都能拿到参赛名额。按问题二的方案对剩下的队员进行分组,则可得到整体竞赛水平最高的几支参赛队伍。
七、模型的评价及改进 7.1模型优点
1.本文的模型均有贴近实际情况的数据为依据,因此,根据模型得到的结果与实际情况基本相符。
2.每个问题我们基本都用了两种思路或者两种模型来求解,得到的结果是很相近的,增加了模型和求解结果的可靠性。
3.我们建立模型的思路简洁,算法也不复杂,易于实现,能使教练组有效率地做出决策。 7.2模型缺点
1.各项能力的权重是我们在建立模型时自己决定的,虽然是根据选拔考察的主次顺序决定的,比较尺度也是合理的,但是有些队员实力相当,稍微改变某项能力的权重就会影响问题二中的组队情况,因此,我们根据模型得出的结果是最优的,但并不是唯一最优的。
2.在教练选队员的问题中,我们没法得知每个教练的选拔标准,因此我们假设教练的选拔标准统一且只有一个:使得队伍的整体竞赛能力最高。但是在实际中,每个教练的优势指导项目不同,看重的队员能力也不同,因此在选择队员时也具有针对性,这导致根据我们的模型得出的结果会与事实的结果有偏差。 7.3模型的推广
数学建模队员的选拔问题和生活中很多问题类似,比如公司招聘、大型活动
方案的招标等,因此我们建立的以上模型可以为生活中类似的问题提供选拔方法以及决策的思路。
八、参考文献
[1] 百度百科, http://baike.baidu.com/view/1870889.htm?fromId=1261041#1 [2] 姜启源,谢金星,叶俊.数学模型[M]. 高等教育出版社, 2001.
[3] 科学网, http://news.sciencenet.cn/sbhtmlnews/2013/3/271183.shtm?id=271183 [4] 百度百科,http://baike.baidu.com/view/2078909.htm
[5] 薛定宇,陈阳泉.高等应用数学问题的MATLAB求解(第二版)[M].清华大学出版社,2008
九、附录
9.1 队员各项能力信息表 队员 学习成绩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8.6 8.2 8.0 8.6 8.8 9.2 9.2 7.0 7.7 8.3 9.0 9.6 9.5 8.6 9.1 9.3 8.4 8.7 7.8 9.0 智力水平 9.0 8.8 8.6 8.9 8.4 9.2 9.6 8.0 8.2 8.1 8.2 9.2 9.6 8.3 8.7 8.4 8.0 8.3 8.1 8.8 动手能力 8.2 8.1 8.5 8.3 8.5 8.2 9.0 9.8 8.4 8.6 8.0 8.1 8.3 8.2 8.8 8.6 9.4 9.2 9.6 9.5 写作能力 8.0 6.5 8.5 9.6 7.7 7.9 7.2 6.2 6.5 6.9 7.8 9.9 8.1 8.1 8.4 8.8 9.2 9.1 7.6 7.9 协作能力 9.5 9.2 9.6 9.7 9.2 9.0 9.2 9.7 9.3 9.4 9.5 9.7 9.3 9.0 9.4 9.5 9.1 9.2 9.6 9.0 其它特长 6 2 8 8 9 6 9 6 5 4 5 6 7 5 5 6 7 8 9 6 9.2 层次分析法MATLAB程序 >> clear; clc;
Q=[1 2 3 4 6 8;1/2 1 2 3 4 7;1/3 1/2 1 2 3 5;1/4 1/3 1/2 1 2 4;1/6 1/4 1/3 1/2 1 3;1/8 1/6 1/5 1/4 1/3 1];landa=max(eig(Q))%求解矩阵A的最大特征值
landa =
6.1592
>> [v,d]=eig(Q); B=v(:,1);
C=B/sum(B)%求解最大特征值对应的归一化的特征向量 C =
0.3928 0.2519 0.1578 0.1008 0.0639 0.0328
排名 队员 学习成绩 智力水平 动手能力 写作能力 协作能力 其它特长 综合实力 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 12 13 7 4 16 20 18 15 6 17 5 1 3 11 19 14 10 2 9.6 9.5 9.2 8.6 9.3 9 8.7 9.1 9.2 8.4 8.8 8.6 8 9 7.8 8.6 8.3 8.2 9.2 9.6 9.6 8.9 8.4 8.8 8.3 8.7 9.2 8 8.4 9 8.6 8.2 8.1 8.3 8.1 8.8 8.1 8.3 9 8.3 8.6 9.5 9.2 8.8 8.2 9.4 8.5 8.2 8.5 8 9.6 8.2 8.6 8.1 9.9 8.1 7.2 9.6 8.8 7.9 9.1 8.4 7.9 9.2 7.7 8 8.5 7.8 7.6 8.1 6.9 6.5 9.7 9.3 9.2 9.7 9.5 9 9.2 9.4 9 9.1 9.2 9.5 9.6 9.5 9.6 9 9.4 9.2 6 7 9 8 6 6 8 5 6 7 9 6 8 5 9 5 4 2 9.977 9.850 9.827 9.618 9.573 9.568 9.541 9.514 9.509 9.345 9.332 9.300 9.195 9.118 9.109 9.032 8.768 8.668 19 9 7.7 8.2 8.4 6.5 9.3 5 8.523 20 8 7 8 9.8 6.2 9.7 6 8.509 9.3问题一思路2(加权平均法)结果
9.4 问题二的逐项选优法MATLAB程序 >> clear; clc;
%将20个队员的基本条件以矩阵形式表示 a=[8.6 9.0 8.2 8.0 9.5 6; 8.2 8.8 8.1 6.5 9.2 2; 8.0 8.6 8.5 8.5 9.6 8; 8.6 8.9 8.3 9.6 9.7 8; 8.8 8.4 8.5 7.7 9.2 9; 9.2 9.2 8.2 7.9 9.0 6; 9.2 9.6 9.0 7.2 9.2 9; 7.0 8.0 9.8 6.2 9.7 6; 7.7 8.2 8.4 6.5 9.3 5; 8.3 8.1 8.6 6.9 9.4 4; 9.0 8.2 8.0 7.8 9.5 5; 9.6 9.2 8.1 9.9 9.7 6; 9.5 9.6 8.3 8.1 9.3 7; 8.6 8.3 8.2 8.1 9.0 5; 9.1 8.7 8.8 8.4 9.4 5; 9.3 8.4 8.6 8.8 9.5 6; 8.4 8.0 9.4 9.2 9.1 7; 8.7 8.3 9.2 9.1 9.2 8; 7.8 8.1 9.6 7.6 9.6 9; 9.0 8.8 9.5 7.9 9.0 6];
%最大特征值对应的归一化的特征向量ω以矩阵形式表示 w=[ 0.3928 0.2519 0.1578 0.1008 0.0639 0.0328]; %取矩阵w的转置 w=w';
%每个人的每项基本条件乘以其权重系数 b=a*w;
c=[0 0 0 0 0 0 ];
%删去第一问中淘汰的两名队员的基本条件数据,他们的编号分别是8和9 a(8,:)=c; a(9,:)=c;
%设置矩阵d存储组队方案 d=[];
%设置循环求解组队情况 for m=1:6 n=0; e=[];
for i=1:18 for j=i+1:19 for k=j+1:20
f=[a(i,:);a(j,:);a(k,:)];
%表示出三个人组成的小队六项基本条件的最大值 fmax=max(f);
%表示出这三个人组成的小队的六项基本条件的最大值分别乘权重系数后的和 l=dot(fmax,w); if n<=l
%表示出竞赛水平最高的队伍的每个成员六项基本条件分别乘相应权重系数 e=[b(i),b(j),b(k)]; n=l; n1=i; n2=j; n3=k; end end end end
%矩阵dd存储了选出的队伍的次序,队员编号,小队的六项基本条件的最大值分别乘权重系数后的和 dd=[m,n1,n2,n3,n]; d(m,:)=dd;
%删去已选出组成队伍的队员的六项基本条件的数据 a(n1,:)=c; a(n2,:)=c; a(n3,:)=c; end >> d d =
1.0000 12.0000 13.0000 19.0000 9.6169 2.0000 4.0000 7.0000 20.0000 9.4138 3.0000 5.0000 6.0000 17.0000 9.2250 4.0000 1.0000 16.0000 18.0000 9.1586 5.0000 2.0000 3.0000 15.0000 8.9125
6.0000 10.0000 11.0000 14.0000 8.5706
9.5 问题二的仿真法MATLAB程序
(首先将“1.xls”文件放入MATLAB的bin文件下,再运行程序) >> clear; clc;
[E]=xlsread('1'); N=E(1:18,1:8); for k=1:100000;
rowrank = randperm(size(N, 1)); N1= N(rowrank, :); M1=mean(N1(1:3,8),1); M2=mean(N1(4:6,8),1); M3=mean(N1(7:9,8),1); M4=mean(N1(10:12,8),1); M5=mean(N1(13:15,8),1);
M6=mean(N1(16:18,8),1); M=[M1,M2,M3,M4,M5,M6]; g(k)=var(M,1); if g(k)>=max(g);
P=N1;variance=g(k);end,end; N1,
C=[0.3928 0.2519 0.1578 0.1008 0.0639 0.0328]; for t=1:6;for j=2:7; i=3*t-2:3*t;
d(j)=max(N1(i,j));
end;c=d(:,2:7);h(t)=sum(c.*C);h(t);end; g=sum(h)/6;g variance
9.6 问题三的仿真法MATLAB程序
(首先将“1.xls”文件放入MATLAB的bin文件下,再运行程序) clear; clc;
[E]=xlsread('1');
H=[0.3928 0.2519 0.1578 0.1008 0.0639 0.0328]; N=E(1:18,1:7); A=N(1:6,1:7); B=N(7:12,1:7); C=N(13:18,1:7); for k=1:100000;
rowrank = randperm(size(A, 1)); A1= A(rowrank, :);
rowrank = randperm(size(B, 1)); B1= B(rowrank, :);
rowrank = randperm(size(C, 1)); C1= C(rowrank, :);
M1=[A1(1,:);B1(1,:);C1(1,:)]; M2=[A1(2,:);B1(2,:);C1(2,:)]; M3=[A1(3,:);B1(3,:);C1(3,:)]; M4=[A1(4,:);B1(4,:);C1(4,:)]; M5=[A1(5,:);B1(5,:);C1(5,:)]; M6=[A1(6,:);B1(6,:);C1(6,:)]; P1=[M1;M2;M3;M4;M5;M6]; for t=1:6; for j=2:7; i=3*t-2:3*t;
d(j)=max(P1(i,j)); end;
c=d(:,2:7);h(t)=sum(c.*H); end;
y=sum(h)/6,P1(:,1)',g(k)=sum(h)/6;if g(k)>=max
(g);P=P1;loc_exam=k;end;
end;g,P,[maximun,location]=max(g(:)),loc_exam
9.7 问题三顺序挑选法的MATLAB程序
(首先将“1.xls”文件放入MATLAB的bin文件下,再运行程序) clear; clc;
[E]=xlsread('1');
H=[0.3928 0.2519 0.1578 0.1008 0.0639 0.0328]; N=E(1:18,1:7);sum=[];
for i=1:6,a(7-i)=find(N(7-i,2:5)==min(N(7-i,2:5)));
d(7-i)=find(N(7:19-i,a(7-i)+1)==max(N(7:19-i,a(7-i)+1)))+6; B(7-i)=N(d(7-i),1);
M=[N(7-i,:);N(d(7-i),:)];
s=min(max(M(:,2:5)));b=find(max(M(:,2:5)==s)),%b是6个组各自的弱势项目编号 sum=horzcat(sum,b(1));
N(d(7-i),:)=[];end;A=N(1:6,1)';A,B%A代表第一轮被选出来的队员编号,B是第二轮被选出来的队员编号,次序相同的在同一组。 b =
3 b =
1 3 b =
2 b =
4 b =
3 4 b =
2 A =
12 13 7 20 16 6
B =
19 3 18 17 1 4
9.8 问题三模型Ⅱ的分组结果MATLAB程序 clear; clc;
[E]=xlsread('4'); %读入excel数据 N=E(1:18,1:7)
C=[0.3928 0.2519 0.1578 0.1008 0.0639 0.0328]; for t=1:6;for j=2:7; i=3*t-2:3*t; d(j)=max(E(i,j));
end;c=d(:,2:7);h(t)=sum(c.*C);h(t);end; g=sum(h)/6;g N =
12.0000 9.6000 9.2000 8.1000 19.0000 7.8000 8.1000 9.6000 10.0000 8.3000 8.1000 8.6000 13.0000 9.5000 9.6000 8.3000 3.0000 8.0000 8.6000 8.5000 15.0000 9.1000 8.7000 8.8000 7.0000 9.2000 9.6000 9.0000 18.0000 8.7000 8.3000 9.2000 5.0000 8.8000 8.4000 8.5000 20.0000 9.0000 8.8000 9.5000 17.0000 8.4000 8.0000 9.4000 14.0000 8.6000 8.3000 8.2000 16.0000 9.3000 8.4000 8.6000 1.0000 8.6000 9.0000 8.2000 11.0000 9.0000 8.2000 8.0000 6.0000 9.2000 9.2000 8.2000 4.0000 8.6000 8.9000 8.3000 2.0000 8.2000 8.8000 8.1000 g =
9.1867
9.9000 9.7000 7.6000 9.6000 6.9000 9.4000 8.1000 9.3000 8.5000 9.6000 8.4000 9.4000 7.2000 9.2000 9.1000 9.2000 7.7000 9.2000 7.9000 9.0000 9.2000 9.1000 8.1000 9.0000 8.8000 9.5000 8.0000 9.5000 7.8000 9.5000 7.9000 9.0000 9.6000 9.7000 6.5000 9.2000 6.0000 9.0000 4.0000 7.0000 8.0000 5.0000 9.0000 8.0000 9.0000 6.0000 7.0000 5.0000 6.0000 6.0000 5.0000 6.0000 8.0000 2.0000
因篇幅问题不能全部显示,请点此查看更多更全内容