备战数学建模9

您所在的位置:网站首页 层次分析法有几种类型 备战数学建模9

备战数学建模9

2024-01-24 07:36| 来源: 网络整理| 查看: 265

层次分析法,简称AHP,是建模比赛中最基础的模型之一,其主要用于解决评价类问题,例如:哪中方案更好?哪位运动员或者员工表现得更优秀?

  一、层次分析模型建立部分

下面我们看一道引出层次分析得例题,如下所示:

对于上面的题目,我们看样发现是一个评价类问题,解决评价类问题,我们需要想到一下三个问题:

1-评价的目标是什么?

在这里显然是选择目标景点。

2-为了达到目标有几种方案可以选择?

在这里是有3种方案可以选择的。

3-评价的指标或者准则是什么?就是根据什么评价方案的好坏?

从题目中提取,头脑风暴,或者从知网搜相关的指标,也可以在参考文献中引用。

假设我们找到了如下5个指标:旅游景色,旅游花费,居住环境 ,饮食情况,交通便利情况;

对于5个评价指标,我们怎么样分配权重呢,如果直接分配权重往往考虑不周。我们采用的解决方法是;每两个指标进行比较,共比较10次,最终根据两两比较的结果推算出权重。

用1-9表示重要程度,两两比较上述5个指标对最终选择旅游经典的重要性。

我们可以询问小明10次,就可以,把如下表格填满。当然需要注意的是:实际情况下,是没有小明帮我们回答,层次分析法中这张表是交给"专家"给我们填的,其实这个专家就是我们自己,哈哈哈,判断矩阵的填写根据题目意思和查资料,判断因素的重要性。

对于上面的表格矩阵,我们称为判断矩阵,我们可以总结如下三点:

下面是关于判断矩阵内部的介绍,在使用判断矩阵求权重之前,我们需要对其进行以执行检验,如如果不一致性过大,判读矩阵就失效了。 

一致性检验原理:检验我们构造的判断矩阵和一致矩阵是否有太大的差别。

一致性检验的步骤如下:

具体地,那么RI是怎么计算得到的呢?

 如果判断矩阵通过一致性检验,那么怎么通过判断矩阵计算权重?

方法1:算数平均法求权重

对于如下判断矩阵,分别使用第1,2,3列计算权重。

对权重进行算术平均:

将判断矩阵按照列归一化,就是将求出的权重填入如下表中:

 

将归一化的各列相加,即按行求和,如下所示:

将相加得到的向量每个元素除以n,则得到权重向量,如下所示:

 

上述通过判断矩阵得到的权重向量的过程可以通过如下公式表示:

方法2:几何平均法求权重

具体步骤如下:

方法3:特征值法求权重

一致矩阵有一个特征值为n,其余特征值为0,特征值为n时,对应的特征向量刚好为:

这一特征向量刚好就是矩阵的第一列。

特征值法求权重步骤:

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

第二,求出特征向量进行归一化,即可得到我们的权重。

注:正常竞赛中用特征值法求权重就可以。

通过判断矩阵求出权重后,如何计算各个方案的得分呢?如下是每个因素的权重信息:

每个方案的得分就是对应的两列相乘后求和,如下所示:

通过上面的题目我们重新看一下层次分析法:

首先层次分析法,要考虑三个方面,分别为目标、准则、方案;我们要分析系统的各因素之间的关系,建立系统的递阶层次结构。

上述题目的递阶层次结构如下:

数学建模论文中,用到层次分析法,需要给出层次结构。

然后,根据题目数据和搜网上的资料,填写判断矩阵,上述准则层5个因素的判断矩阵如下:

然后,由判断矩阵计算被比较元素相对于该准则的相对权重,并进行一致性检验,检验通过才能用。可以使用三种方法计算权重。

使用三种方法计算权重会保证结果的稳健性。可在论文中加上如下:

对于判断矩阵不一致,可以根据一致性矩阵各行各列呈倍数关系,往一致性矩阵上调。

层次分析法的局限性

 1-评价的决策层不能太多,太多会导致判断矩阵和一致性矩阵偏差太大,RI也求不出。

2-如果决策层的数据是已知的,不适合用层次分析法。

 上面写的有点混乱,看下面总结吧!!!

总结:层次分析法步骤:

1-要考虑三个方面,分别为目标、准则、方案;我们要分析系统的各因素之间的关系,建立系统的递阶层次结构。

2-根据一致矩阵给出判断矩阵,当然这个判断矩阵可以根据题目,也可以网上查找给出。

3-根据判断矩阵使用三种方法求权重,需要做归一化处理。

4-求出权重后进行一致性检验,检验通过,才能使用该权重,也就是判断矩阵给的合理。

5-最后根据权重,计算每个方案的得分,得分越高,则该方案越好。

下面看一下层次分析法的MATLAB代码是实现:

clear; clc %矩阵A是给出的判断矩阵 A = [1,1,4,1/3,3; 1,1,4,1/3,3; 1/4,1/4,1,1/3,1/2; 3,3,3,1,3; 1/3,1/3,2,1/3,1] ; %方法1:算数平均法求权重 %第一步:将判断矩阵按照列归一化,即按列求和,让相应元素除以该列的元素和 Sum_A = sum(A,1) ; %按列求和 n = size(A,1) ; %得到矩阵A的行数 SUM_A = repmat(Sum_A,n,1) ; %将按列求和得到的向量重复n次,变成一个n*1的矩阵 stand_A = A ./ SUM_A ; %归一化,就是每个元素除以对应列的和 %第二步,将归一化的各列相加,即按行求和 disp('算术平均法求权重的结果为:') ; disp(sum(stand_A,2) / n) ; %方法2:几何平均法求权重 %第一步,将矩阵A按照行相乘,得到一个列向量 Prduct_A = prod(A,2) ; %第二步,将新的向量每个值开n次方 Prduct_n_A = Prduct_A .^(1/n) ; %对该向量进行归一化即可得到权重向量,即将列向量的每一个元素除以列向量的和即可 disp('几何平均法求权重的结果为:') ; disp(Prduct_n_A ./ sum(Prduct_n_A)) ; %方法3:特征值法求权重 %第一步:求出矩阵A的最大特征值和其对应的特征向量 [V,D] = eig(A) ; %V是特征向量,D是特征值 Max_eig = max(max(D)) ; %求出最大特征值 [r,c] = find(D==Max_eig, 1) ; %找到最大特征值行和列,找到第一个满足条件的即可 %第二步:对求出的向量进行归一化,即可得到权重 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] ; %查表就可以,支持最多n=15 CR = CI / RI(n) ; %计算一致性比例 if(CR


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3