1、层次分析法:用于评价类模型,建立模型要确定评价目标、实现目标的方案、评价准则。
2、层次分析法具体实现步骤(辅以具体例子说明):
(1)建立层次结构
解决评价类问题想到的问题:
我们评价的目标是什么?
答:为小明同学选择最佳的旅游景点。
我们为了达到这个目标有哪几种可选的方案?
答:三种,分别是去苏杭、去北戴河和去桂林。
评价的准则或者说指标是什么?(我们根据什么东西来评价好坏) 答:景色、花费、居住、饮食、交通
由此得到层次结构如下
(2)构造层次结构图的判断矩阵
判断矩阵是正负反矩阵,数据由专家经验得出,但实际在比赛中是通过查资料得出。对应的元素指相对于j,i的重要程度,,=1,>0。用1-9表示重要程度,如下表所示
标度 | 含义 |
1 | 同样重要性 |
3 | 稍微重要 |
5 | 明显重要 |
7 | 强烈重要 |
9 | 极端重要 |
2,4,6,8 | 上述两相邻判断的中值 |
倒数 | A和B相比如果标度为3那么B和A相比就是1/3 |
(3)对判断矩阵进行一致性检验
这一步即检验构造的判断矩阵与一致矩阵是否有太大差别
方法一
=i的重要程度/j的重要程度,=j的重要程度/k的重要程度
=i的重要程度/k的重要程度=
方法二
判断矩阵各行各列成比例即为一致矩阵
方法三
(2) 查找对应的平均随机一致性指标RI
(3)计算一致性比例
n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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
程序实现
clear;clc;
A=[1 2 4;0.5 1 2;0.25 0.5 1];
[V,D]=eig(A);
[n,n]=size(A);
Max_eig=max(max(A));
CI=(Max_eig-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);
disp('一致性比例CR=');disp(CR);
if(CR<0.1)
disp('判断矩阵一致性可以接受');
else
disp('判断矩阵一致性可以接受')
end
(4)由判断矩阵计算被比较元素对于该准则的相对权重
算术平均法
(1)将判断矩阵按照列归一化即每一个元素除以所在列的和
(2)将归一化各列相加
(3)将相加后得到的每项除n
clear;clc A=[1 2 4;0.5 1 2;0.25 0.5 1]; Sum_A=sum(A); [n,n]=size(A); SUM_A=repmat(Sum_A,n,1); Stand_A=A./SUM_A; sum(Stand_A,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_A,2)/n) B=[1 1/3 1/8;3 1 1/3;8 3 1]; Sum_B=sum(B); [n,n]=size(B); SUM_B=repmat(Sum_B,n,1); Stand_B=B./SUM_B; sum(Stand_B,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_B,2)/n) C=[1 1 3;1 1 3;1/3 1/3 1]; Sum_C=sum(C); [n,n]=size(C); SUM_C=repmat(Sum_C,n,1); Stand_C=C./SUM_C; sum(Stand_C,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_C,2)/n) D=[1 3 4;1/3 1 1;1/4 1 1]; Sum_D=sum(D); [n,n]=size(D); SUM_D=repmat(Sum_D,n,1); Stand_D=D./SUM_D; sum(Stand_D,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_D,2)/n) E=[1 1 1/4;1 1 1/4;4 4 1]; Sum_E=sum(E); [n,n]=size(E); SUM_E=repmat(Sum_E,n,1); Stand_E=E./SUM_E; sum(Stand_E,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_E,2)/n) F=[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]; Sum_F=sum(F); [n,n]=size(F); SUM_F=repmat(Sum_F,n,1); Stand_F=F./SUM_F; sum(Stand_F,2); disp('算术平均法求权重的结果为:'); disp(sum(Stand_F,2)/n)
几何平均法
(1)将判断矩阵按行相乘得到新的列向量
(2)将新的向量每个分量开n次方
(3)对该向量进行均一化得到权重向量
clear;clc; A=[1 2 4;0.5 1 2;0.25 0.5 1]; Product_A=prod(A,2); [n,n]=size(A); Product_n_A=Product_A.^(1/n); disp('几何平均法求权重的结果为:'); disp(Product_n_A ./ sum(Product_n_A))
特征值法
(1)求最大特征值以及对应的特征向量,得最大特征值的位置
(2)对得出的特征向量进行归一化处理
clear;clc; A=[1 2 4;0.5 1 2;0.25 0.5 1]; [V,D]=eig(A); Max_eig=max(max(A)); D==Max_eig; find(D,1); [r,c]=find(D,1); V(:,c); disp('特征值法求权重的结果为:') disp(V(:,c)./sum(V(:,c)))
(5)结果汇总
eg:苏杭得分:0.2636*0.5954+0.4758*0.0819+0.0538*0.4286+0.0981*0.6337+0.1087*0.1667=0.299
3、层次分析法的局限性
(1)决策层不能过多,n太大时判断矩阵和一致性矩阵差异可能会很大,一般n最大取15
(2)如果决策层中的数据是已知的
4、课后作业
我选择购置一台个人电脑,考虑功能、价格等因素做出的决策
(1)建立层次结构模型
将决策问题分解为三个层次,最上层为目标层 M,即选择最适合的个人电脑;最下层为方案层,这里选择三个品牌;中间层为准则层,包括显卡性能、cpu及内存性能、价格、便携性、屏幕质量,这里由于是购置个人电脑所以准则层是我认为重要的要素。
(2)构造层次结构图的判断矩阵
(3)由判断矩阵先进行一致性检验再计算权重
M对C,取A=[1 2 2 5 3;1/2 1 1 3 2;1/2 1 1 3 2;1/5 1/3 1/3 1 1/2;1/3 1/2 1/2 2 1]
clear;clc;
A=[1 2 2 5 3;1/2 1 1 3 2;1/2 1 1 3 2;1/5 1/3 1/3 1 1/2;1/3 1/2 1/2 2 1];
[V,D]=eig(A)
[n,n]=size(A)
Max_eig=max(max(A));
D==Max_eig;
find(D,1);
[r,c]=find(D,1);
V(:,c);
disp('特征值法求权重的结果为:')
disp(V(:,c)./sum(V(:,c)))
CI=(Max_eig-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);
disp('一致性比例CR=');disp(CR);
if(CR<0.1)
disp('判断矩阵一致性可以接受');
else
disp('判断矩阵一致性可以接受')
end
C1对P,取A=[1 2 1;1/2 1 1;1 1 1]
C2对P,取A=[1 3 2;1/3 1 2/3;1/2 3/2 1]
C3对P,取A=[1 1/3 1;3 1 2;1 2 1]
C4对P,取A=[1 4 2;1/4 1 1; 1/2 1 1]
C5对P,取A=[1 1/3 1;3 1 2;1 1/2 1]
(4)结果汇总
指标权重 | 品牌A | 品牌B | 品牌C | |
显卡性能 | 0.3868 | 0.4126 | 0.2599 | 0.3275 |
CPU及内存性能 | 0.2122 | 0.5455 | 0.1818 | 0.2727 |
价格 | 0.2122 | 0.2500 | 0.5000 | 0.2500 |
便携性 | 0.0693 | 0.5842 | 0.1840 | 0.2318 |
屏幕质量 | 0.1194 | 0.2098 | 0.5499 | 0.2402 |
品牌A得分=0.3868*0.4126+0.2122*0.5455+0.2122*0.2500+0.0693*0.5842+0.1194*0.2098=0.3939
品牌B得分
=0.3868*0.2599+0.2122*0.1818+0.2122*0.5000+0.0693*0.1840+0.1194*0.5499=0.3236
品牌C得分
=0.3868*0.3275+0.2122*0.2727+0.2122*0.2500+0.0693*0.2318+0.1194*0.2402=0.2823
所以选择分数更高的品牌A
本笔记是根据清风老师的数学建模课第一节层次分析法总结出来的,感兴趣的小伙伴可以在B站上看哦~