评价类问题求解,加权和,积,信息熵法Topsis,层次分析法‘
时间: 2025-07-06 16:50:40 浏览: 23
### 不同评价方法的原理与应用
#### 加权和法 (Weighted Sum Method, WSM)
加权和法是一种多属性决策分析中的简单线性加权求和的方法。该方法通过对各个指标赋予相应的权重,再将各方案在各项指标上的表现值与其对应的权重相乘并求和来计算总分。这种方法假设所有属性之间相互独立,并且可以直接相加以得到最终评分。
```python
def weighted_sum_method(criteria_values, weights):
"""
计算给定标准下的加权和分数
:param criteria_values: 各项准则的表现列表
:param weights: 对应于每项准则的权重向量
:return: 总评价值
"""
return sum([value * weight for value, weight in zip(criteria_values, weights)])
```
此方法易于理解和实现,在实际操作中被广泛应用于资源分配等问题上[^1]。
#### 乘积法 (Multiplicative Form of Weighting Methods)
不同于加权和法,乘积法则利用指数函数的形式来进行组合评估。具体来说就是对于每一个备选方案i而言,其总的效用Ui可以表示为:
\[ U_i=\prod_{j=1}^{n}(a_j)^{w_j}, \]
其中\( a_j \)代表第 j 个属性的重要性系数而 \( w_j \) 是相应属性 i 的权重。这种方式能够更好地处理非线性的偏好关系,尤其适用于当某些因素之间的交互作用较强的情况。
#### 信息熵法 (Entropy Method)
基于香农的信息理论,信息熵用来衡量系统的不确定性水平。在多目标优化领域内,它用于确定最优解集里每个个体相对于其他成员的优势地位。通过计算每一列数据的概率分布及其对应的信息熵,进而得出相对接近理想状态的程度作为评判依据之一。
```python
import numpy as np
def entropy_weight(data_matrix):
"""根据输入的数据矩阵返回熵权"""
# 归一化后的概率矩阵Pij
pij = data_matrix / np.sum(data_matrix, axis=0)
# 防止log(0),这里加上一个小常数eps
eps = 1e-8
eij = -pij * np.log(pij + eps)
# 求得每列特征的信息熵Ej
Ej = np.mean(eij, axis=0)
# 权重Wj=(1-Ej)/(m*(1-sum(Ej)))
m = len(data_matrix.T)
Wj = (1 - Ej) / (m * (1 - sum(Ej)))
return Wj
```
这种方法有效地减少了人为干预带来的偏差,提高了模型预测精度[^3]。
#### TOPSIS 法 (Technique for Order Preference by Similarity to Ideal Solution)
TOPSIS 方法旨在找到最靠近正理想解(Best Compromise Solution)并且远离负理想解的最佳选项。所谓“理想”,指的是那些具有最高或最低数值特性的解决方案。为了量化这种距离概念,通常会引入欧几里德几何空间内的直线距离公式或者其他形式的距离测度工具。
```python
from scipy.spatial.distance import euclidean
def topsis_method(normalized_data, positive_ideal_solution, negative_ideal_solution):
"""
使用 Topsis 方法进行排序
参数:
normalized_data -- 已标准化的数据表
positive_ideal_solution -- 正理想解数组
negative_ideal_solution -- 负理想解数组
返回:
接近度 C* 和 排序索引
"""
distances_to_positive = [euclidean(row, positive_ideal_solution) for row in normalized_data]
distances_to_negative = [euclidean(row, negative_ideal_solution) for row in normalized_data]
closeness_coefficient = [
d_neg / (d_pos + d_neg)
for d_pos, d_neg in zip(distances_to_positive, distances_to_negative)]
sorted_indices = sorted(range(len(closeness_coefficient)), key=lambda k: closeness_coefficient[k], reverse=True)
return closeness_coefficient, sorted_indices
```
TOPSIS 提供了一种直观易懂的方式去理解复杂系统内部结构特性间的关联规律,因此非常适合于教育质量监测等领域中的绩效考核工作.
#### 层次分析法 (Analytic Hierarchy Process, AHP)
层次分析法由美国运筹学家萨蒂提出的一种多层次递阶结构体系下定量与定性相结合的有效手段。AHP 将复杂的整体分解成若干子部分构成有序等级框架图;随后针对同一层面的不同要素两两对比打分建立判断矩阵;最后经过一致性检验后获取单层元素间优先级顺序以及全局排序结果。
```python
def calculate_eigenvector(matrix):
eigenvalues, eigenvectors = np.linalg.eig(matrix)
max_index = np.argmax(abs(eigenvalues))
principal_vector = abs(eigenvectors[:,max_index])
norm_principal_vector = principal_vector/principal_vector.sum()
return norm_principal_vector.real.tolist()
def consistency_ratio(max_lambda, n):
ri_table = {1:0, 2:0, 3:0.58, 4:0.9, 5:1.12, 6:1.24, 7:1.32, 8:1.41}
ci = (max_lambda-n)/(n-1)
cr = ci/ri_table[n]
return cr
```
上述代码片段展示了如何从构建好的判断矩阵出发,提取最大特征根及对应的归一化的特征向量——即权重向量,并进一步验证所做估计的一致性比率CR是否小于预设阈值以确保合理性[^2]。
阅读全文
相关推荐


















