层次分析法matlab代码记录

clear,clc   %层次分析法
A = [1 1/2 1/3 1/2;
     2 1 1/2 1;
     3 2 1 2;
     2 1 1/2 1];            % 输入判断矩阵
n = size(A,1);                          %方阵的行(列)数
%% 特征值法求权重                                        
[V,D] = eig(A);                          %V是特征向量, D是由特征值构成的对角矩阵
max_eig= max(D(:));                      %求出矩阵A的最大特征值
[r,c] = find(D==max_eig,1);              % 寻D中首个与最大特征值相等的元素的位置记录其行和列。
w=V(:,c) ./ sum(V(:,c));                 % 对求出的特征向量进行归一化即可得到我们的权重
disp('特征值法求权重的结果为:') 
disp(w)        
%% 计算一致性比例CR
CI = (max_eig - n) / (n-1);                      %一致性指标CI
RI=[0 0 0.58 0.9 1.12 1.24 1.32 1.41 1.45 1.49]; %随机一致性指标RI              
%注意:这里的RI最多支持 n = 10
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
score=[60 90 100 80]';%输入该人员各指标得分(转换为和权重一样的列向量)
score_total=sum(w.*score);        %计算综合得分

你可能感兴趣的:(数学建模,matlab,matlab,线性代数,矩阵,数学建模)