欢迎使用CSDN-markdown编辑器

来源:互联网 发布:电影院简单数据库设计 编辑:程序博客网 时间:2024/04/26 00:47

首先要注意的第一点是对所有的数据要归一化
单层情况:
评价指标:Y = W1*X1+W2*X2+W3*X3+…+Wn*Xn
其中Xi:Xj~第i项对比第j项的重要程度1—9重要程度递增
建立矩阵A~aij = Xi/Xj
E0 = (1/n,1/n,1/n…)T
Ek = A*E
k-1
ek = Ek/||Ek||
当迭代终止
w = eK
Y的评价模型出来了——线性的评价模型
多层就对每一层都采用以上算法

如果出现不一致情况——1:2 = 2 ,2:3 = 3,但是 1:3 = 7——非一致矩阵
一致阵的秩为1,非0特征根为n——A的归一化特征向量可作为权向量
不一致矩阵——最大特征向量作为权向量——

1,重新调整使得矩阵一致
2,允许出现不一致,但是要求不一致的范围
CI = (K-n)/(n-1)——一致性指标~CI越大不一致性越严重
RI——随机一致性指标
CR = CI/RI——当CR<0.1通过一致性检验
如果没通过一致性检验就重新调整比值

多层组合Wi+1 = Wij*Wi+1


%层次分析法的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(‘权向量’);disp(w);
disp(‘最大特征值’);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);
else
disp(‘此矩阵的一致性不可以接受!’);
end

0 0
原创粉丝点击