层次分析法原理和matlab代码实现 |
您所在的位置:网站首页 › 层次分析法的八个基本步骤包括 › 层次分析法原理和matlab代码实现 |
笔记来自清风老师的数学建模系列课程,课程链接:层次分析法 层次分析法例题,IMMC2020 https://blog.csdn.net/yanyanwenmeng/article/details/104907412 1. 指标选择途径(1)题目背景 (2)中国知网、百度学术、谷歌学术等地方搜索相关文献,查找指标 (3)搜索网站推荐:虫部落https://search.chongbuluo.com/ (4)其他搜索途径,优先级:谷歌搜索、微信搜索、知乎搜索 指标选择一定要有依据,并且要说明为什么要选这些指标以及指标代表的含义。 2. 层次分析法的引出比如要确定景色、花费等五个指标的权重,该如何确定呢? 如果一次性考虑五个指标的关系,往往考虑不周 【解决办法】两个两个指标之间进行比较,最终根据两两比较的结果来推算出权重。——层次分析法的思想 3. 层次分析法的思想
比如:如果花费比景色略微重要,则左下角单位格可以填2。 同理可以得到全部的判断矩阵: 【注意】层次分析法的判断矩阵(上面这张表)实际需要给专家填写。 4. 判断矩阵不一致问题 4.1 不一致矩阵举例 一致矩阵需要满足下面的关系: 比如红色框的内容和黄色框的内容是成2倍的关系的。按照两列之间对比也是成倍数的关系。 4.4 一致矩阵的概念【注意】 不一定要达到绝对的一致矩阵,只需要一致性不要偏差太大,不然矛盾很多,我们填写的判断矩阵就没有任何意义了。 如何判断一致性偏差是否在允许接受的范围内呢?——一致性检验 5. 一致性检验 5.1 一致性检验的原理【原理】检验我们构造的判断矩阵和一致矩阵是否有太大的差别。 下面是两个一致矩阵: 满足一致矩阵的充要条件: 黄色框表示第2、3……n行的值和第一行成倍数关系(也可以定义为列与列之间成比例)。 秩的解释:https://www.zhihu.com/question/21605094 https://blog.csdn.net/edward_zcl/article/details/90177159 总结:秩相当于解方程组时有用的方程数。 特征值的解释:matlab编程基础——基于层次分析法
比如第一个表格求最大特征值matlab代码: A = [1 2 4; 1/2 1 2; 1/4 1/2 1]; eig(A)%求每一行的特征值,共有3个发现最大特征值为3。 当矩阵不一致时: (黄色框为最大特征值)发现最大特征值是大于3的。即最大特征值>n,且判断矩阵越不一致时,最大特征值与n相差越大。 5.2 一致性检验的步骤
【注意】当一致性检验通过后才可计算权重,如果一致性检验通不过,则需要重新调整判断矩阵。 6. 权重计算 6.1 一致矩阵计算权重也可以按照第二列或者第三列的数据进行计算。权重计算完后需要归一化处理。 6.2 判断矩阵计算权重由于判断矩阵不一定为一致矩阵,所以它的各行(列)之间不一定成比例,因此,计算权重时需要利用每一列的数据把权重计算出来,最后利用三种方法求权重即可。 比如下面这个判断矩阵(不是一致矩阵,因为各行不成比例) 计算出每一列的权重: 数学公式:
几何平均法求权重也有三步: 第一步:将A的元素按照行相乘得到一个新的列向量 景色 苏杭 北戴河 桂林 按行相乘 苏杭 1 2 5 1*2*5=10 北戴河 1/2 1 2 1/2*1*2=1 桂林 1/5 1/2 1 1/5*1/2*1=1/10 第二步:将新的向量的每个分量开n次方 景色 苏杭 北戴河 桂林 按行相乘 开3次方 苏杭 1 2 5 10 10^(1/3)=2.1544 北戴河 1/2 1 2 1 1^(1/3)=1 桂林 1/5 1/2 1 1/10 (1/10)^(1/3)=0.4642
第三步:对该列向量进行归一化即可得到权重向量 景色 苏杭 北戴河 桂林 按行相乘 开3次方 归一化 苏杭 1 2 5 10 2.1544 0.5954 北戴河 1/2 1 2 1 1 0.2764 桂林 1/5 1/2 1 1/10 0.4642 0.1283 sum=10^(1/3)+1^(1/3)+(1/10)^(1/3) 10^(1/3)/sum= 0.5954 1^(1/3)/sum=0.2764 (1/10)^(1/3)/sum=0.1283 6.2.3 特征值法求权重(用的最多,建议使用这个)一致矩阵求权重 判断矩阵求权重 matlab求解: A = [1 2 5; 1/2 1 2; 1/5 1/2 1]; [V D] = eig(A)最大特征值为3.0055,对应的特征向量为[-0.8902 -0.4132 -0.1918] CI = (3.0055-3)/2 CR = CI/0.52
计算步骤: CR = 0.0053 < 0.1 ,说明此矩阵的一致性可以接受。 求权重: V = [-0.8902 -0.4132 -0.1918] S = sum(V) G = [V(1,1)/S V(1,2)/S V(1,3)/S]%归一化excel中进行计算每个城市的得分(需要用“$”符号锁定单元格): |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |