层次分析法之matlab
目录
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相关推荐
- 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB
建模开讲:层次分析法及其MATLAB实践 主讲人:于晶贤老师 课程回放地址如下,大家可以复制链接到地址栏即可观看,也可以直接点击左下角的观看: https://ke.qq.com/webcourse/ ...
- matlab如何求指标的权向量_【Matlab】案例讲解层次分析法的Matlab实现
我写过层次分析法的Matlab实现:张敬信:[评价算法]层次分析法zhuanlan.zhihu.com 其中的ahp函数是来自<吴鹏. Matlab高效编程技巧与应用:25个案例分析>, ...
- 层次分析法及matlab代码
数学建模算法(一) 层次分析法 The analytic hierarchy process(AHP) [清风数学建模课程笔记] 文章目录 数学建模算法(一) 层次分析法 The analytic h ...
- 层次分析法(matlab实现)
层次分析: 层次分析法的基本思路与人对一个复杂的决策问题的思维.判断过程大体上是一样的.不妨用假期旅游为例:假如有3个旅游胜地A.B.C供你选择,你会根据诸如景色.费用和居住.饮食.旅途条件等一些准则 ...
- 层次分析法之matlab代码实现
clear;clc disp('请输入判断矩阵A: ') A = input('判断矩阵A=') % 输入判断矩阵% 方法1:算术平均法求权重%第一步:将判断矩阵按列归一化(每个元素除以其所在列的和) ...
- matlab层次分析法程序购置设备,[转载]MATLAB实现层次分析程序
层次分析法(AHP)适用于那些难于完全定量分析的问题.运用层次分析建模,大体上可按下面四个步骤进行: (1)建立递阶层次结构模型: (2)构造出各层次中的所有判断矩阵: (3)层次单排序及一致性检验: ...
- matlab计算层次法的权重,层次分析法计算权重在matlab中的实现
信息系统分析与设计作业 层次分析法确定绩效评价权重在matlab中的实现 小组成员:孙高茹.王靖.李春梅.郭荣 1 程序简要概述 编写程序一步实现评价指标特征值lam.特征向量w以及一致性比率CR的求 ...
- 学习笔记----层次分析法
层次分析法(MATLAB实现) 定义 例题 步骤 细节补充 应用实例 定义 层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则.约束)的若干 ...
- 层次分析法------小学生都会的算法~~~
文章目录 一.评价模型的种类 二.层次分析法 2.1层次分析法的原理及应用 2.1.1原理 2.1.2应用 一.评价模型的种类 二.层次分析法 2.1层次分析法的原理及应用 2.1.1原理 层次分析法 ...
最新文章
- python bs4 find_all_BeautifulSoup中的find,find_all
- 《番茄工作法图解》作者中国行
- Apache Mahout中推荐算法Slope one源码分析
- Redis支持的5种数据类型
- js判断display隐藏显示
- 与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面
- webpack entry和output配置属性
- IronRuby - 文件编码惹的祸
- osgi 如何引入包_OSGi Testsuite:引入类名过滤器
- mot数据集_谈谈ReID与MOT的关系
- Linux入门学习(十一)
- 共享内存 传一个类指针_大神是如何学习 Go 语言之为什么使用通信来共享内存...
- 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
- asp.net MVC之 自定义过滤器(Filter)
- CS224n--Lecture 1 Introduction and Word Vectors
- 怎样学手机拼音打字html t=45,如何学会拼音(怎样快速学会拼音打字)
- DC888 : worklist slovers
- 使用PDFObject添加将本地磁盘pdf文件在前端页面展示
- python常用内置函数
- 计算机专业买笔记本电脑游戏本还是商务本好,购买笔记本电脑,游戏本真的是第一选择吗?...
热门文章
- 谷歌浏览器无网络连接 打不开网页解决办法
- RTSP/RTMP播放端录像不可忽视的几个设计要点
- js基础中Null、undefined、NaN、false、0、{}的理解及使用
- oracle有人用过fra吗,FRA(闪回恢复区)
- 学习Spring Boot:(十三)配置 Shiro 权限认证
- @ControllerAdvice实现优雅地处理异常
- python实现简单的名字管理系统_python列表使用实现名字管理系统
- workbook加载文件路径_【Python】文件重命名(按照Excel清单)
- 高龄申请海外计算机科学博士,【原创】牛津在读小博谈谈在海外攻读生命科学专业的一些心得...
- 的mvc_简述PHP网站开发的MVC模式