Matlab笔记——层次分析法

合集下载

层次分析法(详解)

层次分析法(详解)

第六章层次分析法决策是人们选择或进行判断的一种思维活动,在人们的实践活动中,常常要对某些系统的重要性作出恰当的评价,以便列出它们的轻重缓急,从而集中解决重要的问题。

有些决策是简单易断的,而有些决策则是复杂困难的,因此常常先把复杂问题分解成因素,然后把这些因素按支配关系分组形成有序的递阶层次结构,并衡量各方面的影响,最后综合人的判断,以决定决策诸因素相对重要性的先后优劣次序,这就是层次分析法的基本思路。

层次分析法的(Analytic Hierarchy Process 简记为AHP)是美国著名的运筹学家T.L.Saaty 教授于70年代初首先提出的一种定性与定量分析相结合的多准则决策方法。

该方法是社会、经济系统决策的有效工具,目前在工程计划、资源分配、方案排序、政策制定、冲突问题、性能评价等方面都有广泛的应用。

6.1 层次分析法的基本原理层次分析法的核心问题是排序,包括递阶层次结构原理、测度原理和排序原理。

下面分别予以介绍。

1.递阶层次结构原理。

一个复杂的结构问题可分解为它的组成部分或因素,即目标、准则、方案等。

每一个因素称为元素。

按照属性的不同把这些元素分组形成互不相交的层次,上一层次的元素对相邻的下一层次的全部或部分元素起支配作用,形成按层次自上而下的逐层支配关系。

具有这种性质的层次称为递阶层次。

例如,选拔队员参加数学建模比赛的层次结构如下图6.1所示:图6.1 队员参赛的层次结构图其中Y1:接受能力;Y2:反映能力;Y3:自愿程度;Y4:计算机应用能力;Y5:写作能力;Y11:掌握新知识的能力;Y12:建模能力;Y21:想象能力;Y22:洞察能力;Y31:建模兴趣;Y32:主动程度;Y33:对建模的认识Y41:使用数学软件的能力;Y41:计算机语言编程能力;Y51:中文写作能力;Y52:英文表达能力至于复杂系统的层次结构图,请参看有关的文献。

2.测度原理。

决策就是要从一组已知方案中选择理想的方案,而理想方案一般是在一定的准则下通过使效用函数极大化而产生的。

MatLab层次分析法代码

MatLab层次分析法代码
>>A=[12564724;1/21242712;1/51/215151/22;1/61/41/511/331/21/4;1/41/2131512;1/71/71/51/31/511/71/5;1/21221712;1/41/21/241/251/21];
>>d=eig(A)%求全部特征值所组成的向量
e=max(eig(A));%最大特征值
v=null(A-e*eye(length(A)));%e对应特征向量
>>e
>>A=[13365957;1/31134746;1/31134746;1/61/31/311/241/22;1/51/41/421412;1/91/71/71/41/411/31/2;1/51/41/421312;1/71/61/61/21/221/21];
e=max(eig(A));%最大特征值
v=null(A-e*eye(length(A)));%e对应特征向量
>>e
e=
8.4243
>>v
v=
-0.7427
-0.3893
-0.2579
-0.0985
-0.2588
-0.0519
-0.3352
-0.1966
>>A=[13365957;1/31134746;1/31134746;1/61/31/311/241/22;1/51/41/421412;1/91/71/71/41/411/31/2;1/51/41/421312;1/71/61/61/21/221/21];
0.2579-0.0614+0.3195i-0.0614-0.3195i-0.0739-0.0916i-0.0739+0.0916i-0.1506-0.0176i-0.1506+0.0176i

层次分析法判断矩阵求权值以及一致性检验程序

层次分析法判断矩阵求权值以及一致性检验程序

function [w,CR]=mycom(A,m,RI)[x,lumda]=eig(A);r=abs(sum(lumda));n=find(r==max(r));max_lumda_A=lumda(n,n);max_x_A=x(:,n);w=A/sum(A);CR=(max_lumda_A-m)/(m-1)/RI;end本matlab程序用于层次分析法中计算判断矩阵给出的权值已经进行一致性检验。

其中A为判断矩阵,不同的标度和评定A将不同。

m为A的维数RI为判断矩阵的平均随机一致性指标:根据m的不同值不同。

当CR<0.1时符合一致性检验,判断矩阵构造合理。

下面是层次分析法的简介,以及判断矩阵构造方法。

一.层次分析法的含义层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.Saaty)正式提出。

它是一种定性和定量相结合的、系统化、层次化的分析方法。

由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。

它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

二.层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。

(1)层次分析法的原理层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,以及各子目标对上一层目标而言重要程度的相对量度。

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。

层次分析法判断矩阵求权值以及一致性检验程序

层次分析法判断矩阵求权值以及一致性检验程序

function [w,CR]=mycom(A,m,RI)[x,lumda]=eig(A);r=abs(sum(lumda));n=find(r==max(r));max_lumda_A=lumda(n,n);max_x_A=x(:,n);w=A/sum(A);CR=(max_lumda_A-m)/(m-1)/RI;end本matlab程序用于层次分析法中计算判断矩阵给出的权值已经进行一致性检验。

其中A为判断矩阵,不同的标度和评定A将不同。

m为A的维数RI为判断矩阵的平均随机一致性指标:根据m的不同值不同。

当CR<0.1时符合一致性检验,判断矩阵构造合理。

下面是层次分析法的简介,以及判断矩阵构造方法。

一.层次分析法的含义层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.Saaty)正式提出。

它是一种定性和定量相结合的、系统化、层次化的分析方法。

由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。

它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

二.层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。

(1)层次分析法的原理层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,以及各子目标对上一层目标而言重要程度的相对量度。

层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。

matlab计算AHP层次分析法

matlab计算AHP层次分析法

matlab计算AHP层次分析法第一篇:matlab计算AHP层次分析法用matlab解决层次分析法AHP1、求矩阵最大特征值及特征向量用matlab求:输入:A=[1 1/2 2 1/4;2 1 1 1/3;1/2 1 1 1/3;4 3 3 1][x,y]=eig(A)得出:特征向量x=[0.2688 0.3334 0.2373 0.8720]最大特征值λmax=4.19642、一致性检验CI=(λmax-n)/(n-1)=(4.1964-4)/(4-1)=0.0655 CR=CI/RI=0.0655/0.9=0.0727(注:维数为4时,RI=0.9)CR=0.0727<0.1,矩阵一致性通过检验3、对最大特征值进行归一化处理,即可得到各指标权重(归一化:分项/分项之和)W=[0.157 0.195 0.139 0.510]第二篇:AHP层次分析法层次分析法层次分析法(The analytic hierarchy process,简称AHP),也称层级分析法什么是层次分析法层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.Saaty)正式提出。

它是一种定性和定量相结合的、系统化、层次化的分析方法。

由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。

它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一样的。

不妨用假期旅游为例:假如有3个旅游胜地A、B、C供你选择,你会根据诸如景色、费用和居住、饮食、旅途条件等一些准则去反复比较这3个候选地点.首先,你会确定这些准则在你的心目中各占多大比重,如果你经济宽绰、醉心旅游,自然分别看重景色条件,而平素俭朴或手头拮据的人则会优先考虑费用,中老年旅游者还会对居住、饮食等条件寄以较大关注。

使用Matlab程序实现层次分析法(AHP)的简捷算法

使用Matlab程序实现层次分析法(AHP)的简捷算法

使用Matlab程序实现层次分析法(AHP)的简捷算法作者:于晶来源:《科技风》2016年第16期摘要:层次分析法简便易懂,可操作性和实用性强,但是构造判断矩阵往往不容易,计算判断矩阵的特征值特别繁琐且易出错,得到的一致性检验不易调整,这些都给使用层次分析法带来困难,以往使用办公软件电子表格(Excel)的方法计算单层次排序和总层次排序,这种方法使得计算和一致性检验变得容易,文本使用Matlab程序使得计算变得更容易,也使得层次分析法在多个领域得到推广和应用。

关键词:层次分析法;Excel;matlab1 层次分析法(AHP法)的原理和解决思路层次分析法是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。

它的原理是模拟人的决策过程,具有思路清晰、方法简便、适用面广、系统性强等特点。

是解决多目标、多准则、多层次复杂问题决策或者大型工程风险分析的有力工具。

层次分析法解决问题的思路就是用下一次因素的相对排序求得上一次因素的相对排序。

按照因素之间的相互影响和隶属关系将各层次因素聚类组合,形成一个递进有序的层次结构模型。

2 层次分析法的应用难点2.1合适的判断矩阵构造不易模型确定后,按照模型层次结构和模型的各因素的相对重要性,综合专家群体咨询意见,采用标度法[ 1 ],从数字1/9一9中选取恰当值,构造各层的判断矩阵,并使之尽量符合一致性检验,这一步成为问题的关键。

但实际上系统越复杂,判定矩阵的阶数就会越高,计算就会越困难。

2.2计算量大,步骤繁琐层次分析法首先要求的就是判断矩阵的最大特征值?姿max,及其正规化的特征向量w,向量w的分量wi是相应因素的单层次权值,这部分计算理论上基于线性代数知识,不用计算机也可以将其计算出来。

但实际上,当矩阵的阶数高于4阶时,人工计算就变得相当困难且易出错,如使用计算机计算,就容易得多,常用的方法有Basic语言,电子表格Excel等方法。

但计算量都有待改进。

层次分析法及matlab程序

层次分析法及matlab程序

层次分析法建模层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论.吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。

传统的常用的研究自然科学和社会科学的方法有:机理分析方法:利用经典的数学工具分析观察的因果关系;统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、社会现象)现象的规律。

基本内容:(1)多目标决策问题举例AHP建模方法(2)AHP建模方法基本步骤(3)AHP建模方法基本算法(3)AHP建模方法理论算法应用的若干问题。

参考书:1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社2、程理民等, 运筹学模型与方法教程,(第10章),清华大学出版社3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社一、问题举例:A.大学毕业生就业选择问题获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。

就毕业生来说选择单位的标准和要求是多方面的,例如:①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长);②工作收入较好(待遇好);③生活环境好(大城市、气候等工作条件等);④单位名声好(声誉—Reputation);⑤工作环境好(人际关系和谐等)⑥发展晋升(promote,promotion)机会多(如新单位或单位发展有后劲)等。

问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?工作选择贡献收入发展声誉工作环境生活环境B.假期旅游地点选择暑假有3个旅游胜地可供选择.例如:1P :苏州杭州,2P 北戴河,3P 桂林,到底到哪个地方去旅游最好?要作出决策和选择。

层次分析法

层次分析法

层次分析法(AnalCtic HierarchC Process, AHP )数学用于研究自然与社会现象的方法主要有:● 机理分析——用经典的数学工具分析现象的因果关系;● 统计分析——以随机数学为工具,通过大量观测数据寻求统计规律.近年来发展起来的第三种方法称为系统分析,层次分析是系统分析的工具之一,它是美国运筹学教授Saaty 于70年代初期提出来的. 它把人的思维过程层次化、数量化,并用数学方法为分析、决策、预报或控制提供定量的依据. 这是一种定性与定量相结合的方法. 步骤:1) 将问题条理化、层次化,构造出一个有层次的结构模型. 层次分为三层:目标层、准则层和方案层.………… …2) 比较同一层次元素对上一层次同一目标的影响,从而确定题目在目标中所占的比重. 采用两两比较的方法,求出它们对于同一个目标的重要性的比例标度,标度等级为1, 2, …, 9, 1/2, 1/3, …, 1/9. 得到两两比较判断矩阵. 1—9标度的含义为:1—两个元素同等重要(相等) 3—前者稍重要(较强) 5—前者明显重要(强) 7—前者强烈重要(很强) 9—前者极端重要(绝对强) 2,4,6,8为上述判断的中间值.3) 确定各准则对于目标的权重,及各方案对于每一准则的权重. (在单一准则下计算元素相对排序权重,以及判断矩阵一致性检验.) 4) 计算方案层中元素对于目标层的总排序权重,从而确定首选方案.(将方案层对准则层的权重及准则层对目标层的权重进行综合,最终确定方案层对目标层的权重.)成对比较法,正互反阵和一致阵设要比较的n 个因素C ={C 1, …, C n }对目标O 的影响,确定它们在O 中的比重. 每次取两个因素C i 和C j ,用a ij 表示对C i 和C j 对O 的影响之比:a ij >0, a ji =1ija (i , j =1, 2, …, n ) (1) A=(a ij )称为成对比较阵或判断矩阵. 满足(1)的矩阵称为正互反阵. 成对比较阵是正互反阵.例如:考虑旅游问题. 设有三个地点供选择:桂林P 1、黄山P 2、北戴河P 3. 问如何在三个目的地中按照:费用C 1,景色C 2,居住C 3,饮食C 4,交通C 5这五个因素进行选择.设某人用成对比较法得到的成对比较阵为127551/214331/71/411/21/31/51/32111/51/3311A ⎛⎫⎪⎪⎪ ⎪⎪ ⎪⎝⎭= (2)其中a 12表示费用C 1与景色C 2对选择旅游地这个目标O 的重要性之比为2:1, a 13表示费用C 1与居住条件C 3之比为7:1, a 23表示景色C 2与居住条件C 3之比为4:1,可以看出此人在选择旅游地时,费用因素最重,景色次之,居住条件再次. 怎样由成对比较阵确定诸因素C 1,C 2,…,C n 对上层因素O 的权重呢? 分析:(2)式给出的成对比较阵A 中,C 1与C 2之比为2:1, C 2与居住条件C 3之比为4:1,那么C 1与C 3之比应为8:1, 但C 1与C 3之比为7:1,这种情况称为这三个因素成对比较不一致. (即a 12·a 23=2·4≠7= a 13)全部一致的要求太苛刻,因此Saaty 等人给出了在成对比较不一致的情况下计算各因素C 1,C 2,…,C n 对上层因素O 的权重的方法.设想把一块单位重量的大石头O 砸成n 块小石头C 1,C 2,…,C n ,如果精确地称出它们的重量为12,,,n w w w ,在作成对比较时有a ij =ijw w ,则得到111122221212n n n n n n w w w w w w w w w A w w w w w w ⎛⎫⎪ ⎪ ⎪⎪ ⎪ ⎪⎪⎪⎪⎝⎭= (3) 这些比较显然是一致的. n 块小石头对大石头的权重(即在大石头中的重量之比)可用向量12(,,,)Tn w w w =w 表示,且11ni i w ==∑. 显然A 的各个列向量与w 仅相差一个比例因子.一致阵:如果一个正互反阵A 满足a ij ·a jk =a ik (i , j , k =1, 2, …, n ) (4)则称A 为一致阵.例如矩阵1261/2131/61/31A ⎛⎫⎪⎪ ⎪⎝⎭= (5) 是一致阵.可以验证:若A 为n 阶一致矩阵,则有 A n =w wn 阶一致阵A 有下列性质: (1)A 的秩为1;(2)A 的最大特征根为max n λ=,其余特征根均为零 (3)n 阶正互反阵是一致阵⇔max n λ=.例如 (5)中矩阵为一致阵,则max 3λ=.权向量:max λ的标准化特征向量: (1) 一致阵的权向量:例如(5)中矩阵1261/2131/61/31A ⎛⎫⎪⎪ ⎪⎝⎭=为一致矩阵,则max 3λ=,权向量为max λ的标准化特征向量:(0.6,0.3,0.1)T =w(2) 不一致阵的权向量:例如 1261/2141/61/41A ⎛⎫⎪⎪ ⎪⎝⎭=,max 3.01λ=,(0.588,0.322,0.09)T =w max λ比n 大得越多,A 不一致的程度就越严重,用w 表示C 1,C 2,…,C n 在O 中所占比重时的偏差就越大.附:求特征值特征向量的matlab 程序 >>A=[1 2 6; 1/2 1 4; 1/6 1/4 1];>>[x,D]=eig(A) %x 为特征向量,D 的主对角线元素为特征值一致性指标衡量不一致程度的数量指标叫做一致性指标. Saaty 将他定义为max 1n CI n λ-=-对于一致阵,一致性指标CI =0.CI 越大,A 的不一致性程度越严重.为了找出衡量一致性指标CI 的标准,Saaty 提出一种方法. 对固定的n ,随机地构造正互反阵A ,其中ij a ()i j <随机地从1/9,,1/2,1,2,,9 当中取出一数,由于其随机性,这样的A是非常不一致的,它的CI 相当大. 如此构造相当多的A,用它们的CI 的平均值作为随机一致性指标. Saaty 对于不同的n ,用100~500个样本A算出最大特征值的平均值max λ ,定义随机性指标为 max 1n RI n λ-=- 得到RI 的数值如下表所示表:随机性指标RI 的值(计算RI 的过程:对于固定的n ,随机的构造正互反矩阵A ’(它的元素a ij ’(i<j )从1~9,1~1/9中随机取值),然后计算A ’ 的一致性指标CI . 可以想到,A ’是非常不一致的,它的CI 相当大. 如此构造相当多的A ’,用它们的CI 的平均值作为随机一致性指标. Saaty 对于不同的n ,用100~500个样本A ’ 算出的随机一致性指标RI 的数值如上表所示)当C I <0.1RI时,认为A 的不一致性仍可接受. 称 CICR RI=为一致性比率指标,当CR <0.1时,认为判断矩阵的一致性是可以接受的.下面介绍计算最大特征值max λ和特征向量w 的一种近似方法(和法),步骤如下:a. 将A 的各个列向量归一化得1ˆijijij ni a a w==∑;b. 对ˆij w按行求和得1ˆˆni ij i w w ==∑; c. 将ˆi w 归一化1ˆˆii i ni ww w ==∑,12(,,,)T n w w w w = 即为近似特征向量;d. 计算1max ˆ()1ˆˆn i i iA n λ==∑w w,作为最大特征根的近似值.这个方法实际上是将A 的列向量归一化后取平均值,作为A 的特征向量. 因为当A 为一致阵时它的每一列向量都是特征向量,所以若A 的不一致性不严重,则取A 的列向量(归一化后)的平均值作为近似特征向量是合理的.例如:1261/2141/61/41A ⎛⎫⎪⎪ ⎪⎝⎭= 列向量归一化0.60.6150.5450.30.3080.3640.10.0770.091⎛⎫ ⎪⎪ ⎪ ⎪⎝⎭按行求和1.7600.9720.268⎛⎫ ⎪⎪ ⎪⎝⎭ 归一化0.5870.3240.089w ⎛⎫ ⎪ ⎪ ⎪⎝⎭=,Aw =1.7690.9740.268⎛⎫⎪⎪ ⎪⎝⎭max 11.7690.9740.268 3.00930.5870.3240.089ˆλ⎛⎫ ⎪ ⎪⎝⎭=++= 精确计算给出()0.5880.3220.090Tw =, 3.010λ=. 二者相比相差甚微.max 3.00930.00450.10.582ˆ1n CI n λ-==<⨯-=-3n =时,RI =0.58,0.1CIRI< ∴ 认为A 的不一致性是可以接受的. 课堂练习:判断矩阵W=136115311165⎛⎫ ⎪ ⎪⎪ ⎪ ⎪ ⎪⎝⎭的一致性是否可以接受. 回到旅游问题(1)先确定准则层关于目标层的比重 准则层关于目标层的成对比较阵为127551/214331/71/411/21/31/51/32111/51/3311A ⎛⎫⎪⎪ ⎪ ⎪⎪ ⎪⎝⎭=列向量归一化0.48950.51060.41180.47620.48390.24480.25530.23530.28570.29030.06990.06380.05880.04760.03230.09790.08510.11760.09520.09680.09790.08520.17650.09530.0967A ⎛⎫⎪⎪ ⎪ ⎪⎪ ⎪⎝⎭=按行求和 2.37201.31140.27240.49260.5516⎛⎫⎪⎪⎪ ⎪⎪⎪⎝⎭ 归一化0.47440.26230.05450.09850.1103⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭=ˆw ˆ(2.4245,1.3439,0.2739,0.5001,0.5546)T A =wm a x ˆλ1 2.42451.34390.27390.50010.5546() 5.072950.47440.26230.05450.09850.1103=++++= m a x 0.07290.01824ˆ1n CI n λ==-=- 5n =时,RI =1.12,0.1CIRI<故A 的不一致性可以接受A .()C w =ˆw =0.47440.26230.05450.09850.1103⎛⎫ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪⎝⎭代表C 1,C 2,C 3,C 4,C 5在O 中分别所占比重,即准则层关于目标层的比重已确定.(2)再确定方案层关于准则层的比重设123{,,}P P P P =对i C 的成对比较阵为:1111381313831B ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎝⎭= 212511211152B ⎛⎫⎪ ⎪⎪⎪ ⎪ ⎪ ⎪⎝⎭= 113113311133B ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭= 413411131114B ⎛⎫⎪ ⎪⎪ ⎪ ⎪⎪ ⎪⎝⎭= 511141114441B ⎛⎫ ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪⎝⎭=由于3n =, 0.58RI =,故()/0.1i RI CI <(1,2,...,5)i =,所以51B B 的不一致性都可以接受.最终目的是要得到123,,P P P 在O 中所占的比重. (3)确定方案层关于目标层的比重123()((),(),())P w P w P w P =w11()()()C C P P =w w w0.0820.460.5950.260.4=⨯+⨯+⨯ 0.6330.10.1660.13+⨯+⨯0.299= 22()()()0.245C C P P ==w w w 33()()()0.456C C P P ==w w w()(0.299,0.2450.456),T P =w3P 为第一选择.总结:AHP 的计算步骤1) 建立系统的层次结构,一般分为三层:目标层、准则层和方案层 2) 给出方案之间、准则之间的两两比较矩阵; 3) 计算每个矩阵的特征向量; 4) 计算每个矩阵的最大特征值; 5) 一致性检验; 6) 方案的总排序.附录方阵的特征值与特征向量定义1 设A 是n 阶方阵,如果存在λ和n 维非零列向量x ,使得λ=Ax x ,则称数λ为的A 特征值,并称非零列向量x 为A 的属于λ的特征向量.例如:对1221A ⎛⎫ ⎪ ⎪⎝⎭=,有λ=3及向量11x ⎛⎫ ⎪ ⎪⎝⎭=,使得1221⎛⎫ ⎪ ⎪⎝⎭31111⎛⎫⎛⎫= ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭,这说明λ=3是A 的特征值,11x ⎛⎫ ⎪ ⎪⎝⎭=是A 对应于λ=3的特征向量. 对于这个定义我们应注意到:特征向量≠0x . 否则由于对任何数λ,都有λ=00A ,从而任何数都是A 的特征值,这样的定义显然是不合理的。

层次分析法

层次分析法

层次分析法在日常生活中,我们面临着各种各样的决策问题。

比如:假期旅游,是去风光秀丽的昆明,还是去迷人的北戴河,或者是去山水甲天下的桂林?一般会依据景色、费用、食宿条件、旅途等因素选择去哪个地方?再比如:面临毕业,可能有科研单位、企业、工厂等单位可以去选择,一般会依据工作环境、工资待遇、发展前途、住房条件等因素择业。

为了解决这些问题,德国运筹学家T.L.Saaty教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法——层次分析法(Analytic Hierarchy Process,简称AHP)。

层次分析法的基本步骤第一步:建立层次结构模型例:假期旅游,是去风光秀丽的昆明,还是去迷人的北戴河,或者是去山水甲天下的桂林?一般会依据景色、费用、居住、饮食、旅途等因素选择去哪个地方?某一个游客选择旅游景点时,对以上是三个旅游景点考虑了五项准则作为评估依据,建立层次分析模型如下:第二步:构造成对比较阵通过互相比较确定各准则对于目标的权重,即构造判断矩阵,在层次分析方法中,为使矩阵中的各要素的重要性能够进行定量显示,引进了矩阵判断标度(1-9标度法):设准则层包含5个准则,景色:1C ,费用:2C ,居住:3C ,饮食:4C ,旅途:5C 。

相对于目标层,选择旅游地,进行两两比较打分。

1143322175511111472311211351131135A ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭构造所有相对于不同准则的方案层判断矩阵相对于景色:1125112211152B ⎛⎫ ⎪ ⎪⎪= ⎪ ⎪ ⎪⎝⎭相对于费用:2111381313831B ⎛⎫ ⎪⎪ ⎪= ⎪ ⎪ ⎪ ⎪⎝⎭ 相对于居住:311311311133B ⎛⎫ ⎪⎪= ⎪ ⎪ ⎪⎝⎭相对于饮食:413411131114B ⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭相对于旅途:511141114441B ⎛⎫ ⎪ ⎪⎪= ⎪ ⎪ ⎪ ⎪⎝⎭第三步:计算各个矩阵的最大特征值max λ和特征向量W Matlab 程序为: [x,lumda]=eig(A); r=abs(sum(lumda)); n=find(r==max(r)); max_lumda=lumda(n,n) max_x=x(:,n)利用matlab 程序计算各个矩阵的特征值和特征向量如下: 矩阵A 的特征值为m a x 5.073λ=,特征向量为:(2)(0.263,0.475,0.055,0.099,0.110)T W =矩阵1B 的特征值为max(1) 3.005λ=,特征向量为:(3)1(0.595,0.277,0.129)T W = 矩阵2B 的特征值为max(2) 3.002λ=,特征向量为:(3)2(0.082,0.236,0.682)T W = 矩阵3B 的特征值为max(3)3λ=,特征向量为:(3)3(0.429,0.429,0.142)T W = 矩阵4B 的特征值为max(4) 3.009λ=,特征向量为:(3)4(0.633,0.193,0.175)T W = 矩阵5B 的特征值为max(5)3λ=,特征向量为:(3)5(0.166,0.166,0.688)T W = 第四步:一致性检验判断矩阵通常是不一致的,但是为了能用它的对应于特征根的特征向量作为被比较因素的权向量,其不一致程度应在容许的范围内,如何确定这个范围?1.一致性指标:1nCI n λ-=-0CI =时,A 一致;CI 越大,A 的不一致性程度越严重。

层次分析法报告

层次分析法报告
实验内容、操作步骤: 首先理解层次分析法的原理、熟悉其步骤. 然后对 matlab 软件进行学习,掌握基本的 matlab 程序语言的含义并应用。 最后利用 matlab 程序对老师给出的层次分析法案例进行分析。 在进行层次分析时,首先根据各层次的关系构造判断矩阵。然后利用[x,y]
=eig()函数其判断矩阵的特征值,利用 lamda=max(diag(y)) 求矩阵的最 大特征根,并进行一致性检验。在第一个案例当中,判断矩阵 B1、B2、B3、 C1、C2、C3、C4、C 5、C6 均为 2 维方阵,绝对符合一致性检验,所以在程序中 为节省空间,不对其进行一致性检验。最后求出方案层的总权重并输出。
if CR<0.10
disp(’C 矩阵的一致性可以接受!’);
1/3 2 1 1 3 3 5 3 5 5 5 2 4 1/2 1/3 1 4 1/2 1 6 3 3 1 1/3 1/4 1/3 1/4 1 2 1/2 2 2 1/2
1/3 1/2 1/3 1/5 2 1 1 2 1 3 1
1/2 1 1/3 1/5 1 2 1/2 1 2 2 1/2 1/2 1/4 1/6 1/5 1/6 1/2 1 1/2 1 1/2 2 1/2 1/5 1/4 1/5 1/3 1/2 1/3 1/2 2 1 1 1/2 1/5 1/4 1/5 1/3 2 1 2 1/2 1 1 ]; 准则层与方案层: A1=[ 1 5 1/3;1/5 1 1/7;3 7 1 ];A2=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A3=[1 1/3 3;3 1 5; 1/3 1/5 1 ];A4=[1 1/3 3;3 1 5; 1/3 1/5 1 ]; A5= [1 1/2 3;2 1 5; 1/3 1/5 1];A6= [1 1/3 3;3 1 5;1/3 1/5 1]; A7=[1 1/3 3;3 1 5;1/3 1/5 1]; A8=[1 1/3 3;3 1 5;1/3 1/5 1]; A9=[1 1/2 1/3;2 1 1/2;3 2 1]; A10=[1 2 1/3;1/2 1 1/5;3 5 1]; A11=[1 1/3 3;3 1 5;1/3 1/5 1]; 实现层次分析法的 MATLAB 程序如下: C=[1 4 1/3 1/3 1/2 1 3 2 2 2 2 ; 1/4 1 1/2 1/2 1/4 3 2 1 4 5 5 ;

MATLAB层次分析法

MATLAB层次分析法

C11
C1
0
桥梁 D1
隧道 D2
渡船 D3
(1)过河效益层次结构
例3 横渡江 河、海峡方 案的抉择
经济代价 B1
过河的代价 A
社会代价 B2
环境代价 B3
投 操 冲冲 交 居 汽 对 对
入 作 击击 通 民 车 水 生
资 维 渡生 拥 搬 排 的 态
金 护 船活 挤 迁 放 污 的
C1 C2 业 方 C5 C6 物 染 破






对外 贸易
位 置
供选择的岗位
例3 横渡江 河、海峡方 案的抉择
经济效益 B1
过河的效益 A
社会效益 B2
节 收岸 当 建安 交 自
省 入间 地 筑全 往 豪
时 C2 商 商 就 可 沟 感

业 业 业 靠 通 C8
C1
C3 C4 C5 C6 C7
环境效益 B3
舒进 美
适出 化
C9
方 便
Ci : C j aij
A
(aij )nn , aij
0,
a ji
1 aij
选 择
1 1/ 2 4 3 3
2
1
7
5
5
A~成对比较阵
旅 A 1/ 4 1/ 7
游 地
1/ 3
1/ 5
1/ 3 1/ 5
1 2
1/ 2 1
1/ 3
1
A是正互反阵
3 1 1
要由A确定C1,…, Cn对O的权向量
2
n
min
wi ( i1,,n ) i1
n j1 ln aij
ln wi wj

层次分析法-matlab程序-可运行

层次分析法-matlab程序-可运行
for i=1:n
disp('请输入第');disp(i);disp('个准则层因素的判断矩阵B');disp(i);
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受!');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评分!p('请输入方案层各因素对准则层各因素权重的成对比较阵');
%求出最大特征值和它所对应的特征向量
tempNum=D(1,1);
pos=1;
for h=1:n
if D(h,h)>tempNum
tempNum=D(h,h);
pos=h;
end
end
w=abs(V(:,pos));
使用方法
(1)构造判断矩阵A
(2)将下文代码复制粘贴到Matlab中即可
例如:A=[1 3 5;0.33 1 3;0.2 0.33,1]
disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
[V,D]=eig(A);%求得特征向量和特征值
w=w/sum(w);
t=D(pos,pos);
disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59 1.60 1.61 1.615 1.62 1.63];

matlab-层次分析法一致性

matlab-层次分析法一致性

用了两周左右的时间,我编写了网络分析法(The Analytic Network Process,ANP)的Matlab源代码(将在下面给出),主要针对王莲芬老师的《网络分析法(ANP)的理论与算法》中的内部依存的递阶层次结构,而且假设N = 4 的情形,所以如果要使用该程序,需要作修改,如果你不想改,我可以帮忙!ANP是美国匹兹堡大学的T.L.Saaty 教授于1996年提出了一种适应非独立的递阶层次结构的决策方法,它是在网络分析法(AHP)基础上发展而形成的一种新的实用决策方法。

其关键步骤有以下几个:1 确定因素,并建立网络层和控制层模型。

2 创建比较矩阵。

3 按照指标类型针对每列进行规范化。

4 求出每个比较矩阵的最大特征值和对应的特征向量。

5 一致性检验。

如果不满足,则调整相应的比较矩阵中的元素。

6 将各个特征向量单位化(归一化),组成判断矩阵。

7 将控制层的判断矩阵和网络层的判断矩阵相乘,得到加权超矩阵。

8 将加权超矩阵单位化(归一化),求其K次幂收敛时的矩阵。

其中第j列就是网络层中各元素对于元素j的极限排序向量。

% 第一个函数% 矩阵归一化(单位化)% Unitize 函数开始function Matrix_Unitize = Unitize(Matrix)[line,colume] = size(Matrix);for j = 1:1:columefa = 0;for i = 1:1:linefa = fa + Matrix(i,j);endsum(j) = fa;endfor j = 1:1:columefor i = 1:1:lineMatrix_Unitize(i,j) = Matrix(i,j) / sum(j);endend% Unitize 函数结束% 第二个函数% 求一个方阵的最大特征值及其对应的特征向量% MAX_EigenV 函数开始function [Max_Eigenvector,Max_Eigenvalue] = Max_EigenV(Matrix)[line,colume] = size(Matrix);if line ~= columemessage = '矩阵不是方阵,无法求解最大特征值及其对应的特征向量';disp(message);return;end[Eigenvector Eigenvalue] = eigs(Matrix);Max_Eigenvalue = Eigenvalue(1);for i=1:1:lineMax_Eigenvector(i) = Eigenvector(i,1);end% MAX_EigenV 函数结束% 第三个函数(此函数我没有用)% 根据给定的指标类型对矩阵的列进行规范化% Standardize 函数开始function Matrix_Standardize = Standardize(Matrix, IndexType)% a 是需要规范化的矩阵% IndexType 是该矩阵各列的指标类型数组% IndexType(j) = 1 a 的第j 列是效益型指标% IndexType(j) = 0 a 的第j 列是成本型指标[m n] = size(Matrix);MAX = max(Matrix);MIN = min(Matrix);d = MAX - MIN;for j=1:1:nfor i=1:1:mif IndexType(j) == 1 % 效益型指标规范化Matrix_Standardize(i,j) = (Matrix(i,j) - MIN(j)) / d(j);elseif IndexType(j) == 0 % 成本型指标规范化Matrix_Standardize(i,j) = (MAX(j) - Matrix(i,j)) / d(j);endendend% Standardize 函数结束% 第四个函数% 读取一个格式化文件中所有矩阵,连接成归一化的判断矩阵% 计算最大特征值对应的特征向量,进行一致性检验,构造判断矩阵.% version 2.0% 矩阵文件的(*.txt)格式要求(共4条)% 1 空格开头的行,回车行,注释行(见第3条)在读取时都会被忽略.%% 2 每个矩阵要有维数(Dimension)和序号(Sequence),其次序可以颠倒,但是不能缺项,% 且关键字及其取值要各占一行(共4行,中间可以有空格行或空行),但关键字行尾不能有空格.%% 3 竖线"|"是注释标记,要独自占一行,但是不要在有效的矩阵元素行之后加竖线.%% 4 矩阵的元素只能用空格分开,每个元素后都可以跟空格,且空格的数量可以是任意多个. % 但是,需要强调的是,每一行第一个元素的前面不能有空格(参照第1条)!% JudgementMatrix 函数开始function [judge_matrix_unitize,flag] = JudgementMatrix(fid)judge_matrix = 0;judge_matrix_unitize = 0;flag = 0; % 判断矩阵构造成功的标志LineData = IgnoreLine(fid); % 跳到第一行有效的数据Count = 0; % 矩阵计数器Flag1 = 0; % 是否读取矩阵序号的开关Flag2 = 0; % 是否读取矩阵列数的开关Flag3 = 0; % 是否读取矩阵行数的开关Sequence = 0; % 矩阵的序号Dimension = 0; % 矩阵的阶DCount = 0; % 同一文件中每个矩阵的阶数下标LastCount = 0; % 同一文件中上一个矩阵的阶数下标while( feof(fid) == 0 )if strcmp(LineData, 'Sequence')LineData = IgnoreLine(fid);if LineData == -1warning('已经到了文件末尾,无数据可读取!');flag = -1;return;endSequence = str2num(LineData);Flag1 = Flag1 + 1;elseif strcmp(LineData, 'Dimension')LineData = IgnoreLine(fid);if LineData == -1warning('已经到了文件末尾,无数据可读取!');flag = -1;return;endDCount = DCount + 1;Dimension(DCount) = str2num(LineData);LastCount = DCount-1;if LastCount > 0 && Dimension(DCount) ~= Dimension(LastCount) flag = -1;warning('矩阵的维数不等,比较矩阵弄错了吧!');endFlag2 = Flag2 + 1;endif ( Flag1 > 1 || Flag2 > 1 )if Flag1 > 1c = num2str(Sequence);c = strcat('第',c);message = strcat(c, '个矩阵的上一个矩阵没有设置维数关键字"Dimension"!');flag = -1;warning(message);return;elseif Flag2 > 1c = num2str(Sequence);c = strcat('第',c);message = strcat(c, '个矩阵的上一个矩阵没有设置序号关键字"Sequence"!');warning(message);flag = -1;return;endelseif ( Flag1 == 0 && Flag2 ==0 )warning('没有发现矩阵的序号或行数或列数关键字!请参考文件格式要求!');flag = -1;return;elseif ( Flag1 == 1 && Flag2 == 1 )Matrix = 0;% 为了读分数矩阵,逐行读取再变为数值类型for i = 1:1:Dimension(DCount)LineData = IgnoreLine(fid);if LineData == -1warning('已经到了文件末尾,无数据可读取!');flag = -1;judge_matrix_unitize = Unitize(Matrix);return;endDoubleLine = str2num(LineData);[line_DoubleLine,colume_DoubleLine] = size(DoubleLine);if colume_DoubleLine ~= Dimension(DCount)flag = -1;endfor j = 1:1:colume_DoubleLineMatrix(i,j) = DoubleLine(j);endendif flag == -1judge_matrix_unitize = Unitize(Matrix);return;endif isreal(Matrix)Count = Count + 1;if Sequence ~= Countc = num2str(Sequence);c = strcat('文件中编号为',c);message = strcat(c,'的矩阵的序号没有按照顺序排列!');warning(message);end% 最大特征值及其对应的特征向量[vector_lmd_max,lmd_max(Count)] = MaxEV(Matrix);for j = 1:1:Dimension(DCount)judge_matrix(Count,j) = vector_lmd_max(j);end% 一致性检验CI(Count) = 0; % 一致性指标% 当矩阵的阶数n < 3 时,判断矩阵永远具有完全一致性。

Matlab建模教程层次分析法

Matlab建模教程层次分析法

第八章 层次分析法层次分析法(Analytic Hierarchy Process ,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。

它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。

§1 层次分析法的基本原理与步骤人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。

层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。

运用层次分析法建模,大体上可按下面四个步骤进行:(i )建立递阶层次结构模型;(ii )构造出各层次中的所有判断矩阵;(iii )层次单排序及一致性检验;(iv )层次总排序及一致性检验。

下面分别说明这四个步骤的实现过程。

1.1 递阶层次结构的建立与特点应用AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。

在这个模型下,复杂问题被分解为元素的组成部分。

这些元素又按其属性及关系形成若干层次。

上一层次的元素作为准则对下一层次有关元素起支配作用。

这些层次可以分为三类:(i )最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。

(ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。

(iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。

递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。

每一层次中各元素所支配的元素一般不要超过9个。

这是因为支配的元素过多会给两两比较判断带来困难。

下面结合一个实例来说明递阶层次结构的建立。

例1 假期旅游有1P 、2P 、3P 3个旅游胜地供你选择,试确定一个最佳地点。

matlab常用算法大全(数学建模)

matlab常用算法大全(数学建模)

本文总结了matlab常用的几个算法,希望对数学建模有帮助。

利用matlab编程FFD算法完成装箱问题:设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。

建立box_main.mfunction[box_count,b]=box_main(v) vmax=100;sort(v,'descend');n=length(v);b=zeros(1,n);for i=1:nb(i)=vmax;endbox_count=1;for i=1:nfor j=1:box_countif v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);break;else%不可放入时continue;endendif j==box_countbox_count=box_count+1;endendbox_count=box_count-1;end主程序为:v=[60 45 35 20 20 20];[box_count,b]=box_main(v)结果:box_count =3 b =5 15 80 100 100 100所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。

“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。

层次分析法——精选推荐

层次分析法——精选推荐

层次分析法title: 层次分析法date: 2020-02-25 19:14:41categories: 数学建模tags: [MATLAB, 评价模型]mathjax: true定义层次分析法(The Analytic Hierarchy Process即AHP)是由美国运筹学家、 匹兹堡⼤学教授T . L. Saaty于20世纪70年代创⽴的⼀种系统分析与决策的综合 评价⽅法,是在充分研究了⼈类思维过程的基础上提出来的,它较合理地解 决了定性问题定量化的处理过程。

AHP的主要特点是通过建⽴递阶层次结构,把⼈类的判断转化到若⼲因 素两两之间重要度的⽐较上,从⽽把难于量化的定性判断转化为可操作的重 要度的⽐较上⾯。

在许多情况下,决策者可以直接使⽤AHP进⾏决策,极⼤ 地提⾼了决策的有效性、可靠性和可⾏性,但其本质是⼀种思维⽅式,它把 复杂问题分解成多个组成因素,⼜将这些因素按⽀配关系分别形成递阶层次 结构,通过两两⽐较的⽅法确定决策⽅案相对重要度的总排序。

整个过程体 现了⼈类决策思维的基本特征,即分解、判断、综合,克服了其他⽅法回避 决策者主观判断的缺点。

步骤第⼀步递阶层次结构分析系统中各因素之间的关系,建⽴系统的递阶层次结构。

第⼆步构造判断矩阵{1,2,3,...,9}:代表重要程度,逐渐递增得到⼀个⽅阵,我们记为A,对应的元素为a ij.(1)a ij表⽰的意义是,与指标j相⽐,i的重要程度。

(2)当i=j时,两个指标相同,因此同等重要记为1,这就解释了主对⾓线元素为1。

(3)a ij>0且满⾜a ij∗a ji=1(我们称满⾜这⼀条件的矩阵为正互反矩阵)第三步⼀致性检验判断矩阵各⾏(各列)之间成倍数关系a ij>0且满⾜a ij∗a ji=1(我们称满⾜这⼀条件的矩阵为正互反矩阵)在层次分析法中,我们构造的判断矩阵均是正互反矩阵若正互反矩阵满⾜a ij∗a jk=a ik,则我们称其为⼀致矩阵注意:在使⽤判断矩阵求权重之前,必须对其进⾏⼀致性检验。

(完整版)层次分析法计算权重在matlab中的实现

(完整版)层次分析法计算权重在matlab中的实现

信息系统分析与设计作业层次分析法确定绩效评价权重在matlab中的实现小组成员:孙高茹、王靖、李春梅、郭荣1 程序简要概述编写程序一步实现评价指标特征值lam、特征向量w以及一致性比率CR的求解。

具体的操作步骤是:首先构造评价指标,用专家评定法对指标两两打分,构建比较矩阵,继而运用编写程序实现层次分析法在MATLAB中的应用。

通过编写MATLAB程序一步实现问题求解,可以简化权重计算方法与步骤,减少工作量,从而提高人力资源管理中绩效考核的科学化电算化。

2 程序在matlab中实现的具体步骤function [w,lam,CR] = ccfx(A)%A为成对比较矩阵,返回值w为近似特征向量% lam为近似最大特征值λmax,CR为一致性比率n=length(A(:,1));a=sum(A);B=A %用B代替A做计算for j=1:n %将A的列向量归一化B(:,j)=B(:,j)./a(j);ends=B(:,1);for j=2:ns=s+B(:,j);endc=sum(s);%计算近似最大特征值λmaxw=s./c;d=A*wlam=1/n*sum((d./w));CI=(lam-n)/(n-1);%一致性指标RI=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51];%RI为随机一致性指标CR=CI/RI(n);%求一致性比率if CR>0.1disp('没有通过一致性检验');else disp('通过一致性检验');endend3 案例应用我们拟构建公司员工绩效评价分析权重,完整操作步骤如下:3.1构建的评价指标体系我们将影响员工绩效评定的指标因素分为:打卡、业绩、创新、态度与品德。

3.2专家打分,构建两两比较矩阵A =1.0000 0.5000 3.0000 4.00002.0000 1.0000 5.00003.00000.3333 0.2000 1.0000 2.00000.2500 0.3333 0.5000 1.00003.3在MATLAB中运用编写好的程序实现直接在MATLAB命令窗口中输入[w,lam,CR]=ccfx(A)继而直接得出d =1.30352.00000.51450.3926w =0.31020.46910.12420.0966lam =4.1687CR =0.0625,通过一致性检验3.4解读程序结果根据程序求解中得出的特征向量,可以得出打卡、业绩、创新以及态度品德在员工绩效评价中所占的权重分别为:0.3102、0.4691、0.1242、0.0966。

基于Matlab的层次分析法及其运用浅析

基于Matlab的层次分析法及其运用浅析

度 )具体标度 方法如表 1所示。 ,
表 1 T..a t LS ay教授 的 1 9标度方法 -
底层 指 标 相 对 于 准 则 层 的 权 重 系数 , 而 有助 于 选 择 最 优 方案 , 序 从 程 流程如图 1 所示 , 其中的平行 四边形表示输入数据 , 菱形表示判断 , 根据 判 断结 果 的不 同 出现 2个 分 支 。 程 序 中 , 于 生成 判 断矩 阵 的部 分 程 序 如 下 : 用
表 2 平均 随机一致性指标 ,
在当前信息化 、 全球化 的大背景下 , 传统的手工计 算已不能满足 素, 因此在判断矩 阵不能通过一致性检 验时, 需要对 各指标问相互重 人们高效 率、 高准确度 的决策需求。 因此计算机辅助决策当仁不让地 要性程度重新进行赋值 , 直至其通过矩阵一致性检验。 其最大特征值 成为 了管理决策 的新工具、 方法。基于 此, 新 本文在充分发挥计算机 对应 的特征 向量 即为该指标相对于上一级指标的重要性排序。 强大运算功能的基础上 ,选用美国 Mah rs公司的集成数学建 tWok
基于 Malb的层次分析 法及 其运 用浅析 t a
郭 东硕 程 正敏 彭茜 ( 西南大学 经济管理学院)
满足同一层 次中各指标对 所有的下级指标均产生影响 的假定条件下 ,实现 了层次分析法的分析运算。 本程序允许 用户自由设定指标层次结构内的层次数以及各层次 内的指标数 , 通过程序的循环 , 用户只需输入 判断矩 阵的部 分数据 , 程序可依据层 次分析 法的计算流程 进行计算并作 出判断。 本程序可以方便地处理层 次分析法下较 大的运算量 , 解决层次分析法的效率问题 , 提高计算机辅助决策的时效性。 关键词 : t b层 次分析法 判断矩阵 决策 Mal a
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、概述层次分析法(Analytic Hierarchy Process, AHD)是将要决策的问题及其有关因素分解成目标、准则、方案等层次,进而进行定性和定量分析的决策方法。

它的特征是合理地将定性与定量决策结合起来,按照思维、心理的规律把决策过程细致化(层次化、数量化)。

层次分析法广泛地应用到处理复杂的决策问题,而决策是基于该方法计算出的权重,所以也常用来确定指标的权重。

层次分析法的基本思路与人们对一个决策问题的思维、判断过程大体上是一样的。

例如,选购一台笔记本电脑,假设有三种不同品牌款式的笔记本电脑A、B、C供选择。

我们一般会根据价格、外观、重量、用途、功耗、品牌等一些准则去反复比较这个三个候选。

首先,会确定这些准则在自己心目中各占多大比重,不同的人这种比重会有很大差异(喜欢玩游戏的人看重硬件性能和散热、预算有限的人看重价格等)。

其次,还会就每一个准则将A、B、C进行对比,比如A最便宜,B次之;C性能最好,B次之;C的品牌最知名等。

最后,将这两个层次的比较判断进行综合,在A、B、C中确定一台作为最符合自己需求的电脑。

二、算法步骤1. 将问题条理化、层次化,建立层次结构模型1)最高层(目标层)——只有一个元素:决策目标;2)中间层(准则层)——考虑的因素,决策的准则、子准则;3)最底层(方案层)——决策时的备选方案、措施。

层次分析法要解决的问题是,求出最底层对最高层的相对权重,以此对最底层的方案、措施进行排序,选择最优方案。

注1:为了避免两两比较判断过于复杂,每层次中各元素所支配的元素一般不要超过9个,否则应划分为若干子层;注2:层次分析法只考虑相邻两个层次间自上向下的支配作用,认为同一层次的元素间相互独立,若考虑进来需要网络分析法(ANP )。

例如前文提到的选购笔记本电脑的决策模型,可以建立如下的层次结构:2. 构造判断矩阵(成对比较矩阵)构造好层次模型后,针对某一层来讲,在比较第i 个元素与第j 个元素相对于上一层某个因素的重要性时,使用数量化的相对权重a ij 来表示,假设共有n 个元素参与比较,则矩阵1111()n ij n n n nn a a A a a a ⨯⎛⎫ ⎪== ⎪ ⎪⎝⎭LM OM L 称为判断矩阵(或成对比较矩阵)。

Saaty 根据绝大多数人认知事物的心理习惯,建议用1~9及其倒数作为标度来确定a ij 的值。

其中,2, 4, 6, 8分别介于1, 3, 5, 7, 9对应的重要程度之间。

显然,A 中的元素满足:i) a ij > 0; ii) a ji = 1/a ij ; iii) a ii =1称为正互反矩阵。

例如,选购笔记本电脑模型中,可以根据实际三台电脑的重量得到电脑对准则层B 3的判断矩阵(a ij 可以取笔记本电脑j 与i 的重量之比,重量越轻越好):311/31/5313/555/31B C A -⎛⎫ ⎪= ⎪ ⎪⎝⎭3. 层次单排序及判断矩阵的一致性检验通常用特征根法从判断矩阵导出,单一准则下元素相对排序权重。

定义若n 阶正互反矩阵 (a ij )n ×n 满足a ik a kj = a ij(对应a ij =w i /w j , 故需要a ik a kj =(w i /w k )/(w k /w j ) = a ij ),则称(a ij )n ×n 为一致性矩阵。

特征根法的基本思想是,当正互反矩阵 (a ij )n ×n 为一致性矩阵时,对应于判断矩阵的最大特征根λmax 的特征向量,经归一化后(使向量中各元素之和等于1)即为排序权向量,记为w , w 的元素为同一层次因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。

能否进行层次单排序,就看判断矩阵是否为一致性矩阵,有如下定理:定理n 阶正互反矩阵A 为一致性矩阵的充要条件是,A 的最大特征值λmax = n .在实际操作中,由于客观事物的复杂性以及人们对事物判断比较时的模糊性,很难构造出完全一致的判断矩阵。

因此,Satty 在构造层次分析法时,提出了一致性检验,所谓一致性检验是指判断矩阵允许有一定不一致的范围。

一致性检验步骤如下:1)计算判断矩阵A 的最大特征值λmax ;2)求出一致性指标(Consistencey Index ):max C.I.1nn λ-=-.=0表示完全一致,.越大越不一致;3)用随机模拟取平均的方法,求相应的平均随机一致性指标., 或者直接用Satty 模拟1000次得到的.表:4)计算一致性比率:C.I.C.R.=R.I.5)判断,当.<时,认为判断矩阵A 有满意的一致性;若.≥, 应考虑修正判断矩阵A.4. 计算各元素对目标层的合成权重(层次总排序)为了实现层次分析法的最终目的,需要从上而下逐层进行各层元素对目标合成权重的计算。

设已计算出第k-1层n k -1个元素相对于目标的合成权重为:1(1)11112(,,,)k k k k k T n w w w w -----=L再设第k 层的n k 个元素关于第k-1层第j 个元素(j=1,…,n k -1)的单一准则排序权重向量为:()()()12(,,,)k kk k k T j j j n j u u u u =L 上式对k 层的n k 个元素是完全的,若某些元素不受k-1层第j 个元素支配,相应位置用0补充,于是得到n k ×n k -1阶矩阵:111()()()11121()()()21222()()()()12k k k k k k k k k n k k k n k k k k n n n n u u u u u u U u u u ---⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭L L M M OM L 从而可以得到第k 层的n k 个元素关于目标层的合成权重向量:()()(1)k k k w U w -=按递归展开得()()(1)(3)(2)k k k w U U U w -=L写成分量形式为1()()(1)1, 1,,k n k k k i ij j k j w u w i n --===∑L各层元素对目标层的合成排序权重向量是否可以满意接受,与单一准则下的排序问题一样,需要进行综合一致性检验:当.(k)< 时,则认为层次结构在第k 层以上的判断具有整体满意的一致性。

注:实际应用中,整体一致性检验常不予进行。

主要原因是,整体考虑十分困难;其次若每个单一准则下的判断矩阵具有满意的一致性,而整体达不到满意的一致性时,调整起来非常困难。

另外,整体一致性的背景也不如单一准则下的背景清晰,它的必要性有待进一步研究。

三、Matlab实现实现层次分析法的Matlab函数:function [W,ahpResult] = ahp(C)%层次分析法%C为n×1的元胞数组,存储整个层次模型结构:第2层对第1层、第3层对第2层、...第n+1层对第n层%假设第k层有m_k个元素,从左到右依次编号1,...,m_k%C{k}也是元胞数组, k=1,...,n%C{k}{1,j}存储受第j元素支配的第k+1层各元素的判断矩阵(j=1,2,...,m_k)%C{k}{2,j}存储第k+1层各元素是否受第k层第j元素支配的(m_k+1)*1的逻辑数组,1表示支配,0表示不受支配%W返回方案层对目标层的最终权重向量%ahpResult为n×1的元胞数组, 存储层次分析过程各层的结果信息, ahpResult{k}也是元胞数组%ahpResult{k}{1,j}返回第k+1层所有元素相对第k层j元素的权重向量, 第k+1层元素不受第k层j元素支配的权重为0%ahpResult{k}{2,j}返回第k+1层所有元素相对于第k层第j元素的判断矩阵的最大特征值%ahpResult{k}{3,j}返回第k+1层所有元素相对于第k层第j元素的判断矩阵的一致性比率.RI=[0 0 ]; % 平均随机一致性指标n = length(C); %得到C的长度n, 于是知道模型总层数为n+1ahpResult = cell(n,1); % ′存储各层结果信息for k = 1:nm_k = size(C{k},2); % k层的元素个数ahpResult{k} = cell(m_k,1);for kk = 1:m_k%求第k+1层各元素对第k层kk元素的成对比较矩阵的特征值和特征向量[V,D] = eig(C{k}{1,kk});[maxD,ind] = max(diag(D)); % 求最大特征值和其位置%为存储第k+1层所有元素相对k层kk元素的权重预留出空间,长度应等于C{k}{2,kk}的长度ahpResult{k}{1,kk} = zeros(length(C{k}{2,kk}),1);%将相应正互反矩阵属于最大特征值的特征向量归一化后赋给ahpResult{k}{1,kk}中相应位置%这些位置由逻辑数组C{k}{2,kk}决定ahpResult{k}{1,kk}(C{k}{2,kk}) = V(:,ind)/sum(V(:,ind));ahpResult{k}{2,kk} = maxD; % C{k}{1,kk}正互反矩阵的最大特征值nn = size(C{k}{1,kk},1); % C{k}{1,kk}的阶数ahpResult{k}{3,kk} = (maxD-nn)/(nn-1)/RI(nn); % 相应的一致性比率.endendW = ahpResult{1}{1,1};for k = 2:n% cat(2,ahpResult{k}{1,:})把k+1层所有元素相对k层各个元素的权重向量横向排在一起生成权重矩阵U^(k)W = cat(2,ahpResult{k}{1,:})*W;end用该函数实现层次分析法的关键是,把整个层次结构存入嵌套元胞数组C中(见程序注释):C{k}——存储第k+1层与第k层的结构(k=1,…,n);设第k层有m k个元素,其中第j元素与第k+1层的结构关系存储到C{k}{…, j}中(j=1,…,m k),需要存储的信息有:①受第j元素支配的第k+1层各元素的判断矩阵②第k+1层各元素是否受第k层第j元素支配(即有没有连线)所以需要两个位置,即C{k}{1, j}和C{k}{2, j}.例1某工厂有一笔企业留成利润,需要决定如何分配使用。

已经决定有三种用途:奖金、集体福利措施、引进技术设备。

考察准则也有三个:是否能调动职工的积极性、是否有利于提高技术水平、考虑改善职工生活条件。

建立如下层次模型:经过工厂决策人员讨论,得到如下判断矩阵:1. 第2层对第1层三个元素C1, C2, C3都受A支配,判断矩阵C{1}{1,1}为相应的逻辑数组C{1}{2,1}为[true truetrue].2. 第3层对第2层(1) 第3层对第2层第1个元素C1受C1支配的只有两个元素P1和P2,判断矩阵C{2}{1,1}为相应的逻辑数组C{2}{2,1}为[true truefalse].(2) 第3层对第2层第2个元素C2受C2支配的只有两个元素P2和P3,判断矩阵C{2}{1,2}为相应的逻辑数组C{2}{2,2}为[false true true].(3) 第3层对第2层第3个元素C3受C3支配的只有两个元素P1和P2,判断矩阵C{2}{1,3}为相应的逻辑数组C{2}{2,3}为[true truefalse].3. 有了上面的分析,层次模型的元胞数组表示C已经确定,调用函数即可C = cell(2,1);%共n+1=3层, 故n=2C{1}{1,1} = [1 1/5 1/3;5 1 3;3 1/3 1];%第2层(C层)关于第1层(目标层A)的判断矩阵C{1}{2,1} = [true truetrue];%相应的逻辑数组C{2}{1,1} = [1 1/3;3 1];%第3层(P层)关于第2层第1元素C1的判断矩阵C{2}{2,1} = [true truefalse];%相应的逻辑数组C{2}{1,2} = [1 1/5;5 1];%第3层(P层)关于第2层第2元素C2的判断矩阵C{2}{2,2} = [false true true];%相应的逻辑数组C{2}{1,3} = [1 2;1/2 1];%第3层(P层)关于第2层第3元素C3的判断矩阵C{2}{2,3} = [true truefalse];%相应的逻辑数组[W,ahpResult]=ahp(C);%调用ahp求解W %输出总排序的权重向量运行结果:W =W就是方案层各个方案所占的比重,可见引进技术设备所占比重最大,改善员工福利次之。

相关文档
最新文档