層次分析法用於沒有明確評價標準的方案選擇
MATLAB程式
a=[1,1/2,4,3,3;2,1,7,5,5;1/4,1/7,1,1/2,1/3;1/3,1/5,2,1,1;1/3,1/5,3,1,1]; %[1,9,7,5;1/9,1,1/3,1/5;1/7,3,1,1/3;1/5,5,3,1];%任意待檢驗的矩陣 [m,n]=size(a); for i=1:n b(i)=sum(a(1:m,i));%列求和 end for i=1:m for j=1:n c(i,j)=a(i,j)/b(j); end end
for k=1:m d(k)=sum(c(k,1:n));%行求和 end mo=sum(d(1:n)); for k=1:m w(k)=d(k)/mo;%權重 end RI =[0 0 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]; [e,v]=eig(a); eigenvalue=diag(v); lamda=eigenvalue(1); y_lamda=e(:,1); CI=(lamda-n)/(n-1); CR=CI/RI(n); if CR<0.1 disp('此矩陣能通過一致性檢驗'); disp('CI=');disp(CI); disp('CR=');disp(CR); else disp('矩陣不能通過一致性檢驗'); end %在準則層下,A1A2An的權重為a1,a2,an; %方案B1的權重為ww11,ww12,wwn; %方案B2的權重為ww21,ww22,ww23; %方案B3的權重為ww31,ww32,ww33; %各個方案的最終得分 % for i=1:n % defen(i)=sum(w(i)*ww(i,1:n)); % end