1. 程式人生 > >層次分析法用於沒有明確評價標準的方案選擇

層次分析法用於沒有明確評價標準的方案選擇

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