数学建模中的层次分析法笔记

1、层次分析法:用于评价类模型,建立模型要确定评价目标、实现目标的方案、评价准则。

2、层次分析法具体实现步骤(辅以具体例子说明):

(1)建立层次结构

解决评价类问题想到的问题:

我们评价的目标是什么?

答:为小明同学选择最佳的旅游景点。

我们为了达到这个目标有哪几种可选的方案?

答:三种,分别是去苏杭、去北戴河和去桂林。

评价的准则或者说指标是什么?(我们根据什么东西来评价好坏) 答:景色、花费、居住、饮食、交通

由此得到层次结构如下

数学建模中的层次分析法笔记_第1张图片

(2)构造层次结构图的判断矩阵

数学建模中的层次分析法笔记_第2张图片

数学建模中的层次分析法笔记_第3张图片

判断矩阵是正负反矩阵,数据由专家经验得出,但实际在比赛中是通过查资料得出。对应的元素a_{ij}指相对于j,i的重要程度,a^{ij}=\frac{1}{a^{ji}},a^{ii}=1,a_{ij}>0。用1-9表示重要程度,如下表所示

标度 含义
1 同样重要性
3 稍微重要
5 明显重要
7 强烈重要
9 极端重要
2,4,6,8 上述两相邻判断的中值
倒数

A和B相比如果标度为3那么B和A相比就是1/3

  (3)对判断矩阵进行一致性检验

这一步即检验构造的判断矩阵与一致矩阵是否有太大差别

方法一

a_{ij}=i的重要程度/j的重要程度,a_{jk}=j的重要程度/k的重要程度

a_{ik}=i的重要程度/k的重要程度=a_{ij}\times a_{jk}

方法二

判断矩阵各行各列成比例即为一致矩阵

方法三

(1)计算一致性指标CI=\frac{\lambda_{max} -n}{n-1}

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

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
 (3)计算一致性比例 CR=\frac{CI}{RI}

程序实现

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)结果汇总

数学建模中的层次分析法笔记_第4张图片

 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及内存性能、价格、便携性、屏幕质量,这里由于是购置个人电脑所以准则层是我认为重要的要素。

数学建模中的层次分析法笔记_第5张图片

 (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站上看哦~

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