AHP算法怎么进行一致性调整的matlab代码
时间: 2023-06-19 19:06:33 浏览: 98
下面是AHP算法一致性调整的Matlab代码实现,其中输入的参数为判断矩阵A:
```matlab
function [W,CI,CR]=AHP(A)
% AHP算法计算权重矩阵及一致性检验
% 输入:
% A - 判断矩阵
% 输出:
% W - 权重矩阵
% CI - 一致性指标
% CR - 一致性比率
n=length(A); % 矩阵维数
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49]; % 随机一致性指标
% 计算权重向量
[V,D]=eig(A);
[maxD,ind]=max(diag(D)); % 获取最大特征值及其位置
W=V(:,ind)'/sum(V(:,ind)); % 获取对应的特征向量
AW=A*W'; % 计算A*W
lambda=maxD; % 最大特征值
CI=(lambda-n)/(n-1); % 一致性指标
CR=CI/RI(n); % 一致性比率
% 输出结果
fprintf(['最大特征值为:%.4f\n'],lambda);
fprintf(['权重向量为:']);
fprintf('%.4f ',W);
fprintf('\n');
fprintf(['一致性检验结果:CI=%.4f,CR=%.4f\n'],CI,CR);
% 如果一致性检验未通过,则对矩阵进行一致性调整
if CR>0.1
fprintf('一致性检验未通过,需要进行一致性调整!\n');
RI=RI(n); % 取n阶随机一致性指标
A_new=(A+eye(n)*RI)/(1+RI); % 进行一致性调整
[W,CI,CR]=AHP(A_new); % 调用AHP函数重新计算
end
end
```
其中,RI为随机一致性指标,用于判断一致性检验是否通过。如果一致性检验未通过,则对判断矩阵进行一致性调整,重新计算权重向量、一致性指标和一致性比率。最终输出权重向量及一致性检验结果。
阅读全文