精华内容
下载资源
问答
  • 层次分析法(AHP)详细步骤

    万次阅读 多人点赞 2019-01-07 13:01:10
    层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的...

    1. 算法简介

    层次分析法(AHP)是美国运筹学家萨蒂于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
    层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的课题。

    2. 算法基本原理

    例子:
    在这里插入图片描述

    2.1. 解决问题的思路

    层次分析法的基本思路是将所要分析的问题层次化;根据问题的性质和所要达成的总目标,将问题分解为不同的组成因素,并按照这些因素的关联影响及其隶属关系,将因素按不同层次凝聚组合,形成一个多层次分析结构模型;最后,对问题进行优劣比较并排列。

    2.2. 层次分析法的步骤

    1.建立层次结构模型

    • 将决策的目标、考虑的因素(决策准则)和决策对象按照他们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。
    • 最高层: 决策的目的、要解决的问题。
      最低层: 决策时的备选方案。
      中间层: 考虑的因素、决策的准则。
    • 对相邻的两层,称高层为目标层,低层为因素层

    层次分析法所要解决的问题是关于最低层对最高层的相对权重的问题,按此相对权重可以对最低层中的各种方案、措施进行排序,从而在不同的方案中做出选择或形成选择方案的原则。

    2.构造判断矩阵
    层次分析法中构造判断矩阵的方法是一致矩阵法,即:不把所有因素放在一起比较,而是两两相互比较;对此时采用相对尺度,以尽可能减少性质不同因素相互比较的困难,以提高准确度。

    判断矩阵 a i j a_{ij} aij的标度方法

    标度含义
    1表示两个因素相比,具有同样重要性
    3表示两个因素相比,一个因素比另一个因素稍微重要
    5表示两个因素相比,一个因素比另一个因素明显重要
    7表示两个因素相比,一个因素比另一个因素强烈重要
    9表示两个因素相比,一个因素比另一个因素极端重要
    2,4,6,8上述两相邻判断的中值
    倒数因素 i i i j j j比较的判断 a i j a_{ij} aij,则因素 j j j i i i比较的判断 a j i = 1 / a i j a_{ji}=1/a_{ij} aji=1/aij

    3.层次单排序及其一致性检验
    对应于判断矩阵最大特征根 λ m a x \lambda max λmax的特征向量,经归一化(使向量中各元素之和为1)后记为 W W W W W W的元素为同一层次元素对于上一层因素某因素相对重要性的排序权值,这一过程称为层次单排序

    定义一致性指标 C I = λ − n n − 1 CI=\frac {\lambda-n}{n-1} CI=n1λn
    C I = 0 CI=0 CI=0,有完全的一致性;
    C I CI CI接近于0,有满意的一致性;
    C I CI CI越大,不一致越严重。

    为了衡量 C I CI CI的大小,引入随机一致性指标 R I RI RI

    随机一致性指标 RI
    n1234567891011
    RI000.580.901.121.241.321.411.451.491.51

    定义一致性比率: C R = C I R I CR=\frac{CI}{RI} CR=RICI,一般认为一致性比率 C R < 0.1 CR<0.1 CR<0.1时,认为A的不一致程度在容许范围之内,有满意的一致性,通过一致性检验。可用其归一化特征向量作为权向量,否则要重新构造成对比较矩阵A,对 a i j a_{ij} aij加以调整。

    示例:
    在这里插入图片描述在这里插入图片描述

    4.层次总排序及其一致性检验

    • 计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。
    • 这一过程是从最高层次到最低层次依次进行的。
      在这里插入图片描述
      A层 m m m个因素 A 1 , A 2 , ⋅ ⋅ ⋅ , A m , A_{1},A_{2},···,A_{m}, A1,A2,,Am,对总目标Z的排序为 a 1 , a 2 , ⋅ ⋅ ⋅ , a m a_{1},a_{2},···,a_{m} a1,a2,,am
      B层 n n n个因素对上层A中因素为 A j A_{j} Aj的层次单排序为 b 1 j , b 2 j , ⋅ ⋅ ⋅ , b n j ( j = 1 , 2 , 3 , ⋅ ⋅ ⋅ , m ) b_{1j},b_{2j},···,b_{nj}(j=1,2,3,···,m) b1j,b2j,,bnj(j=1,2,3,,m)

    B层的层次总排序(即B层第 i i i个因素对总目标的权值为: ∑ j = 1 m a j b i j \sum_{j=1}^{m}a_{j}b_{ij} j=1majbij)为:
    B 1 : a 1 b 11 + a 2 b 12 + ⋅ ⋅ ⋅ + a m b 1 m , B_{1}:a_{1}b_{11}+a_{2}b_{12}+···+a_{m}b_{1m}, B1:a1b11+a2b12++amb1m,
    B 2 : a 1 b 21 + a 2 b 22 + ⋅ ⋅ ⋅ + a m b 2 m , B_{2}:a_{1}b_{21}+a_{2}b_{22}+···+a_{m}b_{2m}, B2:a1b21+a2b22++amb2m,
    ⋅ ⋅ ⋅ ···
    B n : a 1 b n 1 + a 2 b n 2 + ⋅ ⋅ ⋅ + a m b n m , B_{n}:a_{1}b_{n1}+a_{2}b_{n2}+···+a_{m}b_{nm}, Bn:a1bn1+a2bn2++ambnm,

    层次总排序的一致性比率为: C R = a 1 C I 1 + a 2 C I 2 + ⋅ ⋅ ⋅ + a m C I m a 1 R I 1 + a 2 R I 2 + ⋅ ⋅ ⋅ + a m R I m CR=\frac{a_{1}CI_{1}+a_{2}CI_{2}+···+a_{m}CI_{m}}{a_{1}RI_{1}+a_{2}RI_{2}+···+a_{m}RI_{m}} CR=a1RI1+a2RI2++amRIma1CI1+a2CI2++amCIm,当 C R < 0.1 CR<0.1 CR<0.1时,认为层次总排序通过一致性检验。
    例子:
    在这里插入图片描述在这里插入图片描述

    3.算法总结

    • 应用领域:经济计划个管理,能源政策和分配,人才选拔和评价,生产决策,交通运输,科研选题,产业结构,教育,医疗,环境,军事等。
    • 处理问题类型:决策、评价、分析、预测等。
    • 建立层次分析结构模型是关键一步,要有主要决策层参与。
    • 构造成对比较矩阵是数量依据,应由经验丰富、判断力强的专家给出。

    4.参考

    1. 层次分析法建模——《百度文库》
    展开全文
  • 为了提高矿井瓦斯涌出量的预测精度,采用改进层次分析法对指数预测,双曲线预测和灰色预测3种传统预测方法,从稳定性,数据利用和适用时间上来进行加权组合,提出一种基于改进层次分析法的组合预测方法,并对西北某矿区4...
  • 针对研究煤矿安全评价中层次分析法判断矩阵一致性及排序权值的求解问题.基于煤矿环境的特殊性及系统的复杂性,为能够全面评价煤矿的安全状况,采用层次分析法对煤矿进行安全评价.判断矩阵的一致性保证、权重的求解是...
  • 依据模糊数学原理,使用matlab编写,用以进行模糊评价相关的研究,可以用来理解层次分析法,并在此基础上做相关改进
  • 同时也分析了层次分析法权重的计算方法及应用,层次分析法的计算方法有四种方法:几何平均法、算术平均法、特征向量法、最小二乘法,以往的文献利用层次分析法解决实际问题时,都是采用其中的某一种方法求权重向量,...
  • 层次分析法

    2014-06-12 09:27:21
    层次分析法 数学建模 方法 模型
  • AHP层次分析法

    万次阅读 多人点赞 2014-02-21 01:07:12
    在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于...

    2014年参加数学建模美赛, 其中一道题是选出5大优秀教练,数据来源要求自行寻找。 在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy Process)进行建模,好不容易理解了这一方法的思想,在自己的博客里记录一下,希望可以帮助初次接触层次分析法的人,更快地理解这一的整体思想,也利于进一步针对细节进行学习。文章内容主要参阅 《matlab数学建模算法实例与分析》,部分图片来源于WIKI

     

     

    文章分为2部分:

    1第一部分以通俗的方式简述一下层次分析法的基本步骤和思想

    2第二部分介绍一下我们队伍数学建模过程中,对层次分析法的应用,中间有些地方做了不严谨的推理,例如关于一致性的检验,如有人发现不正确,希望可以指正

     

    第一部分:

     

    层次分析法(Analytic Hierarchy Process ,简称 AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而又实用的多准则决策方法。

    人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 


    运用层次分析法建模,大体上可按下面四个步骤进行: 
    (i )建立递阶层次结构模型; 
    (ii )构造出各层次中的所有判断矩阵; 
    (iii )层次单排序及一致性检验; 
    (iv )层次总排序及一致性检验。 

     

    这四个步骤中,前两个步骤最容易理解,后两个步骤需要一点时间理解

     

    首先从层次结构模型说起

    层次分析法是用来根据多种准则,或是说因素从候选方案中选出最优的一种数学方法

    最顶层是我们的目标,比如说选leader,选工作,选旅游目的地

    中间层是判断候选方物或人优劣的因素或标准

    选工作时有:发展前途  ,待遇 ,工作环境等

    选leader时有:年龄,经验,教育背景,魅力

     

    在分层以后,为了选出最优候选

    给目标层分配值1.000

    然后将这一值作为权重,分配给不同因素,对应因素的权重大小代表该因素在整个选择过程中的重要性程度

    然后对于候选方案,每一个标准再将其权重值分配给所有的候选方案,每一方案获得权重值,来源于不同因素分得的权重值的和

     

    如下图:

                目标层分配值为1, 然后我们给了4个候选方案评估标准 criterion 1 、 criterion 2、criterion 3、criterion 4

                假设我们认为这四个标准同等重要, 于是目标层的值1 就被均分到 4个准则上, 每个准则获得的值为 0.25

                然后我们从评估标准 criterion 1 出发, 考虑在该评估标准下, 3 个候选方案的优劣比如何。 假如我们认为在标准1 的衡量下,   3 个方案完全平等, 方案1 在该标准下的得分就应该是: 0.25 * (1/3) 

               同理, 如果我们假设剩下的 3 个标准下, 3个候选方案都是平分秋色, 那么方案 1 的最终得分就应该是

               0.33 =  0.25 * (1/3)   +   0.25 * (1/3)   +  0.25 * (1/3)  +  0.25 * (1/3) 

               最终获得的各个方案的的权重值的和依然为1

     

    这不就是一个简单的权重打分的过程吗?为什么还要层次分析呢。这里就有两个关键问题:

    1每个准则(因素)权重具体应该分配多少

    2每一个候选方案在每一个因素下又应该获得多少权重

     

    这里便进入层次分析法的第二个步骤,也是层次分析法的一个精华(构造比较矩阵(判断矩阵)comparison matrix):

     

    首先解决第一个问题:每个准则(因素)权重具体应该分配多少?

    如果直接要给各个因素分配权重比较困难,在不同因素之间两两比较其重要程度是相对容易的

     

    现在将不同因素两两作比获得的值aij  填入到矩阵的 i 行 j 列的位置,则构造了所谓的比较矩阵,对角线上都是1, 因为是自己和自己比

    这个矩阵容易获得,我们如何从这一矩阵获得对应的权重分配呢

    这里便出现了一个比较高级的概念,正互反矩阵和一致性矩阵

    首先正互反矩阵的定义是:

     

    我们目前构造出的矩阵很明显就是正互反矩阵

     

    而一致性矩阵的定义是:


    这里我们构造出的矩阵就不一定满足一致性,比如我们做因素1:因素2= 4:1  因素2:因素3=2:1    因素1:因素3=6:1(如果满足一致性就应该是8:1),我们就是因为难以确定各因素比例分配才做两两比较的,如果认为判断中就能保证一致性,就直接给出权重分配了

     

    到了关键部分,一致性矩阵有一个性质可以算出不同因素的比例

     

    这里的w就是我们想要知道的权重,所以通过 求比较矩阵的最大特征值所对应的特征向量,就可以获得不同因素的权重,归一化一下(每个权重除以权重和作为自己的值,最终总和为1)就更便于使用了。(实际上写这篇博客就是因为,重新翻了线代的书才好不容易理解这里的,就想记录下来)

     

    这里补充一点线性代数的知识:

        n阶矩阵有n个特征值,每个特征值对应一个n维特征列向量,特征值和特征向量的计算方法这里就省略了,反正书中的程序是直接用matlab 的eig函数求的

     

    这里不能忘了,我们给出的比较矩阵一般是不满足一致性的,但是我们还是把它当做一致矩阵来处理,也可以获得一组权重,但是这组权重能不能被接受,需要进一步考量

    例如在判断因素1,2,3重要性时,可以存在一些差异,但是不能太大,1比2重要,2比3 重要,1和3比时却成了3比1重要,这显然不能被接受

     

    于是引入了一致性检验:

              一致性的检验是通过计算一致性比例CR 来进行的

              

              当 10 . 0 < CR 时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正。 

     

    CI的值由判断矩阵计算获得,RI的值查表获得,具体的计算公式这里就略去,重点是理解为什么要做一致性检验

     

     

    接下来解决第二个问题:每一个候选方案在每一个因素下又应该获得多少权重

     

    这里则需要将不同候选方案,在不同因素下分别比较,具体的比较方法,还是使用比较矩阵,只不过之前准则层的比较矩阵比较的对象是因素,这里比较的是某一因素下,候选方案的优劣, n个因素则需构造出来n个比较矩阵

    例如在工作环境的因素下,工作1与工作2相比为 :4:2,工作2与工作3=2:1  工作1:工作3=6:1.,这样构造一个矩阵,再用之前的一致性矩阵的方法就可以求出一个权重,然后相对应因素(这里是工作环境)所拥有的权值就可以按这个权重比例分配给不同候选物或人。

     

    其他因素同理

     

     

    至此两个问题就都得到了解决

    最终将每个候选物、人从不同因素获得的权值求和,就可以得到不同候选对于目标层的权值大小,继而可以根据值的大小,来选出优劣

     

    对于第一部分的总结:

     

    • 通过对层次分析法的基本了解,不难发现层次分析法对人们的思维过程进行了加工整理,提出了一套系统分析问题的方法,为科学管理和决策提供了较有说服力的依据。 

     

    • 但很明显的缺点是,整个分析过程似乎都是依赖于人的主观判断思维,一来不够客观,二来两两比较全部人为完成,还是非常耗费精力的,尤其是当候选方案比较多的时候

     

     

     

    文章的第二部分:


    层次分析法的变形应用(也可能本来就是这样用的,只不过参考书上没这样说,外语
    论文没细看)解决最优教练选择问题

     

    目标:选最优教练

     

    准则:  

     

     

    1. 职业生涯所带队伍的胜率      
    2. 职业生涯所带队伍的胜场            
    3. 从教时长(年)          
    4. 职业生涯所带队伍获奖状况(化成分数)

     

      

    候选:  众多教练

     

    准则层比较矩阵获得

     

     

    • 准则层的比较矩阵好构造 ,作6次两两比较,就可以获得4*4的比较矩阵

     

     

    候选层比较矩阵

     

    每一个准则对应下来的 候选层 已经有定量的数据了。 这里其实就不再需要候选层比较矩阵了, 因为有4000个教练的话, 得比4000*3999次,可以直接利用定量的数据计算权重

    • 例如“职业生涯所带队伍的胜场” 这一准则对应到每个教练都有直接相应数据的,例如教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90. 此时该准则下得到的分数, 就应当按照 10:5:9 的比例来进一步划分。 

     

    类似的,胜率准则 下就根据  “胜率   计算权重分配比例。 从教时长准则下就根据 “从教时间的年数” 计算权重分配比例

     

    这里又有两点可以注意:

     

    1.不同因素下数据的量纲和性质不一样,直接用数据作比来分配,不一定合适,比如胜率越要接近1越难,0.7比胜率0.5  和胜率0.9比0.7  ,后者比值比前者小,这显然不合适。这里可以利用指数函数和对数函数对数据先做一次处理, 再作为权重分配的依据。

     

    2.这里的用定量数据作比获得的矩阵显然满足一致性要求,不需要做一致性检验。以职业生涯所带队伍的胜场数为例,如果教练 A, B, C 职业生涯所带队伍胜场数为 100,150, 90。 那么 A:B :C 无论怎么作比, 都不会违反 10:15:9 的一致性。 

     

    综上就对层次分析法完成了定性定量结合的应用,以及对多个候选方案的比较(其实只是就是用程序控制数据作比,我们水平有限,能成功应用该方法已经不容易了)

     

    很遗憾的是比赛时编写的代码存放的优盘不慎丢失, 没有办法把代码共享出来, 这里只能将书中的代码贴出。比赛建模时, 就是在这个代码基础上进行修改实现。 只要理解了下列代码,编写符合自己需求的程序, 应当是水到渠成的事。

     

     

     

     matlab 代码(对应于文章第一部分选 Leader 的内容):

     

     

    clc,clear
    fid=fopen('txt3.txt','r');
    n1=6;n2=3;
    a=[];
    for i=1:n1
    	tmp=str2num(fgetl(fid));
    	a=[a;tmp]; %读准则层判断矩阵
    end
    for i=1:n1
    	str1=char(['b',int2str(i),'=[];']);
    	str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']);
    	eval(str1);
    	for j=1:n2
    		tmp=str2num(fgetl(fid));
    		eval(str2); %读方案层的判断矩阵
    	end
    end
    ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标
    [x,y]=eig(a);  % matlab eig(a) 返回矩阵的特征值和特征向量, 这里的 x 为矩阵 a 的 n 个特征向量, y 为矩阵 a 的 n 个特征值
    lamda=max(diag(y));  %  eig 函数返回的 y 是矩阵形式保存的, dig(y) 提取对角线上的n 个特征值到一个数组中, 求出最大特征值 lamda
    num=find(diag(y)==lamda);  % 返回最大特征的索引
    w0=x(:,num)/sum(x(:,num));  % x( :num) 为最大特征值所对应的那一列特征向量。 w0 中准则层计算出的 包含归一化后的n 个权重值
    cr0=(lamda-n1)/(n1-1)/ri(n1)
    
    for i=1:n1 % 循环 n 个维度, 针对每个维度, 都计算一次方案层的比较矩阵及其权重值
    	[x,y]=eig(eval(char(['b',int2str(i)])));
    	lamda=max(diag(y));
    	num=find(diag(y)==lamda);
    	w1(:,i)=x(:,num)/sum(x(:,num));
    	cr1(i)=(lamda-n2)/(n2-1)/ri(n2);
    end
    cr1, ts=w1*w0, cr=cr1*w0

     

    txt3.txt 中的内容, 前6行为准则层的 6 x 6 比较矩阵, 后 18 行则为 6 个准则下, 各自的 3 x 3 的比较矩阵。 

    1 1 1 4 1 1/2
    1 1 2 4 1 1/2
    1 1/2 1 5 3 1/2
    1/4 1/4 1/5 1 1/3 1/3
    1 1 1/3 3 1 1
    2 2 2 3 3 1
    1 1/4 1/2
    4 1 3
    2 1/3 1
    1 1/4 1/5
    4 1 1/2
    5 2 1
    1 3 1/3
    1/3 1 1/7
    3 7 1
    1 1/3 5
    3 1 7
    1/5 1/7 1
    1 1 7
    1 1 7
    1/7 1/7 1
    1 7 9
    1/7 1 1
    1/9 1 1

     

    再上一段 JAVA 代码, 方便 JAVA 童鞋参考, 这部分仅仅展示了如何用JAVA 代码进行准则层比较矩阵计算 。 

     

    import org.apache.commons.math3.linear.*;
    
    
    public class MatrixTester {
        public static void main(String[] args) {
    
            // Create a real matrix with two rows and three columns, using a factory
            // method that selects the implementation class for us.
            double[][] matrixData = {   {1d,    1d,     1d,     4d,     1d,     1d/2d},
                                        {1d,    1d,     2d,     4d,     1d,     1d/2d},
                                        {1d,    1d/2d,  1d,     5d,     3d,     1d/2d },
                                        {1d/4d, 1d/4d,  1d/5d,  1d,     1d/3d,  1d/3d },
                                        {1d,   1d,     1d/3d,  3d,     1d,     1d },
                                        {2d,    2d,     2d,     3d,     3d,     1d },
                                    };
            RealMatrix m = MatrixUtils.createRealMatrix(matrixData);
    
    
    
            // One more with three rows, two columns, this time instantiating the
            // RealMatrix implementation class directly.
            double[][] matrixData2 = {{1d, 2d}, {2d, 5d}, {1d, 7d}};
            RealMatrix n = new Array2DRowRealMatrix(matrixData2);
    
            // Note: The constructor copies  the input double[][] array in both cases.
            // Now multiply m by n
    //        RealMatrix p = m.multiply(n);
    //        System.out.println(p.getRowDimension());    // 2
    //        System.out.println(p.getColumnDimension()); // 2
    //
    //        // Invert p, using LU decomposition
    //        RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();
    
    
            RealMatrix D = new EigenDecomposition(m).getD();
            RealMatrix V = new EigenDecomposition(m).getV();
    
            for(int i=0; i<D.getRowDimension();i++)
            {
                System.out.println(D.getRowMatrix(i));
            }
    
            for(int i=0; i<V.getRowDimension();i++)
            {
                System.out.println(V.getRowMatrix(i));
            }
    
            // 特征值
            double maxLamda;
            int columIndexForMaxLamda=0;
            maxLamda=D.getEntry(0,0);
    
            for(int i =0, j=0; i<D.getRowDimension()&&j<D.getColumnDimension();i++,j=i)
            {
                double lamda = D.getEntry(i,j);
                if(maxLamda<lamda)
                {
                    maxLamda=lamda;
                    columIndexForMaxLamda = j;
                }
                System.out.println(lamda);
            }
    
            // 输出尚未做归一化 w1, w2, w3, w4, w5, w6 , 
            System.out.println(V.getColumnMatrix(columIndexForMaxLamda));
    
        }
    }
    

     

     

    展开全文
  • 层次分析法主要适用于具有分层交错的评价指标的目标系统,根据问题的性质和要求达到总目标,将问题分解为不同的组成因素,按照因素之间的关系按照不同的层次组合,从而形成一个分析结构模型。
  • 直觉模糊层次分析法

    2020-06-16 23:17:13
    为了解决传统模糊层次分析法难以处理的直觉模糊环境下的综合评判问题,利用直觉模糊数和模糊层次分析法建立了一种直觉模糊层次分析法。实验分析表明了该方法的有效性。
  • 采用三元标度分析法对传统的层次分析法进行改进,简化了对各影响因素进行权重分析的过程,运用模糊数学和隶属度函数的相关理论分析所得的权重向量,经过推导可以得出煤与瓦斯突出等级的综合分析结果,运用二级评判的方法...
  • 采用改进层次分析法分析道路状况的多种因素,得出了当道路发生紧急事故时,符合时效性、安全性、经济性的路段权值。然后根据实时交通信息,利用改进的Dijkstra算法,探索了路径权重计算方法,建立了交通网络的运行...
  • 第一讲:层次分析法 模型介绍 评价类问题可用打分解决 根据权重表格计算得分 一个小小的总结 一道引出层次分析法的例题 还记得这张权重表格吗? 直接问权重的弊端 分而治之的思想 层次分析...

    第一讲:层次分析法

    在这里插入图片描述

    模型介绍

    在这里插入图片描述

    评价类问题可用打分解决

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    根据权重表格计算得分

    在这里插入图片描述
    在这里插入图片描述

    一个小小的总结

    在这里插入图片描述

    一道引出层次分析法的例题

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    还记得这张权重表格吗?

    在这里插入图片描述

    直接问权重的弊端

    在这里插入图片描述

    分而治之的思想

    在这里插入图片描述

    层次分析法的思想登场

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    填写判断矩阵

    在这里插入图片描述
    在这里插入图片描述

    一个可能出问题的地方

    在这里插入图片描述

    一致矩阵

    在这里插入图片描述

    一致矩阵的例子

    在这里插入图片描述
    在这里插入图片描述

    一致性检验

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一致性检验的步骤

    在这里插入图片描述

    两个小问题

    在这里插入图片描述

    一致矩阵怎么计算权重

    在这里插入图片描述

    判断矩阵计算权重

    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

    方法3特征值求权重

    在这里插入图片描述
    在这里插入图片描述

    将计算结果填入权重表

    在这里插入图片描述

    代码演示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    汇总结果到权重矩阵

    在这里插入图片描述

    计算个方案的得分

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三个问题对我们的启发

    在这里插入图片描述

    层次分析法第一步

    在这里插入图片描述

    使用SmartArt生成

    在这里插入图片描述

    使用专业软件:亿图图示

    在这里插入图片描述

    层次分析法第二步

    在这里插入图片描述

    构造判断矩阵

    在这里插入图片描述

    看看优秀论文的做法吧

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    层次分析法第三步

    在这里插入图片描述

    一致性检验的步骤

    在这里插入图片描述

    CR>0.1如何修正

    在这里插入图片描述

    层次分析法第四步

    在这里插入图片描述

    层次分析法的一些局限性

    在这里插入图片描述

    代码详解

    在这里插入图片描述
    在这里插入图片描述

    本节代码部分知识点索引

    在这里插入图片描述

    模型拓展

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    课后练习

    在这里插入图片描述

    课后训练

    在这里插入图片描述

    下一讲预告:TOPSIS法

    在这里插入图片描述

    展开全文
  • 主成分分析和层次分析法是计算综合指标的2种常用...讨论了2种方法的局限性,提出了一种结合主成分分析法改进后的层次分析法,并结合R软件对湖北省工业企业创新能力进行综合评价,从而验证了该方法的科学性与合理性。
  • 住房分配;多变量考核指针;层次分析法(AHP);判断矩阵;模糊分析法;关键指针;MATLAB软件
  • 基于改进层次分析法的雷达模拟机综合评价方法研究,宋薇薇,,为了提高雷达管制模拟机综合评价的准确性和有效性,减少评判者的主观差异对评判结果的影响,提出了一种基于改进层次分析法理论的
  • 以广东省滑坡危险性评价为例,选取地形地貌、地层岩性、地质构造、岩土体结构、水文地质条件、植被覆盖率、降雨分布、地震以及人类经济工程活动等9个评价因素,通过改进层次分析法得出因素权重的大小,清楚地显示出...
  • 本文基于对层次分析法在处理多目标决策问题时计算量较大、易出现误差的情况提出改进的目的,采用修改标度值和简化判断矩阵的方法,有效地解决层次分析法在处理多目标决策问题时由于标度值差异太小而容易引起误差的...
  • 面临各种各样的方案要进行比较判断评价最后 作出决策这个过程主观因素占有相当的比重给用数学方法 解决问题带来不便T.L.saaty等人20世纪在七十年代提出了 一种能有效处理这类问题的实用方法 层次分析法Analytic ...
  • 层次分析法(Analytic Hierarchy Process,简称AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便...
  • 针对氯乙烯生产单元的危险源,结合氯乙烯生产实际,采用改进层次分析法对氯乙烯生产单元安全性影响因素(人员素质、设备设施、综合管理、作业环境及消防)进行了分析,并确定了各因素的权重大小,找出了主要影响因素为人员...
  • 数学建模方法——层次分析法(AHP)

    万次阅读 多人点赞 2019-12-04 17:10:33
    层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好,到底要报哪个;再...

    目录:

    1. 层次分析法简介
    2. 层次分析法基本原理
    3. 构造判断矩阵
    4. 一致性检验
    5. 一致性检验通过的判断矩阵求权重
      4.1 算数平均法求权重
      4.2 几何平均法求权重
      4.3 特征值法求权重
    6. 总结

    0. 层次分析法简介
    层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好,到底要报哪个;再比如去市场买菜,到底是买青椒做青椒炒鸡蛋,还是买黄瓜做黄瓜炒鸡蛋;再比如想去出游,到底是去公园A还是公园B。上面提到的这些问题,都是决策,也叫做评价类问题,最终的目的就是要评价到底哪个更好。这个方法在数学建模比赛,比如美赛等比赛中有时会用到,另外对日常的生活也有一定的指导。

    那么如何用数学的评价体系去解决这类看似非常感性的问题呢,这就诞生了我们今天要讲的层次分析法。这里我们从浅入深对于层次分析法进行一个讲解。

    1. 层次分析法基本原理

    这里我们举一个例子让大家大致的了解层次分析法的基本原理。假如,小明想买一瓶饮料喝,他在纠结到底是买可乐好,还是雪碧好,还是汇源果汁,他非常的纠结,于是想建个模型来分析到底买哪种饮料好。

    为了实现这个评价,首先我们要确定评价的指标,比如这里我们设定三种指标:饮料的口味,饮料的价格和饮料健康程度,那么最直观的量化方法就是给各个因素一个权重,然后给各个饮料进行打分,如下表:
    在这里插入图片描述

    表格中相同颜色的区域加和需要为1,这是为了标准化。所以我们来看一下这个表格,在评价指标方面,小明很注重健康因为给了健康0.5的权重,其次是口味0.3,最后是价格0.2; 具体的在口味方面,小明觉得可乐和雪碧差不多(0.35),果汁稍微差一点是0.3 以此类推,小明就只做了这张表格,为了计算每种饮料的得分,我们只需要把备选方案的权重乘对应的评价指标的权重并且加和即可,也就是:

    可乐的最终得分是0.35×0.3+0.4×0.2+0.1×0.5 = 0.1005;
    雪碧的最终得分是 0.35×0.3+0.4×0.2+0.2×0.5 = 0.1505;
    汇源果汁的最终得分是 0.3×0.3+0.2×0.2+0.7×0.5 = 0.379;

    通过比大小我们就看得出来汇源果汁的最终得分最高,所以小明应该选择汇源果汁。

    回顾一下,为了量化的评价,我们需要确定评价指标,和备选方案两个重要的因素,接着分配权重(记得加和为1),最终通过乘法然后加和的方式得到最终的量化得分,从而做出最终的评价。

    2. 构造判断矩阵

    层级分析法就是简单的编造几个权重然后进行抉择么?当然不是,如何客观合理的设定表格中的权重才是重中之重,因此,我们这里介绍如何构造判断矩阵。

    在现实问题中,往往存在很多个评价指标,让小明从饮料的口味,价格,健康,瓶盖能不能兑奖,瓶子是不是好看,自己是不是汇源果汁的代言人……等很多评价指标中给出合理的权重是一个非常困难的事情,也许小明现在给出的权重和一会儿给出的权重就完全不同,所以,为了简化思维过程,我们首先进行评价指标的两两比较,再将比较结果汇总成最终的权重。

    为了量化两两比较的结果,我们要祭出一个评价体系表格(不要问我从哪里来~它的故乡在远方)说白了,就是在A和B两者比较中划分了一个1到9的重要等级。
    在这里插入图片描述

    举个例子,假如说饮料的健康性(A)和口味(B)相比,健康要明显重要,则我们就可以说A比B的权重是5。之后我们开始构建我们的判断矩阵。

    在这里插入图片描述

    上述的表格就是一个判断矩阵,我们可以看到这个判断矩阵有几个特点,对角线都为1,而且对角线对称的元素相乘都为1,这样的矩阵也被称为正互反矩阵。
    为了更加数学的描述,我们设定矩阵的元素定义为a_ij代表了与j相比i的重要性,其中i表示行,j表示列, 其中a_ij>0而且a_ij×a_ji=1即对称元素相乘为1。当i=j时,也就是元素在对角线上时,元素为1。另外理想的情况下要满足a_ij=a_ik×a_kj 这个理想的条件我们在以后说明

    在构造判断矩阵的过程中我们的元素是两两进行判断的,所以是不是有可能出现问题呢?答案是有可能的,我们将表格中的元素进行一个更改,并用绿色标记出,随后得到了如下的表格

    在这里插入图片描述

    我们看第一行,口味比价格重要(口味>价格)同时健康比口味重要(健康>口味),那么按照正常的推理我们是不是应该得到健康比价格重要(健康>口味>价格)然而实际上表格中填写的是价格比健康重要(价格>健康)这就出现了矛盾,也就是不一致现象。在理想情况下,在这里插入图片描述
    ,所以说,在理想的情况下a_ij=a_ik×a_kj 。理想的情况下的判断矩阵也有一些很好的性质,比如行列成比例,也就是说矩阵的秩为1,这里不进行深入的讨论。但是大部分的情况下,没办法达到如此的完美,那么为了量化评价这种不一致现象的大小,就需要在运算权重之前进行一致性的检验。

    回顾一下,为了更合理的得到层次分析法表格中的权重,我们引入了数值为1-9的标度体系,并且用两两比较的方法构建了一个判断矩阵用于之后的权重计算,然而判断矩阵存在不一致的问题,因此我们要从数值的角度评价不一致的大小,以此引出一致性的检验。

    3. 一致性检验

    为了构建一个一致性的指标来验证矩阵的一致性,学者们主要参考了线性代数中的两个定理:

    定理1:若A为一致性矩阵,则A的最大特征值λ_max⁡ = n,其中n为矩阵A的阶,A的其余特征值均为0。

    定理2:n阶正互反矩阵为一致性矩阵,当且仅当其最大特征值λ_max⁡ = n,并且当正互反矩阵非一致时,必有λ_max⁡ > n。

    从定理2的后半句中,我们可以看到,当一个正互反矩阵为非一致的矩阵的时候必有最大的特征值大于矩阵的阶,所以就想到可以使用最大特征值和矩阵的阶的差值来定义不一致性。这种想法看似复杂,其实超级朴素,比如时间不能倒流,所以出生后经过的年数就定义为你的年龄(年数-0)。

    为此就定义了一致性指标CI,CI = (λ_max – n) / (n -1)。也就是说一致性指标CI越大,整个矩阵就越不一致,当CI是0的时候是完全理想的一直矩阵。(难道这不应该叫不一致性指标么???)

    另外,为了得到计算出来的一致性指标到底是大还是小,我们又构建了平均随机一致性指标RI,该指标的构建方法是随机构建1000个正互反矩阵,并计算一致性指标的平均值。这里的RI也就是说当矩阵的阶数为n的时候随机的平均一致性。这相当于一把尺子,告诉大家如果完全随机(瞎蒙)的填写这个判断矩阵的结果的话,那么你的一致性指标的期望就大概是这个RI的值。RI如何计算呢?查表就可以了。
    在这里插入图片描述
    当CI和RI的比值小于0.1的时候,我们认为这个矩阵是一致的,也就是说你矩阵的一致性指标,要比平均的瞎蒙的一致性指标小一个数量级的时候,我们认为你就不是乱猜的了。这样我们就构建了我们的一致性比例CR = CI/ RI。如果说一个正互反矩阵的一致性比例没有小于0.1,那么就需要调整矩阵以满足要求。

    在这里插入图片描述

    举个例子,我们以这个判断矩阵为例,计算它是否满足一致性的要求,第一步是计算其最大的特征值,在matlab中,我们可以使用[x,y] = eig([1,3,1/5;1/3,1,1/6;5,6,1]); l_max = max(diag(y)); 计算得到,最后计算得到的最大特征值为3.0940, 我们可以看到这个值满足我们定理2中所说的要比矩阵的阶数3大。CI = (l_max -3) / ( 3 -1 ); 计算CI值是0.0470。RI值通过查表得到是0.52,最后我们的RI值就是CI/RI = 0.0904 < 0.1 所以这个矩阵满足一致性的要求。

    回顾一下,这里主要讲如何验证矩阵的一致性,为了验证一致性构造了一致性比例CR,满足CR小于0.1的就认为该判断矩阵合理,不满足的就要对判断矩阵进行调整,得到合理的判断矩阵,得到合理的判断矩阵之后,就可以进行最初的,层次分析法的计算了。

    4.一致性检验通过的判断矩阵求权重

    得到了合理的判断矩阵我们这里就要计算每个影响因素所占的权重,这里主要有三种方法,算数平均法,几何平均法,和特征值法求权重
    4.1 算数平均法求权重:(列归一化,行平均值)
    对每列进行归一化处理,并且按照行求平均值就得到了我们最终的权重,这是最简单的计算方法,具体的方法如下:step1:列归一化
    最左上角的元素归一化就是1/(1+1/3+5)=0.18;
    第一行第二个元素的计算方法就是3/(3+1+6)=0.30以此类推;

    在这里插入图片描述

    Step2:行平均值
    口味:(0.18+0.30+0.17)/3 = 0.22;
    价格:(0.06+0.10+0.14)/3 = 0.10;
    健康:(0.88+0.60+0.83)/3 = 0.77;
    正常权重的加和是1,这里因为四舍五入的原因有一定的偏差。得到了权重之后,我们就可以写入最开始的表格了(还记得嘛?在算了这么多之后一定要牢记使命,别忘了最开始计算这些东西的目的是什么)

    在这里插入图片描述

    4.2 几何平均法求权重:(行相乘开n次方,列归一化)

    这里的计算方法就是将行的元素都相乘,然后再开对应的n次方,并对得到的n个数字进行归一化即可。

    4.3 特征值法求权重:(最大特征值的特征向量归一化)

    特征值法其实是应用最多的一个方法,就是求最大特征值所对应的特征向量并进行归一化处理,matlab的计算方法如下:[x,y] = eig([1,3,1/5;1/3,1,1/6;5,6,1]); vec_max = x(:,1);得到的vec_max就是最大特征值对应的特征向量了。在本例中是0.26,0.12,0.96在对其进行归一化的处理,得到0.19,0.09,0.72 这样我们就用另一种方法求得了权重。

    回顾一下这里介绍了三种不同的方法对判断矩阵的权重进行计算。除了这三个影响因素的判断矩阵以外,具体的表格中可乐,雪碧和汇源果汁的判断矩阵构造方法也是一样的。只需要列出以下的表格,检验一致性并最终计算即可。

    在这里插入图片描述

    5. 总结
    以上就是层次分析法的全部过程,有几个小的问题需要进一步的讲解,当判断矩阵不满足一致性的时候我们调整的方法就是重新梳理整个矩阵的各个元素,可以利用理想状态下,行和列的元素成比例的性质进行微调。另外,层次分析法考虑的因素不能过多,不论是候选的种类,还是评价的指标都不能太多。除此之外,层次分析法主要是在主观的评价体系中进行决策,或者满意度的评价,当在一个问题中,已经有很多已知的数据的时候,这种方法就显得不太好了。

    展开全文
  • 行业-电子政务-基于改进区间层次分析法的用户用电设备安全评估方法.zip
  • 方法 将互反型判断矩阵改为模糊一致性判断矩阵,并把和行归一法或方根法与特征向量法结合使用,提出了改进的模糊层次分析法。结果 指出传统的层次分析法往往会导致判断矩阵不满足一致性条件,需要检验和修正,而且...
  • 基于粒子群算法的模糊层次分析法改进及其应用研究.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,290
精华内容 28,116
关键字:

层次分析法的改进方法