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实现层次分析法相关推荐

  1. 用python实现层次分析法(AHP)

    层次分析法是数学建模的入门算法,类似于算法竞赛中的cout<<"Hello,world!"<<endl; 对于python数据分析的初学者来说,在使用pyt ...

  2. Python实现“层次分析法”及“自调节层次分析法”

    Python实现"层次分析法"及"自调节层次分析法" 假设我们遇到如下问题: ①对于M个方案,每个方案有N个属性,在已知各个方案每个属性值&&任 ...

  3. 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 ...

  4. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  5. 层次分析法原理分析及Python实现层析分析法

    目录 层次分析法概述 定义 步骤归纳 例子 应用实例 Python实现 程序如下: 运行结果截图 层次分析法概述 定义 本文所有图片均来自本人的OneNote笔记 步骤归纳 例子 建立层次结构模型 构 ...

  6. 【AHP层次分析法python部分实现】

    提示:仅用到AHP层次分析法的部分功能因此只完成了python的部分实现 目录 前言 一.AHP是什么? 层次分析法的特点: 层次分析法的原理: 二.使用步骤 参考视频 前言 提示:这里可以添加本文要 ...

  7. AHP | 层次分析法原理及Python实现

    层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因子/准则的权重,进一 ...

  8. python实现AHP算法(层次分析法)

    一.层次分析法原理 层次分析法(Analytic Hierarchy Process,AHP)由美国运筹学家托马斯·塞蒂(T. L. Saaty)于20世纪70年代中期提出,用于确定评价模型中各评价因 ...

  9. AHP层次分析法python实现

    问题背景描述 某高校正在进行教师的评优工作,现应用层次分析法对待评教师的综合素质进行评价.整个层次结构分为三层,最高层即问题分析的总目标,要评选出优秀教师A:第二层是准则层,包括三种指标学识水平C1. ...

  10. AHP层次分析法与python代码讲解(处理论文、建模)

    目录 AHP是啥 题目  ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重  方法1:算术平均法求权重 一般步骤  表达式解释 代码实现 方法2:几何平均法求权重 一 ...

最新文章

  1. 惊呆了!B 站公告低级错误,将公司名写成“百度”
  2. 《OpenStack 实战》内容概览与作者采访
  3. Linux shell关系运算
  4. Vue 结合Element UI 实现导航的 router 属性 expected boolean,got string
  5. 全面解读:微信服务号升级和群发增至4条的应用方法
  6. 集合框架中的接口及其实现类
  7. 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...
  8. git第一次提交代码至远程仓库步骤
  9. OpenCV调用YOLOv4进行目标检测
  10. 星期三—用JAVA制作简易的通讯软件
  11. vim java.dict_配置 VIM 英语字典
  12. DonkeyCar树莓派版的实践
  13. 基于javaweb的员工绩效考核系统
  14. android 平板键盘布局,7款Android平板输入法横向评测,安卓平板软件HD/THD下载
  15. c语言怎么学自学,初学者如何学习c语言,带你玩转C语言
  16. tenforflow版YOLOv3下VOC数据集的准备和训练
  17. 汇编语言期末复习不挂科——知识点总结
  18. EverEdit使用正则替换
  19. javascript中this的工作原理以及注意事项
  20. 爬虫爬取大量高清壁纸图片

热门文章

  1. 物理计算机仿真实验报告,大学物理实验实验报告模板
  2. 战旗助手服务器代码,炉石盒子PC端人工智能战棋助手启用!
  3. 华为手机隐藏app图标_华为手机怎么隐藏应用图标
  4. [Python]网络爬虫学习笔记,爬取豆瓣妹子上妹子的照片
  5. imx6ull 485 调试
  6. WEB程序设计 第7版.pdf
  7. 自动化测试ROI计算器
  8. QTTabBar+Office Tab+Quicker 助力高效使用Windows办公
  9. 如何在整个目录上运行dos2unix?
  10. aliez歌词_歌曲《aLIEz(TV动画《ALDNOAH.ZERO》ED2)(翻自 mizuki)》完整歌词是什么?谁唱的?...