Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
02 论文提供的太阳镜的评价体系
03 建立目标层和准则层的判断矩阵 (论文提供)
04 首先需要对判断矩阵进行一致性检验
4.1 一致性检验的一般步骤
4.2 对应上方步骤的变量和代码
05 一致性检验通过之后开始计算权重
5.1 算术平均法计算权重-理论部分
5.2 算术平均法计算权重-代码部分
5.3 几何平均法计算权重-理论部分
5.4 几何平均法计算权重-代码部分
5.5 特征值法计算权重-理论部分
5.6 特征值法计算权重-代码部分
5.7 总结
06 后续的权重组合思路
本博客以 许学敏的《层次分析法在太阳镜产品质量评价中的应用》为例进行讲解。
02 论文提供的太阳镜的评价体系
03 建立目标层和准则层的判断矩阵 (论文提供)
我们以该判断矩阵为例说明如何进行判断矩阵的一致性检验和权重计算,至于其它的判断矩阵也是如此。
04 首先需要对判断矩阵进行一致性检验
4.1 一致性检验的一般步骤
4.2 对应上方步骤的变量和代码
% 层次分析法求取权重% 进行目标层和准则层的判断矩阵的一致性检验
% 获取矩阵的行列号
[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 算术平均法计算权重-理论部分
5.2 算术平均法计算权重-代码部分
% 算术平均法求取权重
weight1 = sum((m_z_matrix ./ repmat(sum(m_z_matrix, 1), row, 1)), 2) / row
5.3 几何平均法计算权重-理论部分
5.4 几何平均法计算权重-代码部分
% 几何平均法求取权重
temp = prod(m_z_matrix, 2) .^ (1 / row); % prod(矩阵, dim)若dim=2表示按行计算乘积,1表示按列计算乘积;如果不是矩阵只是向量,那么返回向量所有元素的乘积
% 进行归一化处理
weight2 = temp ./ sum(temp)
5.5 特征值法计算权重-理论部分
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 后续的权重组合思路
之后就是准则层与方案层之间的判断矩阵的权重计算,也是如上类似的,甚至于你只需要修改矩阵变量无需修改其它代码部分。
最后就是对于目标层与方案层之间的权重计算(很简单)
这是关于层次分析法如何求取判断矩阵的的权重的完整代码
% 层次分析法求取权重% 进行目标层和准则层的判断矩阵的一致性检验
% 获取矩阵的行列号
[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>
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重相关推荐
- MATLAB AHP AHP层次分析法code 自写代码 完美运行。 权重设计
MATLAB AHP AHP层次分析法code 自写代码 完美运行. 权重设计 ID:5150612144581085YouthOG
- 数学建模 层次分析法 python计算权重
这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...
- ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析
层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...
- 第四段第一天_数学模型之层次分析法
层次分析法 [ 定义] [ 步骤] [ 优点介绍] [ 缺点介绍] [程序 ] 1:定义 所谓层次分析法,是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准 ...
- AHP层次分析法(Analytic Hierarchy Process)——个人学习笔记
目录 一.相关知识与例子 二.代码实现 一.相关知识与例子 层次分析法是数学建模过程中最基础的模型之一,主要应用于评价问题.层次分析法是对一些较为复杂.较为模糊的问题作出决策的简易方法,其适用于那些难 ...
- 【清风数学建模笔记】第一讲:层次分析法
层次分析法 (The analytic hierarchy process,简称AHP) 建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好.哪种运动员或者员工表现的更优秀) ...
- Python实现“层次分析法”及“自调节层次分析法”
Python实现"层次分析法"及"自调节层次分析法" 假设我们遇到如下问题: ①对于M个方案,每个方案有N个属性,在已知各个方案每个属性值&&任 ...
- 数学建模之AHP层次分析法
一.定义 层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标.准则.方案等层次,在此基础之上进行定性和定量分析的决策方法.该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国 ...
- 层次分析法及matlab代码
数学建模算法(一) 层次分析法 The analytic hierarchy process(AHP) [清风数学建模课程笔记] 文章目录 数学建模算法(一) 层次分析法 The analytic h ...
最新文章
- Linux I/O多路复用
- [c++] vector<vector<int>>排序
- 马斯克的星际飞船首次起飞测试成功!起跳150米后平稳着陆,“火星在望”
- Boost:扩展分配器的测试程序
- 2018 GDCPC 省赛总结
- Gigabit Ethernet复制数据会异常的缓慢
- 珀尔:数据非常愚蠢,领会因果关系才是理解世界的关键
- 使用devops的团队_DevOps团队的3种指标仪表板
- 自动化调参NNI学习(三):使用python启动NNI框架调整随机森林(RandomForest)模型
- 微信小程序登录 code 40029 天坑
- “盗版微信”通过反编译手段与正版互联互通,团伙被判刑
- Android tv upnp播放器,TV Connect: AirPlay, DLNA
- Steam 最新VR 游戏畅销榜——这几款游戏绝对值得一玩~不来看看你可就错过啦!
- matlab2018a字体乱码怎么办,解决Matlab 2018a源代码的中文支持问题
- java中成员变量的加载时机_工作奇谈——JAVA高级特性之反射
- 头插法逆置单向链表c语言,单链表的逆置(头插法和就地逆置)
- 电脑休眠睡眠状态下无线WiFi远程网络唤醒设置
- 安卓修改包名和Project
- DQN(Deep Q Network)及其代码实现
- Python3之旅之计算机基础知识