建模學習之第一天——層次分析法
層次分析法
對著課件手打,非自我總結,但屬學習筆記。
-
層次分析法: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項進行修改。
-