?? cencifenxi.m
字號:
disp('請輸入判斷矩陣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));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);disp(t);
%以下是一致性檢驗
CI=(t-n)/(n-1);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];
CR=CI/RI(n);
if CR<0.10
disp('此矩陣的一致性可以接受!');
disp('CI=');disp(CI);
disp('CR=');disp(CR);
end
function AHPInit1(x,y)
%層次分析的初始化
%默認只有兩層 x為準則數,y為方案數
%CToT為準則對目標生成的比較陣
%EigOfCri為準則層的特征向量
%EigOfOpt為選項層的特征向量
EigOfCri=zeros(x,1);%準則層的特征向量
EigOfOpt=zeros(y,x);
dim=x;%維度
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI標準
%生成成對比較陣
for i=1:dim
CToT(i,:)=input('請輸入數據:');
end
CToT %輸出
pause,
tempmatrix=zeros(x+1);
tempmatrix=AHP1(dim,CToT);
EigOfCri=tempmatrix(1:x);
ci1=tempmatrix(1+x);
EigOfCri
ci1
pause,
matrix=cell(x);%元胞數組
ci=zeros(1,x);
dim=y;
for k=1:x
matrix{k}=zeros(dim,dim);
%生成成對比較陣
for i=1:dim
matrix{k}(i,:)=input('請輸入數據:');
end
%判斷該比較陣是不是一致陣
tempmatrix=zeros(y+1);
tempmatrix=AHP1(dim,matrix{k});
EigOfOpt(:,k)=tempmatrix(1:y);
ci(k)=tempmatrix(y+1);
EigOfOpt(:,k)
ci(k)
pause,
end
%下面進行組合一致性檢查
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
CR=ci1/RI(x)+ci*EigOfCri/RI(y);
CR
if CR>0.1
disp('組合一致性不通過,請重新評分')
return
end
%下面根據比較陣的結果進行組合
result=EigOfOpt*EigOfCri;
result
function f=AHP1(dim,CmpMatrix)
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
%判斷該比較陣是不是一致陣
%判斷該比較陣是不是一致陣
[V,D]=eig(CmpMatrix);%求得特征向量和特征值
%求出最大特征值和它所對應的特征向量
tempNum=D(1,1);
pos=1;
for h=1:dim
if D(h,h)>tempNum
tempNum=D(h,h);
pos=h;
end
end
eigVector=V(:,pos);
maxeig=D(pos,pos);
maxeig
dim
CI=(maxeig-dim)/(dim-1);
CR=CI/RI(dim);
if CR>0.1
disp('準則對目標影響度評分生成的矩陣不是一致陣,請重新評分')
return
end
CI
%歸一化
sum=0;
for h=1:dim
sum=sum+eigVector(h);
end
sum
pause,
for h=1:dim
eigVector(h)=eigVector(h)/sum;
end
f=[eigVector;CI];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -