足球队排名matlab实现

合集下载

足球联赛积分排名程序

足球联赛积分排名程序

合肥学院计算机科学与技术系课程设计报告2008~2009学年第二期课程程序设计语言Ⅱ课程设计课程设计名称足球联赛积分排名程序学生姓名朱新维学号**********专业班级网络工程(2)指导教师高玲玲、李红2009年6月一.课程设计题目:足球联赛积分排名程序1.设计内容:足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。

试编写一个足球联赛积分排名程序,程序统计最近一轮比赛后,各队积分及排名。

2.任务和要求:假设积分表结构如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。

积分表放在正文文件中。

最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。

程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。

3.测试数据:可选择我国当年的甲A或甲B联赛的数据输入,并检查与报章公布的数据是否一致。

二.问题的分析本学年,上学期中我们学习了C语言,初步了解了如何用计算机语言来写出我们所需的程序。

然后下学期中进一步学习了C++语言,通过半年的更深层次的学习,我也初步学会应用类与对象,数组与指针,继承与派生等等来解决一些C++语言程序中的一些实际问题。

看完这个要求,这个题目要求我实现以下几个功能:1).能够输入比赛的2个队伍和其进球数;2).能够对比赛的赢输平进行判定;3).能够根据比赛的赢输平进行积分的累加;4).能够对积分的高低对各个队伍进行排序,特别是在有些队伍积分相同时,可以通过对赢的场次的多少,或者平的场次的多少,输的场次的多少乃至进球数和失球数的多少来进行最终的比较和排序;5).能够将数据存储在一个文件中,可以将文件中的数据进行输入和输出。

全国大学生数学建模竞赛常用建模方法总结

全国大学生数学建模竞赛常用建模方法总结

邯郸学院本科毕业论文题目全国大学生数学建模竞赛常用建模方法探讨学生柴云飞指导教师闫峰教授年级2009级本科专业数学与应用数学二级学院数学系(系、部)邯郸学院数学系2013年6月郑重声明本人的毕业论文是在指导教师闫峰的指导下独立撰写完成的.如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督.特此郑重声明.论文经“中国知网”论文检测系统检测,总相似比为5.80%.毕业论文作者(签名):年月日全国大学生数学建模竞赛常用建模方法探讨摘要全国大学生数学建模竞赛作为全国高校规模最大的基础性学科竞赛,越来越受到人们的重视,所以建模竞赛的方法也就变得尤为重要.随着竞赛的不断发展,赛题的开放性逐步增大,一道赛题可用多种解法,各种求解的算法有时会相互融合,同时也在向大规模数据处理方向发展,这就对选手的能力提出了更高的要求.由于建模方法种类众多,无法一一介绍,所以本文主要介绍了四种比较常用的数学建模竞赛方法,包括微分与差分方程建模方法、数学规划建模方法、统计学建模方法、图论方法,并结合历年赛题加以说明.关键词:数学建模竞赛统计学方法数学规划图论Commonly Used Modeling Method ofChina Undergraduate Mathematical Contest in ModelingChai yunfei Directed by Professor Yan fengABSTRACTThe China undergraduate mathematical contest in modeling has been attention by more and more people as a basic subject of the largest national college competition. The method of modeling competition has become more and more important. Open questions gradually increased with the development of competition. Most of the games can be solved by lots of solutions. Sometimes these methods can be used together. And there is also a lot of data which puts forward higher requirement on the ability of players. The modeling methods is too numerous to mention, so this article mainly four kinds Commonly used modeling method are introduced that differential and difference equations modeling method, Mathematical programming modeling method, Statistics modeling method, graph theory and interprets with calendar year’s test questions.KEY WORDS:Mathematical contest in modeling Statistics method Mathematical programming Graph theory目录摘要 (I)英文摘要 (II)前言 (1)1微分方程与差分方程建模 (2)1.1微分方程建模 (2)1.1.1微分方程建模的原理和方法 (2)1.1.2微分方程建模应用实例 (3)1.2差分方程建模 (4)1.2.1 差分方程建模的原理和方法 (4)1.2.2 差分方程建模应用实例 (5)2数学规划建模 (5)2.1线性规划建模的一般理论 (6)2.2线性规划建模应用实例 (7)3统计学建模方法 (8)3.1聚类分析 (8)3.1.1 聚类分析的原理和方法 (8)3.1.2 聚类分析应用实例 (8)3.2回归分析 (9)3.2.1 回归分析的原理与方法 (9)3.2.2 回归分析应用实例 (10)4图论建模方法 (10)4.1两种常见图论方法介绍 (11)4.1.1 模拟退火法的基本原理 (11)4.1.2 最短路问题 (11)4.2图论建模应用实例 (12)5小结 (13)参考文献 (13)致谢 (14)前言全国大学生数学建模竞赛创办于1992年,每年一届,目前已成为全国高校规模最大的基础性学科竞赛,也是世界上规模最大的数学建模竞赛.参赛者需要根据题目要求,在三天时间内完成一篇包括模型假设、模型建立和求解、计算方法的设计和实现、模型结果的分析和检验、模型的改进等方面的论文.通过参加竞赛的训练和比赛,可以提高学生用数学方法解决实际问题的意识和能力,而且在培养团队精神和撰写科技论文等方面都会得到十分有益的锻炼.竞赛题目的涉及面比较宽,有工业、农业、工程设计、交通运输、经济管理、生物医学和社会事业等.竞赛选手不一定预先掌握深入的专业知识,而只需要学过高等数学的相关课程即可,并且题目具有较大的灵活性,便于参赛者发挥其创造能力.近年来,竞赛题目包含的数据较多,手工计算一般不能实现,所以就对参赛者的计算机能力提出了更高的要求,如2003年B题,某些问题的解决需要使用计算机软件;2001年A题,问题的数据读取需要计算机技术,并且对于给出的图像,需要用图像处理的方法获得;再如2004年A题则需要利用数据库数据,数据库方法,统计软件包等等.竞赛题目的总体特点可大致归纳如下:(1)实用性不断加强,问题和数据来自于实际,解决方法需要切合实际,模型和结果可以应用于实际;(2)综合性不断加强,解法多样,方法融合,学科交叉;(3)数据结构越来越复杂,包括数据的真实性,数据的海量性,数据的不完备性,数据的冗余性等;(4)开放性也越来越突出,题意的开放性,思路的开放性,方法多样,结果不唯一等.总体来说,赛题向大规模数据处理方向发展,求解算法和各类现代算法相互融合.纵观历年的赛题,主要用到的建模方法有:初等数学模型、微分与差分方程建模、组合概率、数据处理、统计学建模、计算方法建模、数学规划、图论方法、层次分析、插值与拟合、排队论、模糊数学、随机决策、多目标决策、随机模拟、计算机模拟法、灰色系统理论、时间序列等.本文不一一列举竞赛题目中涉及的所有方法,只是重点讨论其中一些比较常用的方法,包括微分与差分方程建模方法、数学规划建模方法、统计学建模方法、图论建模方法,并结合案例说明建模方法的原理及应用.1 微分方程与差分方程建模在很多竞赛题目中,常常会涉及很多变量之间的关系,找出它们之间的函数关系式具有重要意义.可在许多实际问题中,我们常常不能直接给出所需要的函数关系,但可以得到含有所求函数的导数(或微分)或差分(即增量)的方程,这样的方程称为微分方程或差分方程. 建立微分方程或差分方程的数学模型是一种重要的建模方法.如1996年A 题“最优捕鱼策略”,1997年A 题“零件参数设计”,2003年A 题“SARS 的传播”,2007年A 题“中国人口增长预测”,2009年A 题“最优捕鱼策略”等赛题中,都用到了这种方法.1.1 微分方程建模1.1.1 微分方程建模的原理和方法一般来说,任何时变问题中随时间变化而发生变化的量与其它一些量之间的关系经常以微分方程的形式来表现.例1.1 有一容器装有某种浓度的溶液,以流量1v 注入该容器浓度为1c 的同样溶液,假定溶液立即被搅拌均匀,并以2v 的流量流出混合后的溶液,试建立反映容器内浓度变化的数学模型.解 注意到溶液浓度=溶液体积溶液质量,因此,容器中溶液浓度会随溶质质量和溶液体积变化而发生变化.不妨设t 时刻容器中溶质质量为()t s ,初始值为0s ,t 时刻容器中溶液体积为()t v ,初始值为0v ,则这段时间()t t t ∆+,内有⎩⎨⎧∆-∆=∆∆-∆=∆t v t v V t v c t v c s 212211, (1) 其中1c 表示单位时间内注入溶液的浓度,2c 表示单位时间内流出溶液的浓度,当t ∆很小时,在()t t t ∆+,内有≈2c =)()(t V t s tv v V t s )()(210-+. (2) 对式(1)两端同除以t ∆,令0t ∆→,则有⎪⎪⎪⎩⎪⎪⎪⎨⎧==-=-=00212211)0(,)0(V V s s v v dtdV v c v c dt ds . (3) 即所求问题的微分方程模型.虽然它是针对液体溶液变化建立的,但对气体和固体浓度变化同样适用.实际应用中,许多时变问题都可取微小的时间段t ∆去考察某些量之间的变化规律,从而建立问题的数学模型,这是数学建模中微分方程建模常用手段之一.常用微分方程建模的方法主要有:(1)按实验定律或规律建立微分方程模型.此种建模方法充分依赖于各个学科领域中有关实验定律或规律以及某些重要的已知定理,这种方法要求建模者有宽广的知识视野,这样才能对具体问题采用某些熟知的实验定律.(2)分析微元变化规律建立微分方程模型.求解某些实际问题时,寻求一些微元之间的关系可以建立问题的数学模型.如例1.1中考察时间微元t ∆,从而建立起反应溶液浓度随时间变化的模型.此建模方法的出发点是考察某一变量的微小变化,即微元分析,找出其他一些变量与该微元间的关系式,从微分定义出发建立问题的数学模型.(3)近似模拟法.在许多实际问题中,有些现象的规律性并非一目了然,或有所了解亦是复杂的,这类问题常用近似模拟方法来建立问题的数学模型.一般通过一定的模型假设近似模拟实际现象,将问题做某些规范化处理后建立微分方程模型,然后分析、求解,并与实际问题作比较,观察模型能否近似刻画实际现象.近似模拟法的建模思路就是建立能够近似刻画或反映实际现象的数学模型,因此在建模过程中经常做一些较合理的模型假设使问题简化,然后通过简化建立近似反映实际问题的数学模型.1.1.2 微分方程建模应用实例例1.2(2003年高教社杯全国大学生数学建模竞赛A 题) SARS 传播的预测. 2003年爆发的“SARS ”疾病得到了许多重要的经验和教训,使人们认识到研究传染病的传播规律的重要性.题目给出了感病情况的三个附件,要求对SARS 的传播建立数学模型:(1)对SARS 的传播建立一个自己的模型,并说明模型的优缺点;(2)收集SARS 对经济某个方面影响的数据,建立相应的数学模型并进行预测.问题求解过程分析 由于题目具有开放性,故选择文献[1]中的求解思路分析. 传染病的传播模式可近似分为自由传播阶段和控后阶段,然后将人群分为易感者S ,感病者I ,移出者R 三类.由三者之间的关系可得到下列微分方程:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=++=-=-=NR I S hI dt dR hI kIS dt dI kISdt dS , 利用附件中给出的数据,可以将上述方程变形为I hI kNI dtdI λ=-=, 其中h kN -=λ,其解为t e I t I λ-=0)(.其中0I 为初始值.但此模型只适用于病例数与总人口数具有可比性的情况,当病例数远小于总人口数时,感病人数将随时间以指数增长.这是按实验定律或规律建立的微分方程模型.为进一步改进模型,用计算机跟踪病毒的个体传播情况,又建立计算机模拟模型.然后用计算机模拟北京5月10日之前SARS 的传播情况,并对5月10日以后的传播情况进行预测.但是得到的有效接触率与实际统计数据有所偏差,所以统计数据,为参数的确定寻求医学上的支持,并以随机模拟取代完全确定性的模拟,对原模型进行改进,建立随机模拟模型.通过计算机编程,产生正态分布的随机数,并对传染情况进行500次模拟,即可进行预测,并可得出对SARS 疫情控制提出的相应建议.1.2 差分方程建模1.2.1 差分方程建模的原理和方法差分方程在数学建模竞赛中应用的频率极高,所以要对这种方法引起足够的重视.它针对要解决的目标,引入系统或过程中的离散变量.具体方法是:根据实际的规律性质、平衡关系等,建立离散变量所满足的关系式,从而建立差分方程模型.差分方程可以分为不同的类型,如一阶和高阶差分方程,常系数和变系数差分方程,线性和非线性差分方程等等.建立差分方程模型一般要注意以下问题:(1)注意题中的离散变化量,对过程进行分析,尤其要注意形成变化运动过程的时间或距离的分化而得到离散变量;(2)通过对具体变化过程的分析,列出满足题意的差分方程,其中入手点是找出变量所能满足的平衡关系、增量或减量关系及规律,从而得到差分方程.1.2.2差分方程建模应用实例例1.3(2007年高教社杯全国大学生数学建模竞赛A题)中国人口增长预测.题目要求从中国的实际情况和人口增长的特点出发,参考附录中的相关数据(也可以搜索相关文献和补充新的数据),建立中国人口增长的数学模型,并由此对中国人口增长的中短期和长期趋势做出预测,特别要指出模型中的优点与不足之处.问题求解过程分析由于题目具有开放性,故选择文献[2]中的求解思路分析.通过分析题中相关的数据,考虑到我国近年来人口发展的总趋势,因为涉及到人口的增长和变换,所以可以先用微分方程来建立模型,并对我国人口增长的中短期和长期趋势做出预测.首先,根据灰色系统理论,使用灰色关联分析模型法对人口系统结构进行关联分析,找出影响人口增长的主要因素;其次使用年龄推算法进行短期预测.在建立和求解长期预测模型时,根据人口阻滞增长模型(Logistic模型),可以考虑对中国人口老龄化进程加速、出生人口性别比例持续升高以及乡村人口城镇化等因素建立新的人口增长的差分方程模型.但是它仅给出了人口总数的变化规律,反映不出各类人口的详细信息,所以我们需要建立离散化的模型,并进一步可以得到全面系统地反应一个时期内人口数量状况的差分方程,可以用微分和差分方程理论来表现和模拟人口数量的变化规律.从而对人口分布的状况、变化趋势、总体特征等有更加详细和科学的了解.在模型的求解过程中,用到了MATLAB软件,并做参数估计,利用所得结果和题目给出的近五年来的人口数据,对我国人口发展趋势进行了预测,得到了在老龄化进程加速、出生人口性别比例持续升高以及乡村人口城镇化等因素影响下,未来我国人口发展预测情况.2 数学规划建模数学规划是指在一系列条件限制下,寻求最优方案,使得目标达到最优的数学模型,它是运筹学的一个重要分支.数学规划的内容十分丰富,包括许多研究分支,如:线性规划、非线性规划、整数规划、二次规划、0-1规划、多目标规划、动态规划、参数规划、组合优化、随机规划、模糊规划、多层规划问题等.在1993年A 题“非线性交调的频率设计”,1993年B 题“足球队排名”,1995年A 题“飞行管理问题”,1996年B 题“节水洗衣机”,1997年A 题“零件的参数设计”,1998年A 题“一类投资组合问题”,1999年B 题“钻井布局”,2001年B 题“公交车调度问题”,2002年A 题“车灯线光源的优化”,2006年A 题“出版社书号问题”,2007年B 题“城市公交线路选择问题”等赛题中,都用到了规划的方法.在此以线性规划为例,对规划的方法进行探讨.2.1 线性规划建模的一般理论线性规划建模方法主要用于解决生产实际中的资源利用、人力调配、生产安排等问题,它是一种重要的数学模型.线性规划是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是研究线性约束条件下线性目标函数的极值问题的数学理论和方法.一般的优化问题是指用“最好”的方式,使用或分配有限的资源即劳动力、原材料、机器、资金等,使得费用最小或利润最大.优化模型的一般形式为:()m ax m in 或 ()x f z = (4)().0..≤x g t s ()m i ,,2,1 = (5)()()12,,T n x x x x =,.由(4)、(5)组成的模型属于约束优化.若只有(4)式就是无约束优化.()x f 称为目标函数,()0g x ≤称为约束条件.在优化模型中,如果目标函数()x f 和约束条件中的()g x 都是线性函数,则该模型称为线性规划.建立实际问题线性规划模型的步骤如下:(1)设置要求解的决策变量.决策变量选取得当,不仅能顺利地建立模型而且能方便地求解,否则很可能事倍功半.(2)找出所有的限制,即约束条件,并用决策变量的线性方程或线性不等式来表示.当限制条件多,背景比较复杂时,可以采用图示或表格形式列出所有的已知数据和信息,从而避免“遗漏”或“重复”所造成的错误.(3)明确目标要求,并用决策变量的线性函数来表示,标出对函数是取极大还是取极小的要求.需要特别说明的是,要使用线性规划方法来处理一个实际问题,必须具备下面的条件:(1)优化条件:问题的目标有极大化或极小化的要求,而且能用决策变量的线性函数来表示.(2)选择条件:有多种可供选择的可行方案,以便从中选取最优方案.(3)限制条件:达到目标的条件是有一定限制的(比如,资源的供应量有限度等),而且这些限制可以用决策变量的线性等式或线性不等式表示出来.此外,描述问题的决策变量相互之间应有一定的联系,才有可能建立数学关系,这一点自然是不言而喻的.线性规划模型的求解可用图解法或单纯形法.随着计算机的普及和大量数学软件的出现,可以利用现成的软件MATLAB或LINGO等求解,在此不再叙述.2.2线性规划建模应用实例例2.1(2006年高教社杯全国大学生数学建模竞赛B题)艾滋病疗法的评价及疗效的预测.题目给出了美国某艾滋病医疗试验机构公布的两组数据,数据涉及到了病人CD4和HIV的浓度含量的测试结果.根据所给的资料需要参赛者完成以下问题:(1)利用附件1的数据,预测继续治疗的效果,或者确定最佳治疗终止时间;(2)利用附件2的数据,评价4种疗法的优劣(仅以4CD为标准),并对较优的疗法预测继续治疗的效果,或者确定最佳治疗终止时间;(3)如果病人需要考虑4种疗法的费用,对评价和预测有什么影响.问题求解过程分析由于题目具有开放性,故选择文献[3]中的求解思路进行分析.首先对题目所给数据进行分析,考虑到治疗的效果与患者的年龄有关,将患者按年龄分组,如25~35岁及45岁以上4组.每组中按照4种疗法和4个25岁,45~~14岁,35治疗阶段(如1020周,4030周),构造16个决策单元.取4~~~~0周,2010周,30种药品量为输入,治疗各个阶段末患者的4CD值的比值为输出.CD值与开始治疗时4然后建立相应的数学模型,利用相对有效性评价方法,建立分式规划模型并经过变换,转化为线性规划模型求解,对各年龄组患者在各阶段的治疗效率进行评价.计算结果:对第1年龄组疗法2和4在整个治疗中效率较高,在第4阶段仍然有效;对第2年龄组疗法1在第1,2阶段有效;对第3年龄组疗法1,2,3在第1阶段有效;对第4年龄组疗法1,2在第1,2阶段有效.表明只有2514岁的年4种轻患者,才能在治疗的最~后阶段仍然有有效的疗法.随后,由线性规划模型的对偶形式建立预测模型,对各年龄组各种疗法下一阶段的疗效进行预测.若由某决策单元得到的实际输出大于预测输出,则该决策单元相对有效;反之,说明该种疗法对该组患者在治疗的未来阶段不再有效,应该转换疗法.3 统计学建模方法在数学建模竞赛中,常常会涉及到大量的数据,因此,我们就需要用统计学建模方法对这些数据进行处理.此类方法主要包括统计分析、计算机模拟、回归分析、聚类分析、数据分类、判别分析、主成分分析、因子分析、残差分析、典型相关分析、时间序列等.如2004年A题“奥运会临时超市网点设计问题”,2004年B题“电力市场的输电阻塞管理问题”,2007年A题“人口增长预测问题”,2008年B题“大学学费问题”,2012年A题“葡萄酒的评价”等都用到了这种建模方法.在此选取其中两类方法进行阐述.3.1聚类分析3.1.1聚类分析的原理和方法该方法说的通俗一点就是,将n个样本,通过适当的方法选取m聚类中心,通过研究各样本和各个聚类中心的距离,选择适当的聚类标准,通常利用最小距离法来聚类,从而可以得到聚类.结果利用sas 软件或者spss 软件来做聚类分析,就可以得到相应的动态聚类图.这种模型的的特点是直观,容易理解.聚类分析的类型可分为:Q型聚类(即对样本聚类)和R型聚类(即对变量聚类).通常聚类中有相似系数法和距离法两种衡量标准.聚类方法种类多样,有可变类平均法、中间距离法、最长距离法、利差平均和法等.在应用时要注意,在样本量比较大时,要得到聚类结果就显得不是很容易,这时需要根据背景知识和相关的其他方法辅助处理.主要的方法步骤大致如下:(1)首先把每个样本自成一类;(2)选取适当的衡量标准,得到衡量矩阵;(3)重新计算类间距离,得到衡量矩阵;(4)重复第2步,直到只剩下一个类.3.1.2聚类分析应用实例例3.1(2012年高教社杯全国大学生数学建模竞赛A题)葡萄酒的评价.题目的附件中给出了某一年份一些葡萄酒的评价结果,和该年份这些葡萄酒的和酿酒葡萄的成分数据.要求参赛者建立数学模型解决以下问题:(1)分析附件1中两组评酒员的评价结果有无显著性差异,哪一组结果更可信;(2)根据酿酒葡萄的理化指标和葡萄酒的质量对这些酿酒葡萄进行分级;(3)分析酿酒葡萄与葡萄酒的理化指标之间的联系;(4)分析酿酒葡萄和葡萄酒的理化指标对葡萄酒质量的影响,并论证能否用葡萄和葡萄酒的理化指标来评价葡萄酒的质量.问题求解过程分析由于题目具有开放性,故选择文献[4]中的求解思路分析.由于给定了酿酒葡萄的理化指标,首先可将附录2和附录3中的一些数据进行处理.并可以据此对各种酿酒葡萄进行聚类分析,但是,由于题目中所给的数据庞大,所以可通过主成分分析法,简化并提取大部分有效信息,再用聚类分析对酿酒葡萄进行分级.最后根据酿酒葡萄对应葡萄酒质量的平均值大小进行比较,排序分级.接下来针对问题中分析酿酒葡萄与葡萄酒理化指标之间的联系,及上面整理好的数据,采用回归分析原理,在SPSS中得到酿酒葡萄与葡萄酒的理化指标之间的联系.再通过相关分析,得出相应的相关系数,从而得到相应的判断结论.在分析酿酒葡萄与葡萄酒的理化指标之间的联系时,还用到了多元线性回归分析.该模型用于生活实践中,也可以解决很多实际问题.3.2回归分析回归分析是利用数据统计原理,对大量数据进行数学处理,并确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程,并加以外推,用于预测今后的因变量的变化的分析方法.3.2.1回归分析的原理与方法回归分析是在一组数据的基础上研究这样几个问题:建立因变量与自变量之间的回归模型;对回归模型的可信度进行检验;判断每个自变量对因变量的影响是否显著;判断回归模型是否适合这组数据;利用回归模型对进行预报或控制.回归分析主要包括一元线性回归、多元线性回归、非线性回归.回归分析的主要步骤为:(1)根据自变量和因变量的关系,建立回归方程.(2)解出回归系数.(3)对其进行相关性检验,确定相关系数.(4)当符合相关性要求后,便可与具体条件结合,确定预测值的置信区间.需要注意的是,要尽可能定性判断自变量的可能种类和个数,并定性判断回归方程的可能类型.另外,最好应用高质量的统计数据,再运用数学工具和相关软件定量定性判断.3.2.2回归分析应用实例例3.2(2006年高教社杯全国大学生数学建模竞赛B题)艾滋病疗法的评价及疗效的预测.题目同例2.1.问题求解过程分析由于题目具有开放性,故选择文献[3]中的求解思路进行分析.问题2的解决就用到回归模型.首先分析数据知,应建立时间的一次与二次函数模型,并经过统计分析比较,确定哪种较好.所以可建立一个统一的回归模型,也可对每种疗法分别建立一个模型.以总体回归模型为例,分别用一次与二次时间函数模型进行比较,可知疗法3~1用一次模型较优,且一次项系数为负,即4CD在减少,从数值看疗法3优于疗法2和1;疗法4用二次模型较优,即4t左右达到最大.可以通过4条回归CD先增后减,在20曲线进行比较,显示疗法4在30周之前明显优于其它.最后再用检验法作比较,结果是疗法1与2无显著性差异,而疗法1与3,2与3,3与4均有显著性差异.4 图论建模方法图论建模方法在建模竞赛中也经常涉及,应用十分广泛,并且解法巧妙,方法灵活多变.如1990年B题“扫雪问题”,1991年B题“寻找最优Steiner树”,1992年B题“紧急修复系统的研制”,1993年B题“足球队排名”,1994年A题“逢山开路问题”,1994年B题“锁具装箱问题”,1995年B题“天车与冶炼炉的作业调度”,1997年B题“截断切割的最优排列”,1998年B题“灾情巡视最佳路线”,1999年B题“钻井布局”,2007年B题“城市公交线路选择问题”等都应用到了图论的方法.图论近几年来发展十分迅速,在物理、化学、生物学、地理学、计算机科学、信息论、控制论、社会科学、军事科学以及计算机管理等方面都有着广泛的应用.因此图论越来越受到了全世界数学界和工程技术界乃至经营决策管理者的重视.同时也成为了数学建模中一种十分重要的方法.图论问题算法很多,包括最短路、最大流、最小生成树、二分匹配、floyd、frim等.。

数学建模足球比赛论文

数学建模足球比赛论文

第十五组足球队排名次的方法摘 要本文讨论了依据我国12支足球队在1988-1989年全国足球甲级队联赛中的成绩,给他们进行排列名次的问题。

根据全国足球甲级队联赛的比赛规则,符合要求的排名方法是多种多样的,然而都希望实现尽量公平、尽量精确的排名策略。

我们针对排名的问题,建立了从简单到复杂,从粗糙到较为精确的三个模型,分别用了平均积分法、图论的相关知识、比分矩阵法以及层次分析法。

模型一:依次计算出各个队的总积分,按照国家足球甲级队联赛的规则,可知:获胜加3分,平局各得一分,失败就得零分,同时统计每一个队进行的比赛场数,对总积分/比赛的场数进行排序,所得结果就可以近似的作为各队的排名。

模型二:根据比赛的数据,建立了一个1212⨯的数字矩阵1212ij )(a A ⨯=,在合理的假设条件下,进行分析,从而完善矩阵,用C++编程,输入所得矩阵,求出哈密顿开路的路径,再结合模型一的分析,对其排出名次。

模型三:用三分制计算对任意第i 队与第j 队(i 不等于j )的得分比ij b ,其中ii b =1,得到比分矩阵1212)(⨯=ij b B ,求出比分矩阵的最大特征值,并求出相应的特征向量。

比较分向量的大小,即可求出排名。

模型四:用层次分析法,把平均积分、净球数和获胜场数与参赛场数的比值作为准则层的影响因素,根据它们的比重关系,构造正互反矩阵(逆称矩阵),通过求最大特征值及其特征向量,从而求出排名。

四个模型的运行结果如下的表所示:的条件是不一样的。

关键词:足球 排名 积分 图论 比分矩阵 层次分析一、 问题描述近几十年以来,足球这一运动项目在我国较为流行,深受许多球迷的喜爱,越来越多的大型的足球比赛在国内组织起来,其中全国足球联赛就是一个比较正式,比赛要求较为严谨的一个比赛组织,公平、公正、公开的评分原则显现的更为重要。

题目中给出了1988-1989年全国足球甲级队联赛的比赛成绩列表,根据列表的数据,要求设计一个合理的方案对十二支队进行排列名次,并给出用该方案排名次的结果。

matlab数据排序的方法

matlab数据排序的方法

matlab数据排序的方法(原创版3篇)目录(篇1)1.MATLAB 数据排序概述2.MATLAB 数据排序的基本方法2.1 直接使用 sort 函数2.2 使用 sortrows 函数2.3 使用 sortcols 函数2.4 使用 matlab 内置函数进行排序3.MATLAB 数据排序的高级技巧3.1 自定义排序规则3.2 对象数组排序3.3 使用 sortfields 函数4.MATLAB 数据排序的实际应用案例5.总结正文(篇1)一、MATLAB 数据排序概述在 MATLAB 中,数据排序是一个非常常用的操作。

对于数组或矩阵,我们可以通过排序来对其元素进行重新排列,使其满足一定的条件,如升序或降序排列。

这对于数据处理和分析工作来说具有很大的意义。

二、MATLAB 数据排序的基本方法1.直接使用 sort 函数sort 函数是 MATLAB 中最常用的排序函数,它可以对数组或矩阵的元素进行升序或降序排列。

使用方式如下:```matlabA = [3, 1, 4, 1, 5, 9];sorted_A = sort(A);```2.使用 sortrows 函数sortrows 函数可以对矩阵的行进行排序,而非对矩阵的元素进行排序。

使用方式如下:```matlabA = [3, 1, 4, 1, 5, 9;1, 2, 3, 4, 5, 6];sorted_A = sortrows(A);```3.使用 sortcols 函数sortcols 函数可以对矩阵的列进行排序,而非对矩阵的元素进行排序。

使用方式如下:```matlabA = [3, 1, 4, 1, 5, 9;1, 2, 3, 4, 5, 6];sorted_A = sortcols(A);```4.使用 matlab 内置函数进行排序除了以上三个函数,MATLAB 还提供了一些内置函数进行排序,如isort、sortnn 等。

使用方式可以参考官方文档。

Matlab排列组合函数

Matlab排列组合函数

Matlab排列组合函数1、perms(x)给出向量x的所有排列。

s=perms(2:2:6)s =6 4 26 2 44 6 24 2 62 4 62 6 42、nchoosek(n,m)从n各元素中取m个元素的所有组合数。

nchoosek(x,m)从向量x中取m个元素的组合s=nchoosek(2:2:10,4)s =2 4 6 82 4 6 102 4 8 102 6 8 104 6 8 103、factorial(n)求n的阶乘。

s=factorial(4)s =244、prod(n:m) %求排列数:m*(m-1)*(m-2)*…*(n+1)*n prod(1:2:2n-1)或prod(2:2:2n) %求(2n-1)!!或(2n)!!prod(A) %对矩阵A的各列求积prod(A,dim) %dim=1(默认);dim=2,对矩阵A的各行求积(等价于(prod(A'))')>> M = magic(3)M =8 1 63 5 74 9 2>> prod(M,2)ans =4810572>> prod(M')'ans =48105725、cumprod(n:m)输出一个向量[n n*(n+1) n(n+1)(n+2) … n(n+1)(n+2)…(m-1)m] cumprod(A)cumprod(A,dim)cumprod(1:5)ans =1 2 6 24 120A = [1 2 3; 4 5 6];cumprod(A)ans =1 2 34 10 18cumprod(A,2)1 2 64 20 1206、gamma(n)求n!gamma(n+1) = n! = prod(1:n)8、v='n!';vpa(v)>> v='5!';>> vpa(v)ans =120.matlab做排列组合:比如要ABCD的全排列,可以用perms函数perms(['ABCD'])运行结果DCBADCABDBCADBACDABCDACBCDBACDABCBDACBADCABDCADBBCDABCADBDCABADCBACDACBDACDBABCDABDCADBCADCB以下是几个常用的排列、组合与阶乘等函数。

足球队排名次 5

足球队排名次 5

足球队排名次第五组B 题 足球队排名次摘 要本文先处理了球队的比赛数据,建立了各球队比赛胜负率情况表和各球队比赛场均进失球情况表。

根据层次分析法,利用处理了球队的比赛数据,将排名的决策问题分为三层:目标层,即球队的排名;准则层,即胜率、场均进球数和场均净胜球数;措施层,即各球队。

建立层次结构模型,构造层之间的判断矩阵,利用MATLAB 软件,求解判断矩阵的特征根和特征向量,进行了一致性检验,然后对特征向量进行归一化,得到近似的权重向量,经过计算处理得到措施层对目标层的权重,根据其大小排出球队最终名次411251086912137T T T T T T T T T T T T 。

最后我们对关于N 支球队的算法,以及本文所建立的模型进行了优缺点进行了讨论。

关键词 层次分析 权重向量 一致性检验一、问题的重述根据题中给出我国12支足球队在19891988年足球甲级联赛中的成绩表,~二、 符号说明i T 表示球队)(12,,2,1= i ;O 表示目标层; C 表示准则层; T 表示措施层;i C 分别表示准则层C 中的因素胜率,场均净胜球数,场均进球数)(3,2,1=i ; i A 分别表示构造C O -层,i T C -层的判断矩阵)(3,2,1=i ;三、 题目假设1.比赛结果可以精确的反应相对实力,没有误差;2.如果两队之间,由于一些原因没有比赛或双方打成平局,就由其它队的战绩确定这两个队的强弱;四、模型的建立与求解1.统计比赛成绩的数据1)统计各球队的胜,负,平率(如表1)。

2)统计各球队的进球率,失球率和净胜球率(如表2)。

2.运用层次分析法,将排名的决策问题分为三层:目标层,即球队的排名;准则层,即胜率、场均进球数和场均净胜球数;措施层,即各球队。

建立层次结构模型(如图1)设足球队排名次问题中目标层O ;准则层C 中的因素胜率1C ,场均净胜球PPPPP PPPP P PP图 1数2C ,场均进球数3C ;措施层T 中因素为各球队i T 。

数学建模十大经典算法( 数学建模必备资料)

数学建模十大经典算法(  数学建模必备资料)

建模十大经典算法1、蒙特卡罗算法。

该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时通过模拟可以来检验自己模型的正确性。

2、数据拟合、参数估计、插值等数据处理算法。

比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具。

3、线性规划、整数规划、多元规划、二次规划等规划类问题。

建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo、MATLAB软件实现。

4、图论算法。

这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。

5、动态规划、回溯搜索、分治算法、分支定界等计算机算法。

这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中。

6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法。

这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。

7、网格算法和穷举法。

网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8、一些连续离散化方法。

很多问题都是实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。

9、数值分析算法。

如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。

10、图象处理算法。

赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab进行处理。

历年全国数学建模试题及解法赛题解法93A非线性交调的频率设计拟合、规划93B足球队排名图论、层次分析、整数规划94A逢山开路图论、插值、动态规划94B锁具装箱问题图论、组合数学95A飞行管理问题非线性规划、线性规划95B天车与冶炼炉的作业调度动态规划、排队论、图论96A最优捕鱼策略微分方程、优化96B节水洗衣机非线性规划97A零件的参数设计非线性规划97B截断切割的最优排列随机模拟、图论98A一类投资组合问题多目标优化、非线性规划98B灾情巡视的最佳路线图论、组合优化99A自动化车床管理随机优化、计算机模拟99B钻井布局0-1规划、图论00A DNA序列分类模式识别、Fisher判别、人工神经网络00B钢管订购和运输组合优化、运输问题01A血管三维重建曲线拟合、曲面重建01B 公交车调度问题多目标规划02A车灯线光源的优化非线性规划02B彩票问题单目标决策03A SARS的传播微分方程、差分方程03B 露天矿生产的车辆安排整数规划、运输问题04A奥运会临时超市网点设计统计分析、数据处理、优化04B电力市场的输电阻塞管理数据拟合、优化05A长江水质的评价和预测预测评价、数据处理05B DVD在线租赁随机规划、整数规划06A 出版资源配置06B 艾滋病疗法的评价及疗效的预测 07A 中国人口增长预测 07B 乘公交,看奥运 多目标规划 数据处理 图论 08A 数码相机定位 08B 高等教育学费标准探讨09A 制动器试验台的控制方法分析 09B 眼科病床的合理安排 动态规划 10A 10B赛题发展的特点:1.对选手的计算机能力提出了更高的要求:赛题的解决依赖计算机,题目的数据较多,手工计算不能完成,如03B ,某些问题需要使用计算机软件,01A 。

2019如何建立一个数学模型.ppt

2019如何建立一个数学模型.ppt

例2.4:AMCM-89A题要求对蠓虫加以分类。 在采用概率判别方法建模之前,作了如下假设:
1、两类蠓虫的触角与翅膀长度的总体均值、标准差
和相关系数与学习样本所能反映的值是相符的, 2、触角长度x和y服从二维正态分布
这两条假设为从概率论的角度对蠓虫进行分类提供了根据,
由于统计方法的应用必须建立在对大量样本进行分 析的基础上,而我们面临的问题是,题中所给的数 据(15个学习样本)太少,因此优秀论文作者清醒 指出,这些假设未必一定可靠,这显示了他们对实 际问题及所用方法的深刻见解,
根据赛题的实际情况,对建立的模型作出合 理的简化是解决问题的关键。
例4.1 CMCM-98B
根据题意,得到购买Si的金额为xi的交易费为
0, xi 0 ci ( xi ) pi ui ,0 xi ui p x ,x u i i i i
但因M相当大,Si若被选中,其投资额xi一般都超过ui, 交易费可简化为
如何建立一个完整的数学模型
仇秋生
数理信息工程学院
一个完整的数学建模过程主要由三部分组成: 1、用适当的数学方法对实际问题进行描述 2、采取各种数学和计算机手段求解模型 3、从实际的角度分析模型的结果,考察其是否合理、 是否具有实际意义?
一、模型准备
了解实际背景 明确建模目的 搜集有关信息 掌握对象特征
(3)统计分析模型
如AMCM-89A可以用统计学中的Fisher判别法对蠓虫 加以分类。 (4)插值与拟合模型 这是离散数据连续化处理时常用的方法。如 AMCM-86A题海底地形的描绘,AMCM-91A水塔水流 量的估计等。
(5)其它。如计算机模拟,神经网络等。
方法总结:
用的最多的方法是:微分方程、优 化化方法和概率统计的方法. 插值与拟合,随机模拟在数据处理时 很有必要。 灰色系统理论、神经网络、模糊数学 经常被乱用。 层次分析只能做半定量分析

排队问题matlab完整程序

排队问题matlab完整程序

function shengclear allclose alltim0=720;%需要模拟的时间[num,pass]=computing(tim0);%计算模拟数据%动画制作envirment %场景title1= annotation('textbox', 'Position',[0.3377 0.8712 0.33480.07885], ...'EdgeColor','none','FitHeightToText','off','FontName','Arial','FontSize',16,...'FontWeight','bold','String',{'理发店忙闲情况分析'});time1 = annotation('textbox','Position',[0.02754 0.1019 0.09420.06538],...'EdgeColor','none','FitHeightToText','off','FontSize',14,'FontWeight',' bold',...'String',{'时间'});hour1 = annotation('textbox','Position',[0.1072 0.1038 0.075360.06346],...'EdgeColor','none','FitHeightToText','off','FontSize',14,...'FontWeight','bold','String',{'08:'});minute1 = annotation('textbox','Position',[0.1493 0.1038 0.072460.06538],...'EdgeColor','none','FitHeightToText','off', 'FontSize',14,...'FontWeight','bold','String',{'10'});counter1=1; %时间计数temp1=1; %顾客计数counter=1;counterxy=zeros(7,2);tempa=0;tempb=0;tempc=0;tempd=0;tempe=0;tempf=0;tempg=0;global man1 mana1 mana2 mana3 mana4 mana5global manb1 manb2 manb3 manb4 manb5global manc1 manc2 manc3 manc4 manc5global mand1 mand2 mand3 mand4 mand5global mane1 mane2 mane3 mane4 mane5man1(1,:)=[0.4625 0.1786 0.0982 0.1381]; %[x0 y0 x1 y1] man1(2,:)=[0.4875 0.2667 0.5018 0.2667]; %[x0 y0 x1 y1] man1(3,:)=[0.5214 0.2667 0.5339 0.2667]; %[x0 y0 x1 y1] man1(4,:)=[0.5125 0.25 0.5125 0.23]; %[x0 y0 x1 y1] man1(5,:)=[0.4968 0.2081 0.525 0.2072]; %[x0 y0 x1 y1] axis offwhile counter1<=10 %时间计数%显示时间minutex=rem(counter1,60);hourx=8+(counter1-minutex)/60;set(hour1,'String',{hourx})set(minute1,'String',{minutex})if temp1<=num%离开与删除人脸对象if tempa ~= 0if pass(tempa,6) == counter1leaveflash(1,counterxy(1,1),counterxy(1,2))tempa=0;delete(mana1,mana2,mana3,mana4,mana5);endendif tempb~=0if pass(tempb,6) == counter1leaveflash(2,counterxy(2,1),counterxy(2,2))tempb=0;delete(manb1,manb2,manb3,manb4,manb5);endendif tempc~=0if pass(tempc,6) == counter1leaveflash(3,counterxy(3,1),counterxy(3,2))tempc=0;delete(manc1,manc2,manc3,manc4,manc5);endendif tempd~=0if pass(tempd,6) == counter1leaveflash(4,counterxy(4,1),counterxy(4,2))tempd=0;delete(mand1,mand2,mand3,mand4,mand5);endendif tempe~=0if pass(tempe,6) == counter1leaveflash(5,counterxy(5,1),counterxy(5,2))tempe=0;delete(mane1,mane2,mane3,mane4,mane5);endendif tempf~=0if pass(tempf,6) == counter1leaveflash(6,counterxy(6,1),counterxy(6,2))tempf=0;delete(manf1,manf2,manf3,manf4,manf5);endendif tempg~=0if pass(tempg,6) == counter1leaveflash(7,counterxy(7,1),counterxy(7,2))tempg=0;delete(mang1,mang2,mang3,mang4,mang5);endend%产生人脸if pass(temp1,2)==counter1if tempa==0[mana1,mana2,mana3,mana4,mana5]=personcreat(pass(temp1,3)) tempa=temp1;if pass(temp1,5)==1counterxy(1,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(1,:)=[0 0.055];endif pass(temp1,5)==3counterxy(1,:)=[0.027 0.055];endelseif tempb==0[manb1,manb2,manb3,manb4,manb5]=personcreat(pass(temp1,3))tempb=temp1;if pass(temp1,5)==1counterxy(2,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(2,:)=[0 0.055];endif pass(temp1,5)==3counterxy(3,:)=[0.027 0.055];endtemp1=temp1+1;elseif tempc==0[manc1,manc2,manc3,manc4,manc5]=personcreat(pass(temp1,3))tempc=temp1;if pass(temp1,5)==1counterxy(3,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(3,:)=[0 0.055];endif pass(temp1,5)==3counterxy(3,:)=[0.027 0.055];endtemp1=temp1+1;elseif tempd==0[mand1,mand2,mand3,mand4,mand5]=personcreat(pass(temp1,3))tempd=temp1;if pass(temp1,5)==1counterxy(4,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(4,:)=[0 0.055];if pass(temp1,5)==3counterxy(4,:)=[0.027 0.055];endtemp1=temp1+1;elseif tempe==0[mane1,mane2,mane3,mane4,mane5]=personcreat(pass(temp1,3))tempe=temp1;if pass(temp1,5)==1counterxy(5,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(5,:)=[0 0.055];endif pass(temp1,5)==3counterxy(5,:)=[0.027 0.055];endtemp1=temp1+1;elseif tempf==0[manf1,manf2,manf3,manf4,manf5]=personcreat(pass(temp1,3))tempf=temp1;if pass(temp1,5)==1counterxy(6,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(6,:)=[0 0.055];endif pass(temp1,5)==3counterxy(6,:)=[0.027 0.055];endtemp1=temp1+1;elseif tempg==0[mang1,mang2,mang3,mang4,mang5]=personcreat(pass(temp1,3))tempg=temp1;if pass(temp1,5)==1counterxy(7,:)=[-0.027 0.055];endif pass(temp1,5)==2counterxy(7,:)=[0 0.055];endif pass(temp1,5)==3counterxy(7,:)=[0.027 0.055];endtemp1=temp1+1;endendendendendendendend%开始服务if tempa~=0if pass(tempa,2)+pass(tempa,7) == counter1serveflash(1,counterxy(1,1),counterxy(1,2))endendif tempb~=0if pass(tempb,2)+pass(tempb,7) == counter1serveflash(2,counterxy(2,1),counterxy(2,2))endendif tempc~=0if pass(tempc,2)+pass(tempc,7) == counter1serveflash(3,counterxy(3,1),counterxy(3,2))endendif tempd~=0if pass(tempd,2)+pass(tempd,7) == counter1serveflash(4,counterxy(4,1),counterxy(4,2))endendif tempe~=0if pass(tempe,2)+pass(tempe,7) == counter1serveflash(5,counterxy(5,1),counterxy(5,2))endendif tempf~=0if pass(tempf,2)+pass(tempf,7) == counter1serveflash(6,counterxy(6,1),counterxy(6,2))endendif tempg~=0if pass(tempg,2)+pass(tempg,7) == counter1serveflash(7,counterxy(7,1),counterxy(7,2))endendendcounter1=counter1+1;endiiii=1;sumtime=0;sumtimea=0;sumtimeb=0;sumtimec=0;numa=0;numb=0;numc=0;while iiii<numsumtime=sumtime+pass(iiii,3)+pass(iiii,4);if pass(iiii,5)==1sumtimea=sumtimea+pass(iiii,3)+pass(iiii,4);numa=numa+1;endif pass(iiii,5)==2sumtimeb=sumtimeb+pass(iiii,3)+pass(iiii,4);numb=numb+1;endif pass(iiii,5)==3sumtimec=sumtimec+pass(iiii,3)+pass(iiii,4);numc=numc+1;endiiii=iiii+1;endnum=num-1;freetimea=720-sumtimea;freetimeb=720-sumtimeb;freetimec=720-sumtimec;freetime=freetimea+freetimeb+freetimec;avetimea=round(1000*sumtimea/720)/1000;avetimeb=round(1000*sumtimeb/720)/1000;avetimec=round(1000*sumtimec/720)/1000;avetime=round(1000*sumtime/(3*720))/1000;scaleaa=freetimea/720;scaleab=freetimeb/720;scaleac=freetimec/720;dispdata(1,:)=[numa numb numc];dispdata(2,:)=[sumtimea sumtimeb sumtimec];dispdata(3,:)=[avetimea avetimeb avetimec];dispdata(4,:)=[freetimea freetimeb freetimec];dispdata(5,:)=[freetimea/720 freetimeb/720 freetimec/720];figure(2)subplot(2,2,1),bar(dispdata(1,:))title('服务顾客数')subplot(2,2,2),title('服务时间')bar(dispdata(2,:))subplot(2,2,3),title('平均服务时间')pie(dispdata(3,:))subplot(2,2,4),title('空闲比例')pie(dispdata(5,:))function [num,pass]=computing(tim0)seat=[0 0 0];%服务员属性pass=rand(1,4);%序号、到达时间、特殊要求时间、正常理发时间pass(5)=0;%服务员pass(6)=0;%离开时间pass(7)=0;%等待时间num=1;%服务人数tim=0;%时间计数器temp=0;%while tim<=tim0pass(num,1)=num; %装入序号pass(num,2)=rand;pass(num,3)=rand;pass(num,4)=rand;%计算顾客到达时间if pass(num,2)<=0.07temp=4;else if pass(num,2)<=0.17temp=5;else if pass(num,2)<=0.69temp=6;else if pass(num,2)<=0.89temp=7;else temp=8;endendendendtim=tim+temp; %装入顾客到达时间pass(num,2)=tim;if pass(num,3)<=0.1pass(num,3)=4; %装入需要特殊服务的时间else pass(num,3)=0;endnum=num+1;endnum=num-1;for i=1:num%计算顾客的理发席位if seat(1)<=pass(i,2)+pass(i,7)pass(i,5)=1; %由1号服务员理发temp1=timinge1(1,pass(i,4));seat(1)=pass(i,2)+pass(i,3)+temp1;pass(i,4)=temp1; %装入正常理发所需时间else if seat(2)<=pass(i,2)+pass(i,7)pass(i,5)=2; %由2号服务员理发temp1=timinge1(2,pass(i,4));seat(2)=pass(i,2)+pass(i,3)+temp1;pass(i,4)=temp1; %装入正常理发所需时间else if seat(3)<=pass(i,2)+pass(i,7)pass(i,5)=3; %由2号服务员理发temp1=timinge1(3,pass(i,4));seat(3)=pass(i,2)+pass(i,3)+temp1;pass(i,4)=temp1;else%计算等待时间x=seat(1);y=1;if x>seat(2)x=seat(2);y=2;endif x>seat(3)x=seat(3);y=3;endpass(i,5)=y;temp1=timinge1(y,pass(i,4));pass(i,7)=seat(y)-pass(i,2);seat(y)=seat(y)+temp1+pass(i,3);pass(i,4)=temp1;endendendpass(i,6)=pass(i,2)+pass(i,3)+pass(i,4);endfunction envirment%场景设置pict=figure('color',[0.75 0.75 0.75],'position',[50 50 690 520]);door = annotation('rectangle',[0.4214 0.1405 0.19460.03333],'FaceColor',[0 1 0],'EdgeColor',[0 1 0]);word1 = annotation('textbox','Position',[0.3393 0.1143 0.08750.07619],'EdgeColor','none','FitHeightToText','off','FontSize',12,'Stri ng',{'门口'});seata1= annotation('rectangle',[0.2054 0.8214 0.11070.02857],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seata2 = annotation('rectangle',[0.2071 0.7476 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seata3 = annotation('rectangle',[0.3021 0.7419 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); word2 = annotation('textbox','Position',[0.1607 0.65 0.11070.06667],'EdgeColor','none','FitHeightToText','off','String',{'SeatA'});seatb1 = annotation('rectangle',[0.4579 0.8171 0.11070.02857],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seatb2 = annotation('rectangle',[0.4579 0.7386 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seatb3 = annotation('rectangle',[0.5564 0.7448 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); word3 = annotation('textbox','Position',[0.3768 0.6381 0.10360.07381],'EdgeColor','none','FitHeightToText','off','String',{'SeatB'});seatc1 = annotation('rectangle',[0.6986 0.8157 0.11070.02857],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seatc2 = annotation('rectangle',[0.6996 0.7343 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); seatc3 = annotation('rectangle',[0.7964 0.7333 0.014290.1024],'FaceColor',[0.8471 0.1608 0],'EdgeColor',[0.8471 0.1608 0]); word4 = annotation('textbox','Position',[0.6429 0.6286 0.10180.07619],'EdgeColor','none','FitHeightToText','off','String',{'SeatC'});watierplace = annotation('rectangle',[0.8214 0.1762 0.019640.3857],'FaceColor',[0 1 1],'EdgeColor',[0 1 1]);word5 = annotation('textbox','Position',[0.7107 0.2 0.11790.0619],'EdgeColor','none','FitHeightToText','off','String',{'等待席'});function leaveflash(xx,yy,zz)global man1 mana1 mana2 mana3 mana4 mana5global manb1 manb2 manb3 manb4 manb5global manc1 manc2 manc3 manc4 manc5global mand1 mand2 mand3 mand4 mand5global mane1 mane2 mane3 mane4 mane5switch xxcase 1for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mana1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(mana2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]);set(mana3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]);set(mana4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(mana5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 2for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manb1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(manb2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]);set(manb3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]);set(manb4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(manb5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 3for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manc1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(manc2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]); set(manc3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]); set(manc4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(manc5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 4for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mand1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(mand2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]); set(mand3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]);set(mand4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(mand5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 5for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mane1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(mane2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]); set(mane3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]); set(mane4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(mane5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 6for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manf1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)]);set(manf2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]); set(manf3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]);set(manf4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(manf5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endcase 7for ii = 10:-1:1face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mang1,'position',[face(1,1) face(1,2) face(1,3)face(1,4)]);set(mang2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]);set(mang3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]);set(mang4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)]);set(mang5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]);MM(ii)=getframe;endendfunction [face1,face2,face3,face4,face5]=personcreat(vect)if vect==0face1 = annotation('ellipse',[0.4625 0.1786 0.09820.1381],'FaceColor',[0.6824 0.4667 0],'EdgeColor',[0.6824 0.4667 0]); else face1 = annotation('ellipse',[0.4625 0.1786 0.09820.1381],'FaceColor',[0.4 0.6 0],'EdgeColor',[0.6824 0.4667 0]);%[0.2096 0.6881 0.09821 0.1381]endface2 = annotation('line',[0.4875 0.5018],[0.2667 0.2667],'LineWidth',3); face3 = annotation('line',[0.5214 0.5339],[0.2667 0.2667],'LineWidth',3); face4 = annotation('line',[0.5125 0.5125],[0.25 0.2309],'LineWidth',3); face5 = annotation('line',[0.4968 0.525],[0.2081 0.2072],'LineWidth',3);function serveflash(xx,yy,zz)global man1 mana1 mana2 mana3 mana4 mana5global manb1 manb2 manb3 manb4 manb5global manc1 manc2 manc3 manc4 manc5global mand1 mand2 mand3 mand4 mand5global mane1 mane2 mane3 mane4 mane5switch xxcase 1for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mana1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(mana2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)])set(mana3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)])set(mana4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(mana5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 2for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manb1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(manb2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)])set(manb3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)])set(manb4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(manb5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 3for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manc1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(manc2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]) set(manc3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]) set(manc4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(manc5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 4for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mand1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(mand2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)])set(mand3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)])set(mand4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(mand5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 5for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mane1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(mane2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]) set(mane3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]) set(mane4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(mane5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 6for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(manf1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(manf2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)])set(manf3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)])set(manf4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(manf5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endcase 7for ii = 1:10 %开始服务动画face(:,1)=man1(:,1)+yy*(ii-1);face(:,3)=man1(:,3)+yy*(ii-1);face(:,2)=man1(:,2)+zz*(ii-1);face(:,4)=man1(:,4)+zz*(ii-1);face(1,3)=0.0982;face(1,4)=0.1381;set(mang1,'position',[face(1,1) face(1,2) face(1,3) face(1,4)])set(mang2,'X',[face(2,1);face(2,3)],'Y',[face(2,2);face(2,4)]) set(mang3,'X',[face(3,1);face(3,3)],'Y',[face(3,2);face(3,4)]) set(mang4,'X',[face(4,1);face(4,3)],'Y',[face(4,2);face(4,4)])set(mang5,'X',[face(5,1);face(5,3)],'Y',[face(5,2);face(5,4)]) MM(ii)=getframe;endendfunction xx=timinge1(vect1,vect)switch vect1case 1if vect<=0.18xx=8;else if vect<=0.4xx=9;else if vect<=0.77xx=10;else xx=11;endendendcase 2if vect<=0.18xx=10;else if vect<=0.37xx=11;else if vect<=0.72xx=12;else xx=13;endendendotherwiseif vect<=0.15xx=12;else if vect<=0.37xx=13;else if vect<=0.74xx=14;else xx=15;endendendend。

数学建模-B题-球队排名问题-答案详解

数学建模-B题-球队排名问题-答案详解

承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。

如有违反竞赛规则的行为,我们将受到严肃处理。

我们参赛选择的题号是(从A/B/C/D中选择一项填写):我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):参赛队员(打印并签名) :1.2.3.指导教师或指导教师组负责人(打印并签名):日期:年月日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):一个给足球队排名次的方法戚立峰毛威马斌(北京大学数学系,100871)指导教师樊启洪摘要本文利用层次分析法建立了一个为足球排名次的数学模型.它首先用来排名次的数据是否充分做出判断,在能够排名次时对数据的可依赖程度做出估计,然后给出名次.文中证明了这个名次正是比赛成绩所体现的各队实力的顺序.文中将看到此模型充分考虑了排名结果对各场比赛的重要性的反馈影响,基本上消除了由于比赛对手的强弱不同造成的不公平现象.文中还证明了模型的稳定性,这保证了各队在发挥水平上的小的波动不会对排名顺序造成大的变动.本模型比较完满地解决了足球队排名次问题,而且经过简单修改,它可以适用于任何一种对抗型比赛的排名.§1 问题的提出及分析本题的表1给出的是我国12支足球队在1988-1989年全国甲级联赛中的成绩,要求通过建立数学模型,对各队进行排名次.按照通常的理解,排名的目的是根据比赛成绩排出反映各队真实实力状况的一个顺序.为达到这一点,一个好的排名算法应满足下面一些基本要求:(1)保序性;(2)稳定性;(3)能够处理不同场比赛的权重;(4)能够判断成绩表的可约性;(5)能够准确地进行补残;(6)容忍不一致现象;(7)对数据可依赖程度给出较为精确的描述.可以想象,各队的真实实力水平在成绩表中反映出来(见§3假定Ⅱ),所以根据排名目的,我们要求排名顺序与成绩表反映的各队实力水平的顺序是一致的,这就是要求(1).也就是说,如果a比b表现出色,a的名次就应排在b前面.但a比b出色不能只是由a对b这一场比赛所决定,必须参考a,b相对于其他队的成绩,像a平c,c胜d,d平b这组比赛对a,b的相对表现是有影响的.为使一个算法满足保序性,就必须充分考虑到将a,b连结起来的所有场比赛.下面的例子表明积分法布满足保序性.例1 a平c,c胜d,d平b,a平b.在上述比赛中a表现应比b出色,但按积分法计算a,b都积2分.其原因就在于积分法没有把a平c,c胜d,d平b这组比赛中所体现的a,b实力对比情况考虑进去;要求(2)就是说成绩表小的变动不会对排名结果造成巨大影响.这是由于球队发挥水平存在正常波动而必须提供的,如果这种正常的小波动引起名次的巨大变化,那么排名就不令人信服;要求(3)使得不同场比赛在排名中的地位不同,这是因为在实际比赛中,往往会有的队不幸遇到较强的队而输掉.为了避免由于对手的强弱不同造成的不公平,要求(3)是必须的.但现在的排名制度大都满足不了要求(3),以至于许多时候“运气”对名次起了重要作用;要求(4)—(7)是为了适应实际比赛中可能会出现在一些复杂情况而提出的.首先是可能某两个队之间没有打比赛,我们称之为数据(成绩)残缺.对于两队成绩残缺,只能通过它们同其他队的比赛成绩来判断它们的实力比较.如果残缺元素过多,就有可能导致参赛队分成两组,组与组之间没有比赛,称这种情况为成绩表可约,这时显然是不应该排名次的.这样就有要求(4),(5);其次是前后比赛成绩矛盾,比如说a胜b,b胜c,c平a,称这种情况为数据不一致.如果不一致的情况过于严重,说明比赛偶然因素太大,数据的可依赖程度太低,应该考虑放弃比赛成绩.所以排名算法还应满足(6),(7).本文使用的层次分析法的特征根方法已满足了上述要求,下面将在§2中给出具体算法.§3中给出算发满足上述要求的解释和论证.§2 模型设计及其算法一、基本假设和名词约定假设Ⅰ参赛各队存在客观的真实实力(见名词约定1).这是任何一种排名算法的基础.假设Ⅱ 在每场比赛中体现出来的强队对弱队的表面实力对比是以它们的真实实力对比为中心的互相对立的正态分布.(见名词约定2)这条假设保证了我们可以以比赛成绩为依据对球队的真实实力进行排名,另外它在很大程度上反映了球队水平发挥的不稳定性.名词约定1 .称w =(12,,,n w w w …)为真实实力向量,如果i w 的大小表现了i T 的实力强弱.当i w 的大小表现了i T 在比赛中出色程度时,称w 为排名向量.由假设Ⅱ,两者应是近似相同的,以后就把它们当成同一个.2 .称i T 对j T 这场比赛中体现出来的i T 对j T 的相对强弱程度为i T 对j T 的表面实力对比,一般记作ij a ,当i T 对j T 成绩残缺是约定ij a =0.显然地有1()0,(),() 1.ij ji ii iji a ii a iii a a ≥== (2.1) 矩阵A=()ij n n a ⨯就称为比赛成绩的判断矩阵,它是可以通过各种方法(见§5)从比赛成绩中求出来的.由假设Ⅱ,若i T 对j T 成绩不残缺且1i j w w ≥时有2~(,)ij i j ij a N w w σ(2.2) 这里w 是真实实力向量.3 .称方阵n n A ⨯为正互反对称的,若(1)ij a >0,(2)1ji ija a =,1,i j n ≤≤.显然一个无残缺的比赛成绩的判断矩阵是正互反对称的.4 .称矩阵n n A ⨯是可约的,若A 能用行列同时调换化1240AA A ⎛⎫⎪⎝⎭,这里1A ,4A 都是方阵,在[1]的227页证明了一个判断矩阵可约当且仅当成绩表可约.5 .称判断矩阵A 是一致的,若对任意1,,i k j n ≤≤满足ij jk ik a a a ⋅=.显然地,A 一致则存在w ,使得()in n jw A w ⨯= (2.3) 6 .称矩阵A 的最大正特征根max λ为主特征根;对应于max λ的右特征向量w 称为主特征向量,若11ni i w ==∑且i w >0.由非负矩阵的Perron-Frobenius 定理,一个判断矩阵A 的max λ存在唯一且可以让对应于max λ的特征向量()1w 的每个分量都大于零,令()()111nii w w w ==∑即得主特征向量.二、模型设计与算法我们的模型的主要部分是一个算法,模型的输入是一张成绩表,输出是关于是否可约的判断、数据可依赖程度值和排名次的结果.算法(一)根据比赛成绩表构造判断矩阵A . i 从1到n,j 从1到n 的循环.1)若i T 与j T 互胜场次相等,则1净胜球=0时令1ij ji a a ==;跳出作下一步循环; 2i T 净胜球多时以i T 净胜j T 一场作后续处理. 2)若i T 净胜j T k 场且k>0,则2,14;19,4.ij k k b k ≤≤⎧=⎨>⎩ 2ij i m T =胜j T 平均每场净胜球数;1,2;0,02;1,0.ij ij ij ij m d m m ⎧>⎪=≤≤⎨⎪-<⎩3,1/ij ij ij ji ij a b d a a =+=.3)若i T 与j T 无比赛成绩,则0ij ji a a ==.(二)检测A 的可约性,如果可约则输出可约信息后退出. (三)构造辅助矩阵~A i 从1到n,j 从1到n 循环~,01,A 000.ij ij ij i i ij a i j a a m i j m i a ≠≠⎧⎪=+=⎨⎪=⎩且;,其中为的第行的个数;,(四)计算~A的主特征根max λ和住特征向量w .1)允许误差ε,任取初始正向量()()()()()000012,,,Tnxx x x =…,令k=0,计算(){}001max i i nm x ≤≤=;()()()()()0000101,,Tny y y x m ==…. 2)迭代计算()()1k k xy +=~A;{}111max k k i i nm x ++≤≤=; ()()1111k k k y x m +++=; 1k k =+; 直到1||k k m m ε+-<.3)()max 1;k k n k ii y m w yλ===∑.(五)按w 各分量由大到小的顺序对参赛各队排名次. (六)计算220011//i j i j ijijij ij w w w w i j i j a a i ja a h w w w w >=≠≠>⎛⎫⎛⎫=-+- ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭∑∑;1(1)22n ii m n n Y =-=-∑;其中i m 为A 的第i 行0的个数.根据2h 查2x 表得到可依赖程度2(2)a P x h =>.关于算法的几点说明算法的第(一)步可以有多种不同的方法,这在§5还将讨论.第(二)步实际上是把A 看作有向图的邻接矩阵表示求图是否连通.算法是标准的,可参阅任何一本有关于算法的书,这里省略.它在可约时作的退出处理保证了以后各步处理的是一个不可约阵.第(三)步使用的是幂法,其整个算法收敛性和正确性的证明可参阅[1]的103页.第(四)步是一个排序,可参阅任何一本有关算法的书.第(五)步我们举了一个例子,若算出2h=47.56,r=48,则在2x 表的自由度为48一行找到47.56,它所在的列的a 值为65%左右.§3 算法的理论分析一、排名的合理性和保序性要求关于为什么无残缺的判断矩阵A 的主特征向量就是排名向量是层次分析法中特征根发的基础,可以在[1]的211页找到详细证明,这里只作简单说明.先假定比赛无残缺,此时算法中~A =A .先看一下A 为一致矩阵时,有(2.3)式存w 使得A (/)i j n n w w ⨯=,显然向量w 就是排名向量.而我们有 1(/),1,2,,ni j j i i w w w n w i n =⋅=⋅=∑…;即A w nw = (3.1) 在[1]的109页证明了下述定理:定理 n 阶互反矩阵是一致的,当且仅当max n λ=.再由(3.1)可见w 还是A 的主特征向量,这样,对于一个一致矩阵A,求排名向量就是求A 的主特征向量.对于一个不一致的判断矩阵A (注意:无残缺),令1,||A ||ij i j na ≤≤=∑(3.2)1/||A ||,1ni ij i w a i n ==≤≤∑; (3.3)由于i w 是A 的第i 列元素(即i T 与其他队的表面实力对比)的和被||A||除,可以猜测它给出了i T 的排序权重.但正如问题分析中所提到的,i T 与j T 的实力对比必须考虑到将i T 与j T 连结起来的所有场比赛,反应到判断矩阵A 上就是所有1121k ii i i i j a a a -…都要考虑进去.令()k ij a 是A k 的第i 行j 列元素,不难看出()112k-1121111k n n nk ij ii i i i j i i i a a a a -====∑∑∑…… (3.4)而()k ij a 就是考虑了所有经过k 场比赛将i T ,j T 连结起来的路径后反映的i T ,j T 的相对强弱,称其为i T 对j T 的k 步优势.当1k i j -=时11k i j a -=,所以(3.4)式成为111211121()1111k k k k k n n n nk ijii i j ii i j i i i i i iaa a a a -----====≠=+∑∑∑∑…………;注意到等式右端一项正是(1)k ij a -,所以k 步优势就隐含了k-1步以及k-2, (1)同(3.3)式,令()()1/||A ||,1,,nk k k ij j wa i n ===∑…; 再令()()()1(,,)k k k Tnw w w =…,可以想象,当k 足够大时,()k w 就给出了A 所反映的排名向量.在[1]的104页正证明了等式A lim A k T k k ew e e→∞=,其中(1,1,,1)T e =…;w 是A 的主特征向量.即 ()lim k k w w →∞=;所以在充分考虑了足够步优势后得到的排名向量()w ∞就是A 的主特征向量w .上面的讨论表明在比赛无残缺时,我们的排名是合理的和保序的,下面来看看残缺的情况.二、残缺的处理对于一个残缺的判断矩阵A,可以通过下述方法转化成一中讨论的情形,0,,0,ij ij ij ijij ij a a c d a d ≠⎧=⎨=⎩其中为正数,如果这样得到得矩阵C=()ij n n c ⨯的主特征向量为w ,那么当/ij i j d w w =时,我们认为补残是准确的.如果令,0;/,0;ij ij ij ij ij a a c w w a ≠⎧=⎨=⎩_,0,;0,0,;1,,i ij ij ij ij ii a a i j a a i j m i j m ≠≠⎧⎪==≠⎨⎪+=⎩是A 的第行0的个数;C ()ij n n c ⨯=;~~A ()ij n n a ⨯=;则有下面命题成立:命题 Cw w λ=等价于~A w w λ=. 证 1,1,,.nij i i j c w w i n λ===∑…110,0(/),1,,.ij ij nnij j i j j i i j j a i ja a w w w w w w i n λ==≠≠=⇔+⋅+==∑∑…1(1),1,,.nij j i i i j i j a w m w w i n λ=≠⇔++==∑…~1,1,,.nij i i j a w w i n λ=⇔==∑…由上述命题还可知,C 的最大特征根也是~A 的主特征根,C 的主特征向量也是A 的主特征向量.这样,我们只需解~max A w w λ=即可,这正是算法(三)、(四)步作的工作.从上面讨论可知,本模型对于残缺的处理是非常准确的,满足了要求(1),(5).另外算法第(二)步对成绩表的可约性作出了判断,这也满足了因为残缺而提出的要求(4).下面继续讨论其余四个要求三、对手的强弱对自己名次的影响排名向量满足~max A w w λ=,即~1max1,1,2,,.ni ijjj w a w i n λ===∑…如果i T 对k T 成绩不残缺,则~0ik ik a a =>,固定ik a ,令k w 变大,则~ik k a w 就会变大,从而引起i w 变大.这实际上是排名结果对每场比赛权重的反馈影响.这样的话,若i T 对k T 战线固定,i T 排名靠前,k T 也会因此受益.这就满足了要求(3).四、模型稳定性的分析不加证明地引用下面定理([1]103页).定理 则A 为n n ⨯复矩阵,1λ是A 的单特征根,B 是n n ⨯矩阵,则一定可以从A+e B (其中|ε|足够小)的特征根中找到一个特征根~λ满足~1()O λλε=+. 由名词的约定6中解释~A 的最大特征根是单的,由上述定理可知,只要判断矩阵的变动微小,主特征根的变动是微小的,进一步容易证明线性方程组~max (A )0E w λ-=的满足111n i w ==∑的解的变动是微小的,即主特征向量的变动是微小的,排名是稳定的,满足了要求(2).五、关于可依赖程度的分析很明显本模型是容忍不一致现象的,即满足要求(6).当A 是一个残缺的不一致矩阵时,由它得到的排名向量设为w ,由名词约定(1)我们认为这既是真实实力向量,令1,,1,,./ijij i j a i j n w w δ=-=…(3.5) 则由(2.2)式可知/1i j w w ≥时,2/~N(0,).//ij i jij ij i j i j a w w w w w w σδ-= (3.6)为计算方便,我们进一步假定/1i j w w ≥时,22/iji jw w σσ=为常数, (3.7)令 22/1/100,i j i j ij ij ij ij w w w w a a i j h δδ>>≠≠>=+∑∑. (3.8)则h 可看作A 的前后矛盾程度,再由(3.6),(3.7)可知22/~r h x σ, (3.9)其中 1(1)22n i i m n n r --=-∑, (3.10) i m 为第i 行零的个数.那么对某个固定0A ,可以通过(3.10)求出0r ,通过(3.8)求出0h ,设随机变量022/~r h x σ,则查2x 表可得到022()h ha P σσ=>(3.11) 称a 为0A 的可依赖程度.则一个判断矩阵0A 的可依赖程度为a 就表示,如果与0A 相同的几个队在同样的比赛程序(队编号相同,残缺元素相同)下踢大量赛季的比赛(假定各队水平不长进),判断矩阵为0A 的这次的前后矛盾程度0h 比大约a ⨯100%的赛季的比赛前后矛盾程度h 要小.2σ的值可以用统计的方法估出,在本模型中我们只是简单地取2σ=12.a 临界值的确定可以很灵活地由比赛组织者决定,也可以通过大量好的和坏的比赛成绩比较给出一个值.这样,我们的模型就满足了要求(7).§4 模型运行结果的分析我们在计算机上实现了上述模型,并对表1中的数据进行了排名,结果是令人满意的,运算时间小于1秒,得到的结果是:排名顺序(由强到弱):731921081265114,,,,,,,,,,,.T T T T T T T T T T T T数据可依赖程度为65%;7T 踢了9场比赛,全部获胜,4T 踢了9场比赛全部输掉,所以7T 第一而4T 最末是显然的.下面考虑一对水平接近的队3T 和1T .在3T ,1T 与其它队的比赛中,只有945,,T T T 的比赛中,1T 成绩比3T 稍好,而在与其余6个队的比赛中,3T 成绩都优于1T ,而且在3T 与1T 比赛时3T 在净胜球方面占了上风,因此将3T 排在1T 前面是合适的.数据可依赖程度为65%说明表1中所给数据还是不错的,当然优于算法中取2σ=12是先验的,这个指标暂时还不是准确的.模型有缺点及改进方向通过与现行的一些排名方法比较,上述模型的优势是很明显的;1)它存在反馈机制,并且具有稳定性,保证了排名的公平和令人信服;2)能较准确地处理残缺,不一致等性质差的数据,对比赛程序没有严格的要求;3)灵活机动,这包括了它提供了对比赛成绩表进行取舍的参考指标,以及它适合任意N 个队任何对抗型比赛的排名;4)满足保序性.模型主要的一个缺点就是算法复杂,必须用到计算机,而且对指导教练制定战略造成了困难,这是无法改进的,但这同时也使球队的战术水平在比赛中的地位上升,有利于刺激竞争.另外我们还基于另一种思路建立了一个便于手算的模型,优于算法简单,效果没有本模型好,本文中省略.在从成绩表构造判断矩阵时用到的方法也不是最好的,它只是为了简单和较合乎常识,这一步在整个模型里引入的误差最大.稍微复杂一点的方法是根据成绩通过查表或专家咨询获得实力对比的值.另外一个不足之处是在某些残缺元素过多的情况下排名的稳定性和可靠性较低,而可依赖程度这个指标并没有考虑这些情况.如比较下面两个判断矩阵,它们的差别就不大.11102110000112011⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭与11021100001110112⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭. 但排名结果分别为4321,,,T T T T 和2134,,,T T T T 结构变化很大.这种情况可以也只能对比赛程序作一些要求,以避免这种几乎可约的情形,本模型并没有作这种工作.还有就是像§4所说的,可依赖程度的计算中取2σ=12是没有多少道理的,这可以通过用统计的方法估出2σ来解决.不基于本模型的不足,模型的改进余地也是很大的.它只使用了层次分析法中单一准则一个层次的排序方法,可以考虑使用多个准则和递阶层次,比如将净胜局数,净胜球数,射门次数,犯规次数作为四个准则,两个层次.甚至能将观众反应等许多细小因素考虑在内,使排名更加反应球队实力.参考文献[1]王莲芬,许树柏,层次分析法引论,中国人民大学出版社,北京,1990。

足球比赛的排名方式

足球比赛的排名方式

(1)一队排在另一对之前,不能只考虑这两对的战绩,而应充分考虑这两队所有比赛场次的战绩;(2)要充分考虑对手的强弱因素,减少球队发挥水平不正常而带来的影响:避免强队偶然输给弱队带来名次的大落,又应考虑到弱队超水平发挥后名次的上升;(3)如果两队之间由于种种原因,没有比赛或者双方打成平局,就有这两对于其他对之间比赛的战绩确定这两对的强弱。

有这些原则,根据比赛战绩表,构造竞赛图如下:以N个参赛队T1,T2,T3,......<TN为竞赛图D的顶点集,D的边集按如下算法求得:1.在各顶点之间按照如下规定建边:(1<=i/=j<=N)(1)若Ti胜Tj的场次多,则以Ti为尾,Tj为头,作边Ti~Tj;若Tj胜Ti的场次多。

则建边Tj~Ti。

(2)若Ti与Tj之间生的场次相同,则以这两对比赛进球多的一对为尾,另一队为头建边;否则不建边。

(3)若Ti与Tj之间没有比赛则不建边。

根据建边情况,先按由竞赛图确定相应邻接矩阵的方法建立矩阵A=(aij)中一部分元素如下:(i)对于任意的i(1<=i<=N),记aij=0;(ii)对于1<=i/=j<=N,如果Ti,Tj建了边Ti~Tj,则记aij=1,aji=0;如果Ti,Tj之间未建边,则aij和aji均不计数。

2.对于任意的i(1<=i<=N),计算其得分量ai(即以Ti为尾的边的数目),然后再计算其二级的分量ai(2)(即计算被Ti打败的队的得分之和)。

3.对于(1<=i<=N),弱国Ti与Tj之间没有边连接,则比较ai与aj。

如果ai>aj,则以Ti为尾,Tj为头建边Ti~Tj,如果ai<aj,则建边Tj~Ti。

如果ai=aj,再比较ai(2)与aj(2),以数值大的队为尾建边,否则根据基本原则1,3来决定Ti与Tj的胜负并建边(若任不能决定两队胜负,则可采取随即抽签的方式来决定)。

matlab向量排序函数

matlab向量排序函数

matlab向量排序函数Matlab是一种非常强大的科学计算软件,提供了许多有助于向量和矩阵排序的函数。

在本文中,我们将介绍Matlab中常用的向量排序函数,并提供一些示例说明其用法和应用场景。

Matlab中常用的向量排序函数有sort、sortrows和sort函数的变体。

下面我们将分别介绍这些函数及其用法:1. sort函数:sort函数用于对向量进行排序,默认按升序排序。

其基本语法为:y = sort(x)。

- x是待排序的向量,可以是行向量或列向量。

- y是排序后的向量,与x具有相同的维度。

示例1:```matlabx = [4, 2, 1, 3];y = sort(x);disp(y);```输出结果为:1 2 3 4。

sort函数还可以指定降序排序,语法为:y = sort(x,'descend')。

示例2:```matlabx = [4, 2, 1, 3];y = sort(x,'descend');disp(y);```输出结果为:4 3 2 1。

2. sortrows函数:sortrows函数用于对矩阵按指定列进行排序。

其基本语法为:y = sortrows(x, cols)。

- x是待排序的矩阵,每一行都被视为一个记录。

- cols是指定的排序列索引,可以是向量或标量。

当cols为标量时,表示按照该列进行排序;当cols为向量时,表示按照多个列依次排序。

示例3:```matlabx = [4, 2;1, 3;2, 1;3, 4];y = sortrows(x, 1); %按第一列升序排序disp(y);```输出结果为:1 32 13 44 2当cols为向量时,按照多个列依次排序。

示例4展示了如何先按第一列排序,然后按第二列排序:```matlabx = [4, 2;1, 3;2, 1;3, 4];y = sortrows(x, [1, 2]); %先按第一列升序排序,然后按第二列升序排序disp(y);```输出结果为:1 32 13 44 23. sort函数的变体:在sort函数的基础上,Matlab还提供了一些变体函数,用于更灵活地控制排序的方式和结果。

数学建模竞赛简介

数学建模竞赛简介
• 商业上赢利 • 满足购物需求 • 分布基本均衡 估计两种大小不同规模的 MS的成本和利润 总体满足需求,还是满足各商区需求 各商区MS网点数目相差不要太大
• 目标函数与约束条件的选择
• 3个场馆一起设计,或3个场馆分开设计 • 结果的合理性
成功参赛的要素
• 浓厚的兴趣 • 敏锐的洞察力和活跃的思维; • 获取新知识的能力 • 扎实的数学基础 • 熟练的计算机编程 • 清晰的论文表达
院校数 79 101 196 259 337 373 400 460 517 529 571 638 724 795 864 969 1023 1137
队数 314 420 867 1234 1683 1874 2103 2657 3210 3861 4458 5406 6881 8492 9985 11742 12846 15042
数学建模竞赛 简介
dx rx dt
刘云
玉溪师范学院
数学建模竞赛的由来
• 1985年开始由美国工业与数学学会举办“美国大学生数学 建模竞赛”MCM(Mathematical Contest in Modeling)。 • 1989年我国大学生首次开始参加 MCM. • 1990年上海率先举办了“上海市大学生数学模型竞赛” • 1992年,教育部高教司和中国工业与应用数学协会联合举 办“中国大学生数学建模竞赛(CMCM)”。 • 1994年起由教育部高教司和CSIAM共同举办,每年一次(9 月) • 1999年, 美国大学生交叉学科建模竞赛ICM (Interdisciplinary Contest in Modeling)开始。 • 日前 CMCM 已经成为全国高校规模最大的课外科技活动
如何将这个调度问题抽象成 一个明确、完整的数学模型, 指出求解模型的方法;根据实际问题的要求,如果要设计 更好的调度方案,应如何采集运营数据。

全国大学生数学建模竞赛赛题基本解法

全国大学生数学建模竞赛赛题基本解法

• 总结 • 数学建模竞赛常用方法和手段主要是下面几类:
• 1.分析类 如最优捕鱼策略 SARS的传播 微分方程 • 2.运筹学 图论 规划等 • 3.数理统计 统计分析、数据处理等 • 4.计算机 模式识别、Fisher判别、人工神经网
络、仿真模拟等 • 5.常用软件 • Matlab Mathematica Lingo SAS系统等
全国大学生数学建模竞赛贵州赛区组委会93a非线性交调的频率设计拟合规划93b足球队排名图论层次分析整数规划94a逢山开路图论插值动态规划94b锁具装箱问题图论组合数学95a飞行管理问题非线性规划线性规划95b天车与冶炼炉的作业调度动态规划排队论图论96a最优捕鱼策略微分方程优化96b节水洗衣机非线性规划97a零件的参数设计非线性规划97b截断切割的最优排列随机模拟图论98a一类投资组合问题多目标优化非线性规划98b灾情巡视的最佳路线图论组合优化99a自动化车床管理随机优化计算机模拟99b钻井布局01规划图论00adna序列分类模式识别fisher判别人工神经网络00b钢管订购和运输组合优化运输问题01a血管三维重建曲线拟合曲面重建01b工交车调度问题多目标规划02a车灯线光源的优化非线性规划02b彩票问题单目标决策仿真模拟03asars的传播微分方程差分方程时间序列03b露天矿生产的车辆安排整数规划运输问题04a奥运会临时超市网点设计统计分析数据处理优化04b电力市场的输电阻塞管理数据拟合优化05a长江水质的评价和预测统计分析数据处理预测1
• 其包括许多模块,如统计分析模块、绘图模块、 质量控制模块、SAS/ETS(经济计量学和时间 序列分析模块)、SAS/OR(运筹学模块)、 SAS/FSP(快速数据处理的交互式菜单系统模 块)、SAS/AF(交互式全屏幕软件应用系统模 块)等等。

单循环赛制安排的数学模型

单循环赛制安排的数学模型

单循环赛制安排的数学模型陈晔1,祝文康1,何荣坚21.韶关学院2001级数学与应用数学本科1班,广东韶关 512005;2.韶关学院2002级计算机科学技术本科3班,广东韶关 512005[摘要]: 本文首先通过对5支足球队单场地单循环赛程安排的问题,考虑对各队公平的相隔场次的情况下用排除假设法给出至少相隔一场的赛程安排的方法,遵循小数先走的原则时恰好发现了击剑比赛时n=5的赛程安排规律,并讨论其不合理性.分奇、偶参赛队的情况给出只考虑相隔场次时的最大均等时相隔场次次数的最小上限证明.在编制n=8,n=9支球队赛程的过程中进一步研究多种循环赛制安排的方法,还给出Matlab编制的一般性的赛程安排程序.同时通过引入对实力的排序、比赛的精彩度、各球队机会最大均等、奇数队参赛必然遇到不公平的情况等展开讨论一些赛程安排方法的不足之处.关键词:最大均等; 轮转法; 实力指数; 精彩度1问题的提出你所在的年级有5个班,每班一支球队在同一块场地上进行单循环赛,共要进行10场比赛,如何安排赛程使对各队来说都尽量公平?下面是一个随便安排的赛程:记5支球队为A,B,C,D,E,在下表左半部分的右上三角的10个空格中,随手填上1,2,⋯10,就得到一个赛程,即第1场A对B,第2场B对C,⋯,第10场C对E.为方便起见将这些数字沿对角线对称地填入左下三角.这个赛程的公平性如何呢,不妨只看看各队每两场比赛中间得到的休整时间是否均等.表的右半部分是各队每两场比赛间相隔的场次数,显然这个赛程对A,E有利,对D则不公平.从上面的例子出发讨论以下问题1)对于5支球队的比赛,给出一个各队每两场比赛中间都至少相隔一场的赛程.2)当n支球队比赛时,各队每两场比赛间相隔的场次数的上限是多少.3)在达到2)的上限的条件下,给出n=8、n=9的赛程,并说明它们的编制过程.4)除了每场间相隔场次数这一指标外,你还能给出哪些指标来衡量一个赛程的优劣,并说明3)中给出的赛程达到这些指标的程度.2 基本假设1)单循环赛中,n为偶数队参赛时,所有队都安排参加一次后为一轮比赛,轮数为n-1,奇数队参赛时,n-1队安排参赛一次后为一轮比赛,轮数为n .2)参赛队A、B、C、D……通过以往比赛成绩的排名或社会评价的排名按实力从大到小顺序记为1、2、3、……n队.3 模型的分析、建立与求解1)第一轮第一场比赛安排A对B,第二场比赛安排C对D,在各参赛队每两场比赛间至少相隔一场的前提下,第二轮第一场安排除C、D外的任意两支球队比赛,第二场安排前一场没有参赛的任意两队参赛,曾经比赛交战过的队不再安排对决,以此类推,共安排5轮共10场比赛,以下只给出安排过程的部分分支:AB —CD依照题意排出的赛程如上表所示,观察表1,对与上轮轮空队比赛的队会不公平,其中E 从第三轮开始就连续遭遇不公平三场,A 遭遇一场,其他队在这种安排下则有优势.出现这种情况的原因是由于这种安排方法导致的.观察图1,发现E 队遭遇不幸的第四轮和第五轮是在不能选择其他分支的情况下安排E 的两场比赛.也就是说这种安排方法必然导致不公平.继续将图中所有分支排列出,会发现不一定能排出十场比赛,能走到最后的16条分支,有两条只能排出八场比赛,有六条排出九场比赛,有八条排出十场比赛.其中,如果在每一次分支中遵循小数先走的原则,如:第一个分支中有AE 和BE 供选择,选择AE ,BC 和BD 则选BC ,能排出十场比赛,恰好是至今仍没研究出的击剑赛程安排规则中参赛队n=5时赛程安排的规律.然而,当n=6,n=7,n=8时用的就不是这个办法了.2)可设赛程中某场比赛是i ,j 两队,i 队参加的下一场比赛是i ,k 两队(k ≠j).要 使每两场比赛最小相隔场次为r ,则上述两场比赛之间必须有除i ,j ,k 以外的2r 支球队参加赛,于是n ≥2r+3,注意到r 为整数即是⎥⎦⎤⎢⎣⎡-≤23n r .经过计算,当有5支队伍比赛时,各队每两场比赛中间相隔的场次数的上限为1=r ,也就是说可以找出一种编排赛程的方法,使得各队每两场比赛中间相隔的场次数为1.或可分参赛队的奇、偶分别证明:1.设n 为奇数, n = 2k + 1. 共比赛 N =2n C = k (2k + 1)场. 考察前k + 1场, 有2k +2个队参赛, 于是至少有1个队两次参赛, 这个队在这两场比赛间相隔场次数为r n k k =⎥⎦⎤⎢⎣⎡-=-=--+23111)1(. 2.设n 为偶数, n = 2k . 共比赛 N = k (2k - 1)场. 同上, 在前k + 1场中,有2k+2个队参赛,其中至少有1个队(记这样的一个队为A)两次参赛, 记A 第j 场比赛在赛程中是第a j 场, 于是1,121+≤≥k a a .① 若12+<k a ,即k a ≤2, 则r n k k a a =⎥⎦⎤⎢⎣⎡-=-≤--=--23211112; ②若12+=k a ,但11>a ,即21≥a ,同样有r n k k a a =⎥⎦⎤⎢⎣⎡-=-≤--+=--232121112; ③若1,121+==k a a , 在前k + 1场中除A 外有2k 个队参赛, 于是至少又有1个队(记这样的一个队为B)两次参赛, 记B 第j 场比赛在赛程中是第b j 场, 则必有1,121+<≥k b b , 或1,121+≤>k b b (即不可能1,121+==k b b ), 故r n k b b =⎥⎦⎤⎢⎣⎡-=-≤--232112. 3)n=8时,以数字1、2、3、……8记为参赛的八支队,用1号固定左上角逆时针轮可得出下表:经计算,这种轮转法安排出的赛程满足2)中每两场比赛间相隔的场次数的上限r=2.随着比赛发展,每一轮中所安排的比赛,观察实力越强的的队间的比赛安排,第一轮里实力最接近的比赛是4队与5队间的比赛,第二轮是3队与4队的比赛,第三轮2队与3队,第四轮4队与6队,第五轮7队与8队,第六轮6队与7队,最后一轮有最精彩的,也是实力最强的1队与2队的比赛.这种安排使比赛进程没有什么规律。

第一章 统计建模

第一章 统计建模

聚类分析
聚类分析是一种数值分类方法。所研究的样 本或者变量之间存在程度不同的相似性,要 求设法找出一些能够度量它们之间相似程度 的统计量作为分类的依据,将相似程度大的 样本聚合为一类,把另外一些彼此之间相似 程度大的样本聚合为另外一类⋯⋯关系密切 的聚合到一个小的分类单位,关系疏远的聚 合到一个大的分类单位,直到把所有样品都 聚合完毕,把不同的类型一个个划分出来, 形成一个由小到大的分类系统。
判别分析
判别分析是在已知研究对象分成若干类型(或 组别)并已取得各种类型的一批已知样品的观 测数据,在此基础上根据某些准则建立判别式, 然后对未知类型的样品进行判别分类。对于聚 类分析来说,一批给定样品要划分的类型事先 并不知道,正需要通过聚类分析来给以确定类 型的。正因为如此,判别分析和聚类分析往往 联合起来使用,例如判别分析是要求先知道各 类总体情况才能判断新样品的归类,当总体分 类不清楚时,可先用聚类分析对原来的一批样 品进行分类,然后再用判别分析建立判别式以 对新样品进行判别。
第三部分
往年试题分析
历年来的CUMCM题
1992年A题:施肥效果分析 B题:实验数据分解 1993年A题:非线性交调的频率设计 B题:足球队排名次 1994年A题:逢山开路 B题:锁具装箱 1995年A题:一个飞行管理问题 B题:天车与冶炼炉的作业调度
第二部分
统计学基础知识简介
统计学基础知识简介
统计是“认识社会的最有力的武器之 一”——列宁 什么是统计学?
一封统计学博士的情书
亲爱的莲: 我们的感情,在组织的亲切关怀下、 在领导的亲自过问下,一年来正沿着健康 的道路蓬勃发展。这主要表现在: (一)我们共通信121封,平均3.01天一 封。其中你给我的信51封,占42.1%; 我给你的信70封,占57.9%。每封信平 均1502字,最长的达5215字,最短的也 有624字。

matlab矩阵行列重排序方法

matlab矩阵行列重排序方法

matlab矩阵行列重排序方法
在MATLAB中,有多种方法可以对矩阵进行行列重排序。

下面我将介绍两种
常用的方法。

方法一:使用sortrows函数对矩阵进行行排序。

sortrows函数可以按照矩阵中的某一列进行排序,并返回排序后的矩阵。

例如,如果我们要按照矩阵的第一列进行升序排序,可以使用以下代码:
```matlab
A = [4 2 6; 1 3 5; 7 9 8]; % 假设我们要对矩阵A进行排序
sorted_A = sortrows(A, 1); % 按照第一列进行排序
```
该代码将返回一个新的矩阵sorted_A,其行的顺序按照第一列的值进行升序排序。

方法二:使用sort函数对矩阵进行列排序。

sort函数可以对矩阵的每一列进行排序,并返回排序后的矩阵。

例如,如果我
们要对矩阵的列进行升序排序,可以使用以下代码:
```matlab
A = [4 2 6; 1 3 5; 7 9 8]; % 假设我们要对矩阵A进行排序
sorted_A = sort(A); % 对每一列进行排序
```
该代码将返回一个新的矩阵sorted_A,其中每一列的值按升序排序。

以上是两种常用的MATLAB矩阵行列重排序方法。

根据具体的需求,选择适合的方法可以实现矩阵的排序操作。

希望对你有所帮助!。

matlab中sortrows的用法

matlab中sortrows的用法

matlab中sortrows的用法sortrows是matlab中一个用于对行向量进行排序的函数,可以进行升序或降序排序。

它的基本语法如下:B = sortrows(A,columns)其中A是要进行排序的行向量矩阵,而columns是指定排序方式的列向量。

如果columns是一个数字,则sortrows将按照该列进行排序(默认是升序);如果columns是一个由数字组成的向量,则sortrows将对指定的列按照向量中数字的顺序进行排序。

排序后的结果将保存在B矩阵中。

下面我们将详细介绍sortrows的用法,包括基本用法、升序和降序排序、多列排序、高级排序等。

一、基本用法A = rand(3,3); %生成一个3x3的随机行向量矩阵B = sortrows(A); %对A进行排序disp(B) %显示排序后的结果程序输出结果如下所示:0.0874 0.5974 0.32800.1531 0.9669 0.94180.2132 0.2581 0.3246二、升序和降序排序sortrows函数默认进行升序排序,但它也可以进行降序排序。

要对行向量矩阵进行降序排序,只需在列向量中添加前缀“-”即可。

例如,下面代码将对一个3x3的随机行向量矩阵进行降序排序并输出结果:三、多列排序sortrows函数还可以按照多列进行排序。

多列排序可以通过在columns参数中输入多个列向量的方式实现。

例如,下面这段代码将对一个4x4的随机行向量矩阵按照第1列进行升序排序,如果第1列相同,则按照第2列进行降序排序,如果第1、2列均相同时,则按照第3列进行升序排序,最后按照第4列进行降序排序,并输出结果:四、高级排序sortrows函数还可以进行高级排序。

例如,当排序的数据比较少时,可以使用插入排序、选择排序等简单的算法,而当数据量较多时,则应使用更高级的排序算法,例如快速排序、归并排序等。

总之,sortrows函数为用户提供了多种排序算法,可以根据不同的排序场景选择不同的排序算法,以获得更好的排序效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a(j,i)=1;
continue;
end
if netWinGoals(i,j)>0
interWinTimes(i,j)=1
interWinTimes(j,i)=0
end
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp('权向量');disp(w);
disp('最大特征值');disp(t);
%程序核心部分开始;
interWinTimes=[0 1 1 3 1 1 0 1 2 0 -1 -1;1 0 1 1 0 1 0 0 1 0 -1 -1;1 2 0 1 1 1 1 1 1 1 -1 -1;0 0 0 0 0 0 0 1 0 0 -1 -1;0 0 0 1 0 0 -1 -1 -1 -1 1 0;0 0 0 1 1 0 -1 -1 -1 -1 -1 -1;2 0 1 2 -1 -1 0 2 3 2 1 1;1 0 1 1 -1 -1 0 0 1 1 1 0;0 0 1 1 -1 -1 0 2 0 2 1 1;0 1 1 1 -1 -1 0 1 0 0 1 1;-1 -1 -1 -1 1 -1 0 0 0 0 0 0;-1 -1 -1 -1 1 -1 0 0 0 0 1 0];
end
end
%判断矩阵a的可约性(修改的floyd算法)
for i=1:n
for j=1:n
if a(i,j)==0
a(i,j)=inf;
end
end
end
n=size(a,1);
D=a
for k=1:n
end
%计算平均每场净胜球数=净胜球数/净胜场次
m=zeros(n,n);
d=zeros(n,n);
m(i,j)=netWinGoals(i,j)/k;
if m(i,j)>2
d(i,j)=1;
elsቤተ መጻሕፍቲ ባይዱ if m(i,j)<0
d(i,j)=-1;
else
for j=1:n
if D(i,j)==inf
disp('成绩表可约,无法排序');
pause
quit
end
end
end
for i=1:n
for j=1:n
if a(i,j)==inf
a(i,j)=0;
end
end
end
%构造辅助矩阵A
A=zeros(n,n);
m=zeros(n);
for i=1:n
for j=1:n
if a(i,j)==0
m(i)=m(i)+1;
%足球队排名次的matlab程序
%interWinTimes(i,j)表示Ti与Tj对抗时胜的场次;
%netWinGoals(i,j)表示Ti与Tj对抗时净胜球数;
%无比赛interWinTimes设为-1;当i=j时,interWinTimes设为0;
%无比赛netWinGoals设为-1;当i=j时,netWinGoals设为0;
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
end
end
end
end
for i=1:n
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
%输入数据
%disp('请输入interWinTimes矩阵(n阶)');
%interWinTimes=input('interWinTimes=');
%disp('请输入netWinGoals矩阵(n阶)');
%netWinGoals=input('netWinGoals=');
netWinGoals=[0 0 -1 5 2 1 -3 -1 5 0 -1 -1;0 0 -1 2 0 1 0 0 2 -2 -1 -1;1 1 0 2 1 3 -2 1 0 1 -1 -1;-5 -2 -2 0 -1 -1 -6 -1 -1 -1 -1 -1;-2 0 -1 1 0 -1 -1 -1 -1 -1 0 -1;-1 -1 -3 1 1 0 -1 -1 -1 -1 -1 -1;3 0 2 6 -1 -1 0 3 5 5 2 2;1 0 -1 1 -1 -1 -3 0 0 0 2 0;-5 -2 0 1 -1 -1 -5 0 0 4 1 1;0 2 -1 1 -1 -1 -5 0 -4 0 1 2;-1 -1 -1 -1 0 -1 -2 -2 -1 -1 0 -1;-1 -1 -1 -1 1 -1 -2 0 -1 -2 1 0];
[n,n]=size(interWinTimes);
a=zeros(n,n);
for i=1:n
for j=1:n
if interWinTimes(i,j)==interWinTimes(j,i)
if netWinGoals(i,j)==0
a(i,j)=1;
end
end
end
for i=1:n
for j=1:n
if a(i,j)~=0 & i~=j
A(i,j)=a(i,j);
else if i==j
A(i,j)=m(i)+1;
end
k=0;
k=interWinTimes(i,j)- interWinTimes(j,i)
if k>0
%根据k值设定相应的b,用的是一个尺度判定的方法.再根据Ti胜Tj每场净胜球数来决定d
if k>4
b(i,j)=9
else
b(i,j)=2*k
d(i,j)=0;
end
end
a(i,j)=b(i,j)+d(i,j);
a(j,i)=1/a(i,j);
end
if interWinTimes(i,j)==-1
a(i,j)=0;
a(j,i)=0;
end
else
A(i,j)=0;
end
end
end
end
%计算A的主特征根和主特征向量(用的是幂法)
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
相关文档
最新文档