【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法
目录:
- 准则层判断矩阵怎么填写
- 方案层判断矩阵怎么填写
- 关于判断矩阵和一致矩阵的知识点补充
- 一致性检验的步骤
- 怎样通过判断矩阵去计算权重(三种方法),及相应的代码示例
准则层判断矩阵的填写:
填写准则层判断矩阵的目的是确定各准则(指标)所占的比重,填写好层次分析表的指标权重列,例如在选择最佳旅游地问题的指标景色、花费、居住、饮食、交通各自占比是多少,后续可以通过这些指标占比计算出每一个可选方案的总分。
填表的方法是依据标度表,两两比较指标的重要程度,只需要比较10次就可以完成准则层判断矩阵的填写
方案层判断矩阵的填写
填写方案层判断矩阵的目的是给出,对于某一特定指标,它在各个可选方案的具体得分是多少,也就是给出层次分析表的每一横行的数据。方法是依据标度表,填写好判断矩阵。有几个评价指标,就需要填多少此方案层判断矩阵。
知识点补充:
判断矩阵(正互反矩阵)
- 首先判断矩阵一定是一个方阵
- 判断矩阵每一个数据
Aij
表示与指标j
相比i
的重要程度 - 当
i=j
时,两个指标相同,因此同等重要,记为1,因此判断矩阵的对角线元素为1 - 每一个元素均大于零,且
Aij * Aji=1
在层次分析法中,我们构造的矩阵的均为判断矩阵
一致矩阵
- 矩阵首先满足判断矩阵的所有特点
- 若判断矩阵满足
Aij * Ajk = Aik
,直观的看就是矩阵的各行(各列)成倍数关系
注意点:在使用判断矩阵求权重之前,必须对其进行一致性检验
一致性检验的步骤:
第一步:计算一致性指标CI
CI=λmax−nn−1CI\,\,=\,\,\frac{\lambda _{\max}-n}{n-1} CI=n−1λmax−n
第二步:查找对应的平均随机一致性指标RI
第三步:计算一致性比例CR
CR=CIRICR\,\,=\,\,\frac{CI}{RI} CR=RICI
判断:如果CR<0.1,则可认为判断举证的一致性可以接受;否则需要对判断矩阵进行修改
一致性检验的MATLAB代码如下:
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
[V,D] = eig(A);%求出矩阵A的特征值和特征向量
Max_eig = max(max(D));%找到矩阵A的最大特征值
% 下面是计算一致性比例CR的环节 %
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];
%注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
elsedisp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end
通过判断矩阵求权重
方法一、算数平均法求权重
第一步:将判断矩阵按照列归一化(每一个元素除以器所在列的和)
第二步:将归一化的各列相加(按行求和)
第三步:将相加后得到的向量中的每个元素除以n即可得到权重向量
具体数学表达:
假设判断矩阵为下面这个矩阵A:
A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann]A=\left[ \begin{matrix} a_{11}& a_{12}& \cdots& a_{1n}\\ a_{21}& a_{22}& \cdots& a_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ a_{n1}& a_{n2}& \cdots& a_{nn}\\ \end{matrix} \right] A=⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎦⎥⎥⎥⎤
那么算数平均法求得的权重向量为:
wi=1n∑j=1naij∑k=1nakjw_i=\frac{1}{n}\sum_{j=1}^n{\frac{a_{ij}}{\sum_{k=1}^n{a_{kj}}}}\,\, wi=n1j=1∑n∑k=1nakjaij
MATLAB代码如下:
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);Sum_A = sum(A); %sum函数默认是对矩阵的每一列进行累加,即按行求和
SUM_A = repmat(Sum_A,n,1); %将Sum_A这个行向量,重复n行,重复一列
Stand_A = A ./ SUM_A; %将矩阵A归一化,即每一个元素除以其所在列的和disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n) %把归一化的矩阵的每一行累加,然后除以n,得到权重
方法二、几何平均法求权重
第一步:将A元素按照行相乘得到一个新的列向量
第二步:将新的列向量的每个分量开n次方
第三步:对该列向量进行归一化即可得到权重向量
假设判断矩阵为下面这个矩阵A:
A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann]A=\left[ \begin{matrix} a_{11}& a_{12}& \cdots& a_{1n}\\ a_{21}& a_{22}& \cdots& a_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ a_{n1}& a_{n2}& \cdots& a_{nn}\\ \end{matrix} \right] A=⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎦⎥⎥⎥⎤
那么几何平均法求得的权重向量为:
wi=(∏j=1naij)1n∑k=1n(∏j=1nakj)1n,(i=1,2,…,n)w_i=\frac{\left( \prod_{j=1}^n{a_{ij}} \right) ^{\frac{1}{n}}}{\sum_{k=1}^n{\left( \prod_{j=1}^n{a_{kj}} \right) ^{\frac{1}{n}}}},\left( i=1,2,…\text{,}n \right) wi=∑k=1n(∏j=1nakj)n1(∏j=1naij)n1,(i=1,2,…,n)
注意:每一种方法求得的权重和应该为1,由于四舍五入导致的误差可以忽略,一般结果保留四位小数
MATLAB代码如下:
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A); %获得矩阵A的行和列的大小Prduct_A = prod(A,2); %把矩阵A的每一行累乘,即按照列累乘
Prduct_n_A = Prduct_A .^ (1/n); %将新的列向量的每个分量开n次方
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A)) %对该列向量进行归一化即可得到权重向量
方法三、特征值法求权重(常用)
知识点提醒:一致矩阵有一个特征值为n,其余特征值均为0,并且当矩阵的特征值为n时,其对应的特征向量为
k[1a11,1a12,…,1a1n]T,(k≠0)k\left[ \frac{1}{a_{11}},\frac{1}{a_{12}},…,\frac{1}{a_{1n}} \right] ^T,\left( k\ne 0 \right) k[a111,a121,…,a1n1]T,(k=0)
第一步:求出矩阵A的最大特征值和以及其对应的特征向量
第二步:对求出的特征向量进行归一化即可得到所求的权重
MATLAB代码如下:
disp('请输入判断矩阵A')
A=input('A=');%求矩阵A的全部特征值,构成对角阵D,求A的特征向量构成V的列向量(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D] = eig(A);
Max_eig = max(max(D)); %求出矩阵A的最大的特征值
[r,c]=find(D == Max_eig , 1); %返回最大特征值所在的行和列,其中C记录所在列
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) ) %对最大特征值对应的特征向量进行归一化处理
友情提示:在比赛当中,建议三种方法全部列出来,但仅适用特征值法求得的权重结果进行计算
更多有关与层次分析法的经典获奖论文,以及建模论文模板等资料关注公众号,回复,“层次分析法”,即可免费领取!!!
【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法相关推荐
- 评价类模型(层次分析法与模糊评价模型)
一.评价类模型 综合评价的基本理论和数据预处理: 评价对象 评价指标 权重系数 综合评价模型 评价者 二.AHP法-层次分析法 通过打分解决评价类问题,两两比较,推算权重. %function RI= ...
- 数学建模笔记——评价类模型之熵权法
嗯,这次讲一讲熵权法,一种通过样本数据确定评价指标权重的方法. 熵权法 之前我们提到了TOPSIS方法,用来处理有数据的评价类模型.TOPSIS方法还蛮简单的,大概就三步. 将原始数据矩阵正向化. 也 ...
- 评价(决策)模型 1 层次分析法(AHP)
这篇文章是我在B站上跟随up主ln异教徒学习时根据其讲的内容和我的理解实践做的笔记,视频原地址如下 https://www.bilibili.com/video/BV1qy4y1a7JJ?t=0.9 ...
- 数学建模模型学习(1)--层次分析法
前面我已经写了两篇博客,是关于matlab基础的,如果没有matlab基础,对于后面这些文章的代码来计算会比较吃力. (一)matlab常用基本语法和函数总结 (二)用matlab求得矩阵的最大特征值 ...
- 层次分析法——确定指标权重、解决评价类问题
"评价类问题可以用打分解决." 譬如我们想对A.B.C三个景点进行评分,若题目没给数据可查阅文献(显得专业)得到关于景点评分的几个指标,显然,不同指标对景点的评价高低影响程度不同, ...
- 【数学建模学习】matlab实现评价模型——层次分析法(AHP)
目录 1概述 2算法实现流程 3实例 4matlab实现层次分析法 5计算结果 1概述 层次分析法,简称AHP,是评价模型中的一种算法,指将与决策总是有关的元素分解成目标.准则.方案等层次,在此基础之 ...
- 数学建模模型01:层次分析法(AHP)
层次分析法(The analytic hierarchy process, 简称AHP) 建模比赛中最基础的模型之一,其主要用于解决 评价类问题(例如:选择哪种方案最好.哪位运动员或者员工表现的更优秀 ...
- matlab层次分析法代码_基于主成分分析法和层次分析法的工程项目经理胜任力评价研究...
摘 要:根据工程项目经理胜任力评价指标,运用主成分分析法和层次分析法相结合的数学方法对工程项目经理的胜任力进行合理公正的评价.首先运用主成分分析法筛选重要指标,再运用层次分析法对工程项目经理进行定量与 ...
- 【2021年数学建模国赛C题第一问】基于TOPSIS法评价类模型
根据附件 1,对 402 家供应商的供货特征进行量化分析,建立反映保障企业生产重要性的数学模型,在此基础上确定 50 家最重要的供应商,并在论文中列表给出结果. 一.问题重述 1.1问题背景 1.2需 ...
最新文章
- 多线程断点下载开发总结(二)- 多线程写文件
- 纸板怎么切割光滑_激光切割机大PK!光纤、CO2、YAG,你选谁?!
- f2 柱状图滚动 钉钉小程序_详解钉钉小程序组件之自定义模态框(弹窗封装实现)...
- 实验四+040+薛龚
- java变量和方法的覆盖和隐藏(翻译自Java Tutorials)
- mysql主从docker_(学习到实践)四、docker搭建mysql主从实践
- paip.多线程调用静态方法错乱的解决
- VM虚拟机Ubuntu16 运行facenet人脸识别源码
- 嵩天python测验_嵩天老师《Python语言程序设计》第2周测试题笔记
- Microsoft Lync2013客户端下载
- [OGeek2019 Final]OVM
- element-ui MessageBox弹框确定和取消位置(this.$confirm)
- npm-deprecate
- 信息系统安全等级保护(简称“等保”)
- 回顾外滩踩踏事件,吸取的教训
- 对antd中的表格筛选进行改造
- 世界上最遥远的距离就是?
- 人机对话比拼,Chat GPT和文心一言谁更接近真实交流?”
- 【Python】PyQt5入门
- iOS 支付宝集成随手记
热门文章
- 2021啰里啰嗦的个人总结
- 张悦:普遍服务推进农村宽带提速降费 有力支撑“信息惠农、信息扶贫”
- 去掉右键多余显卡菜单
- PythonGUI编程!使用Tkinter制作快递查询软件!是不是很实用呢!
- python爬虫 爬取诗词名句网
- 531KF在线客服系统,欢迎拍砖,免费下载!!!【原创】
- ctfshow php特性(89——150plus)
- 有50级台阶,每次走一阶或两阶,有多少种走法?
- 视频行为识别-1数据库
- matlab求双边频谱,短时傅里叶变换tfrstft函数怎么显示双边频谱(需要负频率频谱)...