层次分析法(AHP)适用于那些难于完全定量分析的问题。运用层次分析建模,大体上可按下面四个步骤进行:
(1)建立递阶层次结构模型;
(2)构造出各层次中的所有判断矩阵;
(3)层次单排序及一致性检验;
(4)层次总排序及一致性检验;
最后,根据总排序权值大小得出决策方案。
MATLAB程序如下:
%层次分析法的matlab程序
disp('请输入判断矩阵A(n阶)');
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12
1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受!');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
end
输入所构造的矩阵后,可以得出矩阵是否具有较满意的一致性并接受分析结果。(该程序用于层次单排序及一致性检验)
接下来进行层次总排序检验:
在上一程序中可依次得到准则层单排序权值B=[b1 b2......
bn];
方案层单排序权值C1=[c1 c2......,cn];
C2=[m1
m2....,mn];
...........;
Cn=[k1 k2......,kn];
则总排序权值:W1=sum(B.*C1);
W2=sum(B.*C2);
W3=sum(B.*C3);
最后根据总排序权值W的大小来得出决策方案,总排序权值越大,则满意度越大。