评价类_基于熵权法对Topsis模型的修正 (清风数学建模)

基于熵权法对Topsis 模型的修正

熵权法的计算步骤

第一步 非负性

第二步 归一化

计算

### 使用熵权法改进TOPSIS模型的方 #### 方概述 传统的TOPSIS依赖于主观赋予权重来衡量不同指标的重要性。然而,这种方可能导致结果偏差,因为人为设定的权重可能无完全反映实际情况。为了克服这一局限性,可以引入熵权法自动计算各个指标的客观权重。 熵权法通过分析数据本身的离散程度来确定各指标的重要度。具体来说,如果某个指标的数据差异较大,则该指标对于区分备选方案更为重要;反之则不那么重要。因此,利用熵权法能够更科学合理地分配权重给不同的评估标准[^2]。 #### 改进后的流程说明 1. **数据预处理** - 对原始数据进行必要的清洗和转换操作; - 将所有效益型指标转化为成本型指标或相反(视具体情况而定),使得后续计算统一方向上的最优解。 2. **标准化处理** - 鉴于不同量纲之间可能存在数量级差异,在比较之前需先做无量纲化变换。 3. **构建概率矩阵并求取信息熵** - 根据标准化后的数值建立相应的概率分布表; - 应用公式\[E_j=-k\sum_{i=1}^{m}(p_{ij}\ln p_{ij})\]计算第\(j\)项特征的信息熵值,其中\(k=\frac{1}{\ln m}\),\(m\)表示样本总数。\(^4] 4. **获取信息效用值与权重向量** - 利用\[g_j=(1-E_j)\]得到各项属性的信息效用值; - 权重定义为:\[\omega_j=\frac{g_j}{\sum g_i}, i \in [1,n]\],这里n代表总的属性数目. 5. **计算加权规范化决策矩阵中的理想点坐标** - 正理想解(A+)\[A^+=max(\omega_iz_{ij}), j \in J_B; min(\omega_iz_{ij}), j \in J_C\] - 负理想解(A-)\[A^-=min(\omega_iz_{ij}), j \in J_B; max(\omega_iz_{ij}), j \in J_C\] 这里,\(J_B,J_C\)分别指代收益, 成本指标集合.\(^1] 6. **测量相对接近度** - 分别求得每个待评对象到正负理想点的距离D+, D-, 并据此得出贴近度C*. 7. **排序输出最终结果** ```python import numpy as np from math import log def entropy_weight(data): """Calculate the weight vector using Entropy Method""" # Step 0: Data Preprocessing & Normalization norm_data = data / np.sum(data, axis=0) # Step 1: Construct Probability Matrix P and Calculate Information Entropy E prob_matrix = norm_data / np.tile(np.sum(norm_data, axis=0), (data.shape[0], 1)) epsilon = 1e-6 # Avoid division by zero error when calculating ln(p_ij) info_entropy = -np.sum(prob_matrix * np.log(prob_matrix + epsilon), axis=0) / log(len(data)) # Step 2: Get Utility Value G And Weight Vector Omega utility_value = 1 - info_entropy omega_vector = utility_value / sum(utility_value) return omega_vector if __name__ == "__main__": # Example dataset with three attributes for five alternatives example_dataset = np.array([[0.8, 0.6, 0.9], [0.7, 0.8, 0.7], [0.6, 0.9, 0.6], [0.9, 0.7, 0.8], [0.7, 0.7, 0.7]]) weights = entropy_weight(example_dataset) print(f"Weights calculated via Entropy Method are {weights}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值