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


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

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值