2026/1/7 4:22:03
网站建设
项目流程
临安市住房和建设局网站,最常用的网页制作软件,长春网络优化最好的公司,新乡商城网站建设哪家专业综合评价模型#xff1a;层次-熵权-变异系数-博弈组合法
Python 实现指南 V1.0
核心理念#xff1a;该模型旨在解决单一赋权法#xff08;如仅用AHP或仅用熵权法#xff09;的局限性。通过引入博弈论#xff0c;将主观权重#xff08;层次分析法/AHP#xff09;与客观权…综合评价模型层次-熵权-变异系数-博弈组合法Python 实现指南 V1.0核心理念该模型旨在解决单一赋权法如仅用AHP或仅用熵权法的局限性。通过引入博弈论将主观权重层次分析法/AHP与客观权重熵权法/变异系数法进行“谈判”最终得出最优的综合权重。 模型架构解析本模型融合了定性与定量分析主要分为四个核心模块主观赋权 (Subjective)层次分析法 (AHP)基于专家经验判断指标的重要性构建判断矩阵并归一化得到主观权重WsubWsub。特点: 考虑了人的认知与偏好。缺点: 容易受专家主观臆断影响。客观赋权 (Objective)熵权-变异系数法基于数据本身的离散程度信息量来确定权重得到客观权重WobjWobj。特点: 数据说话剔除无效指标。缺点: 忽略了指标的实际意义。博弈组合 (Game Theory)纳什均衡将主客观权重视为两个博弈方。通过迭代计算寻找双方的平衡点消除偏差得到最优组合权重WoptWopt。综合评价 (Synthesis)加权求和利用WoptWopt对标准化后的指标得分进行加权得出最终的综合评价值。 Python 代码实现以下代码展示了如何利用 numpy 和 pandas 实现上述逻辑。为了简化演示我们假设已经完成了 AHP 判断矩阵的构建。import numpy as npimport pandas as pddef calculate_ahp_weight(matrix): “” 计算层次分析法(AHP)权重 :param matrix: 判断矩阵 (n x n) :return: 权重向量 “” # 1. 计算几何平均列 geo_mean np.prod(matrix, axis0) ** (1/len(matrix))2. 归一化得到权重 weights geo_mean / sum(geo_mean) return weightsdef calculate_entropy_weight(data): “” 计算熵权法权重 :param data: 标准化后的数据矩阵 (m x n) :return: 客观权重向量 “” # 1. 数据平移 (非负化) data data - data.min()2. 计算比重 p data / data.sum(axis0)3. 计算熵值 e -np.sum(p * np.log(p 1e-9), axis0) / np.log(len(data))4. 计算差异系数 g 1 - e5. 归一化得到权重 weights g / sum(g) return weightsdef game_theory_combination(w_sub, w_obj, iterations100): “” 博弈组合赋权 (模拟纳什均衡) :param w_sub: 主观权重 :param w_obj: 客观权重 :return: 最终组合权重 “” # 初始化权重 w_final w_subfor _ in range(iterations): # 简单的迭代逼近算法 # 这里采用一种简化的共识模型最终权重是主客观权重的加权平均 # 在实际博弈中通常需要更复杂的约束条件求解 alpha 0.5 # 假设双方初始权重相等 w_new alpha * w_sub (1 - alpha) * w_obj如果变化极小则停止 if np.allclose(w_final, w_new): breakw_final w_newreturn w_final— 模拟数据 —# 假设有 3 个评价对象4 个指标np.random.seed(42)data np.random.rand(3, 4) * 100 # 随机生成数据df pd.DataFrame(data, columns[‘指标A’, ‘指标B’, ‘指标C’, ‘指标D’])1. 主观赋权 (AHP)# 构造一个简单的判断矩阵 (示例)ahp_matrix np.array([ [1, 3, 5, 2], [1/3, 1, 2, 1], [1/5, 1/2, 1, 1/3], [1/2, 1, 3, 1]])w_sub calculate_ahp_weight(ahp_matrix)2. 客观赋权 (熵权法)# 先对数据进行标准化 (Min-Max)data_std (data - data.min()) / (data.max() - data.min())w_obj calculate_entropy_weight(data_std)print(f主观权重 (AHP): {w_sub}“)print(f客观权重 (Entropy): {w_obj}”)3. 博弈组合w_comb game_theory_combination(w_sub, w_obj)print(“\n— 最终组合权重 —”)print(f组合权重: {w_comb})4. 综合得分# 假设我们使用组合权重对原始数据(已标准化)进行加权求和final_scores np.dot(data_std, w_comb)print(“\n— 最终评价结果 —”)print(final_scores)查看代码运行结果示例⚖️ 方法优劣分析Pros全面性结合了专家经验主观与数据实证客观。科学性通过博弈论消除了主客观权重之间的冲突结果更具说服力。灵活性可根据需求调整博弈过程中的参数如迭代次数或初始权重比例。Cons计算复杂相比单一方法博弈组合的数学推导较为繁琐。依赖输入AHP 阶段仍需依赖专家打分若专家水平参差不齐会影响结果。 下一步建议0/3 Completed数据预处理: 确保数据无量纲化标准化特别是正向/负向指标的处理。AHP矩阵校验: 必须进行一致性检验CR 0.1否则需重新修正判断矩阵。算法优化: 上述代码中的 game_theory_combination 仅为简化版实际工程中可引入拉格朗日乘数法求解纳什均衡。了解 AHP 一致性检验查看 TOPSIS 结合方案下载完整 Jupyter Notebook