Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重

这篇具有很好参考价值的文章主要介绍了Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

02 论文提供的太阳镜的评价体系

03 建立目标层和准则层的判断矩阵 (论文提供)

04 首先需要对判断矩阵进行一致性检验

4.1 一致性检验的一般步骤

4.2 对应上方步骤的变量和代码

05 一致性检验通过之后开始计算权重

5.1 算术平均法计算权重-理论部分

5.2 算术平均法计算权重-代码部分

5.3 几何平均法计算权重-理论部分

5.4 几何平均法计算权重-代码部分

5.5 特征值法计算权重-理论部分

5.6 特征值法计算权重-代码部分

5.7 总结

06 后续的权重组合思路


本博客以 许学敏的《层次分析法在太阳镜产品质量评价中的应用》为例进行讲解。

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

02 论文提供的太阳镜的评价体系

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

03 建立目标层和准则层的判断矩阵 (论文提供)

我们以该判断矩阵为例说明如何进行判断矩阵的一致性检验和权重计算,至于其它的判断矩阵也是如此。

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

04 首先需要对判断矩阵进行一致性检验

4.1 一致性检验的一般步骤

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

4.2 对应上方步骤的变量和代码

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

% 层次分析法求取权重

% 进行目标层和准则层的判断矩阵的一致性检验
% 获取矩阵的行列号
[row, col] = size(m_z_matrix);
% 获取该判断矩阵的特征值和特征向量
[vec, eig_value] = eig(m_z_matrix);  % vec表示特征向量, eig_value表示特征值
% 获取最大的特征值
max_eig_value = max(max(eig_value))  % 特征值不是给出一个list,而是一个特征值分布在对角线上的矩阵,所以要获取最大值需要两次max
% 计算CI
CI = (max_eig_value - row) / (row - 1);
% RI list
RI_list = [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];
% 计算RI
RI = RI_list(row);
% 计算CR
CR = CI ./ RI  % 若CR小于0.1,那么一致性检验通过

% 最大特征值为6.3674, CR为0.0583<0.1,一致性检验通过,开始计算权重

05 一致性检验通过之后开始计算权重

三种权重的计算方法:算术平均法、几何平均法、特征值法

5.1 算术平均法计算权重-理论部分

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

5.2 算术平均法计算权重-代码部分

% 算术平均法求取权重
weight1 = sum((m_z_matrix ./ repmat(sum(m_z_matrix, 1), row, 1)), 2) / row

5.3 几何平均法计算权重-理论部分

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

 5.4 几何平均法计算权重-代码部分

% 几何平均法求取权重
temp = prod(m_z_matrix, 2) .^ (1 / row);  % prod(矩阵, dim)若dim=2表示按行计算乘积,1表示按列计算乘积;如果不是矩阵只是向量,那么返回向量所有元素的乘积
% 进行归一化处理
weight2 = temp ./ sum(temp)

 5.5 特征值法计算权重-理论部分

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

  5.6 特征值法计算权重-代码部分

% 特征值法求取权重(论文使用的是该种方法,论文中A-B判断矩阵中的权重与该代码运行结果完全一致)
% 思路:先获取判断矩阵的特征值和特征向量,在获取最大特征值对应的特征向量,最后对该特征向量进行归一化处理
[vec, eig_value] = eig(m_z_matrix);  % V为特征向量,D为特征值
max_eig_value = max(max(eig_value));  % 获取最大的特征值
% 上述两步其实可以不写,因为一致性检验已经写过了
[r, c] = find(eig_value == max_eig_value, 1);  % 获取最大特征值所在的行列号, 参数1表示只取第一个
temp_weight = vec(:, c);  % 获取最大特征值对应的特征向量
disp('特征值法求得的权重为:')
weight3 = temp_weight ./ sum(temp_weight)  % 对特征向量归一化处理即可得到权重

5.7 总结

这是目标层与准则层之间的判断矩阵的计算方法,对于最后我们有三种方法求取得到了准则层的权重,所以最后我们可以对三种方法得到的权重取平均值,或者就使用某一种方法得到的权重也是可以的(一般特征值法比较多,不知道是不是因为matlab求取比较简单所以用的多,其实前两种方法的代码会更难理解)。

06 后续的权重组合思路

之后就是准则层与方案层之间的判断矩阵的权重计算,也是如上类似的,甚至于你只需要修改矩阵变量无需修改其它代码部分。

最后就是对于目标层与方案层之间的权重计算(很简单)

matlab计算层次单排序权重向量并做一致性检验,数学建模,算法

这是关于层次分析法如何求取判断矩阵的的权重的完整代码

% 层次分析法求取权重

% 进行目标层和准则层的判断矩阵的一致性检验
% 获取矩阵的行列号
[row, col] = size(m_z_matrix);
% 获取该判断矩阵的特征值和特征向量
[vec, eig_value] = eig(m_z_matrix);  % vec表示特征向量, eig_value表示特征值
% 获取最大的特征值
max_eig_value = max(max(eig_value))  % 特征值不是给出一个list,而是一个特征值分布在对角线上的矩阵,所以要获取最大值需要两次max
% 计算CI
CI = (max_eig_value - row) / (row - 1);
% RI list
RI_list = [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];
% 计算RI
RI = RI_list(row);
% 计算CR
CR = CI ./ RI  % 若CR小于0.1,那么一致性检验通过

% 最大特征值为6.3674, CR为0.0583<0.1,一致性检验通过,开始计算权重

% 算术平均法求取权重
weight1 = sum((m_z_matrix ./ repmat(sum(m_z_matrix, 1), row, 1)), 2) / row  % 卫东需要提供标准公式(论文或许)

% 几何平均法求取权重
temp = prod(m_z_matrix, 2) .^ (1 / row);  % prod(矩阵, dim)若dim=2表示按行计算乘积,1表示按列计算乘积;如果不是矩阵只是向量,那么返回向量所有元素的乘积
% 进行归一化处理
weight2 = temp ./ sum(temp)

% 特征值法求取权重(论文使用的是该种方法,论文中A-B判断矩阵中的权重与该代码运行结果完全一致)
% 思路:先获取判断矩阵的特征值和特征向量,在获取最大特征值对应的特征向量,最后对该特征向量进行归一化处理
[vec, eig_value] = eig(m_z_matrix);  % V为特征向量,D为特征值
max_eig_value = max(max(eig_value));  % 获取最大的特征值
% 上述两步其实可以不写,因为一致性检验已经写过了
[r, c] = find(eig_value == max_eig_value, 1);  % 获取最大特征值所在的行列号, 参数1表示只取第一个
temp_weight = vec(:, c);  % 获取最大特征值对应的特征向量
disp('特征值法求得的权重为:')
weight3 = temp_weight ./ sum(temp_weight)  % 对特征向量归一化处理即可得到权重

如果有问题,欢迎一起探讨。

<p>炒茄子</p>文章来源地址https://www.toymoban.com/news/detail-779232.html

到了这里,关于Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模学习】matlab实现评价模型——层次分析法(AHP)

    目录 1概述  2算法实现流程 3实例  4matlab实现层次分析法 5计算结果 层次分析法,简称AHP,是评价模型中的一种算法,指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。层次分析法的缺陷在于判断矩阵是主观决定的,

    2024年02月04日
    浏览(42)
  • 清风学习笔记—层次分析法—matlab对判断矩阵的一致性检验

    在判断矩阵是否为正互反矩阵这块,我写了两种代码,改进前很麻烦且有错误,改进后简洁多了,改进前的代码还有错误,忽略了对角线的值必须都是1,只考虑了除开对角线的元素相乘为1。  下面是全部代码

    2024年02月06日
    浏览(35)
  • 【数学建模美赛 | 国赛必学模型算法精讲】层次分析法——模型原理及Matlab+Python双语言代码演示

    层次分析法 是 评价决策类 中一个比较常用的方法,很多留意美赛赛题的小伙伴们就会发现,在美赛EF类题目的历年O奖论文中,层次分析法出现的概率是非常高的。层次分析法呢一般是针对评价决策类的题目,让我们评价或选择一个可能更好、更优的政策及方案,那这样呢,

    2024年01月25日
    浏览(32)
  • 层次分析法(AHP)

    目录 目录 1 算法讲解 1.1解决评价类问题的一般步骤: 1.2 如何确定权重   1.2.1 判断矩阵的bug 1.2.2 一致性检验 1.2.3 计算权重  1.3 层次分析法具体步骤 1.3.1 建立层次结构 1.3.2 构造判断矩阵  1.3.3 一致性检验,计算权重 1.4 层次分析法局限性 2 代码 3 模型拓展 3.1 多个准则层

    2024年02月04日
    浏览(36)
  • 层次分析法(参考:清风)

             层次分析法(The Analytic Hierarchy Process即 AHP)是由美国运筹学家、 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解 决了定性问题定量化的处理过程。        A

    2024年02月06日
    浏览(34)
  • 层次分析法

    人们常常面临一个由 相互关联、相互制约 的众 多因素 构成的复杂而往往 缺少定量数据 的系统; AHP是对一些较为复杂、较为模糊的问题作出决策的简易方法,特别适用于那些难于完全定量分析的问题; 美国运筹学家T. L. Saaty 教授于上世纪70 年代初期提出的一种简便、灵活

    2024年02月02日
    浏览(54)
  • 数学建模:层次分析法

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 将问题条理化,层次化,构建出一个有层次的结构模型。层次分为三类: 目标层,准则(指标)层,方案层 。 比较指标层中不同指标之间的相对重要程度,并且构建一个 成对比较矩阵 。 自行判断两个不同指标的相对重要程

    2024年02月10日
    浏览(31)
  • 数学建模——层次分析法

    正互反矩阵:若矩阵中每个元素a(ij)0且满足a(ij)*a(ji)=1。 层次分析法中,我们构造的判断矩阵均是正互反矩阵。 一致矩阵:若正互反矩阵满足a(ij)*a(jk)=a(ik)。 一致矩阵的秩为1。 一致矩阵有一个特征值为n,其余特征值均为0。 判断矩阵越不一致时,最大特征值与n相差越大。 一

    2024年02月16日
    浏览(29)
  • 数学建模:层次分析法(AHP)

    层次分析法(Analytic Hierarchy Process,AHP)是一种多准则决策方法,用于解决复杂的决策问题。它是由美国数学家托马斯·萨亚基(Thomas L. Saaty)于20世纪70年代提出的。其基本思想是将复杂的决策问题分解为层次结构,通过对准则和方案进行定量和定性的比较,最终得出最佳决

    2024年01月17日
    浏览(39)
  • 数学建模学习笔记||层次分析法

    解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么 我们为了达到这个目标有哪几种可行方案 评价的准则或者说指标是什么 对于以上三个问题,我们可以根据题目中的背景材料,常识以及网上收集到的参考资料进行结合,从而筛选出最合适的指标 优先选择知

    2024年01月23日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包