精华内容
下载资源
问答
  • Python实现“层次分析法”及“自调节层次分析法

    多人点赞 热门讨论 2021-04-18 19:46:49
    Python实现“层次分析法”及“自调节层次分析法” 假设我们遇到如下问题: ①对于M个方案,每个方案有N个属性,在已知各个方案每个属性值&&任意两个属性的重要程度的前提下,如何选择最优的方案? ②对于一...

    Python实现“层次分析法”及“自调节层次分析法”

    假设我们遇到如下问题:
    ①对于M个方案,每个方案有N个属性,在已知各个方案每个属性值&&任意两个属性的重要程度的前提下,如何选择最优的方案?
    ②对于一个层级结构,在已知各底层指标相互之间的重要程度下,如何确定各底层指标对最高级指标的权值?
    … …
    此时,便可用层次分析法将我们的主观想法——“谁比谁重要”转换为客观度量——“权值”

    层次分析法

    层次分析法的基本思想是将复杂问题分为若干层次和若干因素,在同一层次的各要素之间简单地进行比较判断和计算,并评估每层评价指标对上一层评价指标的重要程度,确定因素权重,从而为选择最优方案提出依据。步骤如下:
    (1)根据自己体系中的关联及隶属关系构建有层次的结构模型,一般分为三层,分别为最高层、中间层和最低层。
    在这里插入图片描述

    (2)构造判断矩阵
    假设该层有n个评价指标u1, u2, …, un,设cij为ui相对于uj的重要程度,根据公式列出的1-9标度法,判断两两评价指标之间的重要性。
    在这里插入图片描述
    根据比较得出判断矩阵:
    C=(cij)n*n其属性为cij>0, cji=1/cij,cii=1

    (3)层次单排序:从下往上,对于每一层的每个判断矩阵,计算权向量和一致性检验。
    计算矩阵C的最大特征根λmax及对应的特征向量(P1,P2,…, Pn)
    一致性指标定义为: C I = λ max ⁡ − n n − 1 CI = \frac{{{\lambda _{\max }} - n}}{{n - 1}} CI=n1λmaxn
    CI(Consistency Ratio)称为一致性比例。CI=0时,具有完全一致性;CI接近于0,具有满意的一致性;CI越大,不一致性越严重。
    一致性比率定义为: C R = C I R I < 0.1 {\rm{CR}} = \frac{{{\rm{CI}}}}{{{\rm{RI}}}} < 0.1 CR=RICI<0.1
    其中RI称为随机性指标,参照表如下:
    在这里插入图片描述
    只有当CR<0.1,则认为该判断矩阵通过了一致性检验,即该矩阵自相矛盾产生的误差可忽略。将矩阵C最大特征根对应的特征向量元素作归一化处理,即可得到对应的权重集(C1,C2,…,Cn)。
    (4)层次总排序
    从上往下,依次计算每一层各指标对最上层指标的权值,以及每一层的综合一致性比率CR。

    自调节层次分析法——赵中奇

    由于层次分析法选用1-9标度构建判断矩阵,而大部分时候我们自己也不能很好度量重要性的程度,故赵中奇提出用-1,0,1三标度来构建判断矩阵。同时,自动调整判断矩阵,消除前后时刻主观比较重要性时的矛盾现象,即让矩阵变为一致性矩阵(CR=0)。构建并调整判断矩阵以及算权值向量的步骤如下:
    (1)初始化m=1
    a、确定比较矩阵C=(cij)n*n的第m行元素
    在这里插入图片描述
    b、划分指标集合Dm={j|j=m+1,…,n}为
    Hm={j|cmj=-1,j∈Dm}、Mm={j|cmj=0,j∈Dm}与Lm={j|cmj=1,j∈Dm}
    并构造集合为,其中×表示集合的笛卡尔积
    在这里插入图片描述
    c、若DLm、DMm、DHm全为空集,转d,否则令:
    在这里插入图片描述
    d、若m=n-1,转第二步,否则令m=m+1,转回a
    (2)求比较矩阵C
    在这里插入图片描述
    (3)求B=(bij)n*n,其中
    在这里插入图片描述
    (4)求A=(aij)n*n的特征向量,作为各评价指标的相对权重值,其中:
    在这里插入图片描述

    实例分析

    由于网上找到的代码大多只能算三层的体系,而且没有赵中奇论文中的自调节层次分析法代码。因此,自己写了一个可以计算超过3层的层次分析法和自调节层次分析法代码!

    构建如下4层体系

    在这里插入图片描述

    层次分析法得到的权值

    判断矩阵就不列出来了了,可以在代码里找到,得到第四层对A的权值条形图如下:
    在这里插入图片描述

    自调节层次分析法得到的权值

    自调节层次分析法对高阶判断矩阵更有优势,而算低阶判断矩阵时的结果和层次分析法差不多。
    在这里插入图片描述

    代码

    代码包括了层次分析法与自调节层次分析法的实例,运行的时候注释掉其中一个就行!

    """
    Created on Tue Jan 26 10:12:30 2021
    自适应层数的层次分析法求权值
    @author: lw
    """
    
    import numpy as np
    import itertools
    import matplotlib.pyplot as plt
    
    #自适应层数的层次分析法
    class AHP():
        '''
        注意:python中list与array运算不一样,严格按照格式输入!
        本层次分析法每个判断矩阵不得超过9阶,各判断矩阵必须是正互反矩阵
        FA_mx:下一层对上一层的判断矩阵集(包含多个三维数组,默认从目标层向方案层依次输入判断矩阵。同层的判断矩阵按顺序排列,且上层指标不共用下层指标)
        string:默认为'norm'(经典的层次分析法,需输入9标度判断矩阵),若为'auto'(自调节层次分析法,需输入3标度判断矩阵)
        '''
        
        #初始化函数
        def __init__(self,FA_mx,string='norm'):
            self.RI=np.array([0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49])   #平均随机一致性指标
            if string=='norm':
                self.FA_mx=FA_mx           #所有层级的判断矩阵
            elif string=='auto':
                self.FA_mx=[]
                for i in range(len(FA_mx)):
                      temp=[] 
                      for j in range(len(FA_mx[i])):
                          temp.append(self.preprocess(FA_mx[i][j]))
                      self.FA_mx.append(temp)     #自调节层次分析法预处理后的所有层级的判断矩阵
            self.layer_num=len(FA_mx)   #层级数目
            self.w=[]                  #所有层级的权值向量
            self.CR=[]                 #所有层级的单排序一致性比例
            self.CI=[]                 #所有层级下每个矩阵的一致性指标
            self.RI_all=[]              #所有层级下每个矩阵的平均随机一致性指标
            self.CR_all=[]             #所有层级的总排序一致性比例
            self.w_all=[]              #所有层级指标对目标的权值
            
            
        #输入单个矩阵算权值并一致性检验(特征根法精确求解)
        def count_w(self,mx):
            n=mx.shape[0]
            eig_value, eigen_vectors=np.linalg.eig(mx)
            maxeig=np.max(eig_value)         #最大特征值
            maxindex=np.argmax(eig_value)    #最大特征值对应的特征向量
            eig_w=eigen_vectors[:,maxindex]/sum(eigen_vectors[:,maxindex])         #权值向量
            CI=(maxeig-n)/(n-1)
            RI=self.RI[n-1]
            if(n<=2 and CI==0):
                    CR=0.0
            else:
                CR=CI/RI
            if(CR<0.1):
                return CI,RI,CR,list(eig_w.T)
            else:
                print('该%d阶矩阵一致性检验不通过,CR为%.3f'%(n,CR))
                return -1.0,-1.0,-1.0,-1.0
        
        #计算单层的所有权值与CR
        def onelayer_up(self,onelayer_mx,index):
            num=len(onelayer_mx)           #该层矩阵个数
            CI_temp=[]
            RI_temp=[]
            CR_temp=[]
            w_temp=[]
            for i in range(num):
                CI,RI,CR,eig_w=self.count_w(onelayer_mx[i])
                if(CR>0.1):
                    print('第%d层的第%d个矩阵未通过一致性检验'%(index,i+1))
                    return
                CI_temp.append(CI)
                RI_temp.append(RI)
                CR_temp.append(CR)
                w_temp.append(eig_w)
            self.CI.append(CI_temp)
            self.RI_all.append(RI_temp)
            self.CR.append(CR_temp)
            self.w.append(w_temp)
            
        #计算单层的总排序及该层总的一致性比例
        def alllayer_down(self):
            self.CR_all.append(self.CR[self.layer_num-1])
            self.w_all.append(self.w[self.layer_num-1])
            for i in range(self.layer_num-2,-1,-1):
                if(i==self.layer_num-2):
                    temp=sum(self.w[self.layer_num-1],[])         #列表降维,扁平化处理,取上一层的权值向量
                CR_temp=[]
                w_temp=[]
                CR=sum(np.array(self.CI[i])*np.array(temp))/sum(np.array(self.RI_all[i])*np.array(temp))
                if(CR>0.1):
                    print('第%d层的总排序未通过一致性检验'%(self.layer_num-i))
                    return
                for j in range(len(self.w[i])):
                    shu=temp[j]
                    w_temp.append(list(shu*np.array(self.w[i][j])))
                temp=sum(w_temp,[])        #列表降维,扁平化处理,取上一层的总排序权值向量
                CR_temp.append(CR)
                self.CR_all.append(CR_temp)
                self.w_all.append(w_temp)
            return
            
            
            
        #计算所有层的权值与CR,层次总排序
        def run(self):
            for i in range(self.layer_num,0,-1):
                self.onelayer_up(self.FA_mx[i-1],i)
            self.alllayer_down()
            return
        
        
        #自调节层次分析法的矩阵预处理过程
        def preprocess(self,mx):
            temp=np.array(mx)
            n=temp.shape[0]
            for i in range(n-1):
                H=[j for j,x in enumerate(temp[i]) if j>i and x==-1]
                M=[j for j,x in enumerate(temp[i]) if j>i and x==0]
                L=[j for j,x in enumerate(temp[i]) if j>i and x==1]
                DL=sum([[i for i in itertools.product(H,M)],[i for i in itertools.product(H,L)],[i for i in itertools.product(M,L)]],[])
                DM=[i for i in itertools.product(M,M)]
                DH=sum([[i for i in itertools.product(L,H)],[i for i in itertools.product(M,H)],[i for i in itertools.product(L,M)]],[])
                if DL:
                    for j in DL:
                       if(j[0]<j[1] and i<j[0]):
                           temp[int(j[0])][int(j[1])]=1
                if DM:
                    for j in DM:
                       if(j[0]<j[1] and i<j[0]):
                           temp[int(j[0])][int(j[1])]=0
                if DH:
                    for j in DH:
                       if(j[0]<j[1] and i<j[0]):
                           temp[int(j[0])][int(j[1])]=-1
            for i in range(n):
                for j in range(i+1,n):
                    temp[j][i]=-temp[i][j]
            A=[]
            for i in range(n):
                atemp=[]
                for j in range(n):
                    a0=0
                    for k in range(n):
                        a0+=temp[i][k]+temp[k][j]
                    atemp.append(np.exp(a0/n))
                A.append(atemp)
            return np.array(A)   
        
        
                
    
    #%%测试函数
    if __name__=='__main__' :
        '''
        # 层次分析法的经典9标度矩阵
        goal=[]             #第一层的全部判断矩阵
        goal.append(np.array([[1, 3],   
                    [1/3 ,1]]))
        criteria1 = np.array([[1, 3],
                              [1/3,1]])
        criteria2=np.array([[1, 1,3],
                            [1,1,3],
                            [1/3,1/3,1]])
        c_all=[criteria1,criteria2]   #第二层的全部判断矩阵
        sample1 = np.array([[1, 1], [1, 1]])
        sample2 = np.array([[1,1,1/3], [1,1,1/3],[3,3,1]])
        sample3 = np.array([[1, 1/3], [3, 1]])
        sample4 = np.array([[1,3,1], [1 / 3, 1, 1/3], [1,3, 1]])
        sample5=np.array([[1,3],[1/3 ,1]])
        sample_all=[sample1,sample2,sample3,sample4,sample5]  #第三层的全部判断矩阵
        FA_mx=[goal,c_all,sample_all]
        A1=AHP(FA_mx)     #经典层次分析法
        A1.run()
        a=A1.CR           #层次单排序的一致性比例(从下往上)
        b=A1.w            #层次单排序的权值(从下往上)
        c=A1.CR_all       #层次总排序的一致性比例(从上往下)
        d=A1.w_all        #层次总排序的权值(从上往下)
        e=sum(d[len(d)-1],[])       #底层指标对目标层的权值
        #可视化
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.rcParams['axes.unicode_minus'] = False
        name=['D1','D2','D3','D4','D5','D6','D7','D8','D9','D10','D11','D12']
        plt.figure()
        plt.bar(name,e)
        for i,j in enumerate(e):
            plt.text(i,j+0.005,'%.4f'%(np.abs(j)),ha='center',va='top')
        plt.title('底层指标对A的权值')
        plt.show()
        '''
        
        #自调节层次分析法的3标度矩阵(求在线体系的权值)
        goal=[]             #第一层的全部判断矩阵
        goal.append(np.array([[0, 1],   
                    [-1,0]]))
        criteria1 = np.array([[0, 1],
                              [-1,0]])
        criteria2=np.array([[0, 0,1],
                            [0,0,1],
                            [-1,-1,0]])
        c_all=[criteria1,criteria2]   #第二层的全部判断矩阵
        sample1 = np.array([[0, 0], [0, 0]])
        sample2 = np.array([[0,0,-1], [0,0,-1],[1,1,0]])
        sample3 = np.array([[0, -1], [1, 0]])
        sample4 = np.array([[0,1,0], [-1, 0,-1], [0,1,0]])
        sample5=np.array([[0,1],[-1 ,0]])
        sample_all=[sample1,sample2,sample3,sample4,sample5]  #第三层的全部判断矩阵
        FA_mx=[goal,c_all,sample_all]
        A1=AHP(FA_mx,'auto')     #经典层次分析法
        A1.run()
        a=A1.CR           #层次单排序的一致性比例(从下往上)
        b=A1.w            #层次单排序的权值(从下往上)
        c=A1.CR_all       #层次总排序的一致性比例(从上往下)
        d=A1.w_all        #层次总排序的权值(从上往下)
        e=sum(d[len(d)-1],[])       #底层指标对目标层的权值
        #可视化
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.rcParams['axes.unicode_minus'] = False
        name=['D1','D2','D3','D4','D5','D6','D7','D8','D9','D10','D11','D12']
        plt.figure()
        plt.bar(name,e)
        for i,j in enumerate(e):
            plt.text(i,j+0.005,'%.4f'%(np.abs(j)),ha='center',va='top')
        plt.title('底层指标对A的权值')
        plt.show()
    
    展开全文
  • AHP/层次分析法

    千次阅读 2017-05-06 20:34:38
    Analytic Hierarchy Process(AHP),层次分析法,由T.L.Saaty于上世纪70年代提出,是一种层次权重决策分析方法。 根据问题的性质和要达到的总目标,将问题分解为不同的组成要素。 按照因素之间的相互影响及隶属关系,...

    1、方法概述

    2、基本原理

    3、步骤及方法

    4、注意事项



    1、方法概述

    Analytic Hierarchy Process(AHP),层次分析法,由T.L.Saaty于上世纪70年代提出,是一种层次权重决策分析方法。

    2、基本原理

    根据问题的性质和要达到的总目标,将问题分解为不同的组成要素。

    按照因素之间的相互影响及隶属关系,将因素按不同层次聚集组合,形成多层次的结构模型,最终使问题归结为最底层相对于最高层的相对重要权值的确定或相对优劣次序的排定(直接优势度)。

    3、步骤及方法

    (1)建立层次结构模型。

    将决策的目标、考虑的因素(决策准则)和决策对象按其之间的关系分为最高层、中间层和最低层。

    最高层:决策的目的、要解决的问题;

    中间层:考虑的因素、决策的准则;

    最底层:各个可能的选择。

    (2)构造判断矩阵

    以矩阵的形式来表述每一层中的所有要素对上一层某一具体要素的相对重要程度;

    元素两两比较;

    标度


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

    中间层相对于最高层:

    得到判断矩阵,求出最大特征根及其对应的特征向量,并将特征向量进行归一化。

    和法:

    将判断矩阵(正反阵)A的所有列向量归一化,后将每个行向量求和,并进行归一化处理得列向量W(权向量/特征向量)。


    最大特征根


    进行一致性检验:

    CI(一致性指标)=(最大特征根-维度)/(维度-1

    其值与一致性程度成反比。

    RI(随机一致性指标,由维度判断)

    n

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    RI

    0

    0

    0.58

    0.90

    1.12

    1.24

    1.32

    1.41

    1.45

    1.49

    1.51


    CR(一致性比率)=CI/RICR<0.1即为符合一致性。

    最底层相对于中间层

    过程同上。每一个方案相对于每一个因素的重要程度

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

    设某层为A,其中m个因素A1,A2,A3...Am相对于目标的排序为
    a1,a2,a3...am
    B层n个因素相对于上层A中因素为Aj的层次单排序为
    b1j,b2j,b3j...bnj     (j=1,2,3...m
    设B层因素对上层即A层中因素Aj的层次单排序一致性指标为CIj,随机一致性指标为RIj,
    则层次总排序一致性比率为:

    当CR<0.1时,认为层次总排序通过一致性检验。

    B层第i个因素相当于目标的权值为:


    则B层的层次总排序为:

    通过最下层(决策层)层次总排序做出决策。













    展开全文
  • 在分析信用评级模型的基础上,充分考虑层次分析法在建立信用评级模型中的优势,进而运用系统工程的思想方法——层次分析法搭建模型。本文的主要工作为:(1)对商业银行信用评级指标体系进行分析,并在我国原有影响较大的...
  • 【AHP】层次分析法 | 过程解读 案例实践

    千次阅读 多人点赞 2020-08-20 19:56:21
    AHP 层次分析法 一. AHP 层次分析法介绍 AHP 层次分析法简介 AHP,即层次分析法(Analytic Hierarchy Process,AHP)是一种系统化的、层次化的多目标综合评价方法。在评价对象的待评价属性复杂多样,结构各异,...

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


    导读

    本文将带领读者了解 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 \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 A w i 0 \mathbf{Aw}_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 \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 w i \mathbf{w}_i wi基于判断矩阵计算得出,采用方根法计算,其计算过程为

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


        w = [ 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 ] \mathbf{w}_ = \left[ \begin{matrix} \sqrt[4]{1\times\frac{1}{3}\times\frac{1}{5}\times1} \\ \sqrt[4]{3\times1\times1\times5} \\ \sqrt[4]{5\times1\times1\times5} \\ \sqrt[4]{1\times\frac{1}{5}\times\frac{1}{5}\times1} \\ \end{matrix} \right] =\left[ \begin{matrix} 0.508\\ 1.968\\ 2.236\\ 0.447 \end{matrix} \right] w=41×31×51×1 43×1×1×5 45×1×1×5 41×51×51×1 =0.5081.9682.2360.447

      2. w i \mathbf{w}_i wi 归一化得到要素相对权重 w i 0 \mathbf{w}_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 ] \mathbf{w}^0 = \left[ \begin{matrix} \frac{0.508}{0.508+1.968+2.236+0.447}\\ \frac{1.968}{0.508+1.968+2.236+0.447}\\ \frac{2.236}{0.508+1.968+2.236+0.447}\\ \frac{0.447}{0.508+1.968+2.236+0.447} \end{matrix} \right] = \left[ \begin{matrix} 0.099 \\ 0.381 \\ 0.433 \\ 0.087 \end{matrix} \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.4472.2360.508+1.968+2.236+0.4470.447=0.0990.3810.4330.087

      而对于采用方根法的通用公式为


      特 征 矩 阵 : A = [ a 11 a 12 ⋯ a 1 n a 21 ⋮ ⋱ a n 1 a n n ] , w i 0 = ( ∏ j = 1 n a i j ) 1 n ∑ i = 1 n ( ∏ j = 1 n a i , j ) 1 n , n = 1 , 2 , ⋯   , n 特征矩阵:A = \left[ \begin{matrix} a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}\\ \vdots&&\ddots\\ a_{n1}&&&a_{nn} \end{matrix} \right] ,\mathbf{w}_i^0 = \frac{(\prod_{j=1}^na_{ij})^{\frac{1}{n}}}{\sum_{i=1}^n (\prod_{j=1}^n a_{i,j})^{\frac{1}{n}}},n=1,2,\cdots,n A=a11a21an1a12a1nannwi0=i=1n(j=1nai,j)n1(j=1naij)n1,n=1,2,,n


      也可以使用求和法计算权重 w i 0 \mathbf{w}_i^0 wi0 ,这里只给出公式不给出本例的计算过程。求和法得到的 w i 0 \mathbf{w}_i^0 wi0 值可能与方根法求到的 w i 0 \mathbf{w}_i^0 wi0 不完全一样,这是正常的。


      w i 0 = 1 n ∑ j = 1 n a i j ∑ k = 1 n a i j , n = 1 , 2 , ⋯   , n \mathbf{w}_i^0 = \frac{1}{n}\sum_{j=1}^n\frac{a_{ij}}{\sum_{k=1}^na_{ij}},n = 1,2,\cdots,n wi0=n1j=1nk=1naijaij,n=1,2,,n

      1. 将判断矩阵的每列归一化,即 a i j ∑ k = 1 n a i j \frac{a_{ij}}{\sum_{k=1}^na_{ij}} k=1naijaij
      2. 将得到的新矩阵求各行的算数平均数得到 w i 0 \mathbf{w}_i^0 wi0
    • A w i 0 \mathbf{Aw}_i^0 Awi0 即为判断矩阵 A \mathbf{A} A 与权重 w i 0 \mathbf{w}_i^0 wi0 的矩阵点乘运算结果


      A w 0 = [ 1 1 3 1 5 1 3 1 1 5 5 1 1 5 1 1 5 1 5 1 ] ⋅ [ 0.508 1.968 2.236 0.447 ] = [ 0.4 1.546 1.744 0.349 ] \mathbf{Aw}^0 = \left[ \begin{matrix} 1 & \frac{1}{3} & \frac{1}{5} & 1 \\ 3 & 1 & 1 & 5 \\ 5 & 1 & 1 & 5 \\ 1 & \frac{1}{5} & \frac{1}{5} & 1 \end{matrix} \right]· \left[ \begin{matrix} 0.508\\ 1.968\\ 2.236\\ 0.447 \end{matrix} \right]= \left[ \begin{matrix} 0.4\\ 1.546\\ 1.744\\ 0.349 \end{matrix} \right] Aw0=135131115151115115510.5081.9682.2360.447=0.41.5461.7440.349

    • λ m i \mathbf{λ}_{mi} λmi 是用于计算 λ m a x \mathbf{λ}_{max} λmax 的中间值,而 λ m a x \mathbf{λ}_{max} λmax 用于一致性检验。


      λ m i = A w i 0 w i 0 \mathbf{λ}_{mi} = \frac{\mathbf{Aw}_i^0}{\mathbf{w}_i^0} λmi=wi0Awi0

    • λ m a x \mathbf{λ}_{max} λmax 用于计算后续的 C . I . \mathbf{C.I.} C.I. 值,从而完成一致性检验。


      λ m a x = 1 n ∑ i = 1 n λ m i \mathbf{λ}_{max} = \frac{1}{n}\sum_{i=1}^{n}\mathbf{λ}_{mi} λmax=n1i=1nλmi

    • C . I . \mathbf{C.I.} C.I. R . I . \mathbf{R.I.} R.I. C . R . \mathbf{C.R.} C.R. C . I . \mathbf{C.I.} C.I. 为一致性指标, R . I . \mathbf{R.I.} R.I. 为平均随机一致性指标, C . R . \mathbf{C.R.} C.R. 为一致性指标,这些指标用于完成判断矩阵的一致性检验。


      C . I . = λ m a x − n n − 1 \mathbf{C.I.} = \frac{\mathbf{λ}_{max}-n}{n-1} C.I.=n1λmaxn


      R . I . \mathbf{R.I.} R.I. 的值要参考平均随机一致性指标表来确定,其值由 n \mathbf{n} n 即判断矩阵的阶 数,查下表得

      n \mathbf{n} n1234567891011121314
      R . I . \mathbf{R.I.} R.I.000.520.891.121.261.361.411.461.491.521.541.561.58

      本例中 n = 4 \mathbf{n}=4 n=4 R . I . = 0.89 \mathbf{R.I.} = 0.89 R.I.=0.89


      C . R . = C . I . R . I . \mathbf{C.R.}=\frac{\mathbf{C.I.}}{\mathbf{R.I.}} C.R.=R.I.C.I.


      C . R . < 0.1 \mathbf{C.R.} < 0.1 C.R.<0.1 则认为判断矩阵通过了一致性检验,若不满足条件则需要检查判断矩阵,并对其值进行调整。 本例中 C . R . = 0.012 < 0.1 \mathbf{C.R. = 0.012<0.1} C.R.=0.012<0.1,因此通过了一致性检验,可继续进行后续的步骤。

    在完成目标层与准则层的层次单排序与一致性检验之后,还需对准则层到方案层的多个判断矩阵完成该过程。这里直接给出结果。

    • 三种空调对于价格的判断矩阵的层次单排序与一致性检验

      价格空调 A空调 B空调 C w i \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 A w i 0 \mathbf{Aw}_i^0 Awi0 λ m i \mathbf{λ}_{mi} λmi
      空调 A11/71/50.3060.0750.2263.016
      空调 B7122.410.5921.7833.011
      空调 C51/211.3570.3331.0043.015

      λ m a x = 3.014 , C . I . = 0.007 , R . I . = 0.52 , C . R . = 0.013 < 0.1 \mathbf{λ}_{max} = 3.014,C.I. = 0.007,R.I. = 0.52,C.R. = 0.013<0.1 λmax=3.014C.I.=0.007R.I.=0.52C.R.=0.013<0.1

    • 三种空调对于噪声的判断矩阵的层次单排序与一致性检验

      噪声空调 A空调 B空调C w i \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 A w i 0 \mathbf{Aw}_i^0 Awi0 λ m i \mathbf{λ}_{mi} λmi
      空调 A1252.1540.5701.7213.019
      空调 B1/2141.260.3331.0063.021
      空调 C1/51/410.3680.0970.2943.030

      λ m a x = 3.023 , C . I . = 0.012 , R . I . = 0.52 , C . R . = 0.023 < 0.1 \mathbf{λ}_{max} = 3.023,C.I. = 0.012,R.I. = 0.52,C.R. = 0.023<0.1 λmax=3.023C.I.=0.012R.I.=0.52C.R.=0.023<0.1

      • 三种空调对于噪声的判断矩阵的层次单排序与一致性检验

      功耗空调 A空调 B空调C w i \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 A w i 0 \mathbf{Aw}_i^0 Awi0 λ m i \mathbf{λ}_{mi} λmi
      空调 A131/21.1450.3090.9273.000
      空调 B1/311/50.4050.1090.3283.009
      空调 C2512.1540.5821.7453.000

      λ m a x = 3.003 , C . I . = 0.0015 , R . I . = 0.52 , C . R . = 0.003 < 0.1 \mathbf{λ}_{max} = 3.003,C.I. = 0.0015,R.I. = 0.52,C.R. = 0.003<0.1 λmax=3.003C.I.=0.0015R.I.=0.52C.R.=0.003<0.1

      • 三种空调对于噪声的判断矩阵的层次单排序与一致性检验

      寿命空调 A空调 B空调C w i \mathbf{w}_i wi w i 0 \mathbf{w}_i^0 wi0 A w i 0 \mathbf{Aw}_i^0 Awi0 λ m i \mathbf{λ}_{mi} λmi
      空调 A11/51/30.4050.10.3103.100
      空调 B5142.410.6742.0783.083
      空调 C31/410.9090.2260.6953.075

      λ m a x = 3.086 , C . I . = 0.043 , R . I . = 0.52 , C . R . = 0.083 < 0.1 \mathbf{λ}_{max} = 3.086,C.I. = 0.043,R.I. = 0.52,C.R. = 0.083<0.1 λmax=3.086C.I.=0.043R.I.=0.52C.R.=0.083<0.1

    注意


    在层次单排序过程中的 平均随机一致性表( R . I . \mathbf{R.I.} R.I. 值表)是由蒙特卡洛算法模拟随机矩阵验证一致性是否可以接受得来的。有兴趣的读者可以查询,了解。

    总结


    完成一个判断矩阵的层次单排序与一致性检验的求值过程为,简单总结如下:

    1. 选定方法求 w i \mathbf{w_{i}} wi(尚未归一化的权重)
    2. 归一化 w i \mathbf{w_{i}} wi 得到 w i 0 \mathbf{w_{i}^0} wi0(相对重要性权重)
    3. 将判断矩阵 A 与 w i 0 \mathbf{w_{i}^0} wi0 矩阵点乘得到 A w i 0 \mathbf{Aw}_i^0 Awi0
    4. A w i 0 \mathbf{Aw}_i^0 Awi0 除以 w i 0 \mathbf{w_{i}^0} wi0 得到 λ m i \mathbf{λ}_{mi} λmi
    5. 使用 λ m i \mathbf{λ}_{mi} λmi 求得 λ m a x \mathbf{λ}_{max} λmax
    6. 利用 λ m a x \mathbf{λ}_{max} λmax C . I . \mathbf{C.I.} C.I.,查表得到 R . I . \mathbf{R.I.} R.I. 对应的值,将 C . I . \mathbf{C.I.} C.I. R . I . \mathbf{R.I.} R.I. 相除得到 C . R . \mathbf{C.R.} C.R.
    7. 比较 C . R . \mathbf{C.R.} C.R. 与 0.1 的大小,确定是否通过一致性检验,不通过则修改判断矩阵的值,直到通过一致性检验。
    8. 完成层次单排序,获得结果 w i 0 \mathbf{w_{i}^0} wi0

    4. 层次总排序

    层次总排序得出了方案层对于目标层的重要程度权重,从而我们可以选出权重最大的为决策结果

    评价标准价格噪声功耗寿命
    最终评分
    总权重(w)
    权重0.0990.3810.4330.087
    空调 A0.0750.5700.3090.1000.367
    空调 B0.5920.3330.1090.6740.291
    空调 C0.3330.0910.5820.2260.342

    以上表格关于四大评价指标对各空调的权重(第二行)来自于目标层与准则层判断矩阵的层次单排序结果权重。空调 ABC 对于四大评价指标的分别权重来自于准则层到方案层的判断矩阵层次单排序结果权重。表格中的最终得分计算方法是:用各评价指标的权重,乘上某空调各个指标对应的权重求和。以求空调 A 的最终得分为例,公式如下


    空 调 A 评 分 = 0.099 × 0.075 + 0.381 × 0.570 + 0.433 × 0.309 + 0.087 × 0.100 = 0.367 空调 A 评分 = 0.099\times0.075+0.381\times0.570+0.433\times0.309+0.087\times0.100=0.367 A=0.099×0.075+0.381×0.570+0.433×0.309+0.087×0.100=0.367


    空调 BC 的评分同理。因为 w 空 调 A > w 空 调 C > w 空 调 B \mathbf{w_{空调A}}>\mathbf{w_{空调C}}>\mathbf{w_{空调B}} wA>wC>wB,所以我们通过 AHP 法得出购买空调 A 最符合我们的需求。


    三. 不一致现象 与 一致性检验

    上文中有提到判断矩阵中会出现不一致的现象,也使用计算一致性比例的问题来判断判断矩阵是否出现不一致的现象。本章节将较为详细的分析讲解判断矩阵中出现的不一致现象,并介绍一种和求和法与方根法同样常用的求要素相对权重的方法——特征值法。

    正如上文中所提到的不一致现象,我们继续利用空调对寿命的判断矩阵来进行分析。

    寿命空调 A空调 B空调 C
    空调 A11/51/3
    空调 B514
    空调 C31/41

    该判断矩阵在上一章中已经通过一致性检验。但我们仔细分析,会发现该判断矩阵中依然存在不一致的问题。我们进行下列推断


    [ 2 , 1 ] = 5 ⇒ 空 调 B 比 空 调 A 比 较 有 优 势 [ 3 , 1 ] = 3 ⇒ 空 调 C 比 空 调 A 稍 微 有 优 势 则 , 空 调 B 比 空 调 C 应 该 稍 微 ① 有 优 势 ② [2,1] = 5 \Rightarrow 空调 B 比 空调 A 比较有优势\\ [3,1] = 3 \Rightarrow 空调 C 比 空调 A 稍微有优势\\ 则,空调 B 比 空调 C应该稍微^{①}有优势^{②} [2,1]=5BA[3,1]=3CABC


    在结论中有两小点:

    • 我们在上文中说明过,如果认为空调 C 比空调 B 更有优势则与②相反,违背了逻辑,这种不一致是不被允许的。假如我们颠倒空调 BC 的优势顺序,得到以下判断矩阵:

      寿命空调 A空调 B空调 C
      空调 A11/51/3
      空调 B511/4
      空调 C341

      λ m a x = 4.24 , C . I . = 0.62 , R . I . = 0.52 , C . R . = 1.192 > 0.1 \mathbf{λ}_{max} = 4.24,C.I. = 0.62,R.I. = 0.52,C.R. =1.192>0.1 λmax=4.24C.I.=0.62R.I.=0.52C.R.=1.192>0.1
      经过计算,发现一致性检验不通过。

      若我们将空调 BC 的优势程度写为一样有优势则得到以下判断矩阵:

      寿命空调 A空调 B空调 C
      空调 A11/51/3
      空调 B511
      空调 C311

      λ m a x = 3.866 , C . I . = 0.433 , R . I . = 0.52 , C . R . = 0.833 > 0.1 \mathbf{λ}_{max} = 3.866,C.I. = 0.433,R.I. = 0.52,C.R. =0.833>0.1 λmax=3.866C.I.=0.433R.I.=0.52C.R.=0.833>0.1
      也不通过一致性检验。因此一致性检验确实起到了避免判断矩阵中数值出现逻辑冲突的情况

    • 在结论①中,其确定了的是空调 B 比空调 C 优势的程度大小为多少。结论中我们写的是 “稍微有优势”,那么判断矩阵中对应的位置应该是 3 和 1/3,但原题目中判断矩阵对应的位置为 4 和 1/4。我们可以试着计算一下判断矩阵是否通过一致性检验:

      寿命空调 A空调 B空调 C
      空调 A11/51/3
      空调 B513
      空调 C31/31

      λ m a x = 3.029 , C . I . = 0.0145 , R . I . = 0.52 , C . R . = 0.028 < 0.1 \mathbf{λ}_{max} = 3.029,C.I. = 0.0145,R.I. = 0.52,C.R. =0.028<0.1 λmax=3.029C.I.=0.0145R.I.=0.52C.R.=0.028<0.1
      通过一致性检验。而原来的 4 与 1/4 也通过了一致性检验,因此可见在基本的谁比谁有优势确定后,其优势程度大小是有可调节的弹性的。这是因为相对重要性标度本身对于要素之间的优势程度定义是模糊的。


    四. (补充) 特征值法求相对重要性权重

    上文中有介绍两种求要素相对重要性权重的方法:方根法与求和法。本章介绍一种和这两种同样常用的方法来求权重——特征值法。

    • 特征向量与特征值[2]


      A 为 n × n 矩 阵 , x 为 非 零 向 量 , 若 存 在 数 λ 使 得 A x = λ x 有 非 平 凡 解 x , 则 称 λ 为 A 的 特 征 值 , x 称 为 对 应 与 λ 的 特 征 向 量 。 \mathbf{A} 为 \mathbf{n\times n} 矩阵,\mathbf{x} 为非零向量,\\若存在数 \mathbf{\lambda} 使得 \mathbf{Ax=\lambda x} 有非平凡解 \mathbf{x},\\则称 \mathbf{\lambda} 为 \mathbf{A} 的特征值,\mathbf{x} 称为对应与 \mathbf{\lambda} 的特征向量。 An×nxλ使Ax=λxxλAxλ


      利用特征值法求相对重要性权重,就是求判断矩阵的特征向量,并将特征向量列归一化,然后直接作为相对重要性权重向量。但这个方法对判断矩阵严格要求其为一致矩阵,而我们上例中的判断矩阵都是不完全一致的,因此不适用此方法(可重新确定判断矩阵的值使其为一致矩阵再用此方法)。

    • 一致矩阵


      若 矩 阵 A = [ a 11 a 12 ⋯ a 1 n a 21 ⋮ ⋱ a n 1 a n n ] 满 足 :   a i j > 0 a 11 = a 22 = ⋯ = a n n = 1 [ a i 1 , a i 2 , ⋯   , a i n ] = k i [ a 11 , a 12 , ⋯   , a 1 n ] 则 称 矩 阵 A 为 一 致 矩 阵 若矩阵 A= \left[ \begin{matrix} a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}\\ \vdots&&\ddots\\ a_{n1}&&&a_{nn} \end{matrix} \right]满足: \\ \space\\ a_{ij}>0\\a_{11}=a_{22}=\cdots=a_{nn}=1\\ [a_{i1},a_{i2},\cdots,a_{in}] = k_i[a_{11},a_{12},\cdots,a_{1n}] \\则称矩阵 A 为一致矩阵 A=a11a21an1a12a1nann: aij>0a11=a22==ann=1[ai1,ai2,,ain]=ki[a11,a12,,a1n]A


      由于涉及到的知识点过多,篇幅受限不做详细介绍与证明。


    参考文献

    [1] 汪应洛.系统工程[M].5版.北京:机械工业出版社,2015.12:123.

    [2] David C. Lay,Steven R. Lay,Judi J. McDonald.线性代数及其应用[M].机械工业出版社:北京,2018.6:265.


    文章内容来自个人学习总结
    欢迎指出本文中存在的问题
    未经本人同意禁止转载,不得用于商业用途
    展开全文
  • 根据植物外部形态将所选植物分为草本类、灌木类、乔木类,运用层次分析法进行比较选择,最终选取9种适合该采石场生态恢复治理的植物,草本类为:沙打旺、狗尾草;灌木类为:柠条、沙棘、胡枝子;乔木类为:构树、侧柏、山榆...
  • 为了定量评价铁矿集区资源综合利用状况,结合目前的生产现状,建立基于地质、采矿、选矿、共伴生资源利用、经济指标等5个单元、13个指标的多因素多指标评价体系,确定了各评价指标的权重,并采用模糊层次分析法对我国四...
  • 层次分析法模型(数学建模学习)

    千次阅读 2020-07-24 17:32:00
    层次分析法模型 一、层次分析法应用场景 层次分析法(The Analytic hierarchy process/AHP)是比赛中最基础最常用的模型,应用场景在于解决评价类问题。比如哪个人最优秀,哪种方案最好之类。

    本系列参考清风老师的数学建模课程

    层次分析法模型

    一、模型介绍

    (一)模型引入

    对于方案选择类问题,评价类问题采用层次分析法(The ayalytic hierarchy process / AHP)模型进行评分,之后评分高的就是最佳方案。

    (二)模型详解

    (1)建立层次结构
    分析系统中各因素之间的关系,建立系统的递阶层次结构。
    该层次结构分为:
    1.目标层(Objective)
    回答问题:评价目标是什么?
    2.准则层(Criterion)
    回答问题:评价指标是什么?
    3.方案层(Plan)
    回答问题:可选方案是什么?
    将其绘制成层次清晰的示意图。

    (2)构造判断矩阵
    针对于准则层构造一个判断矩阵。
    若有n个可选方案,则可以构造n个判断矩阵。
    参考填表的准则:

    标度含义
    1两个因素相比具有同等重要性
    3一个因素比另一个因素稍微重要
    5一个因素比另一个因素明显重要
    7一个因素比另一个因素强烈重要
    9一个因素比另一个因素极端重要
    2、4、6、8介于奇数之间重要性
    倒数与之对应

    填写判断矩阵的数据一定要有材料支撑

    (3)一致性检验
    原理:检验我们构造的判断矩阵和一致矩阵是否有太大差别(定量角度)。
    若正互反矩阵中的元素有性质: a i j × a j k = a i k a_{ij}×a_{jk}=a_{ik} aij×ajk=aik则可以成为一致矩阵。(换句话说就是上下两行必须是成倍数的关系)
    但在绝大多数情况下成为严格的一致矩阵不太可能,因此可以规定某个偏离范围,即使偏了一点也行,但不能偏太大,就有了一致性检验。(这块直接跑现成的程序出结果就行了,不介绍计算过程了)
    一致性检验的通用步骤为:
    1.计算一致性指标CI
    C I = λ m a x − n n − 1 CI=\frac {\lambda_{max}-n}{n-1} CI=n1λmaxn
    2.查找对应的平均随机一致性指标RI
    3.计算一致性比例CR
    C R = C I R I CR=\frac {CI}{RI} CR=RICI
    4.判断CR是否<0.1,若是则认为一致性可以被接受,否则需要调整判断矩阵。

    (4)求指标权重
    求解指标权重时需要通过一致性检验,通过后就可以求出了,一共有三种求法。

    1.算术平均法求权重
    step1:将判断矩阵按照列归一化。
    step2:将归一化的各列相加。
    step3:将相加后得到的向量中每个元素除以n即可得到权重向量。

    2.几何平均法求权重
    step1:将判断矩阵元素按照行相乘得到一个新的列向量。
    step2:将新的向量的每个分量开n次方。
    step3:对该列向量进行归一化即可得到权重向量。

    3.特征值法求权重
    step1:求出判断矩阵的最大特征值以及其对应的特征向量。
    step2:对求出的特征向量进行归一化即可得到权重。

    (5)计算得分
    每一个方案的任意评价指标最终得分=该评价指标在准则层的权重×方案在方案层的权重。
    因此任意一个方案的最终得分=各项评价指标之和。

    (三)模型举例

    (1)举例
    从苏杭、北戴河和桂林三个中选择一个作为旅游目的地。

    (2)思路
    本题属于方案选择类问题,因此使用层次分析法进行分析,考虑以下重要问题:
    1.评价目标(目标层)?选择最佳旅游目的地。
    2.评价指标(准则层)?(查阅资料后)景点景色、旅游花费、居住环境、饮食情况、交通便利程度。
    3.可选方案(方案层)?苏杭、北戴河、桂林。
    由以上思路可以得出下图:

    (3)整理
    设计数据表格,参考层次分析法的通用表格:

    指标权重方案1方案2
    指标1
    指标2
    指标3

    将以上思路内容填入上述通用表格中:

    指标权重苏杭北戴河桂林
    景色
    花费
    居住
    饮食
    交通

    解释:指标权重表示各个指标在准则层所占的权重大小值,而之后则代表该指标在方案层所占的权重大小值,因此若要最终评分,一定是准则层(Criterion)中指标权重×方案层(Plan)中指标权重得到最终得分。

    (4)数据
    之后就可以填写这张表格了。

    step1:填写准则层判断矩阵:

    景色花费居住饮食交通
    景色1 1 2 \frac 12 21433
    花费21755
    居住 1 4 \frac 14 41 1 7 \frac 17 711 1 2 \frac 12 21 1 3 \frac 13 31
    饮食 1 3 \frac 13 31 1 5 \frac 15 51211
    交通 1 3 \frac 13 31 1 5 \frac 15 51311

    解释:比如对于第三行第四列的单元格数据可以解释为花费比居住强烈重要。

    step2:填写五个方案层判断矩阵:

    (景色)苏杭北戴河桂林
    苏杭125
    北戴河 1 2 \frac 12 2112
    桂林 1 5 \frac 15 51 1 2 \frac 12 211
    (花费)苏杭北戴河桂林
    苏杭1 1 3 \frac 13 31 1 8 \frac 18 81
    北戴河31 1 3 \frac 13 31
    桂林831
    (居住)苏杭北戴河桂林
    苏杭113
    北戴河113
    桂林 1 3 \frac 13 31 1 3 \frac 13 311
    (饮食)苏杭北戴河桂林
    苏杭134
    北戴河 1 3 \frac 13 3111
    桂林 1 4 \frac 14 4111
    (交通)苏杭北戴河桂林
    苏杭11 1 4 \frac 14 41
    北戴河11 1 4 \frac 14 41
    桂林441

    step3:填好表格后开始进行一致性检验。

    1.检验准则层判断矩阵:

    一致性指标CI=
    0.0180
    一致性比例CR=
    0.0161
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!

    2.检验方案层判断矩阵:

    一致性指标CI=0.0028
    一致性比例CR=0.0053
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!

    一致性指标CI=7.7081e-04
    一致性比例CR=0.0015
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!

    一致性指标CI=-4.4409e-16
    一致性比例CR=-8.5402e-16
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!

    一致性指标CI=0.0046
    一致性比例CR=0.0088
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!

    一致性指标CI=0
    一致性比例CR=0
    因为CR<0.10,所以该判断矩阵A的一致性可以接受!
    可以发现之前所有判断矩阵均通过了一致性检验。(若有没通过的判断矩阵需要对其中元素进行修改直到通过检验为止)

    step4:计算各项指标对应的权重,有三种计算方法,最好三种方法取平均值,也可只采纳特征值法所算出的数据。(这块直接跑现成的程序出结果就行了,不介绍计算过程了)

    填入数据:

    指标权重苏杭北戴河桂林
    景色0.26360.59540.27640.1283
    花费0.47580.08190.23630.6817
    居住0.05380.42860.42860.1429
    饮食0.09810.63370.19190.1744
    交通0.10870.16670.16670.6667

    (5)结论
    计算各个方案的最终得分。(这块Excel拉表出结果)
    苏杭:0.299
    北戴河:0.245
    桂林:0.455

    结论:桂林得分最高,因此选择去桂林。

    二、模型实现

    本模型采用多种软件实现。

    (1)层次分析模型示意图
    采用Office自带的SmartArt绘图。

    (2)判断矩阵一致性检验代码

    A=input('判断矩阵:')
    clc;
    [n,n]=size(A);
    [X,Y]=eig(A);
    lambda_max=max(Y(:));
    CI=(lambda_max-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/RI(n);
    disp('CI=');disp(CI);
    disp('RI=');disp(CR);
    if CR<0.1
        disp('可以接受!');
    else
        disp('需要修改!');
    end
    

    (3)算术平均法求权重代码

    A=input('判断矩阵:');
    Sum=sum(A);
    [n,n]=size(A);
    Sum=repmat(Sum,n,1);
    clc;
    res=A./Sum;
    disp('结果1:');
    disp(sum(res,2)/n);
    

    (4)几何平均法求权重代码

    A=input('判断矩阵:');
    Pro=prod(A,2);
    Res=Pro.^(1/n);
    disp('结果2:');
    disp(Res/sum(Res));
    

    (5)特征值法求权重代码

    A=input('判断矩阵:');
    [X,Y]=eig(A);
    lambda_max=max(Y(:));
    Y==lambda_max;
    [x,y]=find(Y==lambda_max,1);
    X(:,y);
    disp('结果3:');
    disp(X(:,y)./sum(X(:,y)));
    

    (6)为方案评分
    此处将数据导入到Excel表中,按F4锁定第一行作为乘数拉表计算。

    三、模型应用

    (一)题目描述

    近年来,电动汽车在世界各国的生产和销售发展势头猛烈。这一方面与各国政府的大力扶持有关系,另一方面也与电动汽车本身的一些特定优势有关,比如充电而非耗油、运行耗能低等。不考虑牌照限制等问题,建立数学模型解决如下问题:

    1. 从用户的角度出发,比较电动汽车和燃油汽车的总体拥有成本。
    2. 一对年龄在 25 岁左右的年轻夫妇,参加工作不久,都在一家杭州软件公司工作,目前家庭年收入 20 万元,没有房产。考虑日常通勤、周末和假期出游等需求,他们准备
      买一辆 15 万元左右的车。帮他们决定该买电动车还是燃油车。

    (二)模型实战

    第一问是有一个对应的总体拥有成本的公式,通过查阅各大网站或者书籍资料可得到公式中对应的参数值,从而计算出对应的总体拥有成本。(可能会用到Excel)没有模型。

    第二问给了一个具体的场景,并且属于评价决策类问题,使用AHP层次分析法再合适不过了。于是按照AHP流程走。

    参考一等奖论文思路

    (1)建立层次结构(考虑五种准则,在这块可以变)

    (2)构造判断矩阵(忽略计算与检验过程)
    支撑材料1:
    一对年龄在 25 岁左右的年轻夫妇,参加工作不久,都在一家杭州软件公司工作,目前家庭年收入 20 万元,没有房产。考虑日常通勤、周末和假期出游等需求,他们准备买一辆 15 万元左右的车。帮他们决定该买电动车还是燃油车。

    总结信息:收入中等,工作频繁,闲暇时间不多。
    1、使用成本时第一个要考虑的因素,不能负担不起。
    2、通勤时使用车辆的第一理由。
    3、很少有假期,因此驾车远游不重要。

    目标层-准则层判断矩阵:

    准则层-方案层判断矩阵:
    支撑材料2:
    通过查阅资料可得出年使用成本公式
    A A C = P T + C I + M + F i + M V I + V V AAC=PT+CI+M+F_i+MVI+VV AAC=PT+CI+M+Fi+MVI+VV
    根据具体情况查阅对应指标的值可得到:

    如果有一个年使用成本占总生活支出比例就更加直观了,因此也可以查阅资料求出对应比例。

    总结信息:年使用成本上,与燃油车相比,电动车具有明显的令人满意程度。


    支撑材料3:
    通过查阅资料可以得到通勤主要成本

    同时根据常识可知在路上不开车等候更费油。

    总结信息:通勤上,与燃油车相比,电动车具有强烈的令人满意程度。



    支撑材料4:
    与通勤情况类似。满足“短距离低速”特点。


    支撑材料5:
    电动车长距离开车要充电,然而查阅资料(摆上地图之类的)可知充电桩都在繁华地带,造成充电不方便。

    总结信息:可知在燃料费上,与燃油车相比,电动车具有强烈的令人满意程度。



    支撑材料6:
    通过查阅资料将两种类型的车(一定注意控制变量,比如价格不能相差太远)的性能指标罗列出来逐一对比,可以自己设定一套定量评分规则,进而最终确定性能判断矩阵。

    总结信息:在车身性能上,与电动车相比,燃油车具有明显的令人满意程度。



    (3)评价方案
    逐一填入对应权重:

    由此得出最终结论:

    1、方案E1权重为0.4155
    2、方案E2权重为0.5845
    故购买电动车(E2)更合适。

    (三)总结思考

    1、分析由层次分析法得到各项评价指标权重,并从实际意义进行评价。比如说:通过层次分析法得出的权重值,XXX的权重最大,这也符合XXX的实际功能/实际意义…

    2、模型评价:利用层次分析法决定XXX使得评价具有一定的客观性、准确性,避免了过于偏重某个需求而忽略其他的需求。但在给予各个准则相应的权重以及比较XXX的各个指标时不可避免地带有一定的主观性,使得评价结果的客观性及准确性降低。

    3、模型贡献:通过层次分析法计算各项指标权重,总结出了XXX控制的重点因素,为XXX提供了明确的数据指导,为XXX指明了未来发展的重点方向与道路。

    展开全文
  • 为充分吸收主观赋权评价法和客观赋权评价法两类方法的优点,同时又能克服各自的缺陷,实现二者的优势互补,以层次分析法确定主观权重、粗糙集方法确定客观权重,然后将主、客观权重进行有机集成,得到组合权重的最优...
  • 每个组织都需要供应商,没有供应商就不可能存在任何... 所提出的模型相对于层次分析法等其他模型的优势在于,通过采用模糊数,它有效地提高了传统层次分析法在处理与不同决策者判断相关的不确定性和模糊性时的灵活性。
  • 苏州港面临着良好的发展时机,但其面对的竞争和挑战也非常大,它与长三角的...利用模糊评价层次分析法,分析了苏州港和其他主要港口的竞争状况,探讨了影响苏州港竞争力的主要因素,从而寻找提升苏州港竞争力的途径。
  • 基于层次分析法与熵权法的主客观组合赋权模型 组合赋权大家可以尝试进行改变,一个主观一个客观。(原创:小青龙) 简介 ​ 权重是用来衡量总体中各单位标志值在总体中作用大小的数值, 用来描述单因子在因子集体系...
  • 为提高露天煤矿半连续采煤工艺系统的...采用熵权法和模糊层次分析法建立了组合权重破碎站优选数学模型,对我国露天煤矿常用的4种破碎站进行了选型研究。结果表明:简约式破碎站在半连续采煤工艺的应用中具有一定的优势
  • 本文以新公共管理理论中公民导向理念和顾客价值理论为理论依据,运用层次分析方法将旅游公共服务复杂的内涵进行逐层分析,发挥其定量分析与定性分析相结合的优势,尝试性建立了一套旅游公共服务评价指标体系,并完成对...
  • 并以此为基础,应用层次分析法首先建立其评价模型,然后确定其主要的影响因素指标,最后以3种常用的不同形状的锂电池单元为例进行了说明。结果表明:相对于棱柱罐状锂电池单元和圆柱形锂电池单元而言,棱柱袋状锂...
  • 结合层次分析法和灰色关联法的各自优势,构建了层次分析-灰色关联评判法,并提出具体的评判步骤。通过分析村庄压煤采搬影响因素,建立采搬评价指标体系并确定了4个一级影响因素和12个二级影响因素。以开滦某矿村庄压煤...
  • 数据分析:SWOT分析法

    千次阅读 2020-08-23 15:57:48
    SWOT分析法(也称TOWS分析法、道斯矩阵)即态势分析法,20世纪80年代初由美国旧金山大学的管理学教授韦里克提出,经常被用于企业战略制定、竞争对手分析等场合。SWOT分析有其形成的基础。按照企业竞争战略的完整概念...
  • 经济管理学中常用的模型分析法

    万次阅读 2018-03-28 09:24:04
    经济管理学中常用的模型分析法常用的分析模型有:波特五力模型、波士顿矩阵、鱼骨分析法、5W1H分析法、麦肯锡7S模型、杜邦分析法、营销漏斗模型、可行性分析、绩效分析;SMART原则、SWOT分析、PEST分析法、GROW模型...
  • 鉴于煤矿安全风险分析中指标权重需综合考虑主客观两方面的需求,提出了一种层次分析法和熵权法相结合的组合赋权法。该方法使用层次分析法和熵权法分别得到指标的主观权重和客观权重,利用乘法集成法将主观权重和客观...
  • 如何运用SWOT分析法

    千次阅读 2013-05-03 22:15:48
    SWOT分析法又称为态势分析法,它是由旧金山大学的管理学教授于20世纪80年代初提出来的,是一种能够较客观而准确地分析和研究一个单位现实情况的方法。  SWOT四个英文字母分别代表:优势(Strength)、劣势...
  • 产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法) 产品需求分析与市场分析方法汇总 ... 一、KANO模型 ...
  • 不重不漏的分析方法:MECE分析法

    千次阅读 2020-08-17 11:22:14
    MECE分析法 麦肯锡的巴巴拉·明托(Barbara Minto)顾问在金字塔原理中提到的一个重要原则就是MECE,那么满足MECE的分析方法就是MECE分析法,全称 Mutually Exclusive Collectively Exhaustive,中文意思是“相互...
  • 第03期 5W1H需求分析法 KANO模型分析法 ● Part00 了解5W1H分析法 ● 基本概念: 5W1H分析法,中文也叫六何分析法。 What (是何)、 Why (为何)、 Who (何人)、 Where (何地)、 When (何时)、 How (如何)...
  • 灰色关联分析法 (附代码)

    千次阅读 2020-05-14 03:59:28
    灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密,它反映了曲线间的关联程度。 简介: 灰色系统理论是...
  • 数学建模常用算法—灰色关联分析法(GRA)

    千次阅读 多人点赞 2020-07-24 18:24:01
    灰色关联分析的基本思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小。
  • 根据AHP(层次分析法)在汽车设计过程中获得的数据,揭示了全球产品开发应考虑的标准的重要性。 根据研究结果,发现设计验证阶段是汽车设计过程中最重要的全球化准则,是一个新的研究领域。 在这项研究的全面调查中...
  • 根据层次分析模型获得的各因素权重对6个专题图进行叠加,将底板划分为脆弱区、较脆弱区、过渡区和安全区四部分,并得到了以往突水事故的验证。通过对各个因素的脆弱性灵敏度分析,得出有效隔水层厚度与脆弱性指数的相关...
  • 针对云南省各优势产业的发展特点,由专家填写“对目标影响因素的成对比较阵”,用“多层次权重分析方法”及“聚类分析综合分析专家意见,得到八个优势产业对经济发展...
  • 聚类分析算法

    千次阅读 2019-04-10 08:40:04
    聚类分析的典型应用场景 目标用户的群体分类 不同产品的价值组合 探测、发现孤立点、异常值 主要聚类算法的分类 聚类分析应用注意事项 1.噪声和异常值的处理 直接删除那些比其他任何数据点都要远离聚类...
  • 同时对该方法与传统层次分析法(AHP)做了比较,指出了这种方法的优势。运用这种方法旨在为开发商对开发项目的风险判别提供一些可参考的依据,无论对开发项目的微观管理,还是宏观调控都会产生明显的社会经济效应。
  • 以浙江天童披针叶茴香Illicium lanceolatum-南酸枣Choerospondias axiliaris群落为对象,应用每木调查、时空互代和相邻格子研究分析群落优势种群结构和分布格局。种群结构分析包括胸径级结构和垂直层次结构,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,918
精华内容 9,967
关键字:

层次分析法的优势