评价类算法之AHP层次分析法
AHP是最基础的评价类算法:
解决评价类问题,大家首先要想到以下三个问题:
(1) 我们评价的目标是什么?答:为小明同学选择最佳的旅游景点。
(2) 我们为了达到这个目标有哪几种可选的方案?答:三种,分别是去苏杭、去北戴河和去桂林。
(3) 评价的准则或者说指标是什么?(我们根据什么东西来评价好坏)答:景色、花费、居住、饮食、交通。
下面简述其算法步骤:
第一步:分析系统中各因素之间的关系,建立系统的递阶层次结构。
注意:如果你用到了层次分析法,那么这个层次结构图要放在你的建模论文中哦。
第二步:对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)
⭐⭐⭐判断矩阵怎么自己填
第三步:由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过权重才能用)三种方法计算权重:(1)算术平均法(2)几何平均法(3)特征值法,一般三种方法都去计算,保证结果的稳健性。
⭐⭐⭐一致性检验步骤
第一步:计算一致性指标CI
第二步:查找对应的平均随机一致性指标RI
注:在实际运用中,n很少超过10,如果指标的个数大于10,则可考虑建立二级指标体系,或使用我们以后要学习的模糊综合评价模型。
第三步:计算一致性比例CR
如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。
⭐⭐⭐Python算法实现:
import numpy as np
class AHP:"""相关信息的传入和准备"""def __init__(self, array):## 记录矩阵相关信息self.array = array## 记录矩阵大小self.n = array.shape[0]# 初始化RI值,用于一致性检验self.RI_list = [0, 0, 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]# 矩阵的特征值和特征向量self.eig_val, self.eig_vector = np.linalg.eig(self.array)# 矩阵的最大特征值self.max_eig_val = np.max(self.eig_val)# 矩阵最大特征值对应的特征向量self.max_eig_vector = self.eig_vector[:, np.argmax(self.eig_val)].real# 矩阵的一致性指标CIself.CI_val = (self.max_eig_val - self.n) / (self.n - 1)# 矩阵的一致性比例CRself.CR_val = self.CI_val / (self.RI_list[self.n - 1])"""一致性判断"""def test_consist(self):# 打印矩阵的一致性指标CI和一致性比例CRprint("判断矩阵的CI值为:" + str(self.CI_val))print("判断矩阵的CR值为:" + str(self.CR_val))# 进行一致性检验判断if self.n == 2: # 当只有两个子因素的情况print("仅包含两个子因素,不存在一致性问题")else:if self.CR_val < 0.1: # CR值小于0.1,可以通过一致性检验print("判断矩阵的CR值为" + str(self.CR_val) + ",通过一致性检验")return Trueelse: # CR值大于0.1, 一致性检验不通过print("判断矩阵的CR值为" + str(self.CR_val) + "未通过一致性检验")return False"""算术平均法求权重"""def cal_weight_by_arithmetic_method(self):# 求矩阵的每列的和col_sum = np.sum(self.array, axis=0)# 将判断矩阵按照列归一化array_normed = self.array / col_sum# 计算权重向量array_weight = np.sum(array_normed, axis=1) / self.n# 打印权重向量print("算术平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""几何平均法求权重"""def cal_weight__by_geometric_method(self):# 求矩阵的每列的积col_product = np.product(self.array, axis=1)# 将得到的积向量的每个分量进行开n次方array_power = np.power(col_product, 1 / self.n)# 将列向量归一化array_weight = array_power / np.sum(array_power)# 打印权重向量print("几何平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""特征值法求权重"""def cal_weight__by_eigenvalue_method(self):# 将矩阵最大特征值对应的特征向量进行归一化处理就得到了权重array_weight = self.max_eig_vector / np.sum(self.max_eig_vector)# 打印权重向量print("特征值法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weightif __name__ == "__main__":# 给出判断矩阵b = np.array([[1, 1 / 3, 1 / 8], [3, 1, 1 / 3], [8, 3, 1]])# 算术平均法求权重weight1 = AHP(b).cal_weight_by_arithmetic_method()# 几何平均法求权重weight2 = AHP(b).cal_weight__by_geometric_method()# 特征值法求权重weight3 = AHP(b).cal_weight__by_eigenvalue_method()
作业:
- 写作手重点理解算法步骤、对照优秀论文写出到时候建模用到AHP的内容。
- 建模手重点理解算法步骤,调试代码。
- 编程手继续冲击神经网络和优化算法的结合。
评价类算法之AHP层次分析法相关推荐
- 评价类模型:1.层次分析法
评价类问题 举例 高考结束,小明在华中科技大学和武汉大学之间做选择 首先,选择打分指标及其所占权重: 学习氛围,就业前景,男女比例,校园景色 随后,根据查资料或者其他途径对两所校园的各个指标进行打分 ...
- AHP层次分析法与python代码讲解(处理论文、建模)
目录 AHP是啥 题目 ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重 方法1:算术平均法求权重 一般步骤 表达式解释 代码实现 方法2:几何平均法求权重 一 ...
- AHP层次分析法(Analytic Hierarchy Process)——个人学习笔记
目录 一.相关知识与例子 二.代码实现 一.相关知识与例子 层次分析法是数学建模过程中最基础的模型之一,主要应用于评价问题.层次分析法是对一些较为复杂.较为模糊的问题作出决策的简易方法,其适用于那些难 ...
- ahp层次分析法软件_层次分析法在历史街区研究中的应用简析
摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...
- AHP层次分析法在水利中的实践技术应用
原文:AHP层次分析法在水利中的实践技术应用 内容简述: 1.认识 AHP,掌握 AHP 的基本原理,优缺点及建模的步骤.以手算案例的方式,熟 悉层次分析法的计算过程,为后期学习软件夯实理论基础. 2 ...
- ahp层次分析法_层次分析法在历史街区研究中的应用简析
摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...
- ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析
层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...
- AHP层次分析法分析流程
AHP层次分析法分析流程: 一.案例背景 当前有一项研究,想要构建公司绩效评价指标体系,将一级指标分为4个,分别是:服务质量.管理水平.运行成本.安全生产,现在想要确定4个指标的权重. AHP层次分析 ...
- Matlab基于SEIRD模型,NSIR预测模型,AHP层次分析法新冠肺炎预测与评估分析
全文链接:http://tecdat.cn/?p=32175 分析师:Jiahui Zhao 新型冠状病毒肺炎COVID-19 给中国乃至全世界都带来了深重的灾难,对世界经济也造成了不可逆的影响(点击 ...
- 用AHP层次分析法挑选最佳结婚对象
为了使文章读起来比较有趣,假设屏幕前的你现在中了彩票头奖,奖金5亿RMB.于是你彻底解放不用再写代码啦,天天开辆法拉利到处玩,来给你介绍对象的媒人踏破家门.经过初赛.复赛.泳装.晚装.才艺展示之后,仍 ...
最新文章
- catia怎么创建约束快捷键_答疑 | CATIA结构树无法显示怎么办?
- 经典树型表结构之SORT_NO
- 分布式任务队列 Celery — 深入 Task
- redis简单了解 二 (集群)
- boost::graph::dimacs_basic_reader用法的测试程序
- C语言实现基数排序Radix sort算法之二(附完整源码)
- 机器学习——贝叶斯分类器
- background-position 用法介绍
- 跟我学ModelArts丨探索ModelArts平台个性化联邦学习API
- Java小项目:坦克大战(二)
- 通过sql server的作业调度+存储过程来实现系统定时任务的方法
- mGBA-0.9.2 免费开源的gba模拟器
- 计算机硬件性能指标参考
- centos6.5升级glibc-2.18
- 1194. 24点游戏
- 亿阳信通:不可表示的数
- 微信群发助手怎么使用?微信群发助手怎么发?
- python必背100源代码下载-100行Python代码实现一款高精度免费OCR工具
- Java中synchronization和Lock对比
- K近邻(k-Nearest Neighbor,KNN)算法,一种基于实例的学习方法