【数学建模】第一讲-层次分析法
??????
目錄
??????一、簡介及前言(層次分析法解決評價類問題)
二、構造判斷矩陣(準則層、方案層)
三、一致性檢驗(CR=CI/RI)
四、計算權重(算數平均、幾何平均、特征值)
五、計算得分(Excel)
六、論文寫作(SmartArt、畫圖)
七、代碼實現(MATLAB)
一、簡介及前言
層次分析法(Analytic Hierarchy Process,簡稱AHP),是指將與?決策有關的元素分解成目標、準則、方案等層次,在此基礎之上進行定性和定量分析的決策方法。
層次分析法是將決策問題按總目標、各層子目標、評價準則直至具體的備投方案的順序分解為不同的層次結構,然后用求解判斷矩陣特征向量的辦法,求得每一層次的各元素對上一層次某元素的優先權重,最后再加權和的方法遞階歸并各備擇方案對總目標的最終權重,此最終權重最大者即為最優方案。
層次分析法比較適合于具有分層交錯評價指標的目標系統,而且目標值又難于定量描述的決策問題。
層次分析法是建模比賽中最常用的模型,主要用于解決評價類問題。評價類問題可用打分解決。
如果直接打分問權重:
?
?
?關鍵在于如何確定這些權重
?
二、構造判斷矩陣
??
采用指標兩兩比較的方法確定最終權重
??
?aij與列指標相比,行指標的重要程度(行是列的幾倍)
滿足主對角線全為1,aij*aji=1,則稱正互反矩陣,也就是層次分析法中的判斷矩陣。
??
準則層各個指標構造一次得出權重。
方案層針對準則層每個指標構造判斷矩陣得出各個權重。
三、一致性檢驗
??
?? ? ? ? ? ? ? ? ? ??
列與列成比例,比值為?ajk。? ? ? ? ?行與行成比例,比值為aij
?
?一致性檢驗:檢驗我們構造的判斷矩陣與一致矩陣的差距大小
?
?
四、計算權重
?五、計算得分
六、論文寫作
七、代碼實現
clear;clc %第一步:輸入判斷矩陣 A=input('請輸入判斷矩陣'); %A = [1,2,4;1/2,1,2;1/4,1/2,1];%第二步:一致性檢驗(求CI、RI、CR) E = eig(A);%得到一個所有特征值構成的列向量 lambda_max = max(E);%最大特征值 n = size(A,1);%指標數即行列數 CI = (lambda_max-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 CR = CI/RI(n); disp(['一致性比例CR為' num2str(CR)]); if CR<0.1disp('一致性檢驗通過。') elsedisp('一致性檢驗不通過。') end%第三步:判斷矩陣求權重 [n,n] = size(A); %--------算數平均法--------% sum_A = repmat(sum(A),n,1);%按列求和得到行向量,行向量向下復制成r行 average_A = A./sum_A;%按列歸一化 average_A1 = sum(average_A,2)./n;%按行求和再除以指標數n disp('算數平均法得出的權重:'); disp(average_A1); %--------幾何平均法--------% product_A = prod(A,2).^(1/n);%按行求幾何平均值得到列向量(和算數平均有區別!!) product_A1 = product_A./sum(product_A);%歸一化 disp('幾何平均法得出的權重:'); disp(product_A1); %--------特征值法--------% [V,D] = eig(A);%V:一列列特征向量構成的矩陣D:特征值對角陣 eig_max = max(max(D));%最大特征值 [r,c] = find(D==eig_max,1);%最大特征值所在列find(logic,1)只找第一個不為0的 eig_vetor_max = V(:,c);%最大特征值對應的特征向量 eig_vetor_max1 = eig_vetor_max./sum(eig_vetor_max);%歸一化 disp('特征值法得出的權重:'); disp(eig_vetor_max1);總結
以上是生活随笔為你收集整理的【数学建模】第一讲-层次分析法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程的创建——fork函数
- 下一篇: 谷歌地球离线地图包_水经注全国离线地图都