层次分析法(AHP)Python实现

Posted [违规账号,无法查看]

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了层次分析法(AHP)Python实现相关的知识,希望对你有一定的参考价值。

层次分析法Python实现

I. 理论基础

  1. 建立层次结构模型

    结构模型包括目标层 O O O、准则层 A = a 1 , a 2 , … , a n A=\\a_1,a_2,\\ldots,a_n\\ A=a1,a2,,an、方案层 B = b 1 , b 2 , … , b m B=\\b_1,b_2,\\ldots,b_m\\ B=b1,b2,,bm

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

M a t r i x A = [ r 1 , 1 r 1 , 2 … r 1 , n r 2 , 1 r 2 , 2 … r 2 , n ⋮ ⋮ ⋱ ⋮ r n , 1 r n , 2 … r n , n ] Matrix_A = \\left[ \\beginmatrix r_1,1 & r_1,2 & \\ldots & r_1,n \\\\ r_2,1 & r_2,2 & \\ldots & r_2,n \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ r_n,1 & r_n,2 & \\ldots & r_n,n \\\\ \\endmatrix \\right] MatrixA= r1,1r2,1rn,1r1,2r2,2rn,2r1,nr2,nrn,n

其中, r i , j = 1 r j , i r_i,j=\\frac1r_j,i ri,j=rj,i1 r i , i = 1 r_i,i=1 ri,i=1

  1. 层次单排序与一致性检验

    3.1 计算权重

    (1)若采用均值法计算权重,则首先计算列归一化矩阵:
    N o m a l i z e M a t r i x A = [ n r 1 , 1 n r 1 , 2 … n r 1 , n n r 2 , 1 n r 2 , 2 … n r 2 , n ⋮ ⋮ ⋱ ⋮ n r n , 1 n r n , 2 … n r n , n ] NomalizeMatrix_A = \\left[ \\beginmatrix nr_1,1 & nr_1,2 & \\ldots & nr_1,n \\\\ nr_2,1 & nr_2,2 & \\ldots & nr_2,n \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ nr_n,1 & nr_n,2 & \\ldots & nr_n,n \\\\ \\endmatrix \\right] NomalizeMatrixA= nr1,1nr2,1nrn,1nr1,2nr2,2nrn,2nr1,nnr2,nnrn,n
    其中, n r i , j = r i , j S j , S j = ∑ i = 1 n r i , j , j = 1 , 2 , … , n nr_i,j=\\fracr_i,jS_j,S_j=\\sum_i=1^nr_i,j,j=1,2,\\ldots,n nri,j=Sjri,j,Sj=i=1nri,j,j=1,2,,n

    然后再计算权重,为:
    W = w 1 , w 2 , … , w n W=\\w_1,w_2,\\ldots,w_n\\ W=w1,w2,,wn
    其中, w i = ∑ j = 1 n n r i , j n , i = 1 , 2 , … , n w_i=\\frac\\sum_j=1^nnr_i,jn,i=1,2,\\ldots,n wi=层次分析法 | 过程解读 案例实践


    导读

    本文将带领读者了解 AHP 法,通过案例学习,学会使用 AHP 法解决实际问题。在适当的地方将深入了解,例如 AHP 法过程中出现的不一致情况,我们将详细讨论为什么会出现不一致情况,如何验证是否不一致,如何解决不一致情况。

    本文无代码实现,更注重 AHP 法过程本身的原理。


    文章目录


    一. AHP 层次分析法介绍

    • AHP 层次分析法简介

      AHP,即层次分析法(Analytic Hierarchy Process,AHP)是一种系统化的、层次化的多目标综合评价方法。在评价对象的待评价属性复杂多样,结构各异,难以量化的情况下AHP层次分析法也能发挥作用。

    • AHP 基本思想 [1]

      AHP 把复杂的问题分解为各个组成因素,又将这些因素按支配关系分组形成地递阶层次结构。通过两两比较的方式确定方式确定层次中诸因素的相对重要性。然后综合有人员的判断,确定备选方案相对重要性的总排序。整个过程体现了入门分解问题—判断—综合,的思想特征。

    • AHP 步骤

      1. 分析问题,明确需求,确定评价指标,并建立评价层次关系。
      2. 构造上一层每个节点与下一层的判断矩阵。
      3. 由判断矩阵得出层间的相对权重(层次单排序及一致性检验)。
      4. 计算各层对总评价目标的总权重(层次总排序),得出各备选方案的评估结果。

    注意


    下文中计算数值均四舍五入保留三位小数。一些归一化结果为了保证其结果和为1,可能存在一定的计算误差。但不影响最终结果的准确性


    二. AHP 的实际问题应用案例

    本章节我们将在选择购买空调的过程中使用 AHP 来完成决策。

    为了从三种空调,空调A、空调B、空调C,中选购最合适的空调,我们采用 AHP 法对我们的需求进行分析与评估,最终完成决策。

    1. 确定评价指标,建立层次关系

    为了选出最合适的空调,我们确定从四个指标来对空调进行评估,分别是:价格、噪声、功耗、寿命。 在 AHP 中,要构建三层层次关系:目标层、准则层、方案层。

    • 目标层
      只有一个要素,是分析问题的预期结果或期望实现的最终目标,是评价的最高准则,可称为目的或目标层
    • 准则层
      准则层可以是多层构成,其包括所要考虑的准则,子准则等。
    • 方案层
      表示实现目标所提供的各种方案与措施,是最终评价对象,决策的结果将从中选出。

    2. 构造上一层每个节点与下一层的判断矩阵

    对一层的每一个节点,与其下层的所有与其有关联的节点构建判断矩阵。

    判断矩阵描述了下一层节点之间的相对重要性或优越性。为了量化节点间的优劣先后,将用到以下判断矩阵标度定义。

    标度含义
    1两个要素相比,重要性相同
    3两要素相比,前者比后者稍微重要或有优势
    5两要素相比,前者比后者比较重要或有优势
    7两要素相比,前者比后者十分重要或有优势
    9两要素相比,前者比后者绝对重要或有优势
    2,4,6,8为上述标度之间的中间值
    若要描述后者与前者比较,则用倒数为标度。例如 1/3 描述的是,后者比前者稍微重要。

    这么说还是有些抽象,我们用以上标度为规则,来构建目标层与准则层之间的判断矩阵如下。

    选购空调价格噪声功耗寿命
    价格11/31/51
    噪声3115
    功耗5115
    寿命11/51/51

    表中描述的是为了达到目标,准则层节点之间的相对重要程度,决定这些数值大小的可以是决策者的主观判断,也可以是基于调查或文献来判断,也可以是由专家讨论决定,本文中的值都由笔者主观决定。


    如,价格行,噪声列(矩阵中坐标为[1,3])值为 1/3 ,意味着相对于价格(前者)认为噪声(后者)的重要程度为 1/3。反过来,我们也可以说相对于噪声,价格的重要程度为 3。


    因此判断矩阵是斜对角线对称元素互为倒数的。 并且规定,而在斜对角线上,要素和自身比较的标度恒 1。判断矩阵是一个正互反矩阵

    同样的,需要构建准则层每一个节点到方案层所有节点的判断矩阵。

    • 三种空调对于价格的判断矩阵
    价格空调 A空调 B空调 C
    空调 A11/71/5
    空调 B712
    空调 C51/21

    图中 [2,1] 的值为 7 ,意味着空调 B 的价格优势相对于空调 A 十分有优势。 其他同理,下面多个判断矩阵也同理。

    • 三种空调对于噪声的判断矩阵
    噪声空调 A空调 B空调 C
    空调 A125
    空调 B1/214
    空调 C1/51/41
    • 三种空调对于功耗的判断矩阵
    功耗空调 A空调 B空调 C
    空调 A131/2
    空调 B1/311/5
    空调 C251
    • 三种空调对于寿命的判断矩阵
    寿命空调 A空调 B空调 C
    空调 A11/51/3
    空调 B514
    空调 C31/41

    注意


    • 判断矩阵的值显然只需要填写上半三角区或下半三角区就可以确定整个判断矩阵,请务必保持判断矩阵的 " \\ " 向对角线对称的元素互为倒数。
    • 标度的定义是谁更重要或有优势,不是直接比较其量的大小。例如在三种空调对于功耗的判断矩阵中,[1,2] 的值为 3,指的不是空调 A 的功耗相对于空调 B 比较有大,这意味着空调 A 比空调 B 更耗电。标度的实际意思是空调 A 的功耗相对于空调 B 比较有优势,这意味着空调 A 比空调 B 更有优势,更省电。
    • 判断矩阵的数值不能随便乱填,还需要遵守逻辑规范。例如在三种空调对于寿命的判断矩阵中可知,空调 B 的寿命比空调 C 更有优势,而空调 C 也比 空调 A 更有优势,那么就不能说空调 A 比 空调 B 更有优势,这显然是违背逻辑的 ,为了避免这种逻辑上的差错,我们可以先填矩阵,后利用一致性检验(下文即将介绍)来判断我们的矩阵是否存在逻辑上的错误,若有我们则修改标度。

    3. 层次单排序及一致性检验

    所谓层次单排序,指的是:根据判断矩阵计算对于上一层的一个节点而言本层次与之有联系的所有节点的重要性次序的权重值,从而根据权重对其进行重要性排序。

    我们以目标层与准则层开始。

    选购空调价格噪声功耗寿命 w i \\mathbfw_i wi w i 0 \\mathbfw_i^0 wi0 A w i 0 \\mathbfAw_i^0 Awi0 λ m i \\mathbfλ_mi λmi
    价格11/31/510.5080.0990.4004.040
    噪声31151.9680.3811.5464.058
    功耗51152.2360.4331.7444.028
    寿命11/51/510.4470.0870.3494.011
    λ m a x = 4.033 , C . I . = 0.011 , R . I . = 0.89 , C . R . = 0.012 < 0.1 \\mathbfλ_max = 4.033,C.I. = 0.011,R.I. = 0.89,C.R. = 0.012<0.1 λmax=4.033C.I.=0.011R.I.=0.89C.R.=0.012<0.1

    连续出现了一系列的新值,我们将一一介绍。


    • w i \\mathbfw_i wi w i 0 \\mathbfw_i^0 wi0 w i \\mathbfw_i wi基于判断矩阵计算得出,采用方根法计算,其计算过程为

      1. 判断矩阵各行元素求几何平均数。


        w i = [ 1 × 1 3 × 1 5 × 1 4 3 × 1 × 1 × 5 4 5 × 1 × 1 × 5 4 1 × 1 5 × 1 5 × 1 4 ] = [ 0.508 1.968 2.236 0.447 ] \\mathbfw_i = \\left[ \\beginmatrix \\sqrt[4]1\\times\\frac13\\times\\frac15\\times1 \\\\ \\sqrt[4]3\\times1\\times1\\times5 \\\\ \\sqrt[4]5\\times1\\times1\\times5 \\\\ \\sqrt[4]1\\times\\frac15\\times\\frac15\\times1 \\\\ \\endmatrix \\right] =\\left[ \\beginmatrix 0.508\\\\ 1.968\\\\ 2.236\\\\ 0.447 \\endmatrix \\right] wi=41×31×51×1 43×1×1×5 45×1×1×5 41×51×51×1 =0.5081.9682.2360.447

      2. w i \\mathbfw_i wi 归一化得到要素相对权重 w i 0 \\mathbfw_i^0 wi0


        w 0 = [ 0.508 0.508 + 1.968 + 2.236 + 0.447 1.968 0.508 + 1.968 + 2.236 + 0.447 2.236 0.508 + 1.968 + 2.236 + 0.447 0.447 0.508 + 1.968 + 2.236 + 0.447 ] = [ 0.099 0.381 0.433 0.087 ] \\mathbfw^0 = \\left[ \\beginmatrix \\frac0.5080.508+1.968+2.236+0.447\\\\ \\frac1.9680.508+1.968+2.236+0.447\\\\ \\frac2.2360.508+1.968+2.236+0.447\\\\ \\frac0.4470.508+1.968+2.236+0.447 \\endmatrix \\right] = \\left[ \\beginmatrix 0.099 \\\\ 0.381 \\\\ 0.433 \\\\ 0.087 \\endmatrix \\right] w0=0.508+1.968+2.236+0.4470.5080.508+1.968+2.236+0.4471.9680.508+1.968+2.236+0.4以上是关于层次分析法(AHP)Python实现的主要内容,如果未能解决你的问题,请参考以下文章

        数学建模之层次分析法(AHP)

        层次分析法(AHP)Python实现

        层次分析法(Analytic Hierarchy Process,AHP)

        层次分析模型(AHP)及其MATLAB实现

        01层次分析法

        AHP层次分析法 | 过程解读 案例实践