在日常生活中,

我们常常面临着各种各样的选择。

比如你想去北京、上海、广州旅游,

但是由于种种原因,

你只能选择一个地点去旅游,

那么哪一种选择是最优的呢?

有没有较为科学的方法帮助我们更好地选择呢?

今天,小创君就带领大家认识一下

——层次分析法。



综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_02

层次分析法的简述



综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_03

      层次分析法简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂正式提出。它是指将与决策有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。

      层次分析法是对一些复杂、多元化的问题作出决策的简易方法,它特别适用于那些难于定量分析的问题。简单的说就是那些没有多少数据依据,基本凭个人的主观意识让你去选择一个最佳的目标或者计算出对于一个目标而言,各个因素所占的权重。



综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_03

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_05

层次分析法的实施步骤



综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_03

01

建立递阶层次结构模型

      将决策的目标、准则和对象依次分成目标层、准则层和最低层,并绘制层次结构图。

1)目标层:分析问题的预定目标或理想结果。

2)准则层:解决问题的准则。

3)措施层:为实现目标可供选择的各种措施、决策方案等。

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_07

02

构造出各层次中的所有判断矩阵

      准则层中的各准则在目标衡量中所占的比重并不一定相同,在决策者的心目中,它们各占有一定的比例。为了更好地推算出各准则在目标衡量中所占的比例,我们提出了成对比较判断矩阵。

      成对比较判断矩阵(简称判断矩阵)是表示本层所有因素针对上一层某一个因素(准则或目标)的相对重要性的比较。即不把所有因素放在一起比较,而是两两相互比较(同一层次),尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。

      进行两两相互比较,并按其重要性程度评定等级,一般采用1-9标度。

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_08

图     如下举例为准则层对目标层判断矩阵。

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_09

       如下举例为措施层对准则层判断矩阵。(其他4个判断矩阵以此类推)

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_10

       通过要素之间两两比对,会使判断更加清晰。

03

层次单排序及一致性检验



综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_11

一致性检验步骤


综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_11

     判断矩阵写出来之后会存在一个问题,那就是按理来说如果i对j的重要程度是a,j对k的重要程度是b,那么i对k的重要程度应该为a*b。但事实上并不是如此。所以需要进行一致性检验,如果在一定的合理范围之内,则判断矩阵不需要修改,如果不在一定的合理范围之内,则需要修改判断矩阵。

    1.计算一致性指标

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_13

    2.查找对应的平均随机一致性指标RI

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_14

    3.计算一致性比例CR

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_15

   

    若CR<0.1,则判断矩阵的一致性可接受。

    若CR>0.1,则需要对判断矩阵进行修正。


综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_11

层次单排序步骤

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_11

      通过数据计算的方法得到单独某一层对上一层因素的相对重要性权值,这一过程称为层次单排序,那能否确认层次单排序,需要提前进行一致性检验,即检查判断矩阵是否存在逻辑性的错误。

    1.归一化处理

若为一致性矩阵(即aij*ajk=aik的判断矩阵):

一致矩阵各列对应成比例,则只需对一列进行归一化处理。

若为判断矩阵:

由于各列不对应成比例,所以每列都需要进行归一化处理。

    2.求权重

即算术平均法、几何平均法、特征值法。(由于篇幅的关系只举一个例子)

例如算术平均法:

    1)将判断矩阵按列归一化(每列元素除以其所在列的和)。

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_18

    2)将归一化的各列相加。(按行求和)

综合评价法层次分析法r语言 综合分析评价方法_综合评价法层次分析法r语言_19

    3)将相加后得到的向量中每个元素除以n 即可得到权重向量。

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_20

    由此可知景色分配给北京、上海、广州的权重为01638、0.2973、0.5372。

      经过层次单排序及一致性检验即可计算出措施层对准则层各因素的相对重要性权值以及准则层对目标层的相对重要性权值。

04

层次总排序及一致性检验

计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。


      这一过程是从最高层到最低层次依次进行的。同样需要进行一致性检验,若检验通过就可以得到各底层方案对于目标的权重,从而做出优质的选择。

      例如准则层的6个元素对目标层的权值序列为a1、a2、a3、a4、a5、a6。措施层的3个元素对准则层的某一因素Aj的权值队列为b1j,b2j,b3j。则措施层某一因素Bi对目标层的权值为

综合评价法层次分析法r语言 综合分析评价方法_层次分析法matlab代码_21

设措施层三个元素对准则层某一因素Aj的一致性指标为CIj,随机性指标为RIj,则层次总排序的一致性比率为

CR=(a1*CI1+......+a6*CI6)/(a1*RI1+......+a6*RI6)

若CR<0.1,则层次总排序的一致性检验通过。


计算权重及一致性检验的matlab代码


function [Q]=AHP(B)
    %Q为权值,B为对比矩阵
    %导入判别矩阵B
    [n,m]=size(B);
    %判别矩阵具有完全一致性
    for i=1:n
    for j=1:n
    if B(i,j)*B(j,i)~=1 
                fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%d\n',i,j,B(i,j),B(j,i))
                end 
                end
                end
                %求特征值特征向量,找到最大特征值对应的特征向量
                [V,D]=eig(B);
                tz=max(D);
                tzz=max(tz);
                c1=find(D(1,:)==max(tz));
                tzx=V(:,c1);%特征向量
                %权
                quan=zeros(n,1);
                for i=1:n
                quan(i,1)=tzx(i,1)/sum(tzx);
                end
                Q=quan;
                %一致性检验
                CI=(tzz-n)/(n-1);
                RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
                %判断是否通过一致性检验
                CR=CI/RI(1,n);
                if CR>=0.1
                fprintf('没有通过一致性检验\n');
                else
                fprintf('通过一致性检验\n');
                end
                end
1. end

关于综合评价方法之层次分析法的介绍就到这里了,另外还有很多综合评价的方法哦,例如灰色关联分析法、熵权法、优劣解距离法等,感兴趣的小花椒可以自行查找资料了解呀~

END

编      辑:刘俊宇

责任编辑:邹慧婷

通信电子创新基地

CHUANGXINJIDI