层次分析法程序代码

  • 格式:doc
  • 大小:187.50 KB
  • 文档页数:4

层次分析法
1)建立层次结构模型:
(2)构造判断矩阵
判断矩阵()
ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法):
(3)单层排序及一致性检验
1、单层排序
求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量
ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此
权重的大小,便可确定该层因素的排序。

2、一致性检验
取一致性指标max 1
n
CI n λ-=
-,(n 为A 的阶数)
令CR RI
=
,若0.1CR <,则认为A 具有一致性。

否则,需要对A 进行调整,直到具有满意的一致性为止。

(4)层次总排序及一致性检验
假定准则层12,,,n C C C 排序完成,其权重分别为12,,
,n a a a ,方案层P 包含m 个方
案:12,,
,m P P P 。

其相对于上一层的()1,2,
,j C j n =对方案层P 中的m 个方案进行单层排序,其排序权重记为12,,,j j mj b b b ()1,2,
,j n =,则方案层P 中第i 个方案Pi 的总
排序权重为
1
n
j ij
j a b
=∑,见下表:
从而确定层的排序。

例:
纯文本文件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。