1 评价类算法:层次分析法笔记(附Python代码)

2023-11-04

什么是评价类问题?
题干中要求你确定评价指标,形成评价体系。
常见的评价类算法有?
层次分析法、TOPSIS法、熵权法、变异系数法、主成分分析法等等。

在这里插入图片描述

一、原理

简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。

二、要点

需要利用打分法设置评价指标,这个打分可以依赖于常识、文献、专家建议等。
在这里插入图片描述
打分的分数为1-9十个整数,利用1-9表示重要程度,列表格两两比较。
在这里插入图片描述

三、解题举例

1. 举例

在这里插入图片描述

2. 分析

在这里插入图片描述

3. 解题思路

(1)建立层次结构

注意:评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。
在这里插入图片描述

(2)利用打分法打分

在这里插入图片描述

(3)形成判断矩阵

假设现对小明进行提问(实际过程中,由专家/文献/实际情况支撑打分环节的分数),就这样小明回答了10次[组合数C(5,2)],根据他所回答的填好了上面这张表。

在这里插入图片描述

具体展示了剩余4张表格的数据,形成总共5个判断矩阵(5个指标对应5个判断矩阵):

在这里插入图片描述
观察可以发现,有矛盾之处,也就是下面需要处理的不一致现象。
在这里插入图片描述

(3)转换一致矩阵

为了解决上述问题,提出了一致矩阵。
例如:a苏杭桂林=a苏杭北戴河a北戴河桂林=22=4
一致矩阵的特点是:一致矩阵满足各行(各列)之间成倍数关系。

在这里插入图片描述
在这里插入图片描述

(4)进行一致性检验

我们在使用判断矩阵求权重之前,必须对其进行一致性检验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 具体步骤

(1)打分列表格
(2)计算一致矩阵的权重结果
在这里插入图片描述
(3)计算判断矩阵的权重

- ①算术平均法求权重

首先展示了算术平均法在论文中需要列出的数学公式,如下图:

在这里插入图片描述
结合上面的所举例的例题,有如下计算过程:在这里插入图片描述在这里插入图片描述
- ②几何平均法求权重

展示了几何平均法中需要的公式,如图。并且对比了算术平均法和几何平均法计算结果的不同,如图中表所示:
在这里插入图片描述

  • ③特征值法求权重
    推荐使用该方法。在这里插入图片描述
    (4)计算各个方案的得分
    根据计算的方案得分,分数越高越推荐。
    在这里插入图片描述

四、代码

import numpy as np
from functools import reduce
'''1.输入数据'''
print("请输入判断矩阵大小:")
n = eval(input())
print("请输入判断矩阵:")
A = np.ones((n, n))
for i in range(n):
    A[i] = input().split(" ")
    A[i] = list(map(float, A[i]))
print("输入判断矩阵为:\n{}".format(A))

'''2.一致性检验'''
# 求解特征向量的最大特征值
w, v = np.linalg.eig(A)
wIndex = np.argmax(w)
wMax = np.real(w[wIndex])
print("最大特征值数值:{}".format(wMax))
# 输出一致性指标CI
CI = (wMax - n)/(n-1)
print("CI数值:{}".format(CI))
# 输出平均随机一致性指标RI, 直接查表可得, 不同标准数值有所差别。
# RI数据来源:洪志国.层次分析法中高阶平均随机一致性指标(RI)的计算[J].计算机工程与应用,2002(12):45-47+150.
RI = [0, 0, 0.0001, 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,
      1.5943, 1.6064, 1.6133, 1.6207, 1.6292]
print("RI数值:{}".format(RI[n]))
# 输出一致性比例CR
CR = CI/RI[n]
print("CR数值:{}".format(CR))

# 判断是否可以接受
if CR > 0.1:
    print("该判断矩阵A的一致性不可以接受.")
else:
    print("该判断矩阵A的一致性可以接受.")

    '''3.归一化处理'''
    lineSum = [sum(m) for m in zip(*A)]
    D = np.zeros((n, n))
    for i in range(n):
        for j in range(n):
            D[i][j] = A[i][j]/lineSum[j]
    print("归一化判断矩阵为:\n{}".format(D))

    '''4.计算权重'''
    # 算术平均法计算权重
    ans = np.zeros(n)
    for i in range(n):
        ans[i] = np.average(D[i])
    print("算术平均法权重计算结果为:\n{}".format(ans))
    # 几何平均法计算权重
    ans = np.zeros(n)
    for i in range(n):
        ans[i] = reduce(lambda x,y:x*y, A[i])
        ans[i] = pow(ans[i], 1/n)
    ans = [e/np.sum(ans) for e in ans]
    print("几何平均法权重计算结果为:\n{}".format(ans))
    # 特征值法计算权重
    ans = np.zeros(n)
    vIndex = np.argmax(v)  # 对应最大特征值的特征向量索引
    vMax = np.real(v[:, vIndex])
    ans = [e/np.sum(vMax) for e in vMax]
    print("特征值法权重计算结果为:\n{}".format(ans))

实验结果如图所示:
在这里插入图片描述

在这里插入图片描述

五、参考链接

1.视频资源来源B站–清风
2.CSDN博客笔记

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1 评价类算法:层次分析法笔记(附Python代码) 的相关文章

随机推荐

  • [Xilinx FPGA] #8 Xilinx Power Estimator[XPE, 功耗估计器]的使用方法

    对于 FPGA 设计来说 设计结果的功耗是较为重要的一个设计指标 有时在设计完成前对设计的功耗有一个大体的估计 Xilinx 专门为此设计了一个工具 以使设计者可以在设计完成前根据预设对功耗进行大致的预估 可参考 Xilinx Power
  • 服务因 找不到指定的模块。 服务特定错误而停止。

    新装了sql server 2008 发现sqlserver 服务没法起来 查看系统日志是7024如下 c sharp view plain copy 事件类型 错误 事件来源 Service Control Manager 事件种类 无
  • vue3 ref属性

    vue3 ref属性 操作单个DOM元素 操作单个DOM或者组件的流程 定义一个响应式变量 把变量返回给模板使用 模板中绑定上述返回的数据 可以通过info变量操作DOM或者组件实例
  • 求绝对值函数abs()到底应该包含哪个头文件

    C C 语言的标准库里包含求绝对值的函数abs 可是它到底是在哪个头文件里面声明的呢 C语言中 求整数的绝对值abs 和labs 应该包含stdlib h 求浮点数的绝对值fabs 应该包含math h 在C 中 只需要包括cmath即可
  • 半导体材料概述 -测试测量制造

    前言 半导体概述 半导体材料作为半导体产业链上游的重要环节 在芯片的生产制造过程中起到关键性作用 根据芯片制造过程划分 半导体材料主要分为基体材料 制造材料和封装材料 其中 基体材料主要用来制造硅晶圆或化合物半导体 制造材料主要是将硅晶圆或
  • CSAPP Datalab实验

    实 验 二 题 目 DataLab 数据表示 专 业 计算机科学与技术 计算机科学与技术学院 目 录 第1章 实验基本信息 4 1 1 实验目的 4 1 2 实验环境与工具 4 1 2 1 硬件环境 4 1 2 2 软件环境 4 1 2 3
  • 量化交易/基金爬虫(一)

    先说说这个python脚本的初衷 就是为了给将来的量化交易 实现自动化亏钱做一个基石 打一下基础 但是没想到的是 在写完这个脚本之后 仅仅两天时间 我全部的收益就被赔光 哭了 import requests from bs4 import
  • 数据库原理与应用第三版何玉洁第三章课后题答案

    1 关系模型的结构 关系操作 关系的完整性约束 2 1 笛卡尔积实际上就是一个二维表 2 主键也称为主关键字 时表中的属性或属性组 用于唯一的确定一个元组 3 候选键 一个属性或属性集能够唯一表示一个关系的元组而又不包括多余的属性 则改属性
  • Unicode字符编码表

    十进制 十六进制 字符数 编码分类 中文 编码分类 英文 起始 终止 起始 终止 个 0 127 0000 007F 128 C0控制符及基本拉丁文 C0 Control and Basic Latin 128 255 0080 00FF
  • 计算机网络属性设置方法,电脑网络连接属性怎么设置

    方法1在安装系统时对Internet连接进行设置在安装WindowsXP过程中 进行Internet连接设置时 可以按提示输入用户名和密码并设置成开机自动连接宽带 这样在安装完成后每次开机就能自动连接宽带了 方法2将宽带连接添加到启动组首先
  • vue导出excel表格vue-json-excel(最新超容易详细教程)

    最近写一个报名的小程序后台 需要导出页面表格为excel 实现这个功能所以记录一下 目前大多数采取的都是 xlsx 我这里使用的是vue json excel 相对来说更容易上手实现效果 安装依赖 npm install vue json
  • 消除过期的对象引用的理解

    什么是过期的对象引用 我们通过简单的栈实现来引入过期的对象引用 public class Stack private Object elements private int size 0 private static final int D
  • 转载1-Python 字符串操作

    Python 字符串操作 string替换 删除 截取 复制 连接 比较 查找 包含 大小写转换 分割等 1 去空格及特殊符号 s strip s lstrip s rstrip s strip lstrip rstrip 声明 s为字符串
  • 复制chrome请求头以及Copy as cURL直接转成python代码

    python爬虫经常需要复制浏览器请求头 之前都是用pycharm批量替换 今天想看看有啥方便的方法没 结果发现了超出预期的东西 chrome的Copy as cURL 和curl to python 下图是Copy as cURL pyt
  • 【基于python+flask的奥运会数据可视化分析-哔哩哔哩】 https://b23.tv/i6iMYGr

    基于python flask的奥运会数据可视化分析 哔哩哔哩 https b23 tv i6iMYGr https b23 tv i6iMYGr
  • 七牛云对象存储实现文件的上传与下载

    今天记录下通过七牛云文件存储来实现文件的上传与下载 文件上传 上传 throws FileNotFoundException private static void upload throws FileNotFoundException 构
  • Doris 导出表结构或数据

    MYSQLDUMP 导出表结构或数据 Doris 在0 15 之后的版本已经支持通过mysqldump 工具导出数据或者表结构 导出查询结果集 Apache Doris 使用示例 导出 导出 test 数据库中的 table1 表 mysq
  • Makefile 中:= ?= += =的区别

    原文链接 https www cnblogs com wanqieddy archive 2011 09 21 2184257 html 在Makefile中我们经常看到 这几个赋值运算符 那么他们有什么区别呢 我们来做个简单的实验 新建一
  • Vue中实现车辆轨迹回放(高德地图)功能:

    1 思路 1 先获取key gt 官网 https lbs amap com ref https console amap com 2 下载并导入依赖 npm install vue amap S 3 使用 2 官网 右上角控制台 3 使用
  • 1 评价类算法:层次分析法笔记(附Python代码)

    什么是评价类问题 题干中要求你确定评价指标 形成评价体系 常见的评价类算法有 层次分析法 TOPSIS法 熵权法 变异系数法 主成分分析法等等 一 原理 简称AHP 是指将与决策总是有关的元素分解成目标 准则 方案等层次 在此基础之上进行定