您的位置:首页 > 其它

(八)层次分析法

2017-08-07 17:38 176 查看

层次分析法

层次分析法(Analytic Hierarchy Process,简称AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于上世纪70 年代初期提出的一种简便、灵活而又实用的多准则决策方法

基本原理与步骤

人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。

运用层次分析法建模,大体上可按下面四个步骤进行:

建立递阶层次结构模型

构造出各层次中的所有判断矩阵

层次单排序及一致性检验

层次总排序及一致性检验

递阶层次结构的建立与特点

应用 AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用

这些层次可以分为三类:

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

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

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

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

的元素过多会给两两比较判断带来困难。

构造判断矩阵

层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重并不一定相同,在决策者的心目中,它们各占有一定的比例

设现在要比较n个因子 X={x1,x2,⋯,xn}对某因素Z的影响大小,怎样比较才能提供可信的数据呢?Saaty 等人建议可以采取对因子进行两两比较建立成对比较矩阵的办法。即每次取两个因子xi和xj ,以aij表示xi和xj对Z的影响大小之比,全部比较结果用矩阵A=(aij)n×n表示,称 A为Z−X之间的成对比较判断矩阵(简称判断矩阵)。

从心理学观点来看,分级太多会超越人们的判断能力,既增加了作判断的难度,又容易因此而提供虚假数据。Saaty 等人还用实验方法比较了在各种不同标度下人们判断结果的正确性,实验结果也表明,采用1~9 标度最为合适。,一般地作n(n−1)2次两两判断是必要的。

层次单排序及一致性检验

判断矩阵 A对应于最大特征值λmax的特征向量W,经归一化后即为同一层次相应因素对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序

上述构造成对比较判断矩阵的办法虽能减少其它因素的干扰,较客观地反映出一对因子影响力的差别。但综合全部比较结果时,其中难免包含一定程度的非一致性

定义:满足aijajk=aik,∀i,j,k=1,2,⋯,n的正负互反矩阵称为一致矩阵

定理1:正互反矩阵A的最大特征根λmax必为正实数,其对应特征向量的所有分量均为正实数。A的其余特征值的模均严格小于λmax

定理2:若A为一致矩阵,则

A必为正互反矩阵

A的转置矩阵AT也是一致矩阵

A的任意两行成比例,比例因子大于零,从而rank(A)=1(同样,A的任意两列也成比例)

A的最大特征值λmax=n,其中n为矩阵A的阶数。A的其余特征根均为零

若A的最大特征值λmax对应的特征向量为W=(w1,w2,⋯,wn)T则aij=wiwj

定理3:n阶正互反矩阵A为一致矩阵当且仅当其最大特征根 λmax=n,且当正互反矩阵 A非一致时,必有λmax>n

从而我们可以由λmax是否等于n来检验判断矩阵A是否为一致矩阵。并且大的越多非一致性越严重,因此对判断矩阵作一致性检验非常重要,步骤如下

计算一致性指标CI=λmax−nn−1

查找相应的平均随机一致性指标RI

RI 的值是这样得到的,用随机方法构造500 个样本矩阵::随机地从1~9 及其倒数中抽取数字构造正互反矩阵,求得最大特征根的平均值代入CI求出RI

计算一致性比例CR=CIRI,当R<0.10时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正

层次总排序及一致性检验

上面我们得到的是一组元素对其上一层中某元素的权重向量。我们最终要得到各元素,特别是最低层中各方案对于目标的排序权重,从而进行方案选择。总排序权重要自上而下地将单准则下的权重进行合成。只需要简单求和加权即可

对层次总排序也需作一致性检验,检验仍象层次总排序那样由高层到低层逐层进行。这是因为虽然各层次均已经过层次单排序的一致性检验,各成对比较判断矩阵都已具有较为满意的一致性。但当综合考察时,各层次的非一致性仍有可能积累起来,引起最终分析结果较严重的非一致性

细节计算值得注意

层次分析法的应用

在应用层次分析法研究问题时,遇到的主要困难有两个:

如何根据实际情况抽象出较为贴切的层次结构

如何将某些定性的量作比较接近实际定量化处理。

层次分析法对人们的思维过程进行了加工整理,提出了一套系统分析问题的方法,为科学管理和决策提供了较有说服力的依据。但层次分析法也有其局限性,主要表现在:

它在很大程度上依赖于人们的经验,主观因素的影响很大,它至多只能排除思维过程中的严重非一致性,却无法排除决策者个人可能存在的严重片面性

比较、判断过程较为粗糙,不能用于精度要求较高的决策问题。AHP 至多只能算是一种半定量(或定性与定量结合)的方法

在应用层次分析法时,建立层次结构模型是十分关键的一步。现再分析一个实例,以便说明如何从实际问题中抽象出相应的层次结构

挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。该生根据已有信息建立了一个层次结构模型,见183页

clc,clear
fid=fopen('txt3.txt','r');
n1=6;n2=3;
a=[];
for i=1:n1
tmp=str2num(fgetl(fid));
a=[a;tmp]; %读准则层判断矩阵
end
for i=1:n1
str1=char(['b',int2str(i),'=[];']);
str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);
eval(str1);
for j=1:n2
tmp=str2num(fgetl(fid));
eval(str2); %读方案层的判断矩阵
end
end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
[x,y]=eig(a);
lamda=max(diag(y));
num=find(diag(y)==lamda);
w0=x(:,num)/sum(x(:,num));
cr0=(lamda-n1)/(n1-1)/ri(n1)
for i=1:n1
[x,y]=eig(eval(char(['b',int2str(i)])));
lamda=max(diag(y));
num=find(diag(y)==lamda);
w1(:,i)=x(:,num)/sum(x(:,num));
cr1(i)=(lamda-n2)/(n2-1)/ri(n2);
end
cr1, ts=w1*w0, cr=cr1*w0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: