Python实现层次分析法
Python实现层次分析法
一、层次分析法有三种求法
- 算术平均权重
- 几何平均权重
- 特征值求权重
通常情况下,我们会将这几种方法结合使用,来增加说服力
**【划重点】**下面我直接分享可执行的代码,读者可直接使用,有基础的也可以拿去研究,整个代码我已重构,虽然手法可能略显粗糙,但是逻辑还是清楚的。
import numpy as np
from numpy import linalgdef s_s_a(n, C):"""算术平均值求权重"""w_1 = sum(C) / nprint("算术平均权重为:\n", w_1)print("")
def j_h_a(n, A):"""几何平均值求权重"""B_2 = pow(np.prod(A, 1), 1/n) # 0是按行,1是按列w_2 = B_2 / sum(B_2)print("几何平均值权重:\n", w_2)print("")
def t_v(V,eig_max,D):"""特征值法求权重"""c = np.where(V == eig_max)B_3 = D[:, c.index(0)]w_3 = B_3 / sum(B_3)print("特征值法求权重:\n", w_3)
def main(A,B_z,C_z,D_z,R_I,n):"""主程序"""if D_z[1,:].all() == (np.array(B_z)*np.array(C_z)).all():print("该矩阵是正互反矩阵!\n")V,D = np.linalg.eig(A)eig_max = max(V)CI = (eig_max-n) / (n-1)RI = R_I[n-1]CR = CI / RIif CR < 0.1:print("一致性检验通过!\n")B_1 = np.zeros([n,n])for i in range(0,n):B_1[0:n,i] = A[0:n,i] / sum(A[0:n,i])C = B_1.T s_s_a(n, C)j_h_a(n, A)t_v(V,eig_max,D)else:print("一致性检验失败,请修改!")else:print("您输入的矩阵非正互反矩阵")R_I = np.array([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])
A = np.array([[1, 1, 4, 1/3, 3], [1, 1, 4, 1/3 ,3], [1/4, 1/4, 1, 1/3, 1/2,], [3, 3, 3, 1, 3], [1/3, 1/3, 2, 1/3, 1]])
n = len(A)
B_z = []
C_z = []
for i in range(0,n):for j in range(0,n):B_z.append(A[i,j])C_z.append(A[j,i])
D_z = np.ones([len(B_z), len(B_z)])
main(A,B_z,C_z,D_z,R_I,n)
程序运行的截图
结语
至此,层次分析法就已经分享完了,如果你觉得有用就辛苦点个赞,毕竟劳动是光荣的,应该值得被尊重;此外,如果你有不懂的地方,欢迎留言,因为这个部分我没有做理论以及代码的解释,实在是有点时间不够,敬请谅解。
Python实现层次分析法相关推荐
- 用python实现层次分析法(AHP)
层次分析法是数学建模的入门算法,类似于算法竞赛中的cout<<"Hello,world!"<<endl; 对于python数据分析的初学者来说,在使用pyt ...
- Python实现“层次分析法”及“自调节层次分析法”
Python实现"层次分析法"及"自调节层次分析法" 假设我们遇到如下问题: ①对于M个方案,每个方案有N个属性,在已知各个方案每个属性值&&任 ...
- PYTHON实现层次分析法(AHP)指标权重的确定
import numpy as npA = np.array([[1, 2, 3],[1/2, 1, 2],[1/3, 1/2, 1]]) m=len(A) #获取指标个数 n=len(A[0]) R ...
- 数学建模——层次分析法Python代码
数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...
- 层次分析法原理分析及Python实现层析分析法
目录 层次分析法概述 定义 步骤归纳 例子 应用实例 Python实现 程序如下: 运行结果截图 层次分析法概述 定义 本文所有图片均来自本人的OneNote笔记 步骤归纳 例子 建立层次结构模型 构 ...
- 【AHP层次分析法python部分实现】
提示:仅用到AHP层次分析法的部分功能因此只完成了python的部分实现 目录 前言 一.AHP是什么? 层次分析法的特点: 层次分析法的原理: 二.使用步骤 参考视频 前言 提示:这里可以添加本文要 ...
- AHP | 层次分析法原理及Python实现
层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因子/准则的权重,进一 ...
- python实现AHP算法(层次分析法)
一.层次分析法原理 层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因 ...
- AHP层次分析法python实现
问题背景描述 某高校正在进行教师的评优工作,现应用层次分析法对待评教师的综合素质进行评价.整个层次结构分为三层,最高层即问题分析的总目标,要评选出优秀教师A:第二层是准则层,包括三种指标学识水平C1. ...
- AHP层次分析法与python代码讲解(处理论文、建模)
目录 AHP是啥 题目 ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重 方法1:算术平均法求权重 一般步骤 表达式解释 代码实现 方法2:几何平均法求权重 一 ...
最新文章
- 惊呆了!B 站公告低级错误,将公司名写成“百度”
- 《OpenStack 实战》内容概览与作者采访
- Linux shell关系运算
- Vue 结合Element UI 实现导航的 router 属性 expected boolean,got string
- 全面解读:微信服务号升级和群发增至4条的应用方法
- 集合框架中的接口及其实现类
- 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...
- git第一次提交代码至远程仓库步骤
- OpenCV调用YOLOv4进行目标检测
- 星期三—用JAVA制作简易的通讯软件
- vim java.dict_配置 VIM 英语字典
- DonkeyCar树莓派版的实践
- 基于javaweb的员工绩效考核系统
- android 平板键盘布局,7款Android平板输入法横向评测,安卓平板软件HD/THD下载
- c语言怎么学自学,初学者如何学习c语言,带你玩转C语言
- tenforflow版YOLOv3下VOC数据集的准备和训练
- 汇编语言期末复习不挂科——知识点总结
- EverEdit使用正则替换
- javascript中this的工作原理以及注意事项
- 爬虫爬取大量高清壁纸图片
热门文章
- 物理计算机仿真实验报告,大学物理实验实验报告模板
- 战旗助手服务器代码,炉石盒子PC端人工智能战棋助手启用!
- 华为手机隐藏app图标_华为手机怎么隐藏应用图标
- [Python]网络爬虫学习笔记,爬取豆瓣妹子上妹子的照片
- imx6ull 485 调试
- WEB程序设计 第7版.pdf
- 自动化测试ROI计算器
- QTTabBar+Office Tab+Quicker 助力高效使用Windows办公
- 如何在整个目录上运行dos2unix?
- aliez歌词_歌曲《aLIEz(TV动画《ALDNOAH.ZERO》ED2)(翻自 mizuki)》完整歌词是什么?谁唱的?...