本文已参与「新人创作礼」活动,一起开启掘金创作之路。
层次分析法
举例:
- 在海尔、新飞、容声和雪花四个牌号的电冰箱中选购一种。要考虑品牌的信誉、冰箱的功能、价格和耗电量。
- 在苏杭、北戴河、桂林三处选择一个旅游点。要考虑景点的景色、居住的环境、饮食的特色、交通便利和旅游的费用。
原理:
根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。
运用步骤:
- 建立层次结构模型
- 构造判断(成对比较)矩阵
- 层次单排序及其一致性检验
- 层次总排序及其一致性检验
建立层次结构模型:
将决策的目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,给出层次结构图
- 最高层(目标层):决策的目的、要解决的问题
- 最低层(方案层):决策时考虑的备选方案
- 中间层(准则层):考虑的因素、决策的准则
成对比较矩阵:
在确定各层次各元素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而Santy等人提出:一致矩阵法,
即:
- 不把所有因素放在一起比较,而是两两相互比较
- 对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度
成对比较矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较。成对比较矩阵矩阵的元素aij用Santy的1—9标度方法给出。
上图中,C2重要程度大于C1
一致性检验:
层次分析法举例:
求和法算权重:
Matlab层次分析法程序:
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.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
课程提供比较矩阵:
[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;]
[1,2,5; 1/2,1,2; 1/5,1/2,1;]
[1,1/3,1/8; 3,1,1/3; 8,3,1;]
[1,1,3; 1,1,3; 1/3,1/3,1;]
[1,3,4; 1/3,1,1; 1/4,1,1;]
[1,1,1/4; 1,1,1/4; 4,4,1;]
输出结果:
例题结果: