层次分析法(The analytic hierarchy process)简称AHP

在20世纪70年代中期由美国运筹学家托马斯·塞蒂(T.L.saaty)正式提出。它是一种定性和定量相结合的、系统化、层次化的分析方法。由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视。它的应用已遍及经济计划和管理、能源政策和分配、行为科学、军事指挥、运输、农业、教育、人才、医疗和环境等领域。

比较常用的场合是进行决策,层次分析法是一种比较常见的多目标决策方法。其实我看来,层次分析法就是一种按照层次结构计算加权和的方法,主要是权重的选取,这里人为因素太大,比较容易受到诟病。

具体的理论,可以参考wiki,附上网址:https://wiki.mbalib.com/wiki/%E5%B1%82%E6%AC%A1%E5%88%86%E6%9E%90%E6%B3%95

层次分析法的多级递阶层次模型分为三类:完全相关性结构、完全独立性结构、混合型结构。

前两种分别对应于下图的图1,2(来自网络,侵删):

图1 . 完全相关性

图2. 完全独立性

混合型就是具备两种的特点。其实也不需要管这个了,就是按照自己的需要搭建好层次结构就可以了,有了结构下面开始撸代码。

示例:

此次我们实现的是这样的层次结构,如图3,同时我们假设成对比较矩阵已经按照尺度表定义好(尺度表即表示相对权重,在wiki中可以找到),实际应用中可以根据需求求解成对比较矩阵。

图3. 示例的层次结构图

python3 代码。

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 13 15:37:12 2018@author: user
""""""
AHP demo: 第一层:A, 第二层:B1 B2 B3, 第三层:C1 C2 C3, 完全相关性结构。
"""import numpy as np"""
1. 成对比较矩阵
"""
def comparision(W0):  # W为每个信息值的权重n=len(W0)F=np.zeros([n,n])for i in range(n):for j in range(n):if i==j:F[i,j]=1else:F[i,j]=W0[i]/W0[j]return F"""
2. 单层排序,相对重要度
"""
def ReImpo(F):n=np.shape(F)[0]W=np.zeros([1,n])for i in range(n):t=1for j in range(n):t=F[i,j]*tW[0,i]=t**(1/n)W=W/sum(W[0,:])  # 归一化 W=[0.874,2.467,0.464]return W.T"""
3. 一致性检验
"""
def isConsist(F):n=np.shape(F)[0]a,b=np.linalg.eig(F)maxlam=a[0].realCI=(maxlam-n)/(n-1)if CI<0.1:return bool(1)else:return bool(0)
"""
4. 计算综合重要性
"""
def ComImpo(W12,W231,W232,W233):  # 综合重要性#F12=comparision(W12)  # 实际应用中可以根据特征的权重求解成对比较矩阵。#F231=comparision(W231)#F232=comparision(W232)#F233=comparision(W233)F12=np.array([[1,1/3,2],[3,1,5],[1/2,1/5,1]])  # 此处直接假设出成对比较矩阵F231=np.array([[1,1/3,1/5],[3,1,1/3],[5,3,1]])F232=np.array([[1,2,7],[1/2,1,5],[1/7,1/5,1]])F233=np.array([[1,1/3,1/7],[3,1,1/5],[7,5,1]])if isConsist(F12) and isConsist(F231) and isConsist(F232) and isConsist(F233):W12=ReImpo(F12)W231=ReImpo(F231)W232=ReImpo(F232)W233=ReImpo(F233)W23=np.hstack([W231,W232,W233])else:print("成对比较矩阵不一致,请调整权重后重试!")return 0n=len(W12)C=np.zeros([1,n])for i in range(n):t=W23[i,:]C[0,i]=sum((W12.T*t)[0])return Cdef main():print("这里是AHP的演示程序:")w=np.ones([3])  # W 为成对比较矩阵C=ComImpo(w,w,w,w)print('最佳方案为第',np.argmax(C)+1,'个方案.','综合推荐指数为',max(C[0,:]))if __name__ == '__main__':main()# print(__name__)

层次分析法---python实现相关推荐

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

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

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

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

  3. AHP层次分析法python实现

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

  4. 层次分析法——python

    原理 层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成–个多层次的分析结构模型,从而最终使问题归结为最低层(供 ...

  5. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

  6. 层次分析法python代码_Python 实现层次分析法

    import csv import numpy as np import tensorflow as tf #大概的思路是: #1.首先输入每个指标下面对应的对比矩阵,每个这个矩阵是由专家比较每两个 ...

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

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

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

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

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

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

最新文章

  1. cin、getline的坑
  2. dataframe for 循环 数据格式 python_Python中的for循环
  3. AS3 in FlashDevelop
  4. freemarker使用说明_SpringBoot+Swagger2集成详细说明
  5. 北京的林书豪,像一把小李飞刀
  6. Tensorflow tf.keras.layers.LSTM
  7. tv盒子助手android版本下载,当贝TV盒子助手
  8. java dateutils工具类_Java日期工具类DateUtils详解(转)
  9. 基于java在线影院订票系统论文
  10. C++控制台游戏-小镇物语正式版 V1.7.21BUG修复版【可存档!!!】
  11. kms服务器搭建及测试
  12. 华为业绩发布会:5G产品和供货没有受到“实体清单”影响
  13. 用python实现人脸识别毕设_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...
  14. 蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应…… 好多新名词 :)
  15. 计算机怎样将多行文字转换成表格,怎么把表格里的字变成两行
  16. 线段树+KMP-hdu-4125-Moles
  17. CSP-S 蒟蒻啊qaq
  18. 学生成绩测评系统python_python实现学生成绩测评系统
  19. h5应用数据加密_H5+应用打包JS没有加密混淆
  20. Python文本分析案例:近体诗格律分析

热门文章

  1. Engineering Dynamics 3 --- 转动惯量
  2. 任泽平:谏言、真相与几句心里话
  3. 通过4G模块定位设备
  4. angelababy都靠它保持身材,只需10秒随时随地喝到新鲜果汁!
  5. 从GPU编程到SIMT核心
  6. vue+webpack前端开发项目的安装方法
  7. ASP.NET动态加载CSS文件
  8. 中台的问题,是技术的问题,还是人的问题
  9. Network Emulator Toolkit (NEWT) 网络限速工具 (手机和电脑方面)
  10. DXT纹理压缩格式解析