基于MATLAB的AHP实现(大学本科毕业论文)_第1页
基于MATLAB的AHP实现(大学本科毕业论文)_第2页
基于MATLAB的AHP实现(大学本科毕业论文)_第3页
基于MATLAB的AHP实现(大学本科毕业论文)_第4页
基于MATLAB的AHP实现(大学本科毕业论文)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE 湖南人文科技学院本科生毕业设计题目: 基于MATLAB的AHP实现 : Implementation of the AHP Based on MATLAB 学生姓名: 赵美云 学号 06415135 系 部: 数学与应用数学系 专业年级: 06级信息与计算科学 指导教师: 杨涤尘 职 称: 副教授 湖南人文科技学院教务处制本人郑重声明:所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人

2、完全意识到本声明的法律结果由本人承担目 录 TOC o 1-3 h z u HYPERLINK l _Toc261870081 摘 要 PAGEREF _Toc261870081 h 1 HYPERLINK l _Toc261870082 关键词 PAGEREF _Toc261870082 h 1 HYPERLINK l _Toc261870083 Abstract PAGEREF _Toc261870083 h 1 HYPERLINK l _Toc261870084 Keywords PAGEREF _Toc261870084 h 1 HYPERLINK l _Toc261870085 1

3、层次分析法 PAGEREF _Toc261870085 h 2 HYPERLINK l _Toc261870086 11 概述 PAGEREF _Toc261870086 h 2 HYPERLINK l _Toc261870087 12 AHP的基本原理和步骤 PAGEREF _Toc261870087 h 2 HYPERLINK l _Toc261870088 1.2.1 递阶层次结构原理 PAGEREF _Toc261870088 h 2 HYPERLINK l _Toc261870089 1.2.2 标度原理 PAGEREF _Toc261870089 h 3 HYPERLINK l _

4、Toc261870090 1.2.3 排序原理 PAGEREF _Toc261870090 h 3 HYPERLINK l _Toc261870091 1.3 AHP的层次总排序及其一致性检验 PAGEREF _Toc261870091 h 5 HYPERLINK l _Toc261870092 1.3.1 层次总排序 PAGEREF _Toc261870092 h 5 HYPERLINK l _Toc261870093 1.3.2 AHP的一致性检验 PAGEREF _Toc261870093 h 6 HYPERLINK l _Toc261870094 2MATLAB的基本内容 PAGERE

5、F _Toc261870094 h 6 HYPERLINK l _Toc261870095 2.1 MATLAB矩阵 PAGEREF _Toc261870095 h 7 HYPERLINK l _Toc261870096 2.1.1 MATLAB矩阵的建立 PAGEREF _Toc261870096 h 7 HYPERLINK l _Toc261870097 2.1.2 矩阵的特征值与特征向量 PAGEREF _Toc261870097 h 7 HYPERLINK l _Toc261870098 2.2 MATLAB的M文件 PAGEREF _Toc261870098 h 8 HYPERLIN

6、K l _Toc261870099 3基于MATLAB的AHP实现 PAGEREF _Toc261870099 h 9 HYPERLINK l _Toc261870100 31 AHP的MATLAB的计算流程框图 PAGEREF _Toc261870100 h 9 HYPERLINK l _Toc261870101 32 平均随机一致性指标的MATLAB实现 PAGEREF _Toc261870101 h 9 HYPERLINK l _Toc261870102 33 AHP各环节的 MATLAB实现 PAGEREF _Toc261870102 h 11 HYPERLINK l _Toc2618

7、70103 3.3.1 特征向量及其归一化的MATLAB实现 PAGEREF _Toc261870103 h 11 HYPERLINK l _Toc261870104 3.3.2 一致性检验及单排序的MATLAB实现 PAGEREF _Toc261870104 h 12 HYPERLINK l _Toc261870105 3.3.3 一致性检验及总排序的MATLAB实现 PAGEREF _Toc261870105 h 13 HYPERLINK l _Toc261870106 3.3.4 选择最优排序 PAGEREF _Toc261870106 h 14 HYPERLINK l _Toc2618

8、70107 4基于MATLAB的AHP应用 PAGEREF _Toc261870107 h 15 HYPERLINK l _Toc261870108 41 挑选合适工作问题 PAGEREF _Toc261870108 h 15 HYPERLINK l _Toc261870109 5结束语 PAGEREF _Toc261870109 h 25 HYPERLINK l _Toc261870110 参考文献 PAGEREF _Toc261870110 h 26 HYPERLINK l _Toc261870111 致谢 PAGEREF _Toc261870111 h 27湖南人文科技学院毕业论文(设计

9、)PAGE 27第 页 基于MATLAB的AHP实现摘 要:在实际统计分析工作中,常会遇到多指标的综合评价和多目标决策的问题.层次分析法是解决这类问题的最在效的方法.但是,受计算条件的限制,常常不能及时给出结果,从而影响现场决策.本文利用MATLAB的强大数值处理功能,对层次分析法的判断、分析和计算等过程的各个环节实行了MATLAB程序实现,决策者只要在MATLAB程序文件中导入相应的数据信息和两两对比判断矩阵,就能迅速得出分析的结果,为解决实际问题提供一个快捷的方法,从而提高人们的决策效率.关键词:AHP 层次分析法 MATLAB 应用Implementation of the AHP Ba

10、sed on MATLABAbstract: In the practical work of statistical analysis, we often meet the question of multi-index comprehensive evaluation and multi-objective decision-making.The Analytic Hierarchy Process is an effect method to solve this kind of problem . However, due to the calculation conditions,

11、the results can not be given at time,thus affecting the Scene decision-making. This article uses the powerful numerical processing functions of MATLAB to conduct an implementation of the processing of The Analytic Hierarchy Processs judgment, analysis and computational,the decision maker only need t

12、o import his own hierarchical structure plan and pairwise comparison judgment matrix in the MATLAB, then it can obtain the corresponding result rapidly and provides a quick method to solve actual problems, thus raises peoples decision-making efficiency.Keywords: AHP MATLAB Applications1 层次分析法11 概述在市

13、场竞争日益激烈的今天,企业或个人经常面临复杂的决策问题,不仅需要快速作出决策,而且需要解决决策问题中多种不确定性所带来的困难.决策分析问题中的重要组成部分是多属性决策,虽然多属性决策问题的背景不同,但它们通常具有下列共同特点:1(1)属性之间通常是相互冲突和不可公度的(属性量纲不同);(2)在属性集中,可能同时存在定性属性和定量属性;(3)属性经常构成一个层次结构;(4)决策信息有时是不完全的,决策者只能提供决策参数的不完全信息;决策者的判断可能是不确定的,即没有100%的把握做出主观判断.美国著名运筹学家T.L.Saaty教授于70年代中期创立了一种实用的多准则决策法层次分析法(The An

14、alytic Hierarchy Process,简称AHP)2.是一种实用的多准则决策方法,是处理那些完全用定量方法来解决复杂问题的有效手段,也是定量分析和定性分析相结合的决策方法.更是在多目标、多准则的条件下,对多种方案进行选择与判断的一种简洁而有力的工具.众多的工作表明,AHP的应用范围十分广泛,其应用已涉及到能源政策和资源规划,企业管理与生产决策,管理信息系统3,经济分析和计划,政治和冲突分析4,行为和社会学5,科技发展和评价,军事指挥,农业气候区划,大气和水环境质量评价,湖泊富营养化评价等领域,可以预料,随着对AHP理论的深入研究,它的应用范围必将进一步拓广.正因为如此,人们自然地要

15、求了解和掌握AHP的应用技巧.本文旨在基于层次分析法的基础上,在MATLAB中编制对层次分析法的判断、分析和计算过程的程序,决策者只要输入层次结构方案和判断矩阵,就能迅速得出相应的结果,为决策者解决问题提供一种快速的、具有较强实用价值的方法.12 AHP的基本原理和步骤6AHP的内容和决策方法是由它的基本原理确定的.AHP的原理包括递阶层次结构原理、标度原理、排序原理.71.2.1 递阶层次结构原理一个复杂的问题可分解为它的目标、约束准则和方案等因素,按照不同属性把这些因素分组形成互不相交的层次,上一层的因素对相邻下一层次的全部或部分因素起着支配作用,形成按层次自上而下的逐层支配关系,而每一层

16、都要通过两两比较,导出它们包含的因素的相对重要性排序权值,具有这种性质的层次称为递阶层次结构.这种递阶层次的分解与综合的研究思想在自然科学和社会科学中已被广泛采用.人们的决策思维中的分解与综合,人们的逻辑判断也常常具有递阶层次原则的特点.采用的递阶层次结构会使面临的问题在一定程度上反映了系统的有序性,它提供了一种深入认识和处理系统的方式,把看来杂乱无章的各种复杂的决策因素统一起来,按系统的功能与行为进行深入研究.因此,以递阶层次思想作为决策思维的一种方式,是AHP的核心.1.2.2 标度原理不同标度可能产生不同的方案排序,从而直接或间接地影响着人们的决策.因此,对各种标度进行分析研究与比较评价

17、,无论是对AHP的理论发展和实际应用都是有意义的.文献8采用判断矩阵的一致性指标评价标度选择的合理性,以具有最小一致性比例指标的标度方案作为最终评价结果.文献9提出了评价标度的两个准则,即实用性和客观性,但没有系统、全面地研究标度评价的指标体系.此外,标度评价研究缺少在实例中进行验证,均没有充足的说服力.AHP规定了测度方式是通过两两比较判断给出的比较的依据为标度,这种标度用的是19整数及其倒数来表示,叫比例标度.其中T.L.Saaty的九级标度法及其含义如表1-1所示10.表 1-1 Saaty九级标度法及其含义标度定义(比较因素i与j)1因素i与j同样重要3因素i与j稍微重要5因素i与j较

18、强重要7因素i与j强烈重要9因素i与j绝对重要2, 4, 6, 8上述两相邻判断的中间值1 9的倒数表示因素i与因素j比较的标度值等于因素j与因素i比较的标度值的倒数1.2.3 排序原理AHP单一准则下的排序问题实质上是由一组元素两两比较得到重要性测度组成的判断矩阵 ,它具有正值、互反性和基本一致性.并且和排序测度W之间具有关系.在一致性情况下,比较测度A与排序测度W之间可以转化为对方程组.求解未知的,从矩阵代数Perron-Frobineus理论知,正矩阵的实特征根所对应的归一化特征向量是唯一的,而最大的特征根max,可通过求解得到.因此,把上式看成比较测度A与导出测度W的关系,从而单一准则

19、下的排序问题化为对上式的求解.这种特征根法是解决从比较测度求出排序权值的一种方法.通过层次分析法的基本原理,我们知运用AHP解决问题,大体可以把步骤总结如下:111、定义问题,确定要完成的目标.2、从最高层(目标),通过中间层(准则)到最低层(方案)构成一个层次结构模型.如图1所示:图1 层次结构模型图3、构造一系列下层各因素对上一层准则的两两比较判断矩阵.如,针对图中准则层1,作方案1与方案2,方案1与方案3,,方案1与方案n,方案2与方案3,,方案n-1与方案n等比较,从而得到判断矩阵B,其形式如表1-2所示.表 1-2 判断矩阵BC1C2CnC1b11b12b1nC2b21b22b2nC

20、nbn1bn2bnn4、在第3步里建立判断矩阵所需要的个判断.5、完成所有的两两比较,输入数据,计算最大正特征值,计算一致性指标CR.6、对各层次完成第3、4、5步的计算.7、层次合成计算.8、如整个层次综合一致性不通过,要对某些判断作适当的改善,例如修改作成对比较判断时所提的问题.如一定要修改问题的结构,则就要回到第2步,不过只要对层次结构中有问题的部分作相应修改即可. 1.3 AHP的层次总排序及其一致性检验1.3.1 层次总排序根据判断矩阵计算本层次指标与上一层次指标之间的重要性程度的相对值(即权重值)的过程,称为层次单排序.采用的方法为求判断矩阵最大特征值及对应的特征向量并将其归一化.

21、层次总排序是计算同层次所有元素对最高层次的相对重要性权值.也就是利用上一层次单排序结果计算更高层的排队顺序.例如,在已经得到方案层对准则层、准则层对目标层的单排序后,把寻求方案因素对目标层的优劣顺序称为方案总排序.假设最高层A包含m个因素A1,A2,Am,对目标层总的排序权值为,;下一层包含n个因素Fl,F2,Fn,它们对因素A1,A2,Am.的层次单排序权值为计算中取Fk与Aj无关则Wij=0,相关则Wij=l,形成相关矩阵(具体形式见表1-3).计算得到F层的总排序权值(见表1-3).最后得到F层总的排序的随机一致性比率为:当CR0.1时,认为层次总排序结果具有满意的一致性,否则还需重新调

22、整判断矩阵的元素值.表1-3 A1A2AmF层总排序权值F1W11W12W1mF2W21W22W2mFnWn1Wn2Wnm本文第三章将介绍运用MATLAB求矩阵最大特征值、相应特征向量及层次总排序权值的复杂运算.1.3.2 AHP的一致性检验AHP是对人们的主观判断加以形式化地表达和处理,逐步剔除主观性,从而尽可能地转化成客观性.其正确与成功,取决于客观成分能否达到足够合理的地步.由于客观事物的复杂性及决策者认识的主观性,实际问题的两两判断矩阵不可能做到严格一致性.一致性检验按照以下三个步骤进行12:1)计算一致性指标;2)找出相应的平均随机一致性指标RI ;3)计算一致性比例;虽然CI值能反

23、映出判断矩阵A的非一致性的严重程度,但未能指明该非一致性是否可以接受.因而在具体分析时,我们引入了另一个度量的标准,即所谓随机一致性指标,下表是龚木森、许树柏(1986)得出的115阶的平均随机一致性指标RI的取值,如表1-4所示 13.表1-4 平均随机一致性指标N12345678RI000.520.891.121.261.361.41N9101112131415RI1.461.491.521.521.561.581.592MATLAB的基本内容MATLAB(MATrix LABoratory,矩阵实验室的缩写)是一种特殊用途的计算机程序优化执行工程和科学计算.它开始为旨在执行矩阵数学程式的

24、生活,但多年来它已发展成为一个灵活的计算系统基本上能够解决任何技术问题.MATLAB具有编程语言的基本特征,使用MATLAB也可以使用像BASIC、FORTRAN、C等传统编程语言一样,进行程序设计,而且简单易学、编程效率高.正因为MATLAB的强大的功能,使得它在许多领域得到广泛应用.在科研与工程应用领域,MATLAB已被广泛地用于科学研究和解决各种具体的实际问题.许多科技工作者选用MATLAB做为计算工具,避免了繁琐的底层编程,从而可以把主要精力和时间花在科学研究和解决实际问题是上,提高了工作效率.2.1 MATLAB矩阵矩阵是MATLAB的基本处理对象,因此根据本文所需,简单介绍所涉及M

25、ATLAB矩阵内容.2.1.1 MATLAB矩阵的建立1、直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素.例如:A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9也可以用回车键代替分号,按下列方式输入:A=1 2 3 4 5 6 7 8 9 2、利用M文件建立矩阵比较大且复杂的矩阵,可以为它专门建立一个M文件,如同下例.利用M文件建立矩阵.启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:MYMAT= 111 ,112,113,114,115,116,117,118,119; 211,212,213,214,215,216,217,218,21

26、9;把输入的内容以纯文本方式存盘(设文件名为mymatrix.m).在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用.2.1.2 矩阵的特征值与特征向量特征值和特征向量在科学研究和工程计算中都有非常广泛地应用.在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种14:E = eig( A ) :求矩阵A的全部特征值,构成向量E.V,D=eig(A):求矩阵A的全部特征值,构成对角矩阵D,并求A得特征向量构成V的列向量.V,D=eig(A,nobablance):与第2种格式中先对A作相似变换后求

27、矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量.例如:A=1,1,0.5;1,1,0.25;0.5,0.25,2; V,D=eig(A)V = 0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103D = -0.0166 0 0 0 1.4801 0 0 0 2.5365求得的3个特征值是-0.0166、1.4801和2.5365,各特征值对应的特征向量为V的各列构成的向量.2.2 MATLAB的M文件用MATLAB语言编写的程序称为M文件.M文件是由若干MATLAB命令组成在一起构成的,它可以完成某

28、些操作,也可以实现某种算法.M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File).它们的扩展名均为.m.函数文件由function语句引导,其基本结构为:function 输出形参表=函数名(输入形参表)注释说明部分函数体语句我们通过举例说明如下:例2-2 分别建立命令文件和函数文件,将求矩阵的一致性指标CI:CI=(max-n)/(n-1)程序1 建立命令文件并以文件名CI.m存盘:max=input(please input max:);n=input(please input n:);CI=(max-n)/(n-1)然后在MAT

29、LAB的命令窗口中输入CI即可.程序 2 建立函数文件CI.m.function c=CI(max,n)c=(max-n)/(n-1)然后在MATLAB的命令窗口调用该函数文件.max=input(please input max:);n=input(please input n:);c=CI(max,n)3基于MATLAB的AHP实现31 AHP的MATLAB的计算流程框图根据层次分析法的一般步骤我们得到在MATLAB工具上实现的计算程序流程框图,如图2所示16输输入准则层层数输入准则层对目标层判断矩阵元素判断矩阵归一化计算CR0.1输入准则层第j个准则包含的方案数量n判断矩阵归一化计算输入

30、方案层第j个准则层的判断矩阵元素bijCR0.1另m=1;n=1输入方案层第m个准则层的相关矩阵元素计算权值矩阵权值的计算总CR计算开始结束CR0 (2) = l (3) =l按照事物逻辑要求,该矩阵还应具备一致性,即满足:=前面已经给出由于客观事物的复杂性与决策者的认识的多样性,实际问题的成对比较矩阵不可能做到严格上的一致性,因而,借助平均随机一致性指标RI来相对判定其一致性程度.其中表1-4是已经计算好的115阶矩阵的RI值表,但未给出其实现过程,且各文献的RI值表不完全相同.究其原因除没有太大必要介绍外,真正去实现它却有如下三个难度:(1)随机两两判断矩阵中的元素要求是19和它们对应的倒

31、数共17个整数与小数的均匀分布很难处理.(2)一般高级编程语言实现成对比较矩阵及相关计算,非常复杂,且占用内存巨大,耗时多.(3) 随机种子源不能控制.本文使用数学软件包MATLAB对其进行计算.其设计解决思路为:先用软件包中随机函数产生数117的均匀分布的n阶矩阵,然后在软件包中采用不同技巧将它转化为成对比较矩阵,最后用循环语句计算出RI值.结果如表3-1所示:表3-1 计算的RI值阶数123456789RI000.54400.89801.13131.25151.34951.41901.4542以n=4为例,过程详见如下程序清单,其中随机成对比较矩阵的实现见相应注释部分.15MATLAB的程

32、序M文件:function ri %计算RI值的命令文件n=4; ri=0; m=100;rand(seed,21) %控制随机发生器for i=1:m a=ceil (17*rand(n); %产生n阶l17的随机阵 a(find(a=8)=8.1; %消除0为分母 b=1./(a-8); %产生一个辅助阵 a(find(a9)=b(find(a9); %借助b,将917分别转化为 a(find(a=8.1)=8; e=eye(n); %产生一个4阶单位阵 c=1./a; %将a中每个元素换成相应倒数 c=c; %将c转置 c=tril(c,-1); %抽取c的下三角(不含主对角线) a=t

33、riu(a,1); %抽取a的上三角(不含主对角线) a=a+c+e; %实现随机成对比较阵a k=size(a,1); %计算a的行维数 ri=ri+(max(abs(eig(a)-k)/(k-1); %计算100次RI值endri/m %计算平均RI值33 AHP各环节的 MATLAB实现以目标矩阵A=,准则层矩阵为P1=, P2=,P3=为例,运用MATLAB进行数据处理.3.3.1 特征向量及其归一化的MATLAB实现MATLAB中求矩阵特征值和特征向量的函数是eig,其调用的格式为V,D=eig(A),其中,V为特征向量矩阵,D为特征值矩阵.层次分析法中需要求得是最大特征值及对应的归

34、一化特征向量,而且考虑到eig函数在求得的特征值中可能会存在复数.因此,运用直接输入程序代码会产生一定的误差.在此需要对求得的V、D进行适当选择,定义一个M-file maxeigvalvec.m来实现.functionmaxeigval,w=maxeigvalvec(A) %求最大特征值及对应的归一化特征向量 %A为判断矩阵eigvec,eigval=eig(A);eigval=diag(eigval); %特征向量eigvalmag=imag(eigval);realind=find(eigvalmag=0.10 disp(input(矩阵没通过一致性检验,请重新调整判断矩阵)else d

35、isp(input(矩阵通过一致性检验);end在MATLAB中键入如下指令:RIA,CIA= sglsortexamine(max(1),A);RIP1,CIP1= sglsortexamine(max(2),P1);RIP2,CIP2= sglsortexamine(max(3),P2);RIP3,CIP3= sglsortexamine(max(4),P3);运行结果如下:矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验3.3.3 一致性检验及总排序的MATLAB实现通过层次单排序(权重)计算后,进行层次合成计算,在此本文定义tolsortvec.m函数计算层次总

36、排序的权重并进行一致性检验.function tw=tolsortvec(utw,dw,CIC,RIC)% 求层次总排序权重并进行一致性检验% utw为上一层因素的总排序权重行向量% dw为下一层因素相对于上一层各因素的层次单排序权重矩阵% CIC为一致性指标列向量% RIC为随机一致性指标列向量tw=dw*utwCR=utw*CIC/(utw*RIC);if CR=0.10 disp(input(层次总排序没通过一致性检验,请重新调整判断矩阵);else disp(input(层次总排序通过一致性检验);end在MATLAB中输入如下指令:dw=zeros(7,3);dw=(1:2,1)=w

37、P1; dw=(3:5,2)=Wp2; dw=(6:7,3)=wP3; CIC=CIP1;CIP2;CIP3;RIC=RIP1;RIP2;RIP3;tw= tolsortvec(wA,dw,CIC,RIC);运行结果如下:tw=0.42470.21230.06670.16460.02700.06980.0349层次总排序通过一致性检验其中tw 是层次总排序结果.因此,根据数据建立如表3-2的层次总排序表.表3-2 层次总排序表(权重)APA层次P的总排序结果注0.6370 0.25830.1047P10.6667000.42470.3333000.2123P200.258300.066700.

38、637000.164600.104700.0270P3000.66670.0698000.33330.0349注:按概率乘法,P层次总排序指标的权重值为NP层次指标的权重与相应上一层次指标AN层权重的积,且总排序权重值的和为 选择最优排序计算出层次总排序后,为了使决策者能迅速得出结果,本文对层次总排序进行最优排序.运用MATLAB键入如下指令:n=length(tw);for i=1:nt=max(tw);b(i)=t;m n=find(a=t);tw(n)=;endb运行结果如下: b=0.42470.21230.16460.06980.06670.03490.0276利用MATLAB大大缩

39、短了计算复杂矩阵的时间,为决策者节省了宝贵的时间,从而有更多的精力投入其他事务.4基于MATLAB的AHP应用41 挑选合适工作问题某毕业生选择工作,经双方恳谈,假设已有三个单位C1,C2,C3表示愿意录用他.该生对三个单位进行了解后,选取了一些中间指标进行考察,例如单位的研究课题,发展前途,待遇,同事情况,地理位置,单位名气等.根据层次分析法,试求该生工作优先排序(给出权值、计算程序),并给出最终选择决策.现以A、B、C表示选择工作的三个层次,建立如图3所示的结构模型:图3 选择单位层次结构图根据成对比较法,得到相应判断矩阵表4-14-7所示:表4-1 A-B判断矩阵B1B2B3B4B5B6

40、B1111411/2B2112411/2B311/21531/2B41/41/41/511/31/3B5111/3311B6222331表4-2 B1C判断矩阵11/41/241321/31表4-3 B2C判断矩阵C1C2C3C111/41/5C2411/2C3521表4-4 B3C判断矩阵C1C2C3C1131/3C21/311/7C3371表4-5 B4C判断矩阵C1C2C3C111/35C2317C31/51/71表4-6 B5C判断矩阵C1C2C3C1117C2117C31/71/71表4-7 B6C判断矩阵C1C2C3C1179C21/711C31/911现在在MATLAB中分别用直

41、接输入程序法和M文件方法求解.1)、直接输入代码法:在MATLAB中输入如下程序:A = 1,1,1,4,1,1/2; 1,1,2,4,1,1/2; 1,1/2,1,5,3,1/2; 1/4,1/4,1/5,1,1/3,1/3; 1,1,1/3,3,1,1; 2,2,2,3,3,1; B1 = 1,1/4,1/2;4,1,3;2,1/3,1; B2 = 1,1/4,1/5;4,1,1/2;5,2,1; B3 = 1,3,1/3;1/3,1,1/7;3,7,1; B4 = 1,1/3,5;3,1,7;1/5,1/7,1; B5 = 1,1,7;1,1,7;1/7,1/7,1; B6 = 1,7,

42、9;1/7,1,1;1/9,1,1; BS = B1,B2,B3,B4,B5,B6; m = length(B1);n = length(A); %随机一致性指标RI RI = 0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51; Wa,LA = eig (A) %求A的特征向量WA和特征根LAMaxn=input(please input largest eigenvalue:); %输入最大特征根 CIn = (Maxn- n) / (n - 1); CRn = CIn / RI(n); %A的一致性比率CRnWA=Wa(:,1)/sum(Wa

43、(:,1); %特征向量归一化 if CRn 0.10 fprintf(A 的CR %f 通过一致性检验!n,CRn); %控制文本格式 else fprintf(A 的CR %f 未通过一致性检验!n,CRn); end for k = 1:n %求B的特征向量WK和特征根LK WB,LK = eig( BS(1:3,(k-1)*m+1:(k-1)*m+3) )Max(k)=input(please input largest eigenvalue:); CIm(k) = (Max(k)- m) / (m - 1);RIm(k) = RI(m); CRm(k) = CIm(k) / RIm(

44、k); %B的一致性比率CRm WK(:,k)= WB(:,1)/sum(WB(:,1); end for k = 1:n if CRm(k) 0.10 fprintf(B%d的CR %f 通过一致性检验!n,k,CRm(1,k); %控制文本格式 else fprintf(B%d的CR %f 未通过一致性检验!n,k,CRm(1,k); end enddisp(准则层对目标层权向量); disp(WA);disp(方案层对准则层权向量); disp(WK);E = WK * WAdisp(方案层组合权向量);disp(E);CI = CIm * WA;RI = RIm * WA;CR = C

45、I / RI; %组合一致性比率CR if CR 0.10 fprintf(组合一致性比率CR %f 通过一致性检验!n,CRn); else fprintf(组合一致性比率CR %f 未通过一致性检验!n,CRn); endMAX,CHOICE = max(E); %最佳选择CHOICEMATLAB运行结果如下:Wa = -0.3396 -0.1255 - 0.0563i -0.1255 + 0.0563i 0.7354 -0.1896 + 0.3838i -0.1896 - 0.3838i -0.4038 -0.1884 - 0.5736i -0.1884 + 0.5736i -0.646

46、4 -0.4476 - 0.2693i -0.4476 + 0.2693i -0.4249 0.6724 0.6724 0.0834 0.3884 - 0.0605i 0.3884 + 0.0605i -0.1063 -0.0138 + 0.0429i -0.0138 - 0.0429i -0.0405 -0.0592 - 0.0922i -0.0592 + 0.0922i -0.3298 -0.1384 + 0.3417i -0.1384 - 0.3417i -0.1217 0.0035 + 0.1640i 0.0035 - 0.1640i -0.6488 -0.1467 - 0.0710i

47、 -0.1467 + 0.0710i 0.1337 0.5920 0.5920 LA =6.6178 0 0 0 0 0 0 -0.1557 + 1.2808i 0 0 0 0 0 0 -0.1557 - 1.2808i 0 0 0 0 0 0 -0.0603 0 0 0 0 0 0 -0.1230 + 0.5461i 0 0 0 0 0 0 -0.1230 - 0.5461i please input largest eigenvalue:6.6178A 的CR 0.099645 通过一致性检验!WB = 0.1999 0.1000 + 0.1731i 0.1000 - 0.1731i 0.

48、9154 -0.9154 -0.9154 0.3493 0.1747 - 0.3025i 0.1747 + 0.3025iLK = 3.0183 0 0 0 -0.0091 + 0.2348i 0 0 0 -0.0091 - 0.2348iplease input largest eigenvalue: 0.1999 WB = 0.1460 0.0730 + 0.1265i 0.0730 - 0.1265i 0.4994 0.2497 - 0.4325i 0.2497 + 0.4325i 0.8540 -0.8540 -0.8540 LK = 3.0246 0 0 0 -0.0123 + 0.

49、2725i 0 0 0 -0.0123 - 0.2725iplease input largest eigenvalue:3.0246WB = 0.3382 -0.1691 + 0.2929i -0.1691 - 0.2929i 0.1226 -0.0613 - 0.1062i -0.0613 + 0.1062i 0.9331 0.9331 0.9331 LK = 3.0070 0 0 0 -0.0035 + 0.1453i 0 0 0 -0.0035 - 0.1453iplease input largest eigenvalue: 3.0070 WB = 0.3928 -0.1964 +

50、0.3402i -0.1964 - 0.3402i 0.9140 0.9140 0.9140 0.1013 -0.0506 - 0.0877i -0.0506 + 0.0877iLK = 3.0649 0 0 0 -0.0324 + 0.4448i 0 0 0 -0.0324 - 0.4448iplease input largest eigenvalue:3.0649 WB = -0.7035 -0.3392 0.6619 -0.7035 -0.9233 -0.7495 -0.1005 0.1804 0.0125LK = 3.0000 0 0 0 0.0000 0 0 0 -0.0000pl

51、ease input largest eigenvalue: 3.0000 WB = -0.9844 0.9844 0.9844 -0.1293 -0.0647 - 0.1120i -0.0647 + 0.1120i -0.1189 -0.0595 + 0.1030i -0.0595 - 0.1030iLK = 3.0070 0 0 0 -0.0035 + 0.1453i 0 0 0 -0.0035 - 0.1453iplease input largest eigenvalue: 3.0070 B1的CR -2.413879 通过一致性检验!B2的CR 0.021207 通过一致性检验!B3

52、的CR 0.006034 通过一致性检验!B4的CR 0.055948 通过一致性检验!B5的CR 0.000000 通过一致性检验!B6的CR 0.006034 通过一致性检验!准则层对目标层权向量 0.1507 0.1792 0.1886 0.0472 0.1464 0.2879方案层对准则层权向量 0.1365 0.0974 0.2426 0.2790 0.4667 0.7986 0.6250 0.3331 0.0879 0.6491 0.4667 0.1049 0.2385 0.5695 0.6694 0.0719 0.0667 0.0965E = 0.3952 0.2996 0.30

53、52方案层组合权向量 0.3952 0.2996 0.3052组合一致性比率CR 0.099645 通过一致性检验!CHOICE = 12)、M文件法:根据第三章节的层次分析法各环节的MATLAB实现定义如下三个函数:定义maxeigvalvec.m来实现最大特征根及对应的归一化特征向量.functionmaxeigval,w=maxeigvalvec(A) %求最大特征值及对应的归一化特征向量 %A为判断矩阵eigvec,eigval=eig(A);eigval=diag(eigval); %特征向量eigvalmag=imag(eigval);realind=find(eigvalmag=

54、0.10 disp(input(矩阵没通过一致性检验,请重新调整判断矩阵)else disp(input(矩阵通过一致性检验);end(3)定义tolsortvec.m函数计算层次总排序的权重并进行一致性检验.function tw=tolsortvec(utw,dw,CIC,RIC)% 求层次总排序权重并进行一致性检验% utw为上一层因素的总排序权重行向量% dw为下一层因素相对于上一层各因素的层次单排序权重矩阵% CIC为一致性指标列向量% RIC为随机一致性指标列向量tw=dw*utw;CR=utw*CIC/(utw*RIC);if CR=0.10 disp(input(层次总排序没通

55、过一致性检验,请重新调整判断矩阵);else disp(input(层次总排序通过一致性检验);end%main.m主程序clear;A = 1,1,1,4,1,1/2;1,1,2,4,1,1/2;1,1/2,1,5,3,1/2;1/4,1/4,1/5,1,1/3,1/3;1,1,1/3,3,1,1;2,2,2,3,3,1;B1 = 1,1/4,1/2;4,1,3;2,1/3,1;B2 = 1,1/4,1/5;4,1,1/2;5,2,1;B3 = 1,3,1/3;1/3,1,1/7;3,7,1;B4 = 1,1/3,5;3,1,7;1/5,1/7,1;B5 = 1,1,7;1,1,7;1/7,

56、1/7,1;B6 = 1,7,9;1/7,1,1;1/9,1,1;max(1),wA=maxeigvalvec(A);max(2),wB1=maxeigvalvec(B1);max(3),wB2=maxeigvalvec(B2);max(4),wB4=maxeigvalvec(B4);max(5),wB3=maxeigvalvec(B3);max(6),wB5=maxeigvalvec(B5);max(7),wB6=maxeigvalvec(B6);RIA,CIA=sglsortexamine(max(1),A);RIB1,CIB1=sglsortexamine(max(2),B1);RIB2

57、,CIB2=sglsortexamine(max(3),B2);RIB3,CIB3=sglsortexamine(max(4),B3);RIB4,CIB4=sglsortexamine(max(5),B4);RIB5,CIB5=sglsortexamine(max(6),B5);RIB6,CIB6=sglsortexamine(max(7),B6);dw=zeros(18,6);dw(1:3,1)=wB1;dw(4:6,2)=wB2;dw(7:9,3)=wB3;dw(10:12,4)=wB4;dw(13:15,5)=wB5;dw(16:18,6)=wB6;CIC=CIB1;CIB2;CIB3;

58、CIB4;CIB5;CIB6;RIC=RIB1;RIB2;RIB3;RIB4;RIB5;RIB6;tw=tolsortvec(wA,dw,CIC,RIC);n=length(A);MAX,CHOICE = max(n); %最佳选择CHOICEMATLAB运行结果如下:maxeigval = 6.6178w = 0.1507 0.1792 0.1886 0.0472 0.1464 0.2879maxeigval = 3.0183w = 0.1365 0.6250 0.2385maxeigval = 3.0246w = 0.0974 0.3331 0.5695maxeigval = 3.0649

59、w = 0.2790 0.6491 0.0719maxeigval = 3.0070w = 0.2426 0.0879 0.6694maxeigval = 3.0000w = 0.4667 0.4667 0.0667maxeigval = 3.0070w = 0.7986 0.1049 0.0965矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验矩阵通过一致性检验层次总排序通过一致性检验CHOICE = 1由此分析得,通过层次分析法并且结合MATLAB,该生很容易便能作出了决策,选择工作1.而且容易得出表4-8的层次总排序:表4-8

60、层次总排序BBCB1B2B3B4B5B6层次总排序0.15070.17920.18860.04720.14640.2879C10.1365 0.09740.24260.27900.46670.79860.3952C20.62500.33310.08790.64910.46670.10490.2996C30.23850.56950.66940.07190.06670.09650.3052 5结束语利用层次分析法AHP,并结合被称为第四代计算机语言的MATLAB工具软件,来解决多目标、多准则的问题,大大缩减了决策者计算复杂矩阵的时间.目前很多领域都采用这种方法,如经济计划和管理、能源政策和分配、行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论