当前位置: 首页 > news >正文

基于距离的多指标决策——TOPSIS

文章目录

  • TOPSIS方法概述
  • 计算步骤
    • 1. 数据标准化
    • 2. 确定权重
    • 3. 计算加权标准化决策矩阵
    • 4. 确定理想解和负理想解
    • 5. 计算各评价对象与理想解和负理想解的距离
    • 6. 计算相对贴近度
    • 7. 根据相对贴近度进行排序
  • 示例
  • 结论

在多指标决策分析中,TOPSIS(逼近理想解排序法)因其直观和易于理解而广受欢迎。本文将深入探讨TOPSIS方法的计算步骤,并通过一个具体示例来演示其应用。

TOPSIS方法概述

TOPSIS是一种基于距离的多指标决策方法,它通过计算各备选方案与理想解和负理想解之间的距离来评价方案的优劣。理想解是所有指标最优值的集合,而负理想解则是所有指标最差值的集合。

计算步骤

1. 数据标准化

首先,需要对原始数据进行标准化处理,以消除不同指标量纲的影响。标准化公式如下:

r i j = x i j ∑ i = 1 m x i j 2 r_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{m}x_{ij}^2}} rij=i=1mxij2 xij

其中,( r_{ij} ) 是第 ( i ) 个评价对象在第 ( j ) 个指标上的标准化值,( x_{ij} ) 是原始数据。

2. 确定权重

接下来,确定各指标的权重。权重可以通过熵权法、专家打分法等方法获得。

3. 计算加权标准化决策矩阵

将标准化后的决策矩阵与权重相乘,得到加权标准化决策矩阵:

r ~ i j = w j r i j \tilde{r}_{ij} = w_j r_{ij} r~ij=wjrij

其中, w j w_j wj 是第 j j j 个指标的权重。

4. 确定理想解和负理想解

根据加权标准化决策矩阵,确定正理想解 A + A^+ A+和负理想解 A − A^- A

A + = { max ⁡ ( r ~ i j ∣ j ∈ J ) , min ⁡ ( r ~ i j ∣ j ∈ J ′ ) } A^+ = \{ \max(\tilde{r}_{ij}|j \in J), \min(\tilde{r}_{ij}|j \in J') \} A+={max(r~ijjJ),min(r~ijjJ)}
A − = { min ⁡ ( r ~ i j ∣ j ∈ J ) , max ⁡ ( r ~ i j ∣ j ∈ J ′ ) } A^- = \{ \min(\tilde{r}_{ij}|j \in J), \max(\tilde{r}_{ij}|j \in J') \} A={min(r~ijjJ),max(r~ijjJ)}

其中, J J J 表示效益型指标的集合, J ′ J' J 表示成本型指标的集合。

  • 正理想解是所有效益型指标最大化和成本型指标最小化的解。
  • 负理想解是所有效益型指标最小化和成本型指标最大化的解。

5. 计算各评价对象与理想解和负理想解的距离

计算每个评价对象与正理想解和负理想解的距离:

d i + = ∑ j = 1 n ( r ~ i j − r j ∗ ) 2 d_i^+ = \sqrt{\sum_{j=1}^{n}(\tilde{r}_{ij} - r_j^*)^2} di+=j=1n(r~ijrj)2
d i − = ∑ j = 1 n ( r ~ i j − r j − ) 2 d_i^- = \sqrt{\sum_{j=1}^{n}(\tilde{r}_{ij} - r_j^-)^2} di=j=1n(r~ijrj)2

6. 计算相对贴近度

相对贴近度是评价对象与理想解的距离与评价对象与理想解和负理想解距离之和的比值:

C i = d i − d i + + d i − C_i = \frac{d_i^-}{d_i^+ + d_i^-} Ci=di++didi

7. 根据相对贴近度进行排序

根据相对贴近度对评价对象进行排序,贴近度越大的评价对象越优。

示例

假设有3个评价对象A、B、C,2个指标X1和X2,原始数据如下:

评价对象X1X2
A410
B68
C86

假设通过某种方法(例如熵权法)确定了以下权重:

  • X1的权重为 w 1 = 0.5 w_1 = 0.5 w1=0.5
  • X2的权重为 w 2 = 0.5 w_2 = 0.5 w2=0.5

示例计算

  1. 数据标准化
    r A 1 = 4 4 2 + 1 0 2 , r A 2 = 10 4 2 + 1 0 2 r_{A1} = \frac{4}{\sqrt{4^2 + 10^2}}, r_{A2} = \frac{10}{\sqrt{4^2 + 10^2}} rA1=42+102 4,rA2=42+102 10
    r B 1 = 6 6 2 + 8 2 , r B 2 = 8 6 2 + 8 2 r_{B1} = \frac{6}{\sqrt{6^2 + 8^2}}, r_{B2} = \frac{8}{\sqrt{6^2 + 8^2}} rB1=62+82 6,rB2=62+82 8
    r C 1 = 8 8 2 + 6 2 , r C 2 = 6 8 2 + 6 2 r_{C1} = \frac{8}{\sqrt{8^2 + 6^2}}, r_{C2} = \frac{6}{\sqrt{8^2 + 6^2}} rC1=82+62 8,rC2=82+62 6

  2. 计算加权标准化决策矩阵

    r ~ A 1 = 0.5 × r A 1 , r ~ A 2 = 0.5 × r A 2 \tilde{r}_{A1} = 0.5 \times r_{A1}, \tilde{r}_{A2} = 0.5 \times r_{A2} r~A1=0.5×rA1,r~A2=0.5×rA2
    r ~ B 1 = 0.5 × r B 1 , r ~ B 2 = 0.5 × r B 2 \tilde{r}_{B1} = 0.5 \times r_{B1}, \tilde{r}_{B2} = 0.5 \times r_{B2} r~B1=0.5×rB1,r~B2=0.5×rB2
    r ~ C 1 = 0.5 × r C 1 , r ~ C 2 = 0.5 × r C 2 \tilde{r}_{C1} = 0.5 \times r_{C1}, \tilde{r}_{C2} = 0.5 \times r_{C2} r~C1=0.5×rC1,r~C2=0.5×rC2

  3. 确定理想解和负理想解

    A ∗ = ( max ⁡ ( r ~ A 1 , r ~ B 1 , r ~ C 1 ) , max ⁡ ( r ~ A 2 , r ~ B 2 , r ~ C 2 ) ) A^* = \left( \max(\tilde{r}_{A1}, \tilde{r}_{B1}, \tilde{r}_{C1}), \max(\tilde{r}_{A2}, \tilde{r}_{B2}, \tilde{r}_{C2}) \right) A=(max(r~A1,r~B1,r~C1),max(r~A2,r~B2,r~C2))
    A − = ( min ⁡ ( r ~ A 1 , r ~ B 1 , r ~ C 1 ) , min ⁡ ( r ~ A 2 , r ~ B 2 , r ~ C 2 ) ) A^- = \left( \min(\tilde{r}_{A1}, \tilde{r}_{B1}, \tilde{r}_{C1}), \min(\tilde{r}_{A2}, \tilde{r}_{B2}, \tilde{r}_{C2}) \right) A=(min(r~A1,r~B1,r~C1),min(r~A2,r~B2,r~C2))

  4. 计算距离和相对贴近度

    根据上述公式计算每个评价对象的 d i + d_i^+ di+, d i − d_i^- di,和 C i C_i Ci

import numpy as np# 原始数据
data = np.array([[4, 10],  # 对象A[6, 8],   # 对象B[8, 6]    # 对象C
])# 权重,假设X1和X2都是0.5
weights = np.array([0.5, 0.5])# 1. 数据标准化
sum_squared = np.sum(data**2, axis=0)
r = data / np.sqrt(sum_squared)# 2. 计算加权标准化决策矩阵
r_weighted = r * weights# 3. 确定理想解和负理想解
# 假设所有指标都是效益型指标
A_star = np.max(r_weighted, axis=0)
A_neg = np.min(r_weighted, axis=0)# 4. 计算各评价对象与理想解和负理想解的距离
distance_to_ideal = np.sqrt(np.sum((r_weighted - A_star) ** 2, axis=1))
distance_to_negative_ideal = np.sqrt(np.sum((r_weighted - A_neg) ** 2, axis=1))# 5. 计算相对贴近度
closeness_values = distance_to_negative_ideal / (distance_to_ideal + distance_to_negative_ideal)# 6. 根据相对贴近度进行排序
sorted_indices = np.argsort(closeness_values)[::-1]  # 从大到小排序# 输出结果
print("评价对象排序索引:", sorted_indices)
print("相对贴近度:", closeness_values[sorted_indices])# 将排序结果与评价对象关联
sorted_objects = ['A', 'B', 'C']
print("评价对象排序结果:", [sorted_objects[i] for i in sorted_indices])

结论

TOPSIS方法通过计算评价对象与正理想解和负理想解的距离来评价其优劣,是一种简单、直观且易于实现的方法。
在实际应用中,应注意合理选择权重,并对数据进行适当的预处理,以确保评价结果的准确性和可靠性。如果你有任何问题或需要进一步的指导,请随时联系我们。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 配置frp实现内网穿透(.toml配置文件)
  • 基于python的百度迁徙迁入、迁出数据分析(六)
  • springboot学习笔记第一天
  • CF962 E. Decode
  • 「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(四)
  • Python爬虫技术 第27节 API和RESTful服务
  • DITA的优点和缺点
  • 不可错过的2024翻译工具合集,提升沟通效率必备
  • windbg dmp文件
  • 网络安全之扫描探测阶段攻防手段(二)
  • 基于WEB的仓库管理系统的设计与实现
  • 阿里云上快速部署Dify社区版
  • Matlab|考虑大规模电动汽车接入电网的双层优化调度策略
  • transform详解
  • vite解决前端跨域步骤
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  •  D - 粉碎叛乱F - 其他起义
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6简单总结(搭配简单的讲解和小案例)
  • Java Agent 学习笔记
  • JDK9: 集成 Jshell 和 Maven 项目.
  • jquery cookie
  • js操作时间(持续更新)
  • Magento 1.x 中文订单打印乱码
  • nginx 配置多 域名 + 多 https
  • node.js
  • Python实现BT种子转化为磁力链接【实战】
  • Python学习之路16-使用API
  • Redis中的lru算法实现
  • sublime配置文件
  • Travix是如何部署应用程序到Kubernetes上的
  • Vultr 教程目录
  • 工作手记之html2canvas使用概述
  • 构建工具 - 收藏集 - 掘金
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 软件开发学习的5大技巧,你知道吗?
  • -- 数据结构 顺序表 --Java
  • 因为阿里,他们成了“杭漂”
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #LLM入门|Prompt#3.3_存储_Memory
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.ajax,axios,fetch三种ajax请求的区别
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)(1.9) MSP (version 4.2)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (译)2019年前端性能优化清单 — 下篇
  • (转) 深度模型优化性能 调参