层次分析法
1)建立层次结构模型:
决策目标 准则C1 准则C2 准则C3 准则C4 P1 P2 P3 P4 P5 P6
(2)构造判断矩阵
判断矩阵A?aij应为正互反矩阵,而且aij的判断如下(1~9尺度法):
??标度aij 1 3 5 7 9 2,4,6,8 11,...... 29(3)单层排序及一致性检验
1、单层排序
含义 C与C的影响相同 ijC比C的影响稍强 ijC比C的影响强 ijC比C的影响明显的强 ijC比C的影响绝对的强 ijC与C的影响之比在上述两个相邻的等ij级之间 C与C的影响之比为上面aijij的复反数 求解判断矩阵A的最大特征值?max,再由最大特征值求出对应的特征向量
??A???max??,并将?标准化,即为同一层相对于上一层某一因素的权重,根据此
权重的大小,便可确定该层因素的排序。 2、一致性检验
取一致性指标CI??max?nn?1,(n为A的阶数)
n RI 取随机性指标RI如下: 1 2 3 4 0 令CR?0 0.58 0.9 5 1.12 6 1.24 7 1.32 8 1.41 9 1.45 …… …… CI,若CR?0.1,则认为A具有一致性。 RI否则,需要对A进行调整,直到具有满意的一致性为止。
(4)层次总排序及一致性检验
假定准则层C1,C2,?,Cn排序完成,其权重分别为a1,a2,?,an,方案层P包含m个方案:P,2,?,n?对方案层P中的m个方案进行单1,P2,?,Pm。其相对于上一层的Cj?j?1层排序,其排序权重记为b1j,b2j,?,bmj 排序权重为
?j?1,2,?,n?,则方案层P中第i个方案Pi的总
?abj?1njij,见下表:
C1 层次C a1 层次P P1 b11 C2 ? ? ? Cn P层总排序权重 a2 b12 an b1n ?abj?1nnj1j P2 ? b21 ? b22 ? ? ? ? b2n ? ?abj?1j2j ? Pn bm1 bm2 bmn ?abj?1njmj 从而确定P层的排序。
例:
纯文本文件txt3.txt中的数据格式如下:
1 1 1 4 1 1/2 1 1 2 4 1 1/2 1 1/2 1 5 3 1/2 1/4 1/4 1/5 1 1/3 1/3 1 1 1/3 3 1 1
2 2 2 3 3 1 1 1/4 1/2 4 1 3 2 1/3 1 1 1/4 1/5 4 1 1/2 5 2 1 1 3 1/3 1/3 1 1/7 3 7 1 1 1/3 5 3 1 7 1/5 1/7 1 1 1 7 1 1 7 1/7 1/7 1 1 7 9 1/7 1 1 1/9 1 1 matlab程序:
>> fid=fopen('txt3.txt','r'); n1=6;n2=3; a=[];
for i=1:n1
tmp=str2num(fgetl(fid)); a=[a;tmp]; %读准则层判断矩阵 end
for i=1:n1
str1=char(['b',int2str(i),'=[];']);
str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1); for j=1:n2
tmp=str2num(fgetl(fid));
eval(str2); %读方案层的判断矩阵 end end
ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标 [x,y]=eig(a);
lamda=max(diag(y));
num=find(diag(y)==lamda); w0=x(:,num)/sum(x(:,num)); cr0=(lamda-n1)/(n1-1)/ri(n1) for i=1:n1
[x,y]=eig(eval(char(['b',int2str(i)])));
lamda=max(diag(y));
num=find(diag(y)==lamda);
w1(:,i)=x(:,num)/sum(x(:,num)); cr1(i)=(lamda-n2)/(n2-1)/ri(n2); end
cr1, ts=w1*w0, cr=cr1*w0