目录

1.简介

2.算法解析

3.实例分析

3.1 构造矩阵

3.2 查看行数和列数

3.3 求特征向量

3.4 找到最大特征值和最大特征向量

3.5 计算权重

3.6 一致性检验

3.7 计算评分

完整代码


1.简介

一种主观赋权的方法,在数据集比较小,实在不好比较的时候可以用这个方法,如果有别的选择还是尽量不要用这个算法比较好。

层次分析法的特点是在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。尤其适合于对决策结果难于直接准确计量的场合。

层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后得用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。这里所谓“优先权重”是一种相对的量度,它表明各备择方案在某一特点的评价准则或子目标,标下优越程度的相对量度,以及各子目标对上一层目标而言重要程度的相对量度。层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。其用法是构造判断矩阵,求出其最大特征值。及其所对应的特征向量W,归一化后,即为某一层次指标对于上一层次某相关指标的相对重要性权值。

2.算法解析

例如某研究对象的指标集

然后通过以下表格复制指标n对指标m的重要性

判断矩阵汇总指标n对指标m满足公式

然后通过eig函数求取矩阵的特征向量

一致性检验

其中RI根据指标个数通过下表选择对应的RI值

如果CR<0.10时,则建立的判断矩阵的一致性认为是可接受的,否则应对其进行修正。

3.实例分析

小美要选男朋友了,现有小明、小李两个人选,到底该选谁呢?现在小美要从四个指标去选择,分别是身高、颜值、学历、性格。小美对他们各个指标的评分如下:

由于两者各有其优点,实在令人难以抉择,于是小美根据自己的主观判断,认为如下:

  • 1.身高与颜值比较,身高稍重要
  • 2.身高与学历相比,同样重要
  • 3.身高和性格相比,性格稍重要
  • 4.颜值和学历相比,学历介于相同重要和稍微重要之间
  • 5.颜值和性格相比,性格明显重要
  • 6.性格和学历相比,性格稍重
身高 颜值 学历 性格
身高 1 3 1 1/3
颜值 1/3 1 1/2 1/5
学历 1 2 1 1/3
性格 3 5 3 1

由此,可得到判断矩阵

3.1 构造矩阵

P=[8,7,6,8;7,8,8,7] %每一行代表一个对象的指标评分
%A为自己构造的输入判别矩阵
A=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,3,1]P=[8,7,6,8;7,8,8,7] %每一行代表一个对象的指标评分
%A为自己构造的输入判别矩阵
A=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,3,1]

返回:

3.2 查看行数和列数

[n,m]=size(A)

返回:

3.3 求特征向量

[V,D]=eig(A)

返回:

3.4 找到最大特征值和最大特征向量

tzz=max(max(D))     %找到最大的特征值
c1=find(D(1,:)==tzz);%找到最大的特征值位置
tzx=V(:,c1) %最大特征值对应的特征向量

返回:

3.5 计算权重

%赋权重
quan=zeros(n,1);
for i=1:n
quan(i,1)=tzx(i,1)/sum(tzx);
end
Q=quan

返回:

3.6 一致性检验

%一致性检验
CI=(tzz-n)/(n-1);
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性检验
CR=CI/RI(1,n);
if CR>=0.1fprintf('没有通过一致性检验\n');
elsefprintf('通过一致性检验\n');
end

返回:

3.7 计算评分

%显示出所有评分对象的评分值score=P*Q;for i=1:length(score)name=['object_score',num2str(i)];eval([name,'=score(i)'])end

返回:

完整代码

clear;clc;
P=[8,7,6,8;7,8,8,7]; %每一行代表一个对象的指标评分
%A为自己构造的输入判别矩阵
A=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,3,1];
[n,m]=size(A);
[V,D]=eig(A);
tzz=max(max(D));     %找到最大的特征值
c1=find(D(1,:)==tzz);%找到最大的特征值位置
tzx=V(:,c1); %最大特征值对应的特征向量
%赋权重
quan=zeros(n,1);
for i=1:n
quan(i,1)=tzx(i,1)/sum(tzx);
end
Q=quan;
%一致性检验
CI=(tzz-n)/(n-1);
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59];
%判断是否通过一致性检验
CR=CI/RI(1,n);
if CR>=0.1fprintf('没有通过一致性检验\n');
elsefprintf('通过一致性检验\n');
end
%显示出所有评分对象的评分值score=P*Q;for i=1:length(score)name=['object_score',num2str(i)];eval([name,'=score(i)'])end

层次分析法之matlab相关推荐

  1. 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB

    建模开讲:层次分析法及其MATLAB实践 主讲人:于晶贤老师 课程回放地址如下,大家可以复制链接到地址栏即可观看,也可以直接点击左下角的观看: https://ke.qq.com/webcourse/ ...

  2. matlab如何求指标的权向量_【Matlab】案例讲解层次分析法的Matlab实现

    我写过层次分析法的Matlab实现:张敬信:[评价算法]层次分析法​zhuanlan.zhihu.com 其中的ahp函数是来自<吴鹏. Matlab高效编程技巧与应用:25个案例分析>, ...

  3. 层次分析法及matlab代码

    数学建模算法(一) 层次分析法 The analytic hierarchy process(AHP) [清风数学建模课程笔记] 文章目录 数学建模算法(一) 层次分析法 The analytic h ...

  4. 层次分析法(matlab实现)

    层次分析: 层次分析法的基本思路与人对一个复杂的决策问题的思维.判断过程大体上是一样的.不妨用假期旅游为例:假如有3个旅游胜地A.B.C供你选择,你会根据诸如景色.费用和居住.饮食.旅途条件等一些准则 ...

  5. 层次分析法之matlab代码实现

    clear;clc disp('请输入判断矩阵A: ') A = input('判断矩阵A=') % 输入判断矩阵% 方法1:算术平均法求权重%第一步:将判断矩阵按列归一化(每个元素除以其所在列的和) ...

  6. matlab层次分析法程序购置设备,[转载]MATLAB实现层次分析程序

    层次分析法(AHP)适用于那些难于完全定量分析的问题.运用层次分析建模,大体上可按下面四个步骤进行: (1)建立递阶层次结构模型: (2)构造出各层次中的所有判断矩阵: (3)层次单排序及一致性检验: ...

  7. matlab计算层次法的权重,层次分析法计算权重在matlab中的实现

    信息系统分析与设计作业 层次分析法确定绩效评价权重在matlab中的实现 小组成员:孙高茹.王靖.李春梅.郭荣 1 程序简要概述 编写程序一步实现评价指标特征值lam.特征向量w以及一致性比率CR的求 ...

  8. 学习笔记----层次分析法

    层次分析法(MATLAB实现) 定义 例题 步骤 细节补充 应用实例 定义   层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则.约束)的若干 ...

  9. 层次分析法------小学生都会的算法~~~

    文章目录 一.评价模型的种类 二.层次分析法 2.1层次分析法的原理及应用 2.1.1原理 2.1.2应用 一.评价模型的种类 二.层次分析法 2.1层次分析法的原理及应用 2.1.1原理 层次分析法 ...

最新文章

  1. python bs4 find_all_BeautifulSoup中的find,find_all
  2. 《番茄工作法图解》作者中国行
  3. Apache Mahout中推荐算法Slope one源码分析
  4. Redis支持的5种数据类型
  5. js判断display隐藏显示
  6. 与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面
  7. webpack entry和output配置属性
  8. IronRuby - 文件编码惹的祸
  9. osgi 如何引入包_OSGi Testsuite:引入类名过滤器
  10. mot数据集_谈谈ReID与MOT的关系
  11. Linux入门学习(十一)
  12. 共享内存 传一个类指针_大神是如何学习 Go 语言之为什么使用通信来共享内存...
  13. 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
  14. asp.net MVC之 自定义过滤器(Filter)
  15. CS224n--Lecture 1 Introduction and Word Vectors
  16. 怎样学手机拼音打字html t=45,如何学会拼音(怎样快速学会拼音打字)
  17. DC888 : worklist slovers
  18. 使用PDFObject添加将本地磁盘pdf文件在前端页面展示
  19. python常用内置函数
  20. 计算机专业买笔记本电脑游戏本还是商务本好,购买笔记本电脑,游戏本真的是第一选择吗?...

热门文章

  1. 谷歌浏览器无网络连接 打不开网页解决办法
  2. RTSP/RTMP播放端录像不可忽视的几个设计要点
  3. js基础中Null、undefined、NaN、false、0、{}的理解及使用
  4. oracle有人用过fra吗,FRA(闪回恢复区)
  5. 学习Spring Boot:(十三)配置 Shiro 权限认证
  6. @ControllerAdvice实现优雅地处理异常
  7. python实现简单的名字管理系统_python列表使用实现名字管理系统
  8. workbook加载文件路径_【Python】文件重命名(按照Excel清单)
  9. 高龄申请海外计算机科学博士,【原创】牛津在读小博谈谈在海外攻读生命科学专业的一些心得...
  10. 的mvc_简述PHP网站开发的MVC模式