層次分析法(Analytic Hierarchy Process)是美國運(yùn)籌學(xué)家薩蒂于上世紀(jì)70年代初,為美國國防部研究“根據(jù)各個(gè)工業(yè)部門對國家福利的貢獻(xiàn)大小而進(jìn)行電力分配”課題時(shí),提出的一種層次權(quán)重決策分析方法。其主要思想是根據(jù)研究對象的性質(zhì)將要求達(dá)到的目標(biāo)分解為多個(gè)組成因素,并按組成因素間的相互關(guān)系層次化,組成一個(gè)層次結(jié)構(gòu)模型,然后按層分析,最終獲得最高層的重要性權(quán)值,其求解過程可以分為以下四步。
1.建立層次結(jié)構(gòu)模型
將所包含的問題分層,可劃分為最高層、中間層、最低層。最高層表示需要解決問題的目的,也稱目標(biāo)層。中間層表示實(shí)現(xiàn)總目標(biāo)而采取的各種政策,一般分為策略層、約束層、準(zhǔn)則層。最低層用于解決問題的各種措施、方案等,也稱措施層、方案層。利用層次分析建立選課的結(jié)構(gòu)層次模型如下:
2.構(gòu)造判斷矩陣
由于實(shí)際問題的諸多因素通常不易定量的測量,只能根據(jù)經(jīng)驗(yàn)與知識進(jìn)行判斷,一種簡單的方法就是兩兩因素進(jìn)行比較,從而提高判斷的精確性。描述因素相互影響大小的取值也做某種量化,取值為1到9,的取值可以理解為因素 i 對目標(biāo)層的影響程度是因素 j 的影響程度的多少倍,或因素 i 對因素 j 的重要程度,矩陣元素的取值及含義如下表:
根據(jù)上表可得準(zhǔn)則層對目標(biāo)層的判斷矩陣A(記為Z-A)
稱上述矩陣為正互反矩陣,即aii=1,aij=1/aji。
3.層次單排序及一致性檢驗(yàn)
在構(gòu)造判斷矩陣過程中,aij的取值僅注意了ai與aj對目標(biāo)值的影響,而在確定矩陣各個(gè)元素時(shí)所采取的標(biāo)準(zhǔn)可能不一致。例如a12=2表示因素a1對目標(biāo)層的影響是因素a2的2倍,a23=2表示因素a2對目標(biāo)層的影響是因素a3的2倍,按常推理則a13=4,由于各種實(shí)際因素及主觀原因確定的a13不等于4,因而需要對矩陣進(jìn)行一致性檢驗(yàn)來盡量減少這種人為主觀上的不一致。若正互反矩陣滿足:
則稱為一致陣,其性質(zhì)有:
(1)矩陣的秩即rank(A)=1
(2)矩陣的最大特征根為n,其余特征根為0
(3)最大特征根對應(yīng)的特征向量
由判斷矩陣計(jì)算被比較元素對于該準(zhǔn)則的相對權(quán)重,來確定每個(gè)因素的排序,稱為層次單排序。當(dāng)考慮的因素較多時(shí),很難保證判斷矩陣為一致陣,需要檢驗(yàn)矩陣的一致性。令
CI為一致性指數(shù),當(dāng)CI=0,矩陣為一致陣,CI越大,矩陣不一致程度越大,但對單一的一個(gè)矩陣很難說其一致性指數(shù)的大小,因而又提出了平均隨機(jī)一致性指標(biāo)RI檢驗(yàn)判斷矩陣是否滿足一致性,對于判斷矩陣的階數(shù)n,RI取值如下表
令
CR為隨機(jī)一致性比率,當(dāng)CR<0.1時(shí),判斷矩陣有滿意的一致性,否則要重新調(diào)整判斷矩陣使其通過一致性檢驗(yàn)(注意各行成正倍數(shù)),才可以計(jì)算層次單排序的權(quán)重。
4.層次總排序及一致性檢驗(yàn)
計(jì)算同一層次所有因素對于總目標(biāo)相對重要性的排序權(quán)值的過程稱為層次總排序,計(jì)算和檢驗(yàn)都是從最高層向最低層進(jìn)行的。計(jì)算過程為:假設(shè)上一層次A一共包含m個(gè)因素,它的層次總排序權(quán)值分別為,下一層次B包含n個(gè)因素它們對于Aj的層次單排序分別為(當(dāng)與無聯(lián)系時(shí)),此時(shí)B層次總排序權(quán)值由下表給出:
計(jì)算中間部分權(quán)值時(shí)按列看,可以理解為準(zhǔn)則層B各因素對目標(biāo)層的相對權(quán)重;在計(jì)算B層次總排序相對權(quán)值時(shí)按行看,可以理解為對上一層各因素的權(quán)值乘對應(yīng)因素層次總排序權(quán)值的和。層次總排序也要進(jìn)行一致性檢驗(yàn)。設(shè)B層中的因素對單排序的一致性檢驗(yàn)為平均隨機(jī)一致性指標(biāo)為,則B層次總排序隨機(jī)一致性比率CR為:
當(dāng)CR<0.1時(shí),層次總排序結(jié)果具有滿意的一致性
5.示例
通過前面的層次模型建立判斷矩陣后,并通過一致性檢驗(yàn)后得準(zhǔn)則層各因素對目標(biāo)層的權(quán)值,及其一致性指數(shù)CI=0.054
然后構(gòu)造方案層對準(zhǔn)則層的判斷矩陣C1-P、C2-P、C3-P,及其一致性指數(shù)分別為0.019,0,0
最后寫出各方案即課程對選課層的層次總排序表
由于準(zhǔn)則層各判斷矩陣階數(shù)分別為3,2,2,則由前表得RI值分別為0.58,0,0進(jìn)行總排序一致性檢驗(yàn)
從而CR=CI/RI=0.0332<0.1,滿足一致性檢驗(yàn),所以課程A,B,C的權(quán)值分別為0.173,0.744,0.083,得最終選擇課程B最優(yōu)。從上述例子可以看出判斷矩陣的構(gòu)建很關(guān)鍵,要通過專家打分環(huán)節(jié)獲得判斷矩陣,一般通過經(jīng)驗(yàn)判斷、多人評審或參考文獻(xiàn)等途徑獲得。
AHP源代碼
clear;clc;
Z=[1 1/3 1/2;3 1 4;2 1/4 1]; %準(zhǔn)則層C對目標(biāo)層Z的判斷矩陣
[CI0,Qz]=ahp(Z);
C1=[1 1/5 1/3;5 1 3;3 1/3 1];C2=[1 1/3;3 1];C3=[1 4;1/4 1];%方案層P對目標(biāo)層Ci的判斷矩陣
[CI1,Qc1]=ahp(C1);
[CI2,Qc2]=ahp(C2);
[CI3,Qc3]=ahp(C3);
%計(jì)算層次總排序權(quán)值
P1=Qz(1,1)*Qc1(1,1)+Qz(2,1)*Qc2(1,1)+Qz(3,1)*0;
P2=Qz(1,1)*Qc1(2,1)+Qz(2,1)*Qc2(2,1)+Qz(3,1)*Qc3(1,1);
P3=Qz(1,1)*Qc1(3,1)+Qz(2,1)*0+Qz(3,1)*Qc3(2,1);
%總排序一致性檢驗(yàn)
CI=Qz(1,1)*CI1+Qz(2,1)*CI2+Qz(3,1)*CI3;
RI=Qz(1,1)*0.58+Qz(2,1)*0+Qz(3,1)*0;
CR=CI/RI;
if CR >=0.1
error('沒有通過總排序一致性檢驗(yàn)');
else
fprintf('通過總排序一致性檢驗(yàn)n');
end
%% 通過判斷矩陣求權(quán)值函數(shù)
function [CI,Q]=ahp(B)
%CI為一致性指數(shù),Q為權(quán)值,B為判斷矩陣
[n,m]=size(B);
%判別矩陣具有完全一致性
for i=1:n
for j=1:m
if B(i,j)*B(j,i)~=1
fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%dn',i,j,B(i,j),B(j,i));
error('判斷矩陣不具有完全一致性');
end
end
end
%求特征值特征向量,找到最大特征值對應(yīng)的特征向量
[V,D]=eig(B); %V是特征向量, D是由特征值構(gòu)成的對角矩陣,A*V=V*D。
tz=max(D); %返回的行向量為矩陣每一列的最大值
tzz=max(tz); %返回行向量的最大值
c1=find(D==tzz); %find返回一個(gè)包含數(shù)組D中每個(gè)非零元素的線性索引的向量,由于D為對角矩陣這里返回值為tzz的索引。
tzx=V(:,c1);%特征向量
%權(quán)值
Q=zeros(n,1);
for i=1:n
Q(i,1)=tzx(i,1)/sum(tzx);
end
%計(jì)算權(quán)值還可以用算術(shù)平均法和幾何平均法
%一致性檢驗(yàn)
CI=(tzz-n)/(n-1);
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判斷是否通過一致性檢驗(yàn)
CR=CI/RI(1,n);
if CR >=0.1
error('沒有通過一致性檢驗(yàn)');
else
fprintf('通過一致性檢驗(yàn)n');
end
end
-
向量機(jī)
+關(guān)注
關(guān)注
0文章
166瀏覽量
20880 -
AHP
+關(guān)注
關(guān)注
0文章
9瀏覽量
8455 -
功率矩陣
+關(guān)注
關(guān)注
0文章
2瀏覽量
1309
發(fā)布評論請先 登錄
相關(guān)推薦
評論