一、层次分析法的基本原理与步骤
二、构造判断矩阵
层次结构反映了因素之间的关系, 但准则层中的各准则在目标衡量中所占的比重 并不一定相同,在决策者的心目中,它们各占有一定的比例。
在确定影响某因素的诸因子在该因素中所占的比重时, 遇到的主要困难是这些比 重常常不易定量化。此外, 当影响某因素的因子较多时, 直接考虑各因子对该因素有 多大程度的影响时, 常常会因考虑不周全、顾此失彼而使决策者提出与他实际认为的 重要性程度不相一致的数据,甚至有可能提出一组隐含矛盾的数据。为看清这一点, 可作如下假设:将一块重为 1 千克的石块砸成n 小块,你可以精确称出它们的重量, 设为 w1 , … , wn ,现在,请人估计这 n 小块的重量占总重量的比例(不能让他知道各 小石块的重量),此人不仅很难给出精确的比值,而且完全可能因顾此失彼而提供彼 此矛盾的数据。
设现在要比较n 个因子X = {x1 , … , xn } 对某因素Z 的影响大小, 怎样比较才能提 供可信的数据呢? Saaty 等人建议可以采取对因子进行两两比较建立成对比较矩阵的 办法。即每次取两个因子xi 和xj ,以 aij 表示xi 和xj 对Z 的影响大小之比, 全部比较 结果用矩阵 A = (aij )n ×n 表示,称 A 为Z − X 之间的成对比较判断矩阵(简称判断矩 阵)。容易看出,若xi 与xj 对Z 的影响之比为aij ,则 xj 与xi 对Z 的影响之比应为

三、层次单排序及一致性检验



四、层次总排序及一致性检验


五、层次分析法的应用
clc,clear
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



















