[清风数学建模]层次分析法(AHP)笔记及代码实现

   本文章是学习清风老师数学建模视频后所做的笔记,其中一些图片及代码实现来源于清风老师的B站视频: 【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DW411s7wi

  如果大家发现文章中有任何错误,欢迎在留言区批评指正,我也会持续更新有关数学建模学习的笔记。


目录

一、算法简介

二、问题分析及理论基础

层次分析法的思想:

一致性检验步骤:

计算权重:

1、算术平均法

2、几何平均法:求几何平均值

 3、特征值法:

总结:

层次分析法步骤

三、层次分析法的缺点

四、代码实现

五、例题  耳机挑选问题



一、算法简介

  层次分析法(The analytic hierarchy process,简称AHP),建模比赛中最基础的一类模型之一,主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更加优秀)。

  该方法将定量分析与定性分析结合起来,通过决策者的经验或者搜集得到的数据,对评价准则和方案划定权重,最后得到一个综合权重,结合实际问题得到最优方案。

二、问题分析及理论基础

 在建模题目中当看到确定评价指标,形成评价体系等字眼,可看作评价类问题。注意:评价类问题可用打分解决(也就是权重表格的形式)

  当我们在解决这一问题时,我们可以从三个问题出发确定思路:

  1、我们评价的目标是什么?(一般题目中会出现,例如选择哪种方案最好)

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

  3、评价准则或者说标准是什么?(题目中会出现或者查询论文得到相关准则)

[清风数学建模]层次分析法(AHP)笔记及代码实现_第1张图片

   例如在小明高考后选择学校的问题中,我们评价的目标是在武大和华科中选择一个更适合小明的学校,有武大和华科两种可选方案,通过查询得知,评价一个学校的标准可简要分为几类:学习氛围、就业前景、男女比例、校园景色。确定好方案和准则后,由小明来为方案和准则打分(划定权重),最后算出综合权重,来确定武大华科哪一个学校更适合小明。

层次分析法的思想:

  在为方案和准则打分时,也就是划定权重时,容易面临一个问题:当一次性考虑多个指标之间的关系时,容易考虑不周,以致于对方案多次划定权重时,每一次的权重会不一样。

  解决方法:指标之间两两相比划定权重,最后根据两两比较的结果得到最后多个指标之间的权重关系。

  接下来将介绍如何进行两两相比,以及如何推算出最终权重。

  首先这是一个判断矩阵,我们会对景色、花费等五个准则进行两两打分,

[清风数学建模]层次分析法(AHP)笔记及代码实现_第2张图片

   当我们根据数据进行打分时,如果认为花费比景色略微重要(介于同样重要与稍微重要之间),在标度表中处于2的重要性,就在A[2,1]处标上2,同时景色比花费的标度为1/2,在A[1,2]处标上1/2。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第3张图片

 当我们两两打分后可以得到一个完整的判断矩阵。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第4张图片

同时还要根据每一个准则对方案打分,就当前例子而言:想得到苏杭、北戴河、桂林在景色、花费、居住等五个方面的权重,就要按每一个准则对三种方案进行打分,换句话说,有几个准则,就要打几次分,最终得到在每个准则下的方案权重。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第5张图片

   但这里会面对一个问题:可能会出现矛盾之处(如下图),也就是不一致的现象。这就需要我们去改动权重,但实际操作中,如果判断矩阵的准则很多,无法轻易得知是否有不一致的现象。所以需要了解一致矩阵的特征:各行(各列)之间存在倍数关系。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第6张图片

   但在实际建模过程中,绝对的一致矩阵(这里指:得到的判断矩阵完美符合一致矩阵的定义)是不存在的,所以我们在计算最终权重之前,需要对判断矩阵进行一致性检验,来检验判断矩阵和一致矩阵之间是否存在较大差距。

一致性检验步骤:

1、计算一致性指标CI

CI= \frac{\lambda max-n}{n-1}

2、查表找到平均随机一致性指标RI

 3、计算一致性比例CR

CR=\frac{CI}{RI}

如果计算得到CR<0.1,则该判断矩阵通过一致性检验,一致性可以接受。

如果未通过,则要修改权重,是判断矩阵更加贴合一致矩阵。

计算权重:

1、算术平均法

一致矩阵:对每一列进行归一化

\frac{A[1,1]}{A[1,1]+A[1,2]+A[1,3]}

[清风数学建模]层次分析法(AHP)笔记及代码实现_第7张图片

因为一致矩阵每一列都存在倍数关系,所以用任何一列求权重都是可以的,以上公式为第一个指标所占权重。

对于非一致矩阵,因为每一列不存在倍数关系,所以对每一列进行归一化会得到不同的权重,还需对权重进行处理,也就是求均值。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第8张图片

2、几何平均法:求几何平均值

 [清风数学建模]层次分析法(AHP)笔记及代码实现_第9张图片

 3、特征值法:

  对于一致矩阵来说,因为各行之间存在倍数关系,通过行变换后,可以得到秩为1的矩阵,有一个特征值为一致矩阵的迹n,其余特征值为0。可以得到当特征值为n时,特征向量正好为k\left [ \frac{1}{a11},\frac{1}{a12}....\frac{1}{a1n} \right ]^{T},正好为一致矩阵的第一列,由此可计算权重。 

[清风数学建模]层次分析法(AHP)笔记及代码实现_第10张图片

假如判断矩阵通过一致性检验时,可以仿照一致矩阵权重的求法,算出对应的特征向量后进行归一化处理。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第11张图片

 一般论文中使用特征值法得到权重,但比赛中推荐三种方法都用。

总结:

层次分析法步骤

1、分析系统中各因素之间的关系,建立系统的递阶层次结构。

[清风数学建模]层次分析法(AHP)笔记及代码实现_第12张图片

2、对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。

3、对判断矩阵进行一致性检验,一致性检验通过后,计算权重。

4、计算各层元素对系统目标的合成权重,并进行排序。

最终权重=\sum准则权重*方案权重

三、层次分析法的缺点

1、评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。

2、在理想情况下,准则两两评价的打分是由专家讨论研究得到,而比赛中则由参赛者自己打分,对于题目中有关决策层已经给出数据,无法打分的情况下,层次分析法不能很好的解决这类问题。

四、代码实现

%% 注意:在论文写作中,应该先对判断矩阵进行一致性检验,然后再计算权重,因为只有判断矩阵通过了一致性检验,其权重才是有意义的。
%% 在下面的代码中,我们先计算了权重,然后再进行了一致性检验,这是为了顺应计算过程,事实上在逻辑上是说不过去的。
%% 因此大家自己写论文中如果用到了层次分析法,一定要先对判断矩阵进行一致性检验。
%% 而且要说明的是,只有非一致矩阵的判断矩阵才需要进行一致性检验。
%% 如果你的判断矩阵本身就是一个一致矩阵,那么就没有必要进行一致性检验。


disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
% % % % % % % % % % % % %方法1: 算术平均法求权重% % % % % % % % % % % % %
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;

disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)
% % % % % % % % % % % % %方法2: 几何平均法求权重% % % % % % % % % % % % %
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))
% % % % % % % % % % % % %方法3: 特征值法求权重% % % % % % % % % % % % %
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )
% % % % % % % % % % % % %下面是计算一致性比例CR的环节% % % % % % % % % % % % %
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 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];  %注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
    disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end

五、例题  耳机挑选问题

  首先在知网上查询耳机等关键词查询资料,得到耳机购买的四个影响因素:音质、价格、外观、功能。然后2020耳机排行榜上得到排行榜前三的三个品牌:索尼、漫步者、苹果、形成三个方案。

  对准则和方案进行评价,在对准则进行评价时主观性较大,此处评价为笔者自行打分,

准则 音质 价格 外观 功能
音质

1

4 6 8
价格 1/4 1 4 5
外观 1/6 1/4 1 2
功能 1/8 1/5 1/2 1

方案评价:方案评价中参考知乎对三个品牌耳机的评价

音质 索尼 漫步者 苹果
索尼 1     4     8    
漫步者  1/4 1     4    
苹果  1/8  1/4 1    

价格 索尼 漫步者 苹果
索尼 1      1/2  1/4
漫步者 2     1      1/2
苹果 4     2     1    
外观 索尼 漫步者 苹果
索尼 1      1/2  1/6
漫步者 2     1      1/3
苹果 6     3     1    
功能 索尼 漫步者 苹果
索尼 1      1/3  1/8
漫步者 3     1      1/4
苹果 8     4     1    

通过一致性检验后,利用算数平均法,几何平均法,特征值法形成最终权重

准则权重 索尼 漫步者 苹果
音质 0.6147 0.7071 0.2227 0.0702
价格 0.245 0.1429 0.2857 0.5714
外观 0.0865 0.1111 0.2222 0.6667
功能 0.0539 0.0783 0.02051 0.07167
最终权重 0.48349539 0.227215979 0.244677503

(此处用excel处理时,可以F4锁定准则权重加以计算)

得到最终权重,综合来看对小明来说购买索尼耳机比较合适。

你可能感兴趣的:(数学建模,AHP,笔记,算法)