資源描述:
《層次分析法matlab源程序.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、層次分析法matlab源程序?qū)哟畏治龇╩atlab源程序disp('請(qǐng)輸入判斷矩陣A(n階)');A=input('A=');[n,n]=size(A);x=ones(n,100);y=ones(n,100);m=zeros(1,100);m(1)=max(x(:,1));y(:,1)=x(:,1);x(:,2)=A*y(:,1);m(2)=max(x(:,2));y(:,2)=x(:,2)/m(2);p=0、0001;i=2;k=abs(m(2)-m(1));whilek>pi=i+1;x(:,i
2、)=A*y(:,i-1);m(i)=max(x(:,i));y(:,i)=x(:,i)/m(i);k=abs(m(i)-m(i-1));enda=sum(y(:,i));w=y(:,i)/a;t=m(i);disp(w);disp(t);層次分析法matlab源程序%以下就是一致性檢驗(yàn)CI=(t-n)/(n-1);RI=[000、520、891、121、261、361、411、461、491、521、541、561、581、59];CR=CI/RI(n);ifCR<0、10disp('此矩陣的一致性
3、可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR);endfunctionAHPInit1(x,y)%層次分析的初始化%默認(rèn)只有兩層x為準(zhǔn)則數(shù),y為方案數(shù)%CToT為準(zhǔn)則對(duì)目標(biāo)生成的比較陣%EigOfCri為準(zhǔn)則層的特征向量%EigOfOpt為選項(xiàng)層的特征向量EigOfCri=zeros(x,1);%準(zhǔn)則層的特征向量EigOfOpt=zeros(y,x);dim=x;%維度RI=[000、580、901、121、241、321、411、451、491、
4、51];%RI標(biāo)準(zhǔn)%生成成對(duì)比較陣fori=1:dimCToT(i,:)=input('請(qǐng)輸入數(shù)據(jù):');endCToT%輸出層次分析法matlab源程序pause,tempmatrix=zeros(x+1);tempmatrix=AHP1(dim,CToT);EigOfCri=tempmatrix(1:x);ci1=tempmatrix(1+x);EigOfCrici1pause,matrix=cell(x);%元胞數(shù)組ci=zeros(1,x);dim=y;fork=1:xmatrix{k}=z
5、eros(dim,dim);%生成成對(duì)比較陣fori=1:dimmatrix{k}(i,:)=input('請(qǐng)輸入數(shù)據(jù):');end%判斷該比較陣就是不就是一致陣tempmatrix=zeros(y+1);tempmatrix=AHP1(dim,matrix{k});EigOfOpt(:,k)=tempmatrix(1:y);ci(k)=tempmatrix(y+1);EigOfOpt(:,k)ci(k)層次分析法matlab源程序pause,end%下面進(jìn)行組合一致性檢查RI=[000、580、9
6、01、121、241、321、411、451、491、51];CR=ci1/RI(x)+ci*EigOfCri/RI(y);CRifCR>0、1disp('組合一致性不通過(guò),請(qǐng)重新評(píng)分')returnend%下面根據(jù)比較陣的結(jié)果進(jìn)行組合result=EigOfOpt*EigOfCri;resultfunctionf=AHP1(dim,CmpMatrix)RI=[000、580、901、121、241、321、411、451、491、51];%判斷該比較陣就是不就是一致陣%判斷該比較陣就是不就是一致陣
7、[V,D]=eig(CmpMatrix);%求得特征向量與特征值%求出最大特征值與它所對(duì)應(yīng)的特征向量tempNum=D(1,1);pos=1;forh=1:dimifD(h,h)>tempNumtempNum=D(h,h);層次分析法matlab源程序pos=h;endendeigVector=V(:,pos);maxeig=D(pos,pos);maxeigdimCI=(maxeig-dim)/(dim-1);CR=CI/RI(dim);ifCR>0、1disp('準(zhǔn)則對(duì)目標(biāo)影響度評(píng)分生成的矩陣不
8、就是一致陣,請(qǐng)重新評(píng)分')returnendCI%歸一化sum=0;forh=1:dimsum=sum+eigVector(h);endsumpause,forh=1:dimeigVector(h)=eigVector(h)/sum;層次分析法matlab源程序endf=[eigVector;CI];