层次分析法(AHP)

作用

主要用于解决数学建模中的评价问题,对方案进行评价,从而作出决策。

步骤

既然叫做层次分析法,那么它是怎样分层的呢?
一般分为三层,分别是目标层(最高)、准则层(中间)和方案层(最低)。

我们需要将定性转化为定量,所以下一步就要构造成对比较矩阵,其中的元素 aij 表示第i个元素与第j个元素的相对重要程度。
衡量的标准如下:

对于以上例图,我们可以将中间层的成对比较矩阵写为:

最底层的成对比较矩阵矩阵可以写为:

解释:如矩阵B1,元素 B13=5 表示在景色方面,苏杭比桂林明显要好
得到的成对比较矩阵不一定满足一致性( aij1aji ),所以要进行一致性检验。
矩阵可以不满足一致性,但是这个不一致需要在一定范围之内。
符号:CI,一致性指标;CR,一致性比例。
再计算出权重向量
最后计算出每个方案的得分

MATLAB代码

disp('请输入成对比较矩阵(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.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

一致性检验的数学原理

一致矩阵的定义:

定理:n阶互反阵A的最大特征根 λn ,当且仅当 λ=n 时,A为一致阵。
CI=λmaxnn1,λmax

猜你喜欢

转载自blog.csdn.net/suntengnb/article/details/80071489
今日推荐