精华内容
下载资源
问答
  • 一道引出层次分析法例题 还记得这张权重表格吗? 直接问权重的弊端 分而治之的思想 层次分析法的思想登场 填写判断矩阵 一个可能出问题的地方 一致矩阵 一致矩阵的例子 一致性检验 ...

    第一讲:层次分析法

    在这里插入图片描述

    模型介绍

    在这里插入图片描述

    评价类问题可用打分解决

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

    根据权重表格计算得分

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

    一个小小的总结

    在这里插入图片描述

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

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

    还记得这张权重表格吗?

    在这里插入图片描述

    直接问权重的弊端

    在这里插入图片描述

    分而治之的思想

    在这里插入图片描述

    层次分析法的思想登场

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

    填写判断矩阵

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

    一个可能出问题的地方

    在这里插入图片描述

    一致矩阵

    在这里插入图片描述

    一致矩阵的例子

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

    一致性检验

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

    一致性检验的步骤

    在这里插入图片描述

    两个小问题

    在这里插入图片描述

    一致矩阵怎么计算权重

    在这里插入图片描述

    判断矩阵计算权重

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

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

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

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

    在这里插入图片描述

    方法3特征值求权重

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

    将计算结果填入权重表

    在这里插入图片描述

    代码演示

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

    汇总结果到权重矩阵

    在这里插入图片描述

    计算个方案的得分

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

    三个问题对我们的启发

    在这里插入图片描述

    层次分析法第一步

    在这里插入图片描述

    使用SmartArt生成

    在这里插入图片描述

    使用专业软件:亿图图示

    在这里插入图片描述

    层次分析法第二步

    在这里插入图片描述

    构造判断矩阵

    在这里插入图片描述

    看看优秀论文的做法吧

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

    层次分析法第三步

    在这里插入图片描述

    一致性检验的步骤

    在这里插入图片描述

    CR>0.1如何修正

    在这里插入图片描述

    层次分析法第四步

    在这里插入图片描述

    层次分析法的一些局限性

    在这里插入图片描述

    代码详解

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

    本节代码部分知识点索引

    在这里插入图片描述

    模型拓展

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

    课后练习

    在这里插入图片描述

    课后训练

    在这里插入图片描述

    下一讲预告:TOPSIS法

    在这里插入图片描述

    展开全文
  • 层次分析法例题

    2015-10-07 16:24:06
    一步一步讲解层析分析法的应用,对新手特别有用。
  • 层次分析法(AHP)原理_例题应用及代码

    万次阅读 多人点赞 2020-09-27 16:09:47
    层次分析法(AHP)原理应用及代码AHP算法步骤算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致...

    层次分析法(AHP)原理应用及代码


    层次分析法是将 定性问题定量化处理的一种方法。
    层次分析法简称AHP,其主要特点是通过建立递阶层次结构,把人的主观判断转化为对若干两两因素重要程度的判断上,从而把难以操作的定性判断量化为可操作的重要性程度判断上

    1.AHP算法步骤

    第一步:分析系统各因素之间的关系,建立递阶层次结构
    第二步:对于同一层次的各要素,针对上一准则层的某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)
    第三步:根据判断矩阵得到各元素针对于某一准则的相对权重,并进行一致性检验(通过一致性检验的才可使用)
    第四步:根据权重矩阵计算得分,并进行排序

    2.算法举例

    小明同学要出去旅游,事先确定了三个地方,分别是北戴河、苏杭、桂林,但最终无法从这三个地方中选定,希望你通过层次分析法来帮助小明进行判断。

    根本目的就是为了填完下面的这张表。用*指标权重*乘以每个地方的得分,然后做和就可以得到这个地方的分数,最后根据分数判断即可

    第一步:建立递阶层次图

    在这里插入图片描述

    第二步:建立判断矩阵

    因为我们一次性比较五个指标很困难,两两指标进行比较,根据比较的结果确定权重,我们有如下的标准
    在这里插入图片描述

    计算五个指标的判断矩阵

    %% 判断矩阵一般交给专家填写,但建模比赛中一般自己判断

    在这里插入图片描述
    (1) a ( i , j ) a_(i,j) a(i,j)表示的意义是,与指标𝑗相比,𝑖的重要程度。
    (2)当𝑖 = 𝑗时,两个指标相同,因此同等重要记为1,这就解释了主对角线元素为1。
    (3) a ( i , j ) a_(i,j) a(i,j)> 0且满足 a ( i , j ) ∗ a ( j , i ) a_(i,j)*a_(j,i) a(i,j)a(j,i)=1 (我们称满足这一条件的矩阵为正互反矩阵
    实际上,上面这个矩阵就是层次分析法中的判断矩阵。

    *上面第一行解释为:与花费相比,景色没有花费重要;与居住相比,景色更重要一点;与饮食相比,景色稍微重要。*其他以此类推
    在这里插入图片描述

    计算三个方案相对于某一指标的权重

    计算苏杭、北戴河、桂林在景色方面所占的权重(得分)
    在这里插入图片描述
    矩阵里的数据可以解释为:苏杭的景色与北戴河相比要好一点,要比桂林好很多

    相对于其他指标的判断矩阵以此类推,如下图所示
    在这里插入图片描述

    第三步:进行一致性检验

    首先要明确:

    1. 如果正互反矩阵满足 a ( i , j ) ∗ a ( j , k ) = 1 a_(i,j)*a_(j,k)=1 a(i,j)a(j,k)=1
      ,则称此正互反矩阵为一致矩阵
    2. 记我们构造的矩阵的特征值的最大值为 λ m a x \lambda_{max} λmax,若判断矩阵为一致矩阵,则有 λ m a x = n \lambda_{max}=n λmax=n;若为非一致矩阵,则有 λ m a x > n \lambda_{max}>n λmax>n
    3. 判断矩阵越不一致,则最大值 λ m a x \lambda_{max} λmax n n n的差别越大
    4. 一致性检验就是检验我们构造的矩阵与一致矩阵是否有太大差别

    一致性检验的步骤

    第一步:计算一致性指标 C I CI CI

    C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n}{n-1} CI=n1λmaxn

    第二步:查找对应的平均随机一致性指标 R I RI RI

    R I RI RI为已经给定的标准,不需要自己计算,只需要查表即可
    在这里插入图片描述
    在实际运用中,n很少超过10,如果指标的个数大于10,则可考虑建立
    二级指标体系,或使用模糊综合评价模型。

    第三步:计算一致性比例 C R CR CR

    C R = C I R I CR=\frac{CI}{RI} CR=RICI

    如果 C R < 0.1 CR<0.1 CR<0.1,则认为一致性可以接受,否则需要对判断矩阵进行修改

    第四步:计算权重

    通过一致性检验的前提下,计算权重有三种方法

    第一种:算术平均法

    以对于景色指标来说,三个方案的权重计算为例;对于其余指标三个方案的权重以及五个指标的权重计算也类似
    在这里插入图片描述

    第一步:将判断矩阵按照列归一化

    即每一个元素除以其所在列的和,比如说苏杭的0.5882= 1 / ( 1 + 1 2 + 1 5 ) 1/(1+\frac{1}{2}+\frac{1}{5}) 1/(1+21+51),其余以此类推
    在这里插入图片描述

    第二步:将归一化的各列相加(按行相加)

    在这里插入图片描述

    第三步:将相加后得到的向量中的每个元素除以 n n n即可得到权重向量

    在这里插入图片描述

    第二种:几何平均法

    第一步:将A的元素按照行相乘得到一个新的列向量

    第二步:将新的向量的每个分量开n次方

    第三步:对该列向量进行归一化即可得到权重向量

    第三种:特征值法

    第一步:求出矩阵A的最大特征值以及其对应的特征向量

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

    由此也可求出指标判断矩阵的权重
    在这里插入图片描述
    汇总结果得到权重矩阵
    在这里插入图片描述

    第五步:计算方案得分

    苏杭得分: = 0.2636 ∗ 0.5954 + 0.4758 ∗ 0.0819 + 0.0538 ∗ 0.4286 + 0.0981 ∗ 0.6337 + 0.1087 ∗ 0.1667 = 0.299 =0.2636*0.5954+0.4758*0.0819+0.0538*0.4286+0.0981*0.6337+0.1087*0.1667=0.299 =0.26360.5954+0.47580.0819+0.05380.4286+0.09810.6337+0.10870.1667=0.299
    类似可以求得:北戴河 0.245 0.245 0.245,桂林 0.455 0.455 0.455
    因此最佳旅游景点是桂林

    3.模型注意事项(一致性检验不通过怎么办)

    1. C R < 1 CR<1 CR<1如何修正?

    一致性矩阵的各行成倍数关系,如果没能通过一致性检验,只要调节判断矩阵尽量使各行成倍数关系即可

    2.判断矩阵写法

    判断矩阵一般是由专家来填写,因为在构造判断矩阵的过程中会带有人的主观判断。但是在实际建模过程中一般都是自己填写。

    3.平均随机一致性指标 R I RI RI

    平均随机一致性指标是通过大量实验模拟给出的结果,我们直接查找使用即可。有些地方给出的 R I RI RI表格可能与上面给出的由些许差别,尽量以上面给出的表格为准,因为上面的那个表格是最多人使用的

    4.如果准则层与方案层不是全连接该怎么办

    详细可参见以下文件
    层次分析法的解决办法,如果同学们没有积分的话可以直接私戳我,我会直接发给你的

    4.模型局限性

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

    2.这是一个将定性分析转化为定量分析的方法,如果决策层中的数据是已知的,则最好不要用层次分析法,可以选用Topsis方法

    5.模型代码

    
    M=input('请输入判断矩阵M='); 
    [~,n] = size(M); 
        
    %进行一致性检验
    [V,D] = eig(M);                      %M的全部特征值构成对角矩阵D,M的特征向量构成V的列向量
    Max_Eig = max(max(D));               %max(矩阵)返回一行向量包含每列的最大值
    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];       %因为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('矩阵M一致性可以接受!');
        disp('############################################3')
        S = 1;
    else 
        disp('矩阵M需要进行修改!'); 
        S = 0;
    end 
     
    if S == 1;
        % 第一种 特征值法求权重
        [r,c] = find(D == Max_Eig,1);       %利用find函数找到最大特征值所在的行列
        disp('特征值法结果为:');
        disp( V(:,c) ./ sum(V(:,c)) )       %归一化处理得到权重
    
        % 第二种 算术平均法求权重
        sum_A = sum(M);
        B=ones(n,n);                     %   
        for i = 1:n                      %
            B(:,i) = sum_A(i);           %构造用于平均的矩阵 
        end                              %
        Stand_A = M ./ B ; 
        disp('算术平均法结果为:') ;   
        disp(sum(Stand_A,2)./n)          
        
        % 第三种 几何平均法求权重 
        Geo_A = prod(M,2);            
        Geo_n_A = Geo_A .^ (1/n);     
        disp('几何平均法结果为:');        
        disp(Geo_n_A ./ sum(Geo_n_A))      
        
    else S == 0;
        disp('修改判断矩阵!!!') 
    end 
    
    
    展开全文
  • 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));
    
        }
    }
    

     

     

    展开全文
  • 层次分析法 模型简介 层次分析法(Analytic Hierarchy Process,简称AHP)是将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析...我们通过一道例题引出层次分析法。 现在正值五一...

    层次分析法

    模型简介

    层次分析法(Analytic Hierarchy Process,简称AHP)是将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。尤其适合于对决策结果难于直接准确计量的场合。是建模比赛中最基础而又最重要的模型之一,主要用于解决评价类问题(比如最佳方案的原则、评选优秀员工等)。

    例题导入

    我们通过一道例题引出层次分析法。
    现在正值五一假期,小王同学想和家人一起出去游玩。在了解相关旅游攻略之后,初步选定了青岛、威海、泰安三地之一作为目标城市。请你确定评价指标、形成评价体系来为小王同学选择最佳旅游方案。
    首先我们要明确这是评价类问题,那么首先要想到以下三个问题:

    • 评价的目标是什么?
    • 为了实现目标有哪些可选方案?
    • 评价的准则或指标是什么?

    在本问题中,我们做出如下对应回答:

      1.为小王同学选择最佳旅游城市。
      2. 三种,分别是青岛、威海、泰安。 
      3. 本题目没有相关数据支撑,需要我们自己确定。
    

    一般问题解决的关键在于第三点,需要我们根据题目中的背景材料、常识以及搜集的参考资料结合来筛选最合适的指标。
    加入我们已经确定好五项指标:景色、花费、居住、饮食、交通五项指标,我们通过权重表格来继续分析:
    在这里插入图片描述
    如果直接考虑五个指标之间的权重关系,常常会因为考虑不周全,顾此失彼而让结果比较片面,因此我们通过分而治之的思想:即两个两个指标进行比较,最终根据两两比较的结果进行推算,至此,层次分析法的思想登场。

    模型应用

    首先根据分而治之的思想进行10次【组合数C(5,2)】比较,用数字作为标度表示具体含义,形成层次分析法中的判断矩阵。
    在这里插入图片描述总结:
    在这里插入图片描述
    在层次分析法中,我们构造的判断矩阵满足:矩阵中每个元素都大于0且a(ij)×a(ji)=1,即正互反矩阵。
    若正互反矩阵满足a(ij)×a(jk)=a(ik),我们称其为一致矩阵。
    通过一致矩阵计算权重:
    方法一:算术平均法求权重

    • 将判断矩阵每一个元素除以所在列的和(归一化)

    • 将归一化的各列相加

    • 将相加后得到的向量中每个元素除以n即得到权重向量
      方法二:几何平均法求权重

    • 将A的元素按照行相乘得到一个新的列向量

    • 将新的向量每个分量开n次方

    • 对该列向量进行归一化即可得到权重向量
      方法三:特征值法求权重

    • 求出矩阵A的最大特征值以及对应的特征向量

    • 对求出的特征向量进行归一化即可得到权重
      方法三通过MATLAB实现,在实际论文中,建议三种方法都使用来进行求权重,这样能增加论文的说服力。

    总结

    本篇博客是学习了清风老师的数学建模学习交流课程的第一讲做的学习笔记,这是我入门数学建模听得第一节课,记录的内容可能较精简,但关于该模型学会如何通过MATLAB来应用以及在论文中阐述出来是重点,而这些内容在清风老师深入浅出的讲解后都能被充分的理解。希望在课后经过老师的指导后能够在论文中合理应用此模型。
    另外如果对该模型的深入内容感兴趣或者想了解更多数学建模中其他模型,大家可以在B站或者微店APP自己去搜索清风老师的系列课程,相信大家都能受益匪浅!

    展开全文
  • 层次分析法

    千次阅读 2019-01-23 19:19:14
    下面将通过一个例子和代码来认识层次分析法,代码已经做成模板,直接套用即可。 层次分析法根据问题的性质和要达到的总目标, 将问题分解为不同的组成因素,并按照因素间的 相互关联影响以及隶属关系将因素按不同...
  • 数学建模:层次分析法实例以及代码

    万次阅读 多人点赞 2020-11-22 22:06:09
    目录层次分析法的思想层次分析法步骤具体案例(市政工程项目建设决策)1.问题提出2.建立递阶层次结构3.构造判断矩阵(成对比较阵)并赋值4.层次单排序(计算权向量)与检验(一致性检验)计算权向量一致性检验5.层次总...
  • 分析:本题为评价类问题,且决策层(指标)的数据未知,可以使用层次分析法建模。 (1)评价目标是什么:选择最合适的目标景点 (2)有哪几种可选方案:苏杭、北戴河和桂林 (3)评价的指标是什么: 通过在知网、万方...
  • 层次分析法 数学建模实例 层次分析法 数学建模实例 层次分析法 数学建模实例 层次分析法 数学建模实例 层次分析法 数学建模实例
  • 预测(评价)模型——层次分析法*

    千次阅读 2020-04-15 11:46:03
    层次分析法属于运筹学理论,简称为AHP,其主要思路是将决策总有关的元素分解为多个层次,基本的AHP主要分为三层目标层,准则层,方案层。在此基础上进行定量与定性分析。最终得出决策依据。该方法是美国运筹学家匹茨...
  • 【AHP】层次分析法 | 过程解读 案例实践

    千次阅读 多人点赞 2020-08-20 19:56:21
    AHP 层次分析法 一. AHP 层次分析法介绍 AHP 层次分析法简介 AHP,即层次分析法(Analytic Hierarchy Process,AHP)是一种系统化的、层次化的多目标综合评价方法。在评价对象的待评价属性复杂多样,结构各异,...
  • 层次分析法理论部分评价类模型——层次分析法,一致性检验学习笔记(一) 层次分析法方法总结: 第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构 第二步:对于同一层次的各元素关于上一层次中某...
  • 层次分析法在matlab上的实现

    万次阅读 多人点赞 2018-06-12 10:36:17
    层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯.塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题...
  • AHP(层次分析法)原理及案例先结合日常生活中的例子深入浅出的讲解了AHP的原理,随后结合案例给出了层次分析法的具体操作实现过程。
  • 使用层次分析法,获得数学建模国奖的优秀论文的整理合集,非常有用,可以参考。
  • 层次分析法的基本步骤4.1 建立层次结构模型4.2 构建成对比较矩阵4.3 做一致性检验 1.问题提出 日常生活中有很多的决策问题。决策是指在面临多种方案时需要依据一定的标准(一个或多个)选择某一种方案。 例1 购物: ...
  • 层次分析法步骤及源代码

    千次阅读 2020-08-04 23:18:03
    层次分析法步骤及matlab源码层次分析法步骤例题matlab源代码 层次分析法步骤 建立层次结构模型。在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层...
  • 数学建模之层次分析法及其应用

    千次阅读 多人点赞 2020-07-28 23:57:16
    层次分析法在数学建模中是非常常见的,其原理、应用场景及实例本文里都有。希望能对数学建模爱好者、挑战者提供一些帮助。如有不清楚或错误的地方还望指出。
  • 《数学建模》之层次分析法

    万次阅读 多人点赞 2016-08-22 23:59:05
    1.层次分析法与数学建模 在数学建模中,通常解决的问题是:“影响某一问题的几个因素的权重大小”、“产生某一问题的主要的因素分析”、“权重的大小分析”。当然在现实生活中的应用也是十分广泛而且一样的不知...
  • 层次分析法(The Analytic Hierarchy Process即 AHP)是由美国运筹学家、 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较...
  • 数学建模 评价类问题, 层次分析法(AHP)

    千次阅读 多人点赞 2019-09-11 15:53:58
    找评价指标 知网找相关文献 小组头脑风暴 层次分析法的判断矩阵(正互反矩阵) 一致矩阵
  • 层次分析模型

    2020-08-05 10:52:42
    层次分析法的概念: 层次分析法的步骤: 例题: 一致性检验matlab代码: %层次分析法(AHP) disp('请输入判断矩阵A(n阶)'); A = input('A='); [n,n] = size(A); x = ones(n,100); y = ones(n,...
  • 数学建模01-层次分析法一.层次分析法1.基本步骤2.成对比较矩阵3.例题1(实践以上步骤)4.代码片段 一.层次分析法 •日常工作、生活中的决策问题 •涉及经济、社会等方面的因素 •作比较判断时人的主观选择起相当大的...
  • MATLB--层次分析法

    2020-05-11 15:38:04
    1、层次分析法 层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每...
  • 多中间层的层次分析法(一)

    千次阅读 2019-06-18 00:16:12
    一、层次分析法概述 层次分析法(Analytical Hierarchy Process 简称 AHP 是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标能否...
  • 层次分析法(Analytic Hierarchy Process)

    万次阅读 多人点赞 2015-05-23 10:47:04
    层次分析法(Analytic Hierarchy Process ,简称 AHP )AHP (Analytic Hierarchy Process)层次分析法是美国运筹学家Saaty教授于二十世纪80年代提出的一种实用的多方案或多目标的决策方法。其主要特征是,它合理地将...
  • 层次分析法原理及应用案例

    万次阅读 2020-10-30 15:04:00
    层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标...
  • 层次分析法原理和matlab代码实现

    千次阅读 多人点赞 2020-04-12 22:30:09
    层次分析法例题,IMMC2020https://blog.csdn.net/yanyanwenmeng/article/details/104907412 1. 指标选择途径 (1)题目背景 (2)中国知网、百度学术、谷歌学术等地方搜索相关文献,查找指标 (3)搜索网站推荐...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,472
精华内容 588
关键字:

层次分析法模型例题