层次分析法(AHP)

层次分析法(AHP)是一种多目标决策分析方法,由托马斯·塞蒂提出,通过分解问题、构建层次结构模型、比较权重和一致性检验,解决复杂决策问题。它结合定性和定量分析,广泛应用于方案选取、评价和指标体系优化。本文详细介绍了AHP的原理、步骤和优缺点,以及实际应用案例和一致性检验的考量因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是层次分析法

层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代初期由美国匹兹堡大学运筹学家托马斯·塞蒂(T.L. Saaty)在为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”的课题时提出。它是一种应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

  1. 是在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。
  2. 是对社会、经济以及管理领域的问题进行系统分析时,面临的经常是一个由相互关联、相互制约的众多因素构成的复杂系统。层次分析法则为研究这类复杂的系统,提供了一种新的、简洁的、实用的决策方法。
  3. 是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的课题。

决策分析法原理
层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

特征:
合理地将定性与定量的决策结合起来,按照思维、心理的规律把决策过程层次化、数量化。是系统科学中常用的一种系统分析(其中层次化多是目标层、指标层、方案层,数量化就是进行权重设置)

层次分析法的三大应用场景:
用于最佳方案的选取(选择哪个运动员比赛、选择哪个地方建厂)
用于评价类的问题(评价水质状况、评价环境)
用于指标体系的优先(兼顾科学和效率)对指标进行筛选排序,缩小指标个数增加可信度

层次分析法的步骤和方法

步骤:
(1)建立层次结构模型
(2)构造判断(成对比较)矩阵
(3)层次单排序及其一致性检验
(4)层次总排序及其一致性检验

1.建立层次结构模型

将决策的目标、考虑的因素 (决策准则) 和决策对象按它们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图
最高层:决策的目的、要解决的问题
中间层:考虑的因素、决策的准则
最低层:决策时的备选方案
也有特殊的是两层,分别是目标层和因素层。这个时候是要判断指标的权重,从而达到上面所提到的指标体系优化
例:
在这里插入图片描述
层次分析法所要解决的问题是关于最低层对最高层的相对权重问题,按此相对权重可以对最低层中的各种方案、措施进行排序,从而在不同的方案中作出选择或形成选择方案的原则。

2.构造判断(成对比较)矩阵

在确定各层次各因素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而Saaty等人提出:一致矩阵法
一致矩阵法:

  • 不把所有因素放在一起比较,而是两两相互比较
  • 对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。

判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较。判断矩阵的元素a用Santy的1-9标度方法给出。
在这里插入图片描述

补充:心理学家认为进行两两比较的因素不宜超过九个,即每层的因素不能超过九个。这样的话就会让人难以做出抉择

如下图:
在这里插入图片描述
其中A就是判断矩阵,本题中的判断矩阵是针对准则层对目标层的重要程度情况来写的

上述判断矩阵中的每个位置元素表示下标中左数对应指标比右数对应指标的重要程度。比如 a 12 a_{12} a12就表示景色/费用为1/2,说明景色比费用稍微不重要。注意 a i j = 1 / a j i a_{ij}=1/a_{ji} aij=1/aji,是互相倒数的关系而不是负数。所以矩阵对角线元素一定是1,且矩阵为一致阵

但是上述矩阵存在问题
在这里插入图片描述
在这里插入图片描述
也就是说,存在 a i k a_{ik} aik a k j a_{kj} akj不等于 a i j a_{ij} aij的情况,称作不一致情况,但是这种情况是允许存在的,因为是人为的给予,比如两个稍微重要叠加不一定就是特别重要。但是这个不一样要有个范围,如何确定范围呢?就要用一致性检验

层次单排序及其一致性检验

对应于判断矩阵最大特征根 入 的特征向量,经归一化(使向量中各元素之和等于1)后记为W。

补充:归一化的方法是每个元素除以所有元素的和

W的元素为同一层次因素对于上一层次因素某因素相对重要性的排序权值,这一过程称为层次单排序。(w就是权重值的集合,而且所有元素和是1)
能否确认层次单排序,需要进行一致性检验,所谓一致性检验是指对A确定不一致的允许范围。(一次性检验是用于检验w是否符合不一致的范围)
定理1: n阶一致阵的唯一非零特征根为n
定理2: n阶正互反阵A的最大特征根 入>=n,当且仅当入=n 时A为一致阵
入越接近n,那么一致性越强,判断误差越小
在这里插入图片描述
但是这种判断方法仍然存在缺陷,它只说明CI越接近0,一致性越好,但是没说CI具体是多少,0.1和0.01都是接近0,但是哪个是符合的呢?
于是又引入RI,是发明者进行随机生成大量的判断矩阵,然后求CI的平均值(RI),最终得出以下规律
在这里插入图片描述
在这里插入图片描述
当CR小于0.1的时候才说明判断矩阵A是符合一致性检验的,即不一致性是在可接受的范围内,w可作为权重向量,否则就要重新进行比较生成新的判断矩阵

对于之前的例题一致性检验的过程:
在这里插入图片描述
还有一种比较简单的求取权向量W的方法:
对于一致性判断矩阵来说,每一列的向量都可以进行归一化处理(让其和等于1),对各列进行归一化处理之后,让每一行相加,得到一个列向量就是W,然后利用AW=入W求得入,结果与精确计算的结果一致
在这里插入图片描述

层次总排序及其一致性检验

1.定义
计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。
这一过程是从最高层次到最低层次依次进行的

2.求解过程
这一步是在已知单层因素对上一层的相对重要性排序的前提下进行。

在这里插入图片描述

对于第二层对第一层的权向量和三中的一致,就是求W。那么对于第三层对第一层的权向量如何求解呢?

针对第二层的每一个因素,第三层都会生成一个判断矩阵,然后得到W,最后会生成m个W。接下来就是求第三层的每个元素对于第一层的权向量,比如对于B1,每一个W的第一个元素都是B1对于第二层中不同元素的权重,使它们分别乘以对应第二层元素对于Z的权重值然后相加,就可以得到B1对于Z的权重
在这里插入图片描述
那么B1=0.595·0.263+0.082·0.475+0.429·0.055+0.633·0.090+0.166·0.110

示例:

1.先计算下层对上层的判断矩阵及其特征向量和特征值,并进行一致性检验。
在这里插入图片描述
w的下标为A的序号。也就是将上一层的某一因素当做单一目标,分别构造下层因素对上一层某一因素的判断矩阵(因为对于不同的准则,下层各因素权重选择不一样,也就有不同的判断矩阵),并计算特征向量和特征值,并做一致性检验。

2.一致性检验与组合权向量计算
在这里插入图片描述
理解:方案P1对目标的影响也就是,P1对上一层(A层)每一因素的影响再累积到对目标层的影响,而P1在对每一个A层因素为目标时的相对重要性不一样,所以P1对目标层的影响也就是B矩阵的第一行,所以B的第一行分别乘A的重要性排序向量,也就得到了P1对目标的权重。

3.一致性检验
在这里插入图片描述
其中CI是第三层针对第二层的每一个W的CI

若CR<0.1,则通过一致性检验

同时也要对每个第三层得到的判断矩阵进行一致性检验,方法和层次单排序一致性检验一样。

分析法的步骤归纳

1.建立层次结构模型
该结构图包括目标层,准则层,方案层。

2.构造成对比较矩阵
从第二层开始用成对比较矩阵和1-9尺度。

3.计算单排序权向量并做一致性检验
对每个成对比较矩阵计算最大特征值及其对应的特征向量,利用一致性指标、随机一致性指标和一致性比率做一致性检验若检验通过,特征向量(归一化后) 即为权向量;若不通过需要重新构造成对比较矩阵。

4.计算总排序权向量并做一致性检验
计算最下层对最上层总排序的权向量。

利用总排序一致性比率:
在这里插入图片描述
进行检验。若通过,则可按照总排序权向量表示的结果进行决策,否则需要重新考虑模型或重新构造那些一致性比率CR较大的成对比较矩。

注意:一定要进行一致性检验,否则的话层次性检验的主观性太大,判断矩阵可能会出错

层次分析法的代码

Python 代码:

import numpy as np
from scipy.linalg import eig

# 构建对比矩阵
comparison_matrix = np.array([[1,1/2,1/3]
                            ,[2,1,1]
                            ,[3,1,1]]
)

# 计算权重向量
eigenvalues, eigenvectors = eig(comparison_matrix)
weights = np.real_if_close(eigenvectors[:, 0] / np.sum(eigenvectors[:, 0]))

# 进行一致性检验
n = comparison_matrix.shape[0]
lambda_max = np.real_if_close(np.max(eigenvalues))
CI = (lambda_max - n) / (n - 1)
RI = np.array([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])  # 随机一致性指标表
CR = CI / RI[n-1]

# 打印结果
print("权重向量:", weights)
print("最大特征根:", lambda_max)
print("一致性比率:", CR)

Matlab 代码:

%判断是否符合一致性范围、找最大特征值和特征向量
disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);%n是A的阶数
[V,D]=eig(A);%求得特征向量和特征值
            %求出最大特征值和它所对应的特征向量
%V是整个矩阵的特征向量,D是对角线矩阵,对角线元素就是所有的特征值
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));%最大特征值对应的特征向量,记为w
w=w/sum(w);%归一化处理
t=D(pos,pos);%最大特征值记为t
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];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评分!');
end

层次分析法的优缺点

层次分析法的优点

系统性:将对象视作系统,按照分解、比较、判断、综合的思维方式进行决策。成为继机理分析、统计分析之后发展起来的系统分析的重要工具;

实用性:一定性与定量相结合,能处理许多用传统的最优化技术无法着手的实际问题,应用范围很广,同时,这种方法使得决策者与决策分析者能够相互沟通,决策者甚至可以直接应用它,这就增加了决策的有效性;

简洁性:计算简便,结果明确,具有中等文化程度的人即可以了解层次分析法的基本原理并掌握该法的基本步骤,容易被决策者了解和掌握。便于决策者直接了解和掌握。

层次分析法的缺点

囿旧:只能从原有的方案中优选一个出来,没有办法得出更好的新方案;

粗略:该法中的比较、判断以及结果的计算过程都是粗糙的,不适用于精度较高的问题;

主观:从建立层次结构模型到给出判断矩阵,人主观因素对整个过程的影响很大,这就使得结果难以让所有的决策者接受。当然采取专家群体判断的办法是克服这个缺点的一种途径。每一层因素的权重是主观给出,在某些场合会影响泛化性。

注意事项

1.如果所选的要素不合理,其含义混淆不清,或要素间的关系不正确,都会降低AHP法的结果质量,甚至导致AHP法决策失败。

为保证递阶层次结构的合理性,需把握以下原则:
(1)分解简化问题时把握主要因素,不漏不多;
(2)注意相比较元素之间的强度关系,相差太悬殊的要素不能在同一层次比较。

2.针对某一个标准,计算各下层因素的权重:

关于判断矩阵权重计算的方法有两种,即几何平均法(根法)和规范列平均法(和法)。
(1)几何平均法(根法)

计算判断矩阵A各行各个元素mi的乘积;

计算mi的n次方根;

对向量进行归一化处理;

该向量即为所求权重向量。

(2)规范列平均法(和法)

计算判断矩阵A各行各个元素mi的和;

将A的各行元素的和进行归一化;

该向量即为所求权重向量。

然后再计算出特征值。

3.一致性检验
构造好判断矩阵后,需要根据判断矩阵计算针对某一准则层各元素的相对权重,并进行一致性检验。虽然在构造判断矩阵A时并不要求判断具有一致性,但判断偏离一致性过大也是不允许的。因此需要对判断矩阵A进行一致性检验。

完整例子分析

1 旅游问题
对关于文中提到的旅游问题进行完整的一个计算分析。

1.1 层次分析模型构建
在这里插入图片描述
1.2 构造判断矩阵
在这里插入图片描述
1.3 计算层次单排序的权向量和一致性检验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值