1. 程式人生 > 實用技巧 >建模學習之第一天——層次分析法

建模學習之第一天——層次分析法

層次分析法

對著課件手打,非自我總結,但屬學習筆記。

  • 層次分析法: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$\neq$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[\begin{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}\right]\)

        那麼算術平均法求得的權重向量w~i~=\(\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[\begin{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}\right]\)

        那麼幾何平均法求得的權重向量(這個實在是寫不出來)。


    [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項進行修改。