AHP层次分析法

7 篇文章 0 订阅
订阅专栏

AHP层次分析法

1. 介绍

层次分析法(analytic hierarchy process, AHP)适用于结构较为复杂、决策准则较多而且不易量化的决策问题。

思路是紧密地和决策者的主观判断和推理联系起来,对决策者的推理过程进行量化的描述,可以避免决策者在结构复杂和方案较多时逻辑推理上失误。

层次分析法的基本内容是:

  1. 根据问题的性质和要求,提出一个总的目标;
  2. 将问题按层次分解,对同一层次内的诸因素通过两两比较的方法确定出相对于上一层目标的各自权系数
  3. 层层分析下去,直到最后一层给出所有因素或者方案相对于总目标而言的按重要性(或偏好)程度的一个排序。

2. 具体步骤

  1. 明确问题,提出总目标。
  2. 建立层次结构,把问题分解成若干层次。第一层为目标层(总目标),中间层可分为准则层(目标层)和子准则层(部门层)等,最低层一般为方案层(措施层)。
  3. 求同一层次上的权系数(从高层到低层)。
  4. 求同一层次上的组合权系数。
  5. 一致性检验。


第二步中,可建立如下分层结构图:

分层结构

第三步中,假设当前层次上的因素为 A 1 , ⋯   , A n A_1,\cdots,A_n A1,,An,相关的上一层因素为 C C C,则可针对因素 C C C,对所有因素 A 1 , ⋯   , A n A_1,\cdots,A_n A1,,An进行两两比较得到数值 a i j a_{ij} aij,数值定义如下:

相对重要程度a_ij定义解释
1同等重要目标i和j同样重要
3略微重要目标i比目标j略微重要
5相当重要目标i比目标j重要
7明显重要目标i比目标j明显重要
9绝对重要目标i比目标j绝对重要
2,4,6,8介于两相邻重要程度之间

一些符号定义:

A = ( a i j ) n × n \pmb{A}=(a_{ij})_{n \times n} AAA=(aij)n×n:因素 A 1 , ⋯   , A n A_1,\cdots,A_n A1,,An相应于上一层因素 C C C的判断矩阵。

λ m a x \lambda_{max} λmax A A A的最大特征根。

w = ( w 1 , ⋯   , w n ) T \pmb{w}=(w_1,\cdots,w_n)^T www=(w1,,wn)T:属于 λ m a x \lambda_{max} λmax的标准化的特征向量。

第四步中,设当前层次上的因素为 A 1 , ⋯   , A n A_1,\cdots,A_n A1,,An,相关的上一层因素为 C 1 , ⋯   , C m C_1,\cdots,C_m C1,,Cm,则对每个 C i C_i Ci,可得一个权向量 w i = ( w 1 i , ⋯   , w n i ) T \pmb{w}^i=(w_1^i,\cdots,w_n^i)^T wwwi=(w1i,,wni)T,如果已知上一层 m m m个因素的权重分别为 a 1 , ⋯   , a m a_1, \cdots, a_m a1,,am,则当前层每个因素的组合权系数为:

∑ i = 1 m a i w 1 i , ∑ i = 1 m a i w 2 i , ⋯   , ∑ i = 1 m a i w n i \sum^m_{i=1}a_iw^i_1, \sum^m_{i=1}a_iw^i_2,\cdots,\sum^m_{i=1}a_iw^i_n i=1maiw1i,i=1maiw2i,,i=1maiwni

由上式可知,若记 B k B_k Bk为第 k k k层次上的所有因素相对于上一层上有关因素的权向量按列组成的矩阵,则第 k k k层次的组合权系数向量 W k W^k Wk满足:

W k = B k ⋅ B k − 1 ⋯ B 2 ⋅ B 1 W^k=B_k\cdot B_{k-1}\cdots B_2\cdot B_1 Wk=BkBk1B2B1

其中 B 1 = ( 1 ) B_1=(1) B1=(1)

第五步中,在得到判断矩阵A时,有时免不了会出现判断上的不一致性,因而需要利用一致性指标来进行检验。作为度量判断矩阵偏离一致性的指标,可以用

C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n}{n-1} CI=n1λmaxn

来检查决策者判断思维的一致性。为了度量不同的判断矩阵是否具有满意的一致性,还需要利用判断矩阵的平均随机一致性指标RI。对于1阶到9阶的判断矩阵,RI的值分别为:

123456789
0.000.000.580.901.121.241.321.411.45

判断矩阵的一致性指标CI与同阶平均随机一致性指标RI相比,称为随机一致性比率,记为:

C R = C I R I CR=\frac{CI}{RI} CR=RICI

通常要求 C R ≤ 0.1 CR\leq0.1 CR0.1,此时可以认为判断矩阵具有满意的一致性,否则需要对判断矩阵进行调整。

3. 方根法与和积法

3.1 方根法

第一步,计算 w ‾ i \overline{w}_i wi,其中

w ‾ i = Π j = 1 n a i j n \overline{w}_i=\sqrt[n]{\Pi^n_{j=1}a_{ij}} wi=nΠj=1naij

第二步,将 w ‾ i \overline{w}_i wi规范化,得到 w i w_i wi

w i = w ‾ i ∑ i = 1 n w ‾ i w_i=\frac{\overline{w}_i}{\sum^n_{i=1}\overline{w}_i} wi=i=1nwiwi

其中, i = 1 , 2 , ⋯   , n i=1,2,\cdots,n i=1,2,,n

第三步,求 λ m a x \lambda_{max} λmax

λ m a x = ∑ i = 1 n ∑ j = 1 n a i j w j n w i \lambda_{max}=\sum^n_{i=1}\frac{\sum^n_{j=1}a_{ij}w_{j}}{nw_i} λmax=i=1nnwij=1naijwj

3.2 和积法

第一步,按列将 A \pmb{A} AAA规范化

b ‾ i j = a i j ∑ k = 1 n a k j \overline{b}_{ij}=\frac{a_{ij}}{\sum^n_{k=1}a_{kj}} bij=k=1nakjaij

第二步, 计算 w ‾ i \overline{w}_i wi

w ‾ i = ∑ j = 1 n b ‾ i j \overline{w}_i=\sum^n_{j=1}\overline{b}_{ij} wi=j=1nbij

第三步, 将 w ‾ i \overline{w}_i wi规范化,得到 w i w_i wi

w i = w ‾ i ∑ i = 1 n w ‾ i w_i=\frac{\overline{w}_i}{\sum^n_{i=1}\overline{w}_i} wi=i=1nwiwi

其中, i = 1 , 2 , ⋯   , n i=1,2,\cdots,n i=1,2,,n

w i w_i wi即特征向量 w w w的第 i i i个分量。

第四步, 计算 λ m a x \lambda_{max} λmax

λ m a x = ∑ i = 1 n ∑ j = 1 n a i j w j n w i \lambda_{max}=\sum^n_{i=1}\frac{\sum^n_{j=1}a_{ij}w_{j}}{nw_i} λmax=i=1nnwij=1naijwj

4. 代码示例

import numpy as np

# RI
RI=[0.0,0.0,0.58,0.9,1.12,1.24,1.32,1.41,1.45]

# 第一准则层
A = np.array([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, 1, 1]).reshape([6, 6])

# 方案层
B1 = np.array([1, 1/4, 1/2, 4, 1, 3, 2, 1/3, 1]).reshape([3, 3])
B2 = np.array([1, 1/4, 1/5, 4, 1, 1/2, 5, 2, 1]).reshape([3, 3])
B3 = np.array([1, 3, 1/3, 1/3, 1, 1, 3, 1, 1]).reshape([3, 3])
B4 = np.array([1, 1/3, 5, 3, 1, 7, 1/5, 1/7, 1]).reshape([3, 3])
B5 = np.array([1, 1, 7, 1, 1, 7, 1/7, 1/7, 1]).reshape([3, 3])
B6 = np.array([1, 7, 9, 1/7, 1, 5, 1/9, 1/5, 1]).reshape([3, 3])

class lam_w:
    def __init__(self, listw, lambda_max):
      self.listw = listw
      self.lambda_max = lambda_max

# 方根法
def lambdafunc(matrix):
    # 计算w_hat
    w_hat=[]
    a_prod=1
    for i in range(matrix.shape[0]):
        for a in matrix[i]:
            a_prod *= a
        w_hat.append(pow(a_prod,1/matrix.shape[0]))
        a_prod=1
    # print("w_hat:",w_hat)
    
    # 规范化
    w=[]
    w_sum=0
    for wi in w_hat:
        w_sum += wi
    for wi in w_hat:
        w.append(wi/w_sum)
    w = np.array(w) # 转化为数组

    # 求lambda
    aw=[]
    aw_ij=0
    lambda_max=0
    for i in range(matrix.shape[0]):
        for j in range(matrix.shape[1]):
            aw_ij += matrix[i][j]*w[j]
        aw.append(aw_ij/matrix.shape[0]/w[i])
        aw_ij=0
    for k in range(len(aw)):
        lambda_max += aw[k]
    # print("\nlambda:",lambda_max)

    # 判断CR
    CI = (lambda_max-matrix.shape[0])/(matrix.shape[0]-1)
    CR = CI/RI[matrix.shape[0]-1]

    if CR<0.1:
        print("Success! and the CR is ", round(CR,4))
    else:
        print("Wrong! because the CR is ", round(CR,4))

    # output
    result = lam_w(w, lambda_max)
    # print(result.listw)
    return result

if __name__ == '__main__':
    a = lambdafunc(A)
    b1 = lambdafunc(B1)
    b2 = lambdafunc(B2)
    b3 = lambdafunc(B3)
    b4 = lambdafunc(B4)
    b5 = lambdafunc(B5)
    b6 = lambdafunc(B6)
    b = np.vstack((b1.listw, b2.listw, b3.listw, b4.listw, b5.listw, b6.listw))
    b = b.T

    resultlist = b.dot(a.listw.T)
    list = np.argsort(resultlist)
    print("Best person's order: ",list[-1]+1)
数学建模之层次分析法及其应用
小白不白
07-28 8500
层次分析法在数学建模中是非常常见的,其原理、应用场景及实例本文里都有。希望能对数学建模爱好者、挑战者提供一些帮助。如有不清楚或错误的地方还望指出。
层次分析法
weixin_52481403的博客
07-04 1595
层次分析法 适用范围:难于完全定量分析的问题、主要用于解决评价类问题。 步骤: (i)建立递阶层次结构模型; (ii)构造出各层次中的所有判断矩阵; (iii)层次单排序及一致性检验; (iv)层次总排序及一致性检验。 递阶层次结构模型:依据元素属性及关系划分层次,上层次的元素作为准则对下层次有关元素起支配作用。 ...
层次分析法 (AHP) 的详细解析与应用
最新发布
weidl001的博客
09-14 1082
步骤描述步骤1:构建层次结构将决策问题分解为目标层、准则层和方案层,构建出多层次结构。步骤2:构造判断矩阵对同一层次的各因素进行两两比较,确定其相对重要性,构造判断矩阵。步骤3:计算权重向量通过特征值法计算判断矩阵的特征向量,得到每个因素的权重。步骤4:一致性检验通过计算一致性比率 (CR) 检查判断矩阵的一致性,确保判断结果合理。优势描述处理复杂问题适用于多准则、多层次的复杂决策问题,尤其是难以量化的定性问题。兼具定性与定量将主观判断量化,使得决策过程更加系统化和逻辑化。结构清晰。
层次分析法做(AHP)决策
07-27
这是一个vc写的用层次分析法(AHP)做决策的简单例子,采用2级结构,准则层6个元素,方案层3个元素,适用学习层次分析法来参考解决问题的朋友。注意,对判断矩阵的一致性检测本层序由于时间关系未做判断,有兴趣的朋友可以自己添加完善。
数学建模整理之层次分析法
qq_63141702的博客
01-27 1086
数学建模层次分析法
方根法公式_层次分析法中用方根法计算权重在Excel中的具体操作
weixin_39629269的博客
12-21 2378
Excel表ABCDEFGHIJKLMN1总目标子目标1子目标2子目标3子目标4Mij几何平均数权重WiAWiAWi/Wiλ=(1/n)*∑{(AWi)/Wi}CI=(λ-n)/(n-1)RI(需要查表)CR=CI/RI2子目标11342=B2*C2*D2*E2=GEOMEAN(B2:E2)=G2/G6=MMULT(B2:E2,H2:H5)=I2/H2=J6/n=(K2-1)/(n-1)n=103...
R语言--AHP层次分析法
炫炫有牛腩 的博客
02-03 2万+
常用的一种算法之一,虽说有主观性, 但比主观上直接对指标定权重科学一点。具体原理可以百度查。 文章包括:1.方根法求权重 2.判断矩阵的一致性检验 3.案例方根法求权重AHP求权重有两种方法,和积法和方根法,方根法比较好实现所以用方根法求解。##输入:judgeMatrix 判断矩阵;round 结果约分位数 ##输出:权重 weight <- function (judgeMatrix, ro
层次分析法-使用C#开发的AHP层次分析法计算器工具.zip
02-04
在本项目中,"层次分析法-使用C#开发的AHP层次分析法计算器工具.zip" 提供了一个用C#编程语言实现的AHP计算器工具。 AHP层次分析法的核心步骤包括: 1. **构建层次结构**:首先,我们需要定义决策问题,并构建一个...
AHP层次分析法matlab代码
03-30
AHP层次分析法matlab代码
AHP层次分析法V6.0-免费版.rar
12-19
层次分析法(Analytic Hierarchy Process,AHP)这是一种定性和定量相结合的、系统的、层次化的分析方法。这种方法的特点就是在对复杂决策问题的本质、影响因素及其内在关系等进行深入研究的基础上,利用较少的定量信息...
AHP层次分析法计算小程序
11-27
AHP层次分析法,全称为Analytic Hierarchy Process(分析层次过程),是一种在决策科学中广泛应用的多准则决策分析方法。由美国运筹学家萨蒂(T.L.Saaty)于20世纪70年代提出,它通过结构化的方式帮助决策者处理复杂...
层次分析法理论讲解以及实例
08-06
层次分析法是数学建模中非常好的模型之一,此资源提供了其理论知识以及实例。。。
AHP层次分析法计算权重、特征值、特征向量
11-08
AHP层次分析法计算权重、特征值、特征向量》 在数据分析和决策支持领域,层次分析法(Analytic Hierarchy Process,简称AHP)是一种广泛应用的多准则决策分析方法,由萨蒂教授提出。它通过将复杂问题分解为多层次...
一文速学数模-评价模型(一)层次分析法AHP)原理以及应用
热门推荐
master_hunter的博客
03-01 2万+
前言 博主现大三参与四次数学建模大赛,本人专业为大数据方向,由于以后或许从事数据分析行业,其实数学建模和大数据分析有很多相似之处,可以说差不多是共通的。经历了这么多次比赛个人总结一些建模必备的数据分析方法是必须要完全掌握。阅览研究许多篇博客或文章发现,AHP方法的实际运用例子都比较单一,本篇博客的愿景是希望我或者读者通过阅读这篇博客能够学会AHP方法并能实际运用,而且能够记录到你的思想之中。当然个人不是数学专业对一些专业性的知识可能不是很了解,希望读者看完能够提出错误或者看法,博主会长期维护博客做及时..
[助人为乐]层次分析法
zhangyifeng_1995的博客
04-18 1004
朋友论文需要用到层次分析法。于是回顾了一下。
层次分析法AHP
weixin_45775970的博客
04-04 1957
层次分析法的应用场景 AHP的本质是根据人们对事物的认知特征,将感性认识进行定量化的过程。 主要有以下场景: 评价、评判类的题目。例如:奥运会的评价、彩票方案的评价、城市空气质量分析等 资源分配和决策类的题目。例如:方案的选择问题,旅游景点的选择、电脑的选择、学校的选择等,可以转化为评价类题目 一些优化问题,特别是多目标优化问题。多目标规划借助层次分析法确定各个目标的权重,从而将多目标规划问题转化为可以求解的单目标规划问题 AHP的思想 层次分析法是一种系统分析与决策得综合评价方法,是在充分研究了人
ahp层次分析法_数学建模培训20_层次分析法1
weixin_39958138的博客
11-24 377
过去研究自然和社会现象主要有机理分析和统计分析两种方法,前者用典型的数学工具分析现象的因果关系,后者以随机数学为工具,通过大量观测数据寻求统计规律,近年来发展的系统分析又是一种方法,而层次分析法就是系统分析的数学工具之一。AHP (Analytic Hierarchy Process)层次分析法是美国运筹学家 T. L. Saaty (托马斯·塞蒂)教授于二十世纪80年代提出的一种实用的...
写文章

热门文章

  • 常用Latex编辑数学公式 12780
  • AHP层次分析法 4967
  • 世界经济考题与考点 3241
  • 常用终端命令(python虚拟环境+git) 1980
  • LDA隐狄利克雷分配 1913

分类专栏

  • 算法 1篇
  • 学习技巧 2篇
  • 经济学 1篇
  • 编程 7篇

大家在看

  • 数据库系列&MySQL系列【亲测有效】:MySQL配置允许远程连接【简单版】 259
  • WPF的UpdateSourceTrigger属性
  • 股票最大利润 100
  • 【安徽医科大学第二附属医院(互联网医院)-注册安全分析报告-无验证方式导致安全隐患】 428
  • 3175. 找到连续赢 K 场比赛的第一位玩家(Python)

最新文章

  • LDA隐狄利克雷分配
  • 常用终端命令(python虚拟环境+git)
  • 2018.09.28 模拟退火算法研究日志
2022年1篇
2019年2篇
2018年5篇
2016年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家张掖玻璃钢动物雕塑哪家好濮阳玻璃钢雕塑订做武汉玻璃钢人物不锈钢雕塑公司天津省玻璃钢雕塑哪里有龙岩模压法玻璃钢雕塑公司销售好的玻璃钢卡通雕塑湖州玻璃钢雕塑商家玻璃钢雕塑性能怎么样苏州玻璃钢雕塑装饰玻璃钢雕塑设计商湖北玻璃钢雕塑茶几商场美陈地台材料玻璃钢马雕塑吉林步行街玻璃钢雕塑浙江创意玻璃钢雕塑制作园林玻璃钢卡通雕塑要求康平玻璃钢花盆花器安徽玻璃钢酒店人物雕塑北京商场美陈价格柳州小区玻璃钢雕塑定制大庆景区玻璃钢雕塑生产厂家玻璃钢雕塑底座图片临沂哪里做玻璃钢雕塑栖霞商场新年美陈商场美陈风格上饶玻璃钢景观雕塑商场店内美陈网红打卡元素建议玻璃钢雕塑造价伊犁玻璃钢卡通雕塑江苏超市商场美陈有哪些香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化