function [ output_args ] = AHP( A, BS )
%AHP Summary of this function goes here
% Detailed explanation goes here
clear all;
if nargin < 1 | isempty(A)
A = [ 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,1,1];
end
if nargin < 2 | isempty( BS )
B1 = [1,1/4,1/2;4,1,3;2,1/3,1];
B2 = [1,1/4,1/5;4,1,1/2;5,2,1];
B3 = [1,3,1/3;1/3,1,1/7;3,7,1];
B4 = [1,1/3,5;3,1,7;1/5,1/7,1];
B5 = [1,1,7;1,1,7;1/7,1/7,1];
B6 = [1,7,9;1/7,1,1;1/9,1,1];
BS = [B1,B2,B3,B4,B5,B6];
end
% 维数校验
if( size(A, 1) ~= size(A, 2) )
fprintf('A不是方阵, 出错退出!');
return;
end
nA = size(A, 1);
[mB, nB] = size(BS);
if( ( mod(nB, mB) ~= 0 ) | ( nB / mB ~= nA ) )
fprintf('B的维数有误,出错退出');
end
RI = [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49, 1.51]; % 随机一致性指标RI
[VA, DA] = eig(A); % 求A的特征向量WA和特征根LA
[lambda_max_A idn] = max( max(DA) );
WA = VA(:, idn);
WA = WA / sum(WA);
CIn = (lambda_max_A - nA) / (nA - 1);
CRn = CIn / RI(nA); % A的一致性比率CRn
if CRn < 0.10
fprintf('A 的CR %f 通过一致性检验!\n',CRn);
else
fprintf('A 的CR %f 未通过一致性检验!\n',CRn);
end
VB = zeros( mB, nB );
DB = zeros( mB, nB );
lambda_max_B = zeros(1, nB);
WK = zeros(mB, nA);
CIm = zeros(1, nA);
RIm = RI(mB);
CRm = zeros(1, nA);
for k = 1 : nA
[VB( : , (k - 1) * mB + 1 : (k - 1) * mB + 3), DB( : , (k - 1) * mB + 1 : (k - 1) * mB + 3)] ...
= eig( BS( : , (k - 1) * mB + 1 : (k - 1) * mB + 3) ); % 求B的特征向量WK和特征根LK
[lambda_max_B(k) idn] = max( max(DB( : , (k - 1) * mB + 1 : (k - 1) * mB + 3)) );
WK(:, k) = VB(:, (k - 1) * mB + idn);
WK(:, k) = WK(:, k) / sum(WK(:, k));
CIm(k) = ( lambda_max_B(k) - mB) / (mB - 1);
CRm(k) = CIm(k) / RIm; % B的一致性比率CRm
end
for k = 1 : nA
if CRm(k) < 0.10
fprintf('B%d的CR %f 通过一致性检验!\n', k, CRm(k) );
else
fprintf('B%d的CR %f 未通过一致性检验!\n', k, CRm(1,k));
end
end
disp('准则层对目标层权向量'); disp(WA);
disp('方案层对准则层权向量'); disp(WK);
E = WK * WA;
disp('方案层组合权向量');disp(E);
CI = CIm * WA;
RI = RIm * WA;
CR = CI / RI; % 组合一致性比率CR
if CR < 0.10
fprintf('组合一致性比率CR %f 通过一致性检验!\n',CRn);
else
fprintf('组合一致性比率CR %f 未通过一致性检验!\n',CRn);
end
[MAX,CHOICE] = max(E); % 最佳选择
CHOICE
end
评论0