层次分析法(AHP)——matlab代码实现
层次分析法(AHP)的主要思想是根据研究对象的性质将要求达到的目标分解为多个组成因素,并按组成因素间的相互关系,将其层次化,组成一个层次结构模型,然后按层分析,最终获得最高层的重要性权值。层次分析法把一个复杂的无结构问题分解组合成若干部分或若干因素,上一层次对相邻的下一层次的全部或某些元素起支配作用,这样就形成了自上而下的层次结构,通过相关指标之间的两两比较对系统中各指标进行优劣判断,利用判断结果来综合计算各指标间的权重,从而对主要的影响因素进行排序。基本流程如下:
应用AHP解决问题的思路是:首先,把解决的问题分层系列化,即根据问题分解为不同的组成因素,按照因素之间的相互影响和隶属关系将其分层聚类组合,形成一个递阶的、有序的层次结构模型;然后,对模型中每一层次因素的相对重要性,依据人们对客观显示的判断给予定量表示,再利用数学方法确定每一层次全部因素相对重要性次序的权值;最后,通过综合计算各层因素相对重要性的权值,得到最底层值,以此作为评价和选择方案的依据。AHP方法将人们的思想过程和主观判断数学化,不仅简化了系统分析和计算工作,而且有助于决策者保持其思维过程和决策过程的一致性,所以,对于一些复杂问题能得到比较好的结果。AHP方法往往能够和其他模型相结合使用。
1.建立层次结构模型
确定问题所包含的指标,并根据各指标的相互关系将各因素分组、分层。按照最高层、中间层和最低层的形式进行排列,建立反映各指标关联隶属关系建立起层次结构模型。
2.建立判断矩阵
进行层次分析就要在建立问题层次模型的基础上,对层次结构中各指标的相对重要性做出判断,并将判断结果用一定的数值表示出来,写成矩阵形式,即所谓的判断矩阵。判断矩阵是进行层次分析的数据来源,构建判断矩阵是层次分析法的关键。
3.层次单排序和一致性检验
层次单排序是根据判断矩阵计算出对于上一层指标而言求层次与之有联系的指标的重要性权值。计算判断矩阵的特征值和特征向量,即对判断矩阵 计算满足下列关系的特征值和特征向量:
在实际分析中,由于客观事物的复杂性以及不同专家认识上的差异,使每一个判断矩阵都具有完全一致性是不可能的,为考察判断矩阵能否适用于层次分析,就要判断矩阵做一致性检验。为检验判断矩阵的一致性,需要计算一致性指标:
计算综合权重
计算目标准则层权重向量为:
以上来好久之前做的一个体系贡献率中部分用到的ahp方法,由于部分是公式所以就直接粘图了。
以下是我自己编的matlab程序:
function [Q]=AHP(B)
%Q为权值,B为对比矩阵
%导入判别矩阵B
[n,m]=size(B);
%判别矩阵具有完全一致性
for i=1:nfor j=1:nif B(i,j)*B(j,i)~=1 fprintf('i=%d,j=%d,B(i,j)=%d,B(j,i)=%d\n',i,j,B(i,j),B(j,i)) end end
end
%求特征值特征向量,找到最大特征值对应的特征向量
[V,D]=eig(B);
tz=max(D);
tzz=max(tz);
c1=find(D(1,:)==max(tz));
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');
endend
层次分析法(AHP)——matlab代码实现相关推荐
- 层次分析法及matlab代码
数学建模算法(一) 层次分析法 The analytic hierarchy process(AHP) [清风数学建模课程笔记] 文章目录 数学建模算法(一) 层次分析法 The analytic h ...
- 层次分析法之matlab代码实现
clear;clc disp('请输入判断矩阵A: ') A = input('判断矩阵A=') % 输入判断矩阵% 方法1:算术平均法求权重%第一步:将判断矩阵按列归一化(每个元素除以其所在列的和) ...
- matlab如何求指标的权向量_【Matlab】案例讲解层次分析法的Matlab实现
我写过层次分析法的Matlab实现:张敬信:[评价算法]层次分析法zhuanlan.zhihu.com 其中的ahp函数是来自<吴鹏. Matlab高效编程技巧与应用:25个案例分析>, ...
- 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB
建模开讲:层次分析法及其MATLAB实践 主讲人:于晶贤老师 课程回放地址如下,大家可以复制链接到地址栏即可观看,也可以直接点击左下角的观看: https://ke.qq.com/webcourse/ ...
- 熵权法EW与层次分析法AHP之数学原理及实例
1.概述 对于多指标或多目标决策问题,由于涉及到多个指标或属性,在对实测数据进行评价时,需要确定这些指标之间的相互权重,各指标权重的客观性与合理性也会大大影响到最终的评价结果.目前对于指标权重确定的方 ...
- 层次分析法步骤及代码编写
层次分析法步骤及代码编写 笔记大部分由观看[强烈推荐]清风:数学建模算法.编程和写作培训的视频课程整理出: 视频链接:https://www.bilibili.com/video/BV1DW411s7 ...
- 层次分析法AHP - 代码注释多 - ( 数据建模 Python代码)
实际生活中,往往有一些很复杂的系统,我们没办法直观草率的确定权重,比如甲.乙.丙三人竞选总统,严谨的说,需要从三人的社交能力.管理能力.经济能力等方面来考虑,在每个方面,三位候选人的得分也不同,那么到 ...
- AHP层次分析法与python代码讲解(处理论文、建模)
目录 AHP是啥 题目 ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重 方法1:算术平均法求权重 一般步骤 表达式解释 代码实现 方法2:几何平均法求权重 一 ...
- MATLAB实现层次分析法AHP及案例分析
层次分析法(Analytic Hierarchy Process, AHP) 1 模型背景 美国运筹学家匹兹堡大学教授Saaty在20世纪70年代初提出的一种层次权重决策分析方法. 层次分析法(Ana ...
- MATLAB数学建模必备算法--层次分析法AHP
其主要用于解决评价类问题(例如:选择哪种方案最好.哪位运动员或者员工表现的更优秀) 一个很典型的层次分析法案例: 确定评价目标: 高考完后小明想要去旅游,有三个目的地供他选择: 苏杭 北戴河 桂林 确 ...
最新文章
- 银行软件开发实习生_如何找到学生的软件开发人员实习生
- UVA10003 切木棍 Cutting Sticks(区间DP、细节)
- 边缘计算技术发展与对策研究
- 中文TTS文字转语音合成模块合成成品带喇叭 替代SYN6288和XFS5152
- NYOJ72Financial Management
- 消息中间件之JMS实践(ActiveMQ)
- Python数据分析学习笔记之Pandas入门
- RocketMQ源码解析:Producer发送消息+Broker消息存储
- Linux 进程内 全局看见,Android获得全局进程信息以及进程使用的内存情况
- 【离散数学中的数据结构与算法】八 排列与组合四
- C++构造函数/析构函数 设置成private的原因
- LeetCode 6062. 设计一个 ATM 机器
- HTML+CSS+JS实现 ❤️swiper倾斜图片特效❤️
- vector 设置大小_BetterSnapTool for Mac(窗口设置工具) v1.9.3
- 获取图片url的后缀
- 极域电子书包课堂管理系统怎么控屏_极域电子教室使用说明
- 软件的行业适配性:进销存软件与五金行业
- vscode插件快餐教程(3) - Diagnostic
- opencv实现色彩还原(白平衡)
- 第12章 从美国次贷危机中学到什么
热门文章
- 一起学习C语言:C语言数据类型(一)
- python工程师笔试题_2019年,Python工程师必考的6个面试题,Python面试题No5
- python中msg函数_Python 中闭包函数和装饰器
- shell正则表达式去除注释行
- 多态和重载的区别及用法
- mui案例:导航栏 颜色渐变
- MUI 图标显示不出来 - 分析篇
- python串口数据绘图_使用Python串口实时显示数据并绘图的例子
- python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库
- python赋值语句的作用_Python之语句与函数