matlab代码
公式代码
%计算特征值和特征向量,并进行一致性检验
%计算方法原理参看“模糊数据及其应用”这本书
function [W,CR,ouput] = AHP(A,w0,a)
%A表示输入的判断举证,W0为任取向量正规Fuzzy向量(输入为行向量),a为事先给定的精度
%输出为归一化的权值向量W和对应的特征值K
W1(:,1)=w0'; %将得到原始向量转存在W1矩阵中,迭代算出的权向量全部存在W1矩阵中;
k(1)=0; %将每个权向量对应的特征值存在k数组中
k(2)=max(A*W1(:,1));
W1(:,2)=A*W1(:,1)./max(A*W1(:,1)); %第一次迭代公式
b=max(abs(W1(:,2)-W1(:,1)));
i=2;
while b>a
k(i+1)=max(A*W1(:,i));
W1(:,i+1)=A*W1(:,i)./max(A*W1(:,i)); %迭代公式
b=max(abs(W1(:,i+1)-W1(:,i)));
i=i+1;
end
%W1矩阵中最后一列为最终的结果,对最后一列进行归一化处理
W=W1(:,size(W1,2))./sum(W1(:,size(W1,2)));
K=k(length(k));
%判断是否归一化
%计算一致性指标CI
CI=(K-size(A,1))/(size(A,1)-1);
%计算随机一致性指标RI,RI取值表
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 1.5943 1.6064 ...
1.6133 1.6207 1.6292 1.6385 1.6403 1.6462 1.6497 1.6556 1.6587 1.6631 1.667 1.6693 1.6724];
%计算一致性指标CR
CR=CI/RI(size(A,1));
if CR<0.1
ouput='满足一致性要求';
else
output='不满足一致性要求';
end
调用代码
%计算方法参看模糊数据及其应用这本书
%方法一:迭代计算法
clc;clear;
A=[1 1/2 4 3 3;2 1 7 5 5;1/4 1/7 1 1/2 1/2;1/3 1/5 2 1 1;1/3 1/5 3 1 1];
w0=[0 1 0 0 0];
a=0.00001;
[W,CR,ouput] = AHP(A,w0,a)
输出结果