1 建模步骤
运用层次分析法建模,大体上可按下面四个步骤进行:
建立递阶层次结构模型;
构造出各层次中的所有判断矩阵;
层次单排序及一致性检验;
层次总排序及一致性检验。
2 层次结构模型
层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法
3 构建成对比较矩阵
准则层的五个因素比较矩阵
4 实际问题解决
Bi是三个地点关于准则层的比较矩阵。
如B1是三个地点对景色的比较矩阵。
5 代码和结果分析
5.1 代码 1
%层次分析法(AHP)
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);
%一致性检验
CI = (t-n)/(n-1);
RI = [0 0 0.52 0.89 1.12 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
请输入判断矩阵A(n阶)
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]
0.2636
0.4758
0.0538
0.0981
0.1087
此矩阵一致性可以接受!
CI=
0.0180
CR=
0.0161
5.2 代码 2
function [Q]=test1(B)
%Q为权值,B为对比矩阵
%导入判别矩阵B
[n,m]=size(B);
%判别矩阵具有完全一致性
for i=1:n
for j=1:n
if B(i,j)*B(j,i)~=1
fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%d\n',i,j,B(i,j),B(j,i))
end
end
end
%求特征值特征向量,找到最大特征值对应的特征向量
[V,D]=eig(B);
tz=max(D);
tzz=max(tz);
c1=find(D(1,:)==max(tz));
tzx=V(:,c1);%特征向量
%权
quan=zeros(n,1);
for i=1:n
quan(i,1)=tzx(i,1)/sum(tzx);
end
Q=quan;
%一致性检验
CI=(tzz-n)/(n-1);
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性检验
CR=CI/RI(1,n);
if CR>=0.1
fprintf('没有通过一致性检验\n');
else
fprintf('通过一致性检验\n');
end
end
5.3 分析
若想求出去题干中去哪个旅游地最好,也就是确定方案,可以对B使用上面代码,得到权重,与准则层做*和+计算,得出旅游地的最佳选择!