1、层次分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较 为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问 题。它是美国运筹学家 T. L. Saaty 教授于 70 年代初期提出的一种简便、灵活 而又实用的多准则决策方法。 1 层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。 层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i)建立递
2、阶层次结构模型; (ii )构造出各层次中的所有判断矩阵; (iii)层次单排序及一致性检验; (iv)层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1 递阶层次结构的建立与特点 应用 AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的 结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其 属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配 作用。这些层次可以分为三类: (i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想 结果,因此也称为目标层。 (ii)中间层:这一层次中包含了为实现目标所涉及的
3、中间环节,它可以由若干 个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii)最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等, 因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地 层次数不受限制。每一层次中各元素所支配的元素一般不要超过 9 个。这是因为 支配的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例 1 假期旅游有 、 、 3 个旅游胜地供你选择,试确定一个最佳地点。 在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反 复比较 3 个侯选地点。可以建立
4、如下的层次结构模型。 目标层 选择旅游地 准则层 景色 费用 居住 饮食 旅途 措施层 1.2 构造判断矩阵 层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重 并不一定相同,在决策者的心目中,它们各占有一定的比例。 在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难是这些比 重常常不易定量化。此外,当影响某因素的因子较多时,直接考虑各因子对该因 素有多大程度的影响时,常常会因考虑不周全、顾此失彼而使决策者提出与他实 际认为的重要性程度不相一致的数据,甚至有可能提出一组隐含矛盾的数据。为 看清这一点,可作如下假设:将一块重为 1 千克的石块砸成 小块,你可以精
5、确 称出它们的重量,设为 ,现在,请人估计这 小块的重量占总重量的比例(不能 让他知道各小石块的重量),此人不仅很难给出精确的比值,而且完全可能因顾 此失彼而提供彼此矛盾的数据。 设现在要比较 个因子 对某因素 的影响大小,怎样比较才能提供可信的数据 呢?Saaty 等人建议可以采取对因子进行两两比较建立成对比较矩阵的办法。即 每次取两个因子 和 ,以 表示 和 对 的影响大小之比,全部比较结果用矩阵 表 示,称 为 之间的成对比较判断矩阵(简称判断矩阵)。容易看出,若 与 对 的 影响之比为 ,则 与 对 的影响之比应为 。 定义 1 若矩阵 满足 (i) ,(ii ) ( ) 则称之为正互
6、反矩阵(易见 , )。 关于如何确定 的值,Saaty 等建议引用数字 19 及其倒数作为标度。下表列出 了19 标度的含义: 标度 含 义 1 3 5 7 9 2,4,6 ,8 倒数 表示两个因素相比,具有相同重要性 表示两个因素相比,前者比后者稍重要 表示两个因素相比,前者比后者明显重要 表示两个因素相比,前者比后者强烈重要 表示两个因素相比,前者比后者极端重要 表示上述相邻判断的中间值 若因素 与因素 的重要性之比为 ,那么因素 与因素 重要性之比为 。 从心理学观点来看,分级太多会超越人们的判断能力,既增加了作判断的难度, 又容易因此而提供虚假数据。Saaty 等人还用实验方法比较了在
7、各种不同标度下 人们判断结果的正确性,实验结果也表明,采用 19 标度最为合适。 最后,应该指出,一般地作 次两两判断是必要的。有人认为把所有元素都和某 个元素比较,即只作 个比较就可以了。这种作法的弊病在于,任何一个判断的 失误均可导致不合理的排序,而个别判断的失误对于难以定量的系统往往是难以 避免的。进行 次比较可以提供更多的信息,通过各种不同角度的反复比较,从 而导出一个合理的排序。 1.3 层次单排序及一致性检验 判断矩阵 对应于最大特征值 的特征向量 ,经归一化后即为同一层次相应因素 对于上一层次某因素相对重要性的排序权值,这一过程称为层次单排序。 上述构造成对比较判断矩阵的办法虽
8、能减少其它因素的干扰,较客观地反映出一 对因子影响力的差别。但综合全部比较结果时,其中难免包含一定程度的非一致 性。如果比较结果是前后完全一致的,则矩阵 的元素还应当满足: , (1) 定义2 满足关系式(1)的正互反矩阵称为一致矩阵。 需要检验构造出来的(正互反)判断矩阵 是否严重地非一致,以便确定是否接 受 。 定理 1 正互反矩阵 的最大特征根 必为正实数,其对应特征向量的所有分量均 为正实数。 的其余特征值的模均严格小于 。 定理 2 若 为一致矩阵,则 (i) 必为正互反矩阵。 (ii) 的转置矩阵 也是一致矩阵。(iii) 的任意两行成比例,比例因子大于零,从而 (同样, 的任意两
9、列也成 比例)。 (iv) 的最大特征值 ,其中 为矩阵 的阶。 的其余特征根均为零。 (v)若 的最大特征值 对应的特征向量为 ,则 , ,即 定理 3 阶正互反矩阵 为一致矩阵当且仅当其最大特征根 ,且当正互反矩阵 非一致时,必有 。 根据定理 3,我们可以由 是否等于 来检验判断矩阵 是否为一致矩阵。由 于特征根连续地依赖于 ,故 比 大得越多, 的非一致性程度也就越严重, 对 应的标准化特征向量也就越不能真实地反映出 在对因素 的影响中所占的比 重。因此,对决策者提供的判断矩阵有必要作一次一致性检验,以决定是否能接 受它。 对判断矩阵的一致性检验的步骤如下: (i)计算一致性指标 (i
10、i)查找相应的平均随机一致性指标 。对 ,Saaty 给出了 的值,如下表所 示: 1 2 3 4 5 6 7 8 9 0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 的值是这样得到的,用随机方法构造 500 个样本矩阵:随机地从 19 及其倒数中 抽取数字构造正互反矩阵,求得最大特征根的平均值 ,并定义 。 ()计算一致性比例 当 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 1.4 层次总排序及一致性检验 上面我们得到的是一组元素对其上一层中某元素的权重向量。我们最终要得到各 元素,特别是最低层中各方案对于目标的排序权重,从而进行方案选
11、择。总排序 权重要自上而下地将单准则下的权重进行合成。 设上一层次( 层)包含 共 个因素,它们的层次总排序权重分别为 。又设其后 的下一层次( 层)包含 个因素 ,它们关于 的层次单排序权重分别为 (当 与 无关联时, )。现求 层中各因素关于总目标的权重,即求 层各因素的层次总 排序权重 ,计算按下表所示方式进行,即 , 。 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 (方案层) 1 1/4 1/2 1 1/4 1/5 4 1 3 4 1 1/2 2
12、1/3 1 5 2 1 1 3 1/3 1 1/3 5 1/3 1 7 3 1 7 3 1/7 1 1/5 1/7 1 1 1 7 1 7 9 1 1 7 1/7 1 1 1/7 1/7 1 1/9 1 1 (层次总排序)如下表所示。 准则 研究 发展 待遇 同事 地理 单位 课题 前途 情况 位置 名气 总排序权值 准则层权值 0.1507 0.1792 0.1886 0.0472 0.1464 0.2879 方案层 单排序 权值 工作 1 工作 2 工作 3 0.1365 0.0974 0.2426 0.2790 0.4667 0.7986 0.6250 0.3331 0.0879 0.6
13、491 0.4667 0.1049 0.2385 0.5695 0.6694 0.0719 0.0667 0.0965 0.3952 0.2996 0.3052 根据层次总排序权值,该生最满意的工作为工作 1。 计算程序如下: clc 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; x,y=eig(a);eigenvalue=diag(y);lamda=eigenvalue(1); ci1=(lamda-6)/5;cr1=ci1/1.24 w1=x(:
14、,1)/sum(x(:,1) b1=1,1/4,1/2;4,1,3;2,1/3,1; x,y=eig(b1);eigenvalue=diag(y);lamda=eigenvalue(1); ci21=(lamda-3)/2;cr21=ci21/0.58 w21=x(:,1)/sum(x(:,1) b2=1 1/4 1/5;4 1 1/2;5 2 1; x,y=eig(b2);eigenvalue=diag(y);lamda=eigenvalue(1); ci22=(lamda-3)/2;cr22=ci22/0.58 w22=x(:,1)/sum(x(:,1) b3=1 3 1/3;1/3 1
15、1/7;3 7 1; x,y=eig(b3);eigenvalue=diag(y);lamda=eigenvalue(1); ci23=(lamda-3)/2;cr23=ci23/0.58 w23=x(:,1)/sum(x(:,1) b4=1 1/3 5;3 1 7;1/5 1/7 1; x,y=eig(b4);eigenvalue=diag(y);lamda=eigenvalue(1); ci24=(lamda-3)/2;cr24=ci24/0.58 w24=x(:,1)/sum(x(:,1) b5=1 1 7;1 1 7;1/7 1/7 1; x,y=eig(b5);eigenvalue=
16、diag(y);lamda=eigenvalue(2); ci25=(lamda-3)/2;cr25=ci25/0.58 w25=x(:,2)/sum(x(:,2) b6=1 7 9;1/7 1 1 ;1/9 1 1; x,y=eig(b6);eigenvalue=diag(y);lamda=eigenvalue(1); ci26=(lamda-3)/2;cr26=ci26/0.58 w26=x(:,1)/sum(x(:,1) w_sum=w21,w22,w23,w24,w25,w26*w1 ci=ci21,ci22,ci23,ci24,ci25,ci26; cr=ci*w1/sum(0.58
17、*w1) 习 题 八 1. 若发现一成对比较矩阵 的非一致性较为严重,应如何寻找引起非一致性的元 素?例如,设已构造了成对比较矩阵 (i)对 作一致性检验。 (ii)如 的非一致性较严重,应如 %层次分析法的 matlab 程序 disp(请输入判断矩阵 A(n 阶); A=input(A=); n,n=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); 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.0
18、001;i=2;k=abs(m(2)-m(1); while kp i=i+1; x(:,i)=A*y(:,i-1); 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); %以下是一致性检验 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; CR=CI/R
19、I(n); if CRp% 当kp 是执行循环体 i=i+1;% i 自加 1 x(:,i)=A*y(:,i-1);% x 的第 i 列等于 A*y 的第 i-1 列 m(i)=max(x(:,i);% m 的第i 个分量等于 x 第 i 列中最大的值 y(:,i)=x(:,i)/m(i);% y 的第 i 列等于 x 的第 i 列除以 m 的第 i 个分量 k=abs(m(i)-m(i-1);% k 等于 m(i)-m(i-1)的绝对值 end a=sum(y(:,i);% y 的第 i 列的和赋予 a w=y(:,i)/a;% y 的第 i 列除以 a t=m(i);% m 的第 i 个分量赋给 t disp(权向量:);disp(w);% 显示权向量 w disp(最大特征值:);disp(t);% 显示最大特征值 t %以下是一致性检验 CI=(t-n)/(n-1);% t-维度再除以维度-1 的值赋给 CI 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;% 计算的标准 CR=CI/RI(n);% 计算一致性 if CR=0.10 disp(input(层次总排序没通过一致性检验,请重新调整判断矩阵); else disp(input(层次总排序通过一致性检验); end