数学建模(一) 层次分析法(内附matlab程序)

适用条件

适用于那些难于完全定量分析的问题。每一层次中各元素所支配的元素一般不要超过 9 个。

步骤

(i)建立递阶层次结构模型;
(ii)构造出各层次中的所有判断矩阵;
(iii)层次单排序及一致性检验;
(iv)层次总排序及一致性检验。

递阶层次结构

(i) 最高层(目标层):这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果。
(ii) 中间层(准则层):这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则。
(iii) 最底层(措施层):这一层次包括了为实现目标可供选择的各种措施、决策方案等。

构造判断矩阵

先构建准则层的判断矩阵
再构建方案层的判断矩阵
设现在要比较n 个因子 { x1,… ,xn } 1 n X = x L x 对某因素 Z 的影响大小,怎样比较才能提供可信的数据呢?可以采取对因子进行两两比较建立成对比较矩阵的办法。即每次取两个因子 i x 和 j x ,以 aij 表示 i x 和 j x 对 Z 的影响大小之比,全部比较结果用矩阵 A =(aij)n×n 表示,称 A 为 Z − X 之间的成对比较判断矩阵(简称判断矩阵)。容易看出,若 i x 与 j x 对 Z 的影响之比为aij ,则 j x 与 i x 对 Z 的影响之比应为aji=1/aji。
最后构建层次总排序
数学建模(一) 层次分析法(内附matlab程序)_第1张图片

disp('Please enter the judgment matrix A (n order)');
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);
         %The following is the consistency test
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('The consistency of this matrix is acceptable!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end

先用这个程序得到权重,然后再用得到的权重构造层次总排序的判断矩阵,再将第二次得到的矩阵输入。

你可能感兴趣的:(matlab,数学建模)