精华内容
下载资源
问答
  • AHP层次分析法

    万次阅读 多人点赞 2014-02-21 01:07:12
    在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于...

    2014年参加数学建模美赛, 其中一道题是选出5大优秀教练,数据来源要求自行寻找。 在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于进一步针对细节进行学习。文章内容主要参阅 《matlab数学建模算法实例与分析》,部分图片来源于WIKI

     

     

    文章分为2部分:

    1第一部分以通俗的方式简述一下层次分析法的基本步骤和思想

    2第二部分介绍一下我们队伍数学建模过程中,对层次分析法的应用,中间有些地方做了不严谨的推理,例如关于一致性的检验,如有人发现不正确,希望可以指正

     

    第一部分:

     

    层次分析法(Analytic Hierarchy Process ,简称 AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而又实用的多准则决策方法。

    人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 


    运用层次分析法建模,大体上可按下面四个步骤进行: 
    (i )建立递阶层次结构模型; 
    (ii )构造出各层次中的所有判断矩阵; 
    (iii )层次单排序及一致性检验; 
    (iv )层次总排序及一致性检验。 

     

    这四个步骤中,前两个步骤最容易理解,后两个步骤需要一点时间理解

     

    首先从层次结构模型说起

    层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法

    最顶层是我们的目标,比如说选leader,选工作,选旅游目的地

    中间层是判断候选方物或人优劣的因素或标准

    选工作时有:发展前途  ,待遇 ,工作环境等

    选leader时有:年龄,经验,教育背景,魅力

     

    在分层以后,为了选出最优候选

    给目标层分配值1.000

    然后将这一值作为权重,分配给不同因素,对应因素的权重大小代表该因素在整个选择过程中的重要性程度

    然后对于候选方案,每一个标准再将其权重值分配给所有的候选方案,每一方案获得权重值,来源于不同因素分得的权重值的和

     

    如下图:

                目标层分配值为1, 然后我们给了4个候选方案评估标准 criterion 1 、 criterion 2、criterion 3、criterion 4

                假设我们认为这四个标准同等重要, 于是目标层的值1 就被均分到 4个准则上, 每个准则获得的值为 0.25

                然后我们从评估标准 criterion 1 出发, 考虑在该评估标准下, 3 个候选方案的优劣比如何。 假如我们认为在标准1 的衡量下,   3 个方案完全平等, 方案1 在该标准下的得分就应该是: 0.25 * (1/3) 

               同理, 如果我们假设剩下的 3 个标准下, 3个候选方案都是平分秋色, 那么方案 1 的最终得分就应该是

               0.33 =  0.25 * (1/3)   +   0.25 * (1/3)   +  0.25 * (1/3)  +  0.25 * (1/3) 

               最终获得的各个方案的的权重值的和依然为1

     

    这不就是一个简单的权重打分的过程吗?为什么还要层次分析呢。这里就有两个关键问题:

    1每个准则(因素)权重具体应该分配多少

    2每一个候选方案在每一个因素下又应该获得多少权重

     

    这里便进入层次分析法的第二个步骤,也是层次分析法的一个精华(构造比较矩阵(判断矩阵)comparison matrix):

     

    首先解决第一个问题:每个准则(因素)权重具体应该分配多少?

    如果直接要给各个因素分配权重比较困难,在不同因素之间两两比较其重要程度是相对容易的

     

    现在将不同因素两两作比获得的值aij  填入到矩阵的 i 行 j 列的位置,则构造了所谓的比较矩阵,对角线上都是1, 因为是自己和自己比

    这个矩阵容易获得,我们如何从这一矩阵获得对应的权重分配呢

    这里便出现了一个比较高级的概念,正互反矩阵和一致性矩阵

    首先正互反矩阵的定义是:

     

    我们目前构造出的矩阵很明显就是正互反矩阵

     

    而一致性矩阵的定义是:


    这里我们构造出的矩阵就不一定满足一致性,比如我们做因素1:因素2= 4:1  因素2:因素3=2:1    因素1:因素3=6:1(如果满足一致性就应该是8:1),我们就是因为难以确定各因素比例分配才做两两比较的,如果认为判断中就能保证一致性,就直接给出权重分配了

     

    到了关键部分,一致性矩阵有一个性质可以算出不同因素的比例

     

    这里的w就是我们想要知道的权重,所以通过 求比较矩阵的最大特征值所对应的特征向量,就可以获得不同因素的权重,归一化一下(每个权重除以权重和作为自己的值,最终总和为1)就更便于使用了。(实际上写这篇博客就是因为,重新翻了线代的书才好不容易理解这里的,就想记录下来)

     

    这里补充一点线性代数的知识:

        n阶矩阵有n个特征值,每个特征值对应一个n维特征列向量,特征值和特征向量的计算方法这里就省略了,反正书中的程序是直接用matlab 的eig函数求的

     

    这里不能忘了,我们给出的比较矩阵一般是不满足一致性的,但是我们还是把它当做一致矩阵来处理,也可以获得一组权重,但是这组权重能不能被接受,需要进一步考量

    例如在判断因素1,2,3重要性时,可以存在一些差异,但是不能太大,1比2重要,2比3 重要,1和3比时却成了3比1重要,这显然不能被接受

     

    于是引入了一致性检验:

              一致性的检验是通过计算一致性比例CR 来进行的

              

              当 10 . 0 < CR 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 

     

    CI的值由判断矩阵计算获得,RI的值查表获得,具体的计算公式这里就略去,重点是理解为什么要做一致性检验

     

     

    接下来解决第二个问题:每一个候选方案在每一个因素下又应该获得多少权重

     

    这里则需要将不同候选方案,在不同因素下分别比较,具体的比较方法,还是使用比较矩阵,只不过之前准则层的比较矩阵比较的对象是因素,这里比较的是某一因素下,候选方案的优劣, n个因素则需构造出来n个比较矩阵

    例如在工作环境的因素下,工作1与工作2相比为 :4:2,工作2与工作3=2:1  工作1:工作3=6:1.,这样构造一个矩阵,再用之前的一致性矩阵的方法就可以求出一个权重,然后相对应因素(这里是工作环境)所拥有的权值就可以按这个权重比例分配给不同候选物或人。

     

    其他因素同理

     

     

    至此两个问题就都得到了解决

    最终将每个候选物、人从不同因素获得的权值求和,就可以得到不同候选对于目标层的权值大小,继而可以根据值的大小,来选出优劣

     

    对于第一部分的总结:

     

    • 通过对层次分析法的基本了解,不难发现层次分析法对人们的思维过程进行了加工整理,提出了一套系统分析问题的方法,为科学管理和决策提供了较有说服力的依据。 

     

    • 但很明显的缺点是,整个分析过程似乎都是依赖于人的主观判断思维,一来不够客观,二来两两比较全部人为完成,还是非常耗费精力的,尤其是当候选方案比较多的时候

     

     

     

    文章的第二部分:


    层次分析法的变形应用(也可能本来就是这样用的,只不过参考书上没这样说,外语
    论文没细看)解决最优教练选择问题

     

    目标:选最优教练

     

    准则:  

     

     

    1. 职业生涯所带队伍的胜率      
    2. 职业生涯所带队伍的胜场            
    3. 从教时长(年)          
    4. 职业生涯所带队伍获奖状况(化成分数)

     

      

    候选:  众多教练

     

    准则层比较矩阵获得

     

     

    • 准则层的比较矩阵好构造 ,作6次两两比较,就可以获得4*4的比较矩阵

     

     

    候选层比较矩阵

     

    每一个准则对应下来的 候选层 已经有定量的数据了。 这里其实就不再需要候选层比较矩阵了, 因为有4000个教练的话, 得比4000*3999次,可以直接利用定量的数据计算权重

    • 例如“职业生涯所带队伍的胜场” 这一准则对应到每个教练都有直接相应数据的,例如教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90. 此时该准则下得到的分数, 就应当按照 10:5:9 的比例来进一步划分。 

     

    类似的,胜率准则 下就根据  “胜率   计算权重分配比例。 从教时长准则下就根据 “从教时间的年数” 计算权重分配比例

     

    这里又有两点可以注意:

     

    1.不同因素下数据的量纲和性质不一样,直接用数据作比来分配,不一定合适,比如胜率越要接近1越难,0.7比胜率0.5  和胜率0.9比0.7  ,后者比值比前者小,这显然不合适。这里可以利用指数函数和对数函数对数据先做一次处理, 再作为权重分配的依据。

     

    2.这里的用定量数据作比获得的矩阵显然满足一致性要求,不需要做一致性检验。以职业生涯所带队伍的胜场数为例,如果教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90。 那么 A:B :C 无论怎么作比, 都不会违反 10:15:9 的一致性。 

     

    综上就对层次分析法完成了定性定量结合的应用,以及对多个候选方案的比较(其实只是就是用程序控制数据作比,我们水平有限,能成功应用该方法已经不容易了)

     

    很遗憾的是比赛时编写的代码存放的优盘不慎丢失, 没有办法把代码共享出来, 这里只能将书中的代码贴出。比赛建模时, 就是在这个代码基础上进行修改实现。 只要理解了下列代码,编写符合自己需求的程序, 应当是水到渠成的事。

     

     

     

     matlab 代码(对应于文章第一部分选 Leader 的内容):

     

     

    clc,clear
    fid=fopen('txt3.txt','r');
    n1=6;n2=3;
    a=[];
    for i=1:n1
    	tmp=str2num(fgetl(fid));
    	a=[a;tmp]; %读准则层判断矩阵
    end
    for i=1:n1
    	str1=char(['b',int2str(i),'=[];']);
    	str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);
    	eval(str1);
    	for j=1:n2
    		tmp=str2num(fgetl(fid));
    		eval(str2); %读方案层的判断矩阵
    	end
    end
    ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
    [x,y]=eig(a);  % matlab eig(a) 返回矩阵的特征值和特征向量, 这里的 x 为矩阵 a 的 n 个特征向量, y 为矩阵 a 的 n 个特征值
    lamda=max(diag(y));  %  eig 函数返回的 y 是矩阵形式保存的, dig(y) 提取对角线上的n 个特征值到一个数组中, 求出最大特征值 lamda
    num=find(diag(y)==lamda);  % 返回最大特征的索引
    w0=x(:,num)/sum(x(:,num));  % x( :num) 为最大特征值所对应的那一列特征向量。 w0 中准则层计算出的 包含归一化后的n 个权重值
    cr0=(lamda-n1)/(n1-1)/ri(n1)
    
    for i=1:n1 % 循环 n 个维度, 针对每个维度, 都计算一次方案层的比较矩阵及其权重值
    	[x,y]=eig(eval(char(['b',int2str(i)])));
    	lamda=max(diag(y));
    	num=find(diag(y)==lamda);
    	w1(:,i)=x(:,num)/sum(x(:,num));
    	cr1(i)=(lamda-n2)/(n2-1)/ri(n2);
    end
    cr1, ts=w1*w0, cr=cr1*w0

     

    txt3.txt 中的内容, 前6行为准则层的 6 x 6 比较矩阵, 后 18 行则为 6 个准则下, 各自的 3 x 3 的比较矩阵。 

    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
    4 1 3
    2 1/3 1
    1 1/4 1/5
    4 1 1/2
    5 2 1
    1 3 1/3
    1/3 1 1/7
    3 7 1
    1 1/3 5
    3 1 7
    1/5 1/7 1
    1 1 7
    1 1 7
    1/7 1/7 1
    1 7 9
    1/7 1 1
    1/9 1 1

     

    再上一段 JAVA 代码, 方便 JAVA 童鞋参考, 这部分仅仅展示了如何用JAVA 代码进行准则层比较矩阵计算 。 

     

    import org.apache.commons.math3.linear.*;
    
    
    public class MatrixTester {
        public static void main(String[] args) {
    
            // Create a real matrix with two rows and three columns, using a factory
            // method that selects the implementation class for us.
            double[][] matrixData = {   {1d,    1d,     1d,     4d,     1d,     1d/2d},
                                        {1d,    1d,     2d,     4d,     1d,     1d/2d},
                                        {1d,    1d/2d,  1d,     5d,     3d,     1d/2d },
                                        {1d/4d, 1d/4d,  1d/5d,  1d,     1d/3d,  1d/3d },
                                        {1d,   1d,     1d/3d,  3d,     1d,     1d },
                                        {2d,    2d,     2d,     3d,     3d,     1d },
                                    };
            RealMatrix m = MatrixUtils.createRealMatrix(matrixData);
    
    
    
            // One more with three rows, two columns, this time instantiating the
            // RealMatrix implementation class directly.
            double[][] matrixData2 = {{1d, 2d}, {2d, 5d}, {1d, 7d}};
            RealMatrix n = new Array2DRowRealMatrix(matrixData2);
    
            // Note: The constructor copies  the input double[][] array in both cases.
            // Now multiply m by n
    //        RealMatrix p = m.multiply(n);
    //        System.out.println(p.getRowDimension());    // 2
    //        System.out.println(p.getColumnDimension()); // 2
    //
    //        // Invert p, using LU decomposition
    //        RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();
    
    
            RealMatrix D = new EigenDecomposition(m).getD();
            RealMatrix V = new EigenDecomposition(m).getV();
    
            for(int i=0; i<D.getRowDimension();i++)
            {
                System.out.println(D.getRowMatrix(i));
            }
    
            for(int i=0; i<V.getRowDimension();i++)
            {
                System.out.println(V.getRowMatrix(i));
            }
    
            // 特征值
            double maxLamda;
            int columIndexForMaxLamda=0;
            maxLamda=D.getEntry(0,0);
    
            for(int i =0, j=0; i<D.getRowDimension()&&j<D.getColumnDimension();i++,j=i)
            {
                double lamda = D.getEntry(i,j);
                if(maxLamda<lamda)
                {
                    maxLamda=lamda;
                    columIndexForMaxLamda = j;
                }
                System.out.println(lamda);
            }
    
            // 输出尚未做归一化 w1, w2, w3, w4, w5, w6 , 
            System.out.println(V.getColumnMatrix(columIndexForMaxLamda));
    
        }
    }
    

     

     

    展开全文
  • 层次分析法

    2019-01-26 15:59:34
    数学建模里层次分析法的视频 讲解内容
  • AHP层次分析法简介

    2010-11-06 15:52:10
    内容包括: 一、层次分析法概述 二、层次分析法的基本思路 三、层次分析法的用途举例 四、层次分析法应用的程序 五、应用层次分析法的注意事项 六、层次分析法应用实例
  • 层次分析法.pptx

    2019-11-14 19:50:11
    系统建模中的层次分析法详细讲解,对层次分析法的原理、应用做出了详细的介绍。可以应用于层次分析法的讲解。内容全面,解释详细,举例分析了该方法的应用。
  • 层次分析法原理和matlab代码

    千次阅读 2020-06-15 21:16:56
    文章目录一、层次分析法简述二、求解过程1、建立层次结构模型2、构造成对比较矩阵3、计算权向量并做一致性检验4、计算组合权向量并做组合一致性检验三、参考文献 一、层次分析法简述 层次分析法(The analytic ...

    一、层次分析法简述

    层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯.塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

    适用于解决多个备选方案决策以及在选择过程中各个因素的重要性比较。 比如说经常举的例子:选择旅游地,有3个选择方案,苏杭、北戴河和桂林,选择过程需要考虑多个因素,比如景色、费用、居住、饮食和旅途。江苏省2019年研究生数模比赛B题,高校学生选择高铁还是火车回家,在里程、时长、个人可支配收入、舒适度等多个因素中分析主要因素。

    二、求解过程

    1、建立层次结构模型

    在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。最上层为目标层,通常只有1个因素,最下层通常为方案或对象层,中间可以有一个或几个层次,通常为准则或指标层。当准则过多时(譬如多于9个)应进一步分解出子准则层。

    以旅游问题为例,我们就可以建立如下模型:
    在这里插入图片描述

    2、构造成对比较矩阵

    从层次结构模型的第2层开始,对于从属于(或影响)上一层每个因素的同一层诸因素,用成对比较法和1-9比较尺度构造成对比较阵,直到最下层。

    成对比较法是指,不把所有因素放在一起比较,而是两两相互比较。并且为了方便定量分析,把比较的结果用1-9进行标识。如果用 a i j a_{ij} aij表示因素i与因素j对上一层因素的重要程度,1-9比较尺度的含义如下:

    在这里插入图片描述
    两两因素比较的结果可用成对比较矩阵表示:
    A = ( a i j ) n × n , a i j > 0 , a j i = 1 a i j A=(a_{ij})_{n\times n}, a_{ij}>0, a_{ji}=\frac{1}{a_{ij}} A=(aij)n×n,aij>0,aji=aij1

    其中n是参与对比的元素的个数。

    成对比较矩阵因没有专门的数据,往往具有很强的主观性,为了增强数据的科学性(尤其是参加比赛)可以:

    1. 查找相关资料和文献,确定主要因素(定性)以及哪个因素更重要(减少问卷问题数量);
    2. 设置调查问卷(定量);

    旅游问题中,成对比较矩阵示例:

    A=[ 1 1/2 4 3 3;
    2 1 7 5 5;
    1/4 1/7 1 1/2 1/3;
    1/3 1/5 2 1 1;
    1/3 1/5 3 1 1]
    

    如果只分析景色等因素对于选择旅游地的重要程度(往上一层,准则–>目标),那么只用各因素的成对比较矩阵A即可。如果是想要确定最终去哪个目的地,还得确定方案层对准则层的重要程度,即把苏杭、北戴河和桂林作为比较因素,生成对景色和费用等的比较矩阵,分别记为 B 1 B 2 … B 5 B_{1}B_{2}…B_{5} B1B2B5,示例如下:

    #三个城市作为比较因素,所以n(矩阵维度)=3
    #因为要分析城市对景色、费用、居住、饮食和旅途各自的重要程度,所以就有5个比较矩阵
    B1=[ 1 2 5;
    1/2 1 2;
    1/5 1/2 1]
    
    B2=[1 1/3 1/8;
    3 1 1/3;
    8 3 1]
    
    B3=[1 1 3;
    1 1 3;
    1/3 1/3 1]
    
    B4=[1 3 4;
    1/3 1 1;
    1/4 1 1]
    
    B5=[1 1 1/4;
    1 1 1/4;
    4 4 1]
    

    3、计算权向量并做一致性检验

    对于每一个成对比较阵计算最大特征根及对应特征向量,利用一致性指标、随机一致性指标和一致性比率做一致性检验。若检验通过,特征向量(归一化后)即为权向量:若不通过,需重新构造成对比较阵。

    所谓一致性是指判断思维的逻辑一致性。如当甲比丙是强烈重要,而乙比丙是稍微重要时,显然甲一定比乙重要。这就是判断思维的逻辑一致性,否则判断就会有矛盾。

    如果A是完全一致的成对比较矩阵,应该有:
    a i j a j k = a i k , 1 ≤ i , j , k ≤ n a_{ij}a_{jk}=a_{ik}, 1\le i,j,k \le n aijajk=aik,1i,j,kn

    但由于客观事物的复杂性、人们认识上的多样性和片面性, 即使有九级标度, 也不能保证每个判断矩阵具有完全一致性。因此, 为了保证层次分析法 的结论基本合理, 还必须对形成的判断矩阵进行一致性检验。方法是:

    1. 先计算比较矩阵的最大特征值 λ m a x \lambda_{max} λmax, 然后计算一致性指标: C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n}{n-1} CI=n1λmaxn
    2. 如果 C I = 0 CI=0 CI=0, 则表明该判断矩阵具有完全一致性, 检验结束,否则进行下一步;
    3. 计算随机一致性比率, C R = C I R I CR=\frac{CI}{RI} CR=RICI,如果 C R < 0.1 CR<0.1 CR<0.1,就认为一致性可以接受,否则重新设定比较矩阵,重新验证一致性。

    其中矩阵的平均随机一致性指标RI(rand index),只与矩阵阶数n有关,常用的如下:
    在这里插入图片描述
    计算一致性的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.0001;i=2;k=abs(m(2)-m(1));
    while  k>p
      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('w=');disp(w);
    %以下是一致性检验
    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/RI(n);
    if CR<0.1
        disp('此矩阵的一致性可以接受!');
        disp('CI=');disp(CI);
        disp('CR=');disp(CR);
    else
        disp('此矩阵的一致性不可以接受!');
    end
    

    matlab的运行过程和结果:

    >> ahp
    请输入判断矩阵A(n阶)
    A=[ 1 1/2 4 3 3;
    2 1 7 5 5;
    1/4 1/7 1 1/2 1/3;
    1/3 1/5 2 1 1;
    1/3 1/5 3 1 1]
    w=
        0.2636
        0.4758
        0.0538
        0.0981
        0.1087
    
    此矩阵的一致性可以接受!
    CI=
        0.0180
    
    CR=
        0.0161
    

    得到权向量:

    W=[0.2636,0.4758,0.0538,0.0981,0.1087]
    

    至于说RI取值不同 [ 1 ] _{[1]} [1],差别没那么大,应该是精度和随机数取值的问题。

    4、计算组合权向量并做组合一致性检验

    计算最下层对目标的组合权向量,并根据公式做组合一致性检验,若检验通过,则可按照组合权向量表示的结果进行决策,否则需要重新考虑模型或重新构造那些一致性比率较大的成对比较阵。

    一致性检验的方法和前面的一样,不再赘述,计算出各自权重。

    w1=[0.5954,0.2764,0.1283]
    w2=[0.0819,0.2363,0.6817]
    w3=[0.4286,0.4286,0.1429]
    w4=[0.6337,0.1919,0.1744]
    w5=[0.1667,0.1667,0.6667]
    

    去苏杭的概率=0.26360.5954+0.47580.0819+0.05380.0981+0.09810.6337+0.10870.1667=0.2815;
    去北戴河的概率=0.2636
    0.2764+0.47580.2363+0.05380.4268+0.09810.1919+0.10870.1667=0.2452;
    去桂林的概率=0.26360.1283+0.47580.6817+0.05380.1429+0.09810.1744+0.1087*0.6667=0.4554

    权重矩阵:
    在这里插入图片描述

    注:0.2815+0.2452+0.4554=0.9821不等于1,是因为精度,如果写论文,逻辑自洽,去桂林的概率最好改为1-0.2815-0.2452=0.4733

    所以选择去桂林

    三、参考文献

    [ 1 ] [1] [1] 洪志国, 李焱, 范植华,等. 层次分析法中高阶平均随机一致性指标(RI)的计算[J]. 计算机工程与应用, 2002, 038(012):45-47,150.

    其它参考内容:
    层次分析法
    matlab-层次分析法

    展开全文
  • 【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.


    文章内容来自个人学习总结
    欢迎指出本文中存在的问题
    未经本人同意禁止转载,不得用于商业用途
    展开全文
  • 数学建模 01层次分析法(AHP)

    千次阅读 2019-07-18 09:16:21
    层次分析法 什么是层次分析法 层次分析法,属于运筹学理论。简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授...

    层次分析法

    什么是层次分析法

    层次分析法,属于运筹学理论。简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

    基本内容

     

    层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标)、多方案优化决策的系统方法。

     

    层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。

     

    层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。

     

    原理

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

     

    利用层次分析法构造系统模型时,基本步骤:

     下面来一个简单的数模例子进行演示

    旅游地选择问题

     1 构造层次结构模型

    将决策目标,考虑因素和决策对象按他们的相互关系分为最高层,最底层和中间层

     

    构造出来为:

    2 构造成对比较矩阵

    为了确定两两之间的确定关系,有一致矩阵法

    成对比较矩阵标度表

    根据此表,我们构建此问题的成对比较矩阵:

    eg:第一行第三列的4表示,c1和c3相比比稍微重要更重要一点。

    其中得注意一个问题,一致性检验:

    一般情况下构造的都是通过一致性检验的,具体方法在后文中的matlab中会体现

    下图是此问题所需要的所有成对比较矩阵

    下面的5个成对比较矩阵,eg:b1的5表示b1和b3相比,b1的景色明显重要于b3的景色。

    有了这些矩阵,进行matlab实操:

    层次分析法

    在命令行输入:cengcifenxi(保存文件名)    ‘ps:有需要matlab程序的请留言

    输入成对比较矩阵:

    在输入之后的5个数即为相应的对z的权重参数,下图为6组的计算结果:

     

     然后计算3个地方对总目标的权重:

    计算方法一目了然。

    因为得出的第三个地方:桂林的权重更大,所以,最后的决策应该是桂林。

    层次分析法软件应用

    进入软件     ps:有需要软件的请留言

    3表示有三层,目标层、准则层、方案层    下一步

    输入各层的指标数   下一步

    勾选表示有数据  单击下一步

    输入比较矩阵相应数值,然后单击最大特征值对应的特征向量,出现

    然后单击计算最大特征值

    点击一致性检验,有

    刚刚不通过,这次通过了

    单击继续下一步

    重复前面的操作直到整个模型构建完成

    最后查看层次总排序结果

    最后得到权重

    展开全文
  • 横渡江河、海峡选择何种方案是难于完全定量分析的问题。一个好的方案可以给人们带来经济效益、社会效益和环境效益,但是我们也不得不考虑这些因素之间的...本文主要研究的内容就是关于这样一个复杂系统的综合决策机制。
  • 针对企业微信营销过程中有待提高促销信息质量和健全营销体系的问题,文中设计与实现了一种基于层次分析法的营销效果分析软件系统。该系统基于既有文献研究和企业微信营销基本内容建立了营销效果评价体系,并给出企业...
  • 层次分析法和多属性决策算法

    千次阅读 2020-09-09 21:05:03
    层次分析法 层次分析法是笔者参加建模比赛最喜欢用的模型,也是各种算法中最简单的算法,大部分类型的题目都可以用层次分析法入手,进行初步的分析。 层次分析法的优点在于不需要任何数据,矩阵中用到的数据都是...
  • 层次分析法的代码实现,可以直接运行,不用更改代码路径相关的内容,直接输入判断矩阵就可以了
  • 高校仪器设备考核工作涉及的内容多、层面广,根据实际工作需要,运用层次分析法,选取一般仪器设备经济效益考核、常规管理考核和大型精密贵重仪器设备效益考核中的各项指标,先对各指标的含义进行分析,后对其分层排序,...
  • 层次分析法(AHP)介绍

    2020-07-29 20:31:45
    层次分析法中不理解的内容: 在层次单排序中,是计算上层某个元素与其下层的所有元素的排序,还是计算上层某个元素与其包含的下层元素的排序? 层次分析法(Analytic Hierarchy Process,简称AHP),是美国匹兹堡大学数学...
  • 基于网络层次分析法的移动电商的信任研究——基于布局设计、在线内容和安全性.pdf
  • 层次分析法(AHP)+Matlab实现

    千次阅读 2020-12-06 21:10:06
    1、 了解和掌握层次分析法的有关内容 2、 通过层次分析法的例题,掌握AHP解决评价类问题的方法 3、 matlab代码实现 学习时间: 2020.12.06 学习产出: 图片来源于b站:...
  • 数学建模(1)--层次分析法

    万次阅读 2020-09-06 03:00:00
    数学建模--层次分析法概括内容介绍实例权重表格判断(成对比较)矩阵 概括 层次分析法(The analytic hierarchy process, 简称AHP),是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和...
  • matlab层次分析法迅速求权重

    万次阅读 多人点赞 2019-06-15 10:43:18
    层次分析法是一种用处非常广的决策算法 虽然内容等于拍脑袋,不过有时候我们就是需要为拍脑袋找到合适的说法。 虽然它往往用于解决多目标选择的问题,但我们也可对其因素进行分析,来得到一个因素权重。 当然对于...
  • 层次分析法模型(数学建模学习)

    千次阅读 2020-07-24 17:32:00
    层次分析法模型 一、层次分析法应用场景 层次分析法(The Analytic hierarchy process/AHP)是比赛中最基础最常用的模型,应用场景在于解决评价类问题。比如哪个人最优秀,哪种方案最好之类。
  • 层次分析法(The Analytic Hierarchy Process即 AHP)是由美国运筹学家、 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较...
  • 层次分析法是一种实用的多准则决策方法。...层次分析法简单的表现形式与它深刻的理论内容紧密联系在一起.简单的表现形式使得层次分析法有着广泛的应用领域。探刻的理论内容确立了它在多准则决策领域中的地位.
  • 层次分析法原理和matlab代码实现

    千次阅读 多人点赞 2020-04-12 22:30:09
    笔记来自清风老师的数学建模系列课程,课程链接:层次分析法 层次分析法例题,IMMC2020https://blog.csdn.net/yanyanwenmeng/article/details/104907412 1. 指标选择途径 (1)题目背景 (2)中国知网、百度学术...
  • 层次分析法及Excel求解实验; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;...实验课需完成的内容 1excel求解层次分析法 2方案的排序 ;此课件下载可自行编辑修改仅供参考 感谢您的支持我们努力做得更好谢谢
  • 层次分析法(The analytic hierarchy process)简称AHP,它是将与决策有关的因素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。 本文为简明AHP学习笔记,并通过Python实践构建多层权重...
  • 数学建模方法-层次分析法

    千次阅读 2019-09-26 03:51:34
    首先在讲解“层次分析法”之间,需要讲解的一个概念是由Santy提出的“一致矩阵法”。那么什么是“一致矩阵法”呢,大家好好看咯,我们要开始了。。 二、一致矩阵法  一致矩阵法,听起来好像很难的样子,其实不然...
  • 层次分析法AHP程序

    2014-10-20 21:22:21
    此资源为运筹学内容附有ppt课件,请先详读课件,再看代码,易懂
  • 基于层次分析法构建了视频摘要评价模型,将视频摘要质量作为最终评价目标,以内容合理性和结构合理性作为准则,以内容完整性、特殊重要性、整体流畅性等作为测度层,从而建立了视频摘要评价指标体系。最后,通过对...
  • 引进最优传递矩阵对层次分析法进行改进,将改进的层次分析法应用到水文地质类型划分中。以内蒙古呼吉尔特矿区4对生产矿井为例,在分析水文地质条件的基础上,建立了矿井水文地质类型划分的评价指标体系,利用改进的层次...
  • 作者在本文以邮电企业为例,利用层次分析法的基本原理,着重分析了管理人员素质的含义及其主要内容,讨论了模型的特点,并建立了综合评价邮电管理人员素质的层次分析模型,最后对模型的应用进行了具体的讨论。
  • 基于模糊层次分析法的PDM项目风险评价方法研究 ,张志清,李亚伟,产品数据作为生产制造类企业的基础性管理内容备受重视,但是通过对多家企业调查发现,其失败率很高,因此,研究PDM项目实施的风险

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,793
精华内容 24,717
关键字:

层次分析法的内容