层次分析法--matlab

第一步:建立递阶层次结构

在这里插入图片描述

第二步:构造两两判断矩阵

怎么构造判断矩阵呢?如果专家没有给你判断矩阵时,就自己填。比如对于准则层,问小明根据下面的标度,C1和C2你认为哪个更重要呢? 小明回答:我认为花费比景色略微重要(介于1和3之间,那就是2)。判断矩阵中的aij表示的是i与j相比的重要程度,景色没有花费重要,所以填1/2

在这里插入图片描述

准则层

在这里插入图片描述

方案层

在这里插入图片描述

第三步:计算权重(一致性检验)和得分

计算权重

1.根据准则层得到一个n行1列的指标权重列向量
2.根据方案层得到每个方案相对与指标的权重
在这里插入图片描述

一致性检验

在这里插入图片描述

算术平均法

在这里插入图片描述

几何平均法

在这里插入图片描述

特征值法

在这里插入图片描述

计算得分

在这里插入图片描述
在这里插入图片描述

代码:

disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
% % % % % % % % % % % % %方法1: 算术平均法求权重% % % % % % % % % % % % %
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;

disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)
% % % % % % % % % % % % %方法2: 几何平均法求权重% % % % % % % % % % % % %
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))
% % % % % % % % % % % % %方法3: 特征值法求权重% % % % % % % % % % % % %
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )
% % % % % % % % % % % % %下面是计算一致性比例CR的环节% % % % % % % % % % % % %
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 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];  %注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
    disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end

猜你喜欢

转载自blog.csdn.net/m0_63388363/article/details/128725272