[清风数学建模]层次分析法(AHP)笔记及代码实现
? ?本文章是學習清風老師數學建模視頻后所做的筆記,其中一些圖片及代碼實現來源于清風老師的B站視頻: 【強烈推薦】清風:數學建模算法、編程和寫作培訓的視頻課程以及Matlab等軟件教學_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1DW411s7wi
? 如果大家發現文章中有任何錯誤,歡迎在留言區批評指正,我也會持續更新有關數學建模學習的筆記。
目錄
一、算法簡介
二、問題分析及理論基礎
層次分析法的思想:
一致性檢驗步驟:
計算權重:
1、算術平均法
2、幾何平均法:求幾何平均值
?3、特征值法:
總結:
層次分析法步驟
三、層次分析法的缺點
四、代碼實現
五、例題? 耳機挑選問題
一、算法簡介
? 層次分析法(The analytic hierarchy process,簡稱AHP),建模比賽中最基礎的一類模型之一,主要用于解決評價類問題(例如:選擇哪種方案最好、哪位運動員或者員工表現的更加優秀)。
? 該方法將定量分析與定性分析結合起來,通過決策者的經驗或者搜集得到的數據,對評價準則和方案劃定權重,最后得到一個綜合權重,結合實際問題得到最優方案。
二、問題分析及理論基礎
?在建模題目中當看到確定評價指標,形成評價體系等字眼,可看作評價類問題。注意:評價類問題可用打分解決(也就是權重表格的形式)
? 當我們在解決這一問題時,我們可以從三個問題出發確定思路:
? 1、我們評價的目標是什么?(一般題目中會出現,例如選擇哪種方案最好)
? 2、我們為了達到這個目標有哪幾種可選方案?
? 3、評價準則或者說標準是什么?(題目中會出現或者查詢論文得到相關準則)
? ?例如在小明高考后選擇學校的問題中,我們評價的目標是在武大和華科中選擇一個更適合小明的學校,有武大和華科兩種可選方案,通過查詢得知,評價一個學校的標準可簡要分為幾類:學習氛圍、就業前景、男女比例、校園景色。確定好方案和準則后,由小明來為方案和準則打分(劃定權重),最后算出綜合權重,來確定武大華科哪一個學校更適合小明。
層次分析法的思想:
? 在為方案和準則打分時,也就是劃定權重時,容易面臨一個問題:當一次性考慮多個指標之間的關系時,容易考慮不周,以致于對方案多次劃定權重時,每一次的權重會不一樣。
? 解決方法:指標之間兩兩相比劃定權重,最后根據兩兩比較的結果得到最后多個指標之間的權重關系。
? 接下來將介紹如何進行兩兩相比,以及如何推算出最終權重。
??首先這是一個判斷矩陣,我們會對景色、花費等五個準則進行兩兩打分,
? ?當我們根據數據進行打分時,如果認為花費比景色略微重要(介于同樣重要與稍微重要之間),在標度表中處于2的重要性,就在A[2,1]處標上2,同時景色比花費的標度為1/2,在A[1,2]處標上1/2。
?當我們兩兩打分后可以得到一個完整的判斷矩陣。
同時還要根據每一個準則對方案打分,就當前例子而言:想得到蘇杭、北戴河、桂林在景色、花費、居住等五個方面的權重,就要按每一個準則對三種方案進行打分,換句話說,有幾個準則,就要打幾次分,最終得到在每個準則下的方案權重。
? ?但這里會面對一個問題:可能會出現矛盾之處(如下圖),也就是不一致的現象。這就需要我們去改動權重,但實際操作中,如果判斷矩陣的準則很多,無法輕易得知是否有不一致的現象。所以需要了解一致矩陣的特征:各行(各列)之間存在倍數關系。
? ?但在實際建模過程中,絕對的一致矩陣(這里指:得到的判斷矩陣完美符合一致矩陣的定義)是不存在的,所以我們在計算最終權重之前,需要對判斷矩陣進行一致性檢驗,來檢驗判斷矩陣和一致矩陣之間是否存在較大差距。
一致性檢驗步驟:
1、計算一致性指標CI
2、查表找到平均隨機一致性指標RI
?3、計算一致性比例CR
如果計算得到CR<0.1,則該判斷矩陣通過一致性檢驗,一致性可以接受。
如果未通過,則要修改權重,是判斷矩陣更加貼合一致矩陣。
計算權重:
1、算術平均法
一致矩陣:對每一列進行歸一化
因為一致矩陣每一列都存在倍數關系,所以用任何一列求權重都是可以的,以上公式為第一個指標所占權重。
對于非一致矩陣,因為每一列不存在倍數關系,所以對每一列進行歸一化會得到不同的權重,還需對權重進行處理,也就是求均值。
2、幾何平均法:求幾何平均值
?
?3、特征值法:
? 對于一致矩陣來說,因為各行之間存在倍數關系,通過行變換后,可以得到秩為1的矩陣,有一個特征值為一致矩陣的跡n,其余特征值為0。可以得到當特征值為n時,特征向量正好為,正好為一致矩陣的第一列,由此可計算權重。?
假如判斷矩陣通過一致性檢驗時,可以仿照一致矩陣權重的求法,算出對應的特征向量后進行歸一化處理。
?一般論文中使用特征值法得到權重,但比賽中推薦三種方法都用。
總結:
層次分析法步驟
1、分析系統中各因素之間的關系,建立系統的遞階層次結構。
2、對于同一層次的各元素關于上一層次中某一準則的重要性進行兩兩比較,構造兩兩比較矩陣(判斷矩陣)。
3、對判斷矩陣進行一致性檢驗,一致性檢驗通過后,計算權重。
4、計算各層元素對系統目標的合成權重,并進行排序。
最終權重=準則權重*方案權重
三、層次分析法的缺點
1、評價的決策層不能太多,太多的話n會很大,判斷矩陣和一致矩陣差異可能會很大。
2、在理想情況下,準則兩兩評價的打分是由專家討論研究得到,而比賽中則由參賽者自己打分,對于題目中有關決策層已經給出數據,無法打分的情況下,層次分析法不能很好的解決這類問題。
四、代碼實現
%% 注意:在論文寫作中,應該先對判斷矩陣進行一致性檢驗,然后再計算權重,因為只有判斷矩陣通過了一致性檢驗,其權重才是有意義的。 %% 在下面的代碼中,我們先計算了權重,然后再進行了一致性檢驗,這是為了順應計算過程,事實上在邏輯上是說不過去的。 %% 因此大家自己寫論文中如果用到了層次分析法,一定要先對判斷矩陣進行一致性檢驗。 %% 而且要說明的是,只有非一致矩陣的判斷矩陣才需要進行一致性檢驗。 %% 如果你的判斷矩陣本身就是一個一致矩陣,那么就沒有必要進行一致性檢驗。disp('請輸入判斷矩陣A') A=input('A='); [n,n] = size(A); % % % % % % % % % % % % %方法1: 算術平均法求權重% % % % % % % % % % % % % Sum_A = sum(A); SUM_A = repmat(Sum_A,n,1); Stand_A = A ./ SUM_A;disp('算術平均法求權重的結果為:'); disp(sum(Stand_A,2)./n) % % % % % % % % % % % % %方法2: 幾何平均法求權重% % % % % % % % % % % % % Prduct_A = prod(A,2); Prduct_n_A = Prduct_A .^ (1/n); disp('幾何平均法求權重的結果為:'); disp(Prduct_n_A ./ sum(Prduct_n_A)) % % % % % % % % % % % % %方法3: 特征值法求權重% % % % % % % % % % % % % [V,D] = eig(A); Max_eig = max(max(D)); [r,c]=find(D == Max_eig , 1); disp('特征值法求權重的結果為:'); disp( V(:,c) ./ sum(V(:,c)) ) % % % % % % % % % % % % %下面是計算一致性比例CR的環節% % % % % % % % % % % % % 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.10disp('因為CR<0.10,所以該判斷矩陣A的一致性可以接受!'); elsedisp('注意:CR >= 0.10,因此該判斷矩陣A需要進行修改!'); end五、例題? 耳機挑選問題
? 首先在知網上查詢耳機等關鍵詞查詢資料,得到耳機購買的四個影響因素:音質、價格、外觀、功能。然后2020耳機排行榜上得到排行榜前三的三個品牌:索尼、漫步者、蘋果、形成三個方案。
? 對準則和方案進行評價,在對準則進行評價時主觀性較大,此處評價為筆者自行打分,
| 準則 | 音質 | 價格 | 外觀 | 功能 |
| 音質 | 1 | 4 | 6 | 8 |
| 價格 | 1/4 | 1 | 4 | 5 |
| 外觀 | 1/6 | 1/4 | 1 | 2 |
| 功能 | 1/8 | 1/5 | 1/2 | 1 |
方案評價:方案評價中參考知乎對三個品牌耳機的評價
| 音質 | 索尼 | 漫步者 | 蘋果 |
| 索尼 | 1???? | 4???? | 8???? |
| 漫步者 | ?1/4 | 1???? | 4???? |
| 蘋果 | ?1/8 | ?1/4 | 1???? |
| 價格 | 索尼 | 漫步者 | 蘋果 |
| 索尼 | 1???? | ?1/2 | ?1/4 |
| 漫步者 | 2???? | 1???? | ?1/2 |
| 蘋果 | 4???? | 2???? | 1???? |
| 外觀 | 索尼 | 漫步者 | 蘋果 |
| 索尼 | 1???? | ?1/2 | ?1/6 |
| 漫步者 | 2???? | 1???? | ?1/3 |
| 蘋果 | 6???? | 3???? | 1???? |
| 功能 | 索尼 | 漫步者 | 蘋果 |
| 索尼 | 1???? | ?1/3 | ?1/8 |
| 漫步者 | 3???? | 1???? | ?1/4 |
| 蘋果 | 8???? | 4???? | 1???? |
通過一致性檢驗后,利用算數平均法,幾何平均法,特征值法形成最終權重
| 準則權重 | 索尼 | 漫步者 | 蘋果 | |
| 音質 | 0.6147 | 0.7071 | 0.2227 | 0.0702 |
| 價格 | 0.245 | 0.1429 | 0.2857 | 0.5714 |
| 外觀 | 0.0865 | 0.1111 | 0.2222 | 0.6667 |
| 功能 | 0.0539 | 0.0783 | 0.02051 | 0.07167 |
| 最終權重 | 0.48349539 | 0.227215979 | 0.244677503 |
(此處用excel處理時,可以F4鎖定準則權重加以計算)
得到最終權重,綜合來看對小明來說購買索尼耳機比較合適。
總結
以上是生活随笔為你收集整理的[清风数学建模]层次分析法(AHP)笔记及代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据可视化图表使用场景大全 !
- 下一篇: fastadmin html js记录一