层次分析法程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

层次分析法

1)建立层次结构模型:

(2)构造判断矩阵

判断矩阵()

ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法):

(3)单层排序及一致性检验

1、单层排序

求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量

ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此

权重的大小,便可确定该层因素的排序。 2、一致性检验

取一致性指标max 1

n

CI n λ-=

-,(n 为A 的阶数)

RI 令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

相关文档
最新文档