【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法[通俗易懂]

【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法[通俗易懂]层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法

大家好,又见面了,我是你们的朋友全栈君。

目录:

  • 准则层判断矩阵怎么填写
  • 方案层判断矩阵怎么填写
  • 关于判断矩阵和一致矩阵的知识点补充
  • 一致性检验的步骤
  • 怎样通过判断矩阵去计算权重(三种方法),及相应的代码示例
准则层判断矩阵的填写:

填写准则层判断矩阵的目的是确定各准则(指标)所占的比重,填写好层次分析表的指标权重列,例如在选择最佳旅游地问题的指标景色、花费、居住、饮食、交通各自占比是多少,后续可以通过这些指标占比计算出每一个可选方案的总分。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
填表的方法是依据标度表,两两比较指标的重要程度,只需要比较10次就可以完成准则层判断矩阵的填写


方案层判断矩阵的填写

填写方案层判断矩阵的目的是给出,对于某一特定指标,它在各个可选方案的具体得分是多少,也就是给出层次分析表的每一横行的数据。方法是依据标度表,填写好判断矩阵。有几个评价指标,就需要填多少此方案层判断矩阵。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


知识点补充:
判断矩阵(正互反矩阵)
  • 首先判断矩阵一定是一个方阵
  • 判断矩阵每一个数据 Aij表示与指标 j相比 i的重要程度
  • i=j 时,两个指标相同,因此同等重要,记为1,因此判断矩阵的对角线元素为1
  • 每一个元素均大于零,且 Aij * Aji=1

在层次分析法中,我们构造的矩阵的均为判断矩阵

一致矩阵
  • 矩阵首先满足判断矩阵的所有特点
  • 若判断矩阵满足 Aij * Ajk = Aik,直观的看就是矩阵的各行(各列)成倍数关系

注意点:在使用判断矩阵求权重之前,必须对其进行一致性检验


一致性检验的步骤:

第一步:计算一致性指标CI
C I    =    λ max ⁡ − n n − 1 CI\,\,=\,\,\frac{\lambda _{\max}-n}{n-1} CI=n1λmaxn
第二步:查找对应的平均随机一致性指标RI
在这里插入图片描述
第三步:计算一致性比例CR
C R    =    C I R I CR\,\,=\,\,\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.10
    disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end


通过判断矩阵求权重

方法一、算数平均法求权重

第一步:将判断矩阵按照列归一化(每一个元素除以器所在列的和)

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

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

具体数学表达:

假设判断矩阵为下面这个矩阵A:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] 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=a11a21an1a12a22an2a1na2nann
那么算数平均法求得的权重向量为:
w i = 1 n ∑ j = 1 n a i j ∑ k = 1 n a k j    w_i=\frac{1}{n}\sum_{j=1}^n{\frac{a_{ij}}{\sum_{k=1}^n{a_{kj}}}}\,\, wi=n1j=1nk=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 = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] 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=a11a21an1a12a22an2a1na2nann
那么几何平均法求得的权重向量为:
w i = ( ∏ j = 1 n a i j ) 1 n ∑ k = 1 n ( ∏ j = 1 n a k j ) 1 n , ( 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 [ 1 a 11 , 1 a 12 , … , 1 a 1 n ] 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)) )  %对最大特征值对应的特征向量进行归一化处理

友情提示:在比赛当中,建议三种方法全部列出来,但仅适用特征值法求得的权重结果进行计算


更多有关与层次分析法的经典获奖论文,以及建模论文模板等资料关注公众号,回复,“层次分析法”,即可免费领取!!!
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153973.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • wireshark抓包使用教程

    wireshark抓包使用教程Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括:1、Wireshark软件下载和安装以及Wireshark主界面介绍。2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。3、Wireshark过滤器使用。通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。Wireshark软件安装软件下载路径:w…

  • 自定义UIView重写touchesBegan无法响应点击事件的解决方法

    自定义UIView重写touchesBegan无法响应点击事件的解决方法定义一个UIView的子类重写touchesBegan响应点击事件问题是无法响应点击事件解决办法:在didFinishLaunchingWithOptions方法中先设置窗口可见再添加subView

  • C3P0jar包下载方法

    C3P0jar包下载方法百度C3P0下载官网进行下载或者进入下载链接:https://sourceforge.net/projects/c3p0/点击download下载即可进入官网:https://sourceforge.net/在右边搜索框搜索c3p0也能找到…

  • 卡巴斯基引领2019工控安全升级,开创智能+新未来「建议收藏」

    卡巴斯基引领2019工控安全升级,开创智能+新未来「建议收藏」2019年6月19日下午,2019工控安全态势暨卡巴斯基、京东方科技集团股份有限公司(以下简称“京东方”)与北京安渡神州科技有限公司(以下简称“安渡神州”)战略合作发布会在京举行。在全球知名信息安全厂商卡巴斯基领先安全技术的引领下,中国安全行业相关政府机构及行业组织、企事业单位领导、工控行业重要用户以及安全技术爱好者等代表共聚共享共促,本着领先科技赋能工业转型的核心原则,共同探讨未来工控安全领域新…

  • 老王讲二进制 & 0xFF;「建议收藏」

    老王讲二进制 & 0xFF;「建议收藏」$a=2;$b=($a<<6)&0xFF;var_dump($b);die;代码如上 最后结果是128。   $a  二进制左移6位 相当于$a*2^6(2的6次方)。现在告诉你后边的  &0xFF是什么鬼东西。这个东西的有无并不会影响计算结果,但严格意义上说应该有。因为前边的位移运算是二进制算法,计算结果是一个二进制数据,byte类型的

  • 基本图形算法指南

    基本图形算法指南

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号