当前位置:   article > 正文

数学建模——层次分析法模型_正互反矩阵

正互反矩阵

一、理论知识

1. 运用层次分析法优先考虑的三个问题

(1) 我们评价的目标是什么?

eg: 大学生旅游最佳目的地选择

(2) 为了达到这个目标有哪几种方案?

eg: 北京、上海、杭州

(3) 评价的准则是什么?

eg: 花费、交通、住宿、饮食、风景

2. 正互反矩阵(判断矩阵)与一致矩阵

(1) 正互反矩阵(判断矩阵)满足的条件

对角线的都为1;Aij*Aji=1;Aij>0。

举例:

11/73
715
1/31/51

(2) 一致矩阵

如果正互反矩阵满足Aij*Ajk=Aik,则称之为一致矩阵(或者理解为对应的行或者列成比例)。

举例:

11/23
216
1/31/61

3.计算权重的方法

(1) 算数平均值法求权重

第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)

第二步:将归一化的各列相加(按行求和)

第三行:将相加后得到的向量中的每一个元素除以n即可得到权重向量

总结:假设判断矩阵A=   ,那么算数平均值法求得的权重向量为:

示例:已知

景色杭州上海苏州
杭州124
上海1/212
苏州1/41/21

 按照第一列计算:杭州:1/(1+1/2+1/4)=0.57

                              上海:(1/2)/(1+1/2+1/4)=0.29

                               苏州:(1/4)/(1+1/2+1/4)=0.14

 按照第二列计算:杭州:2/(2+1+1/2)=0.57

                              上海:1/(2+1+1/2)=0.29

                               苏州:(1/2)/(2+1+1/2)=0.14

 按照第三列计算:杭州:4/(4+2+1)=0.57

                              上海:2/(4+2+1)=0.29

                               苏州:1/(4+2+1)=0.14

所以在景色这一栏三者的权重:杭州:(0.57+0.57+0.57)/3=0.57

                                                  上海:(0.29+0.29+0.29)/3=0.29

                                                  苏州:(0.14+0.14+0.14)/3=0.14

注意:如果是一致矩阵则只计算一列即可;如果是一般的判断矩阵则需要计算个列在求平均值。

(2) 几何平均法求权重

第一步:将矩阵按照行相乘得到一个新的列向量

第二步:将新的向量的每一个分量开n次方

第三步:对该列向量进行归一化即可得到权重向量

(3) 特征值法求权重

第一步:求出判断矩阵的最大特征值以及其对应的特征向量

第二步:对求出的特征向量进行归一化即可得到权重

例如:

注意:上述三种方法中如果求出的所有权重加起来不为1是一位在计算时约分的缘故!!!

4. 一致性检验的步骤(如果是一致性矩阵就不需要这一步)

(1) 第一步:计算一致性指标CI

        CI=λ max nn1

(2) 第二步:查找对应的平均随机一致性指标RI

n123456789101112131415
RI000.520.891.121.261.361.411.461.491.521.541.561.581.59

(3) 第三步:计算一致性比例CR

CR=CIRI

如果CR<0.1,则可以认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修改(修改时可以灵活修改)。

二、解题步骤

第一步:分析系统中各因素之间的关系,建立系统的递阶关系

第二步:对于同一层次的各元素关于上一层中某一准则的重要性进行两两比较,构造判断矩阵

景色花费居住饮食交通
景色11/2433
花费21866
居住1/41/813/43/4
饮食1/31/64/311
交通1/31/64/311

再利用上述的三种求解权重的方法求出指标权重

假设上述得到的权重为:

指标权重
景色0.2636
花费0.4758
居住0.0538
饮食0.0981
交通0.1087

第三步:有判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(一致性检验通过权重才可以用)

景色杭州上海苏州
杭州124
上海1/212
苏州1/41/21
花费杭州上海苏州
杭州124
上海1/212
苏州1/41/21
居住杭州上海苏州
杭州124
上海1/212
苏州1/41/21
饮食杭州上海苏州
杭州124
上海1/212
苏州1/41/21
交通杭州上海苏州
杭州124
上海1/212
苏州1/41/21

 权重的计算方法和上面一样,一致性检验的方法参照上面。

假设上述得到的各项权重为:

北京上海杭州
景色0.59540.27640.1283
花费0.08190.23630.6817
居住0.42860.42860.1429
饮食0.63370.19190.1744
交通0.16670.16670.6667

第四步:计算各层元素对系统目标的合成权重,并进行排序

指标权重北京上海杭州
景色0.26360.59540.27640.1283
花费0.47580.08190.23630.6817
居住0.05380.42860.42860.1429
饮食0.09810.63370.19190.1744
交通0.10870.16670.16670.6667

北京:0.2636*0.5945+0.4758*0.0819+0.0538*0.4286+0.0981*0.6337+0.1087*0.1667=0.2992604

上海:0.2636*0.2764+0.4758*0.2363+0.0538*0.4286+0.0981*0.1919+0.1087*0.1667=0.24529494

杭州:0.2636*0.1283+0.4758*0.6817+0.0538*0.1429+0.0981*0.1744+0.1087*0.6667=0.45543969

所以,综上所述,杭州最好,北京次之,上海最后。

三、Matlab代码演示——计算出所需要的权重

  1. % 层次分析法——求出给定矩阵的权重
  2. % 第一步:输入判断矩阵
  3. clear;
  4. clc;
  5. A=input('Please enter your number:');
  6. % A =[1 1 4 1/3 3;
  7. % 1 1 4 1/3 3;
  8. % 1/4 1/4 1 1/3 1/2;
  9. % 3 3 3 1 3;
  10. % 1/3 1/3 2 1/3 1];
  11. Error=0;
  12. [xx,yy]=size(A);
  13. % 判断是否为方阵、是否维数小于等于1
  14. if xx~=yy || xx<=1
  15. Error=1;
  16. end
  17. % 判断矩阵中的元素是否小于0
  18. if Error==0
  19. if min(min(A))<=0
  20. Error=2;
  21. end
  22. end
  23. % 判断维数是否超过15
  24. if Error==0
  25. if size(A,1)>15
  26. Error=3;
  27. end
  28. end
  29. % 判断是否满足Aij*Aji=1
  30. if Error==0
  31. if A' .* A~=ones(size(A,1))
  32. Error=4;
  33. end
  34. end
  35. if Error==0
  36. if size(A,1)~=2 %如果维数大于2才判断一致性,如果为2则不需要判断一致性,因为此时必为一致矩阵
  37. % 第二步:判断一致性
  38. [E,F]=eig(A); %得到A矩阵的所有特征值构成列向量,E为特征向量矩阵,F为特征值矩阵,对角线为特征值,其余为0
  39. Fmax=max(max(F)); %得到最大的特征值
  40. n=size(A,1);
  41. CI=(Fmax-n)/(n-1);
  42. 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];
  43. CR=CI/RI(n);
  44. if CR<0.1
  45. disp('CI=');
  46. disp(CI);
  47. disp('CR=');
  48. disp(CR);
  49. disp('矩阵的一致性可以接受!');
  50. else
  51. disp('矩阵的一致性不可以接受!');
  52. end
  53. end
  54. % 第三步:求出权重
  55. % 方法一:算数平均值法求权重
  56. Sum_A=sum(A,1); %按列求和得到一个行向量
  57. SUM_A=repmat(Sum_A,size(A,1),1); %用repmat函数构造一个元素都为和的矩阵
  58. Stand_A=A./SUM_A; %每一个元素除以所在列的和构成归一化矩阵,注意这里是 ./,不是/
  59. disp('算数平均值法求得的权重为:');
  60. disp(sum(Stand_A,2)/n);
  61. % 方法二:几何平均法求权重
  62. A_prod=prod(A,2);
  63. A_prod=A_prod.^(1/n);
  64. disp('几何平均法求得的权重为:');
  65. disp(A_prod/sum(A_prod));
  66. % 方法三:特征值法求权重
  67. [x,y]=find(F~=0,1); %一致矩阵的一个特征值为n,其余均为0
  68. %[x,y]=find(F==Fmax,1);
  69. disp('特征值法求得的权重为:');
  70. disp(E(:,y)/sum(E(:,y)));
  71. elseif Error==1
  72. disp('输入的矩阵不为方阵或者维数小于等于1 !');
  73. elseif Error==2
  74. disp('输入的矩阵中有元素小于等于0 !');
  75. elseif Error==3
  76. disp('输入的矩阵维数大于15 !');
  77. elseif Error==4
  78. disp('输入的矩阵不满足Aij*Aji=1 !');
  79. end
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/703453
推荐阅读
相关标签
  

闽ICP备14008679号