1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function[bw,CI_RI,W,CI_RI_B,t]=XCLAHP(A,a1,a2,a3,a4,a5) %针对五个准则矩阵的层次分析法,A输入判断矩阵,a1~a5输入准则层矩阵 RI=[0 0 0.58 0.96 1.12 1.24 1.32 1.41 1.45]; %计算准则层的lamada和一致性检验 sum_A=sum(A,2); size_A=size(A,1); bw=zeros(1,size_A); for i=1:size_A bw(i)=sum_A(i)./sum(sum_A); end bw=bw'; lamada_A=sum((A*bw)./bw)/size_A CI_RI=(lamada_A-size_A)/(size_A-1)/RI(size_A); if CI_RI<0.1 fprintf('一致性检验通过'); else fprintf('error'); end %计算方案层的lamada向量和层次总排序一致性检验 B(:,:,1)=a1;B(:,:,2)=a2;B(:,:,3)=a3;B(:,:,4)=a4;B(:,:,5)=a5; %输入n=5的准则矩阵 W=zeros(3,size_A); %构建l=3方案的n=5准则的归一化矩阵 lamada_B=zeros(1,size_A); %构建判断矩阵的lamada向量 CI_B=zeros(1,size_A); %构建CI矩阵 for i=1:5 sum_B=sum(B(:,:,i),2); size_B=size(B(:,:,i),1); for j=1:size_B W(j,i)=sum_B(j)./sum(sum_B); %归一化 end lamada_B(i)=sum((B(:,:,i)*W(:,i))./W(:,i))/3; CI_B(i)=(lamada_B(i)-size_B)/(size_B-1)/RI(size_B); end CI_RI_B=CI_B*bw; if CI_RI_B<0.1 fprintf('一致性检验通过'); else fprintf('error'); end t=W*bw;
|