zoukankan      html  css  js  c++  java
  • 建模学习第一天——层次分析法

    层次分析法

    对着课件手打,非自我总结,但属学习笔记。

    • 层次分析法:AHP,建模比赛种最基础的模型之一,主要用于解决评价类问题。

    • 解决评价类问题的三问:

      1、我们评价的目标是什么?

      2、我们为了达到这个目标有哪些可选的方案?

      3、评价的准则或者说指标是什么?(题目常常没有相关的数据和指标,因此需要我们根据背景材料、常识、网上收集到的参考资料进行综合分析确定最合适的指标。)

      • 优先级:
        • 谷歌/百度
        • 微信搜索
        • 知乎搜索
    • 对于各项指标的权重,因为受到很多影响因子的干扰,因此采用分而治之的思想,通过两两指标之间的比较来推算出权重。

    • 但是矩阵种常常出现不一致的现象

    • 当矩阵为正互反矩阵且各行各列之间成倍数关系时,矩阵为一致矩阵

    • 在层次分析法中,所构造的矩阵均为正互反矩阵,但是不一定为一致矩阵。因此使用判断矩阵求权重之前,必须要对判断矩阵进行一致性检验。

    • 对于一致矩阵,有一个特征值tr(A)为n,其余特征值为0,且秩为1,当特征值为n时。特征向量为k[(frac{1}{a~11~}),(frac{1}{a~12~}),……,(frac{1}{a~1n~})]T(k$ eq$0)。

    • 当n阶正互反矩阵A为一致矩阵时当且仅当最大特征值λmax=n,且当正互反矩阵A非一致时,一定满足λmax>n。


    • 一致性检验的步骤:

      • 第一步:计算一致性指标CI=(frac{λ~max~—n}{n—1})

      • 第二步:查找对应的平均随机一致性指标RI

      • 第三步:计算一致性比例CR=(frac{CI}{RI}),如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修改。

        CI = (Max_eig - n) / (n-1);
        RI=[0 0.0001 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];  %注意哦,这里的RI最多支持 n = 15
        % 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
        CR=CI/RI(n);
        disp('一致性指标CI=');disp(CI);
        disp('一致性比例CR=');disp(CR);
        if CR<0.10
            disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
        else
            disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
        end
        
    • 算术平均法求权重:

      • 第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)

      • 第二步:将归一化的各列相加(按行求和)

      • 第三步:将相加后得到的向量中的每个元素除以n得到权重向量。

        • 假设判断矩阵A=(left[egin{matrix}a~11~&a~12~&cdots&a~1n~\a~21~&a~22~&cdots&a~2n~\vdots&vdots&ddots&vdots\a~n1~&a~n2~&cdots&a~nn~end{matrix} ight])

          那么算术平均法求得的权重向量wi=(frac{1}{n})(sum_{j=1}^n frac{a~ij~}{sum_{k=1}^na~kj~})(i=1,2,……,n)

      • [n,n]=size(A)
        Sum_A=sum(A);
        SUM_A=repmat(Sum_A,n,1);
        Stand_A=A./SUM_A;
        disp('算术平均法求权重的结果为:');
        disp(sum(Stand_A,2)./n)
        

    • 几何平均法求权重:

      • 第一步:将A的元素按照行相乘得到一个新的列向量。

      • 第二步:将新的向量的每个分量开n次方。

      • 第三步:对该列向量进行归一化即可得到权重向量。

        • 假设判断矩阵A=(left[egin{matrix}a~11~&a~12~&cdots&a~1n~\a~21~&a~22~&cdots&a~2n~\vdots&vdots&ddots&vdots\a~n1~&a~n2~&cdots&a~nn~end{matrix} ight])

          那么几何平均法求得的权重向量(这个实在是写不出来)。


      [n,n]=size(A);
      Prduct_A = prod(A,2);
      Prduct_n_A = Prduct_A .^ (1/n);
      disp('几何平均法求权重的结果为:');
      disp(Prduct_n_A ./ sum(Prduct_n_A))
      

    • 特征值法求权重:

      • 第一步:求出矩阵A的最大特征值以及其对应的特征向量。
      • 第二步:对求出的特征向量进行归一化即可得到我们的权重。

    [V,D] = eig(A);
    Max_eig = max(max(D));
    [r,c]=find(D == Max_eig , 1);
    disp('特征值法求权重的结果为:');
    disp( V(:,c) ./ sum(V(:,c)) )
    


    • 善于利用EXCEL来减轻工作量

    • 层次分析法:是在充分研究了人类思维过程的基础上提出来的,它较合理地解决了定性问题定量化的处理过程。AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避决策者主观判断的缺点。



    总结

    • 层次分析法的第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构。

    • 层次分析法第二步:两两比较构造判断矩阵。

    • 层次分析法第三步:由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)。

      • 清风建议:强烈建议大家在比赛时三种方法都使用:以往的论文利用层次分析法解决实际问题时,都是采用其中某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。

        注:(1)一致矩阵不需要进行一致性检验,只有非一致矩阵的判断矩阵才需要进行一致性检验

        2)在论文写作中,应该先进行一致性检验,通过检验后再计算

        权重,视频中讲解的只是为了顺应计算过程。

    • 层次分析法第四步:根据权重矩阵计算的分,进行排序。

    • 层次分析法的局限性:

      • 评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大

        n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        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

        有时候根据需要可对RI表的1,2项进行修改。

    本是青灯不归客, 却因浊酒留风尘
  • 相关阅读:
    在ModelSim中添加Xilinx仿真库
    关于DDR3非常棒的文章
    Modelsim编译Xilinx器件库的另一种方法
    FPGA按键去抖verilog代码
    DDOS与DDOS追踪的介绍
    自动实时监控Windows2003服务器终端登录
    Java 如何实现线程间通信
    C# 获取FormData数据
    利用 FormData 对象发送 Key/Value 对的异步请求
    jdk初始安装配置
  • 原文地址:https://www.cnblogs.com/wit-panda/p/13512046.html
Copyright © 2011-2022 走看看