数学建模——层次分析法Python代码

import numpy as np
class AHP:
“”"
相关信息的传入和准备
“”"

def __init__(self, array):## 记录矩阵相关信息self.array = array## 记录矩阵大小self.n = array.shape[0]# 初始化RI值,用于一致性检验self.RI_list = [0, 0, 0.52, 0.89, 1.12, 1.26, 1.36, 1.41, 1.46, 1.49, 1.52, 1.54, 1.56, 1.58,1.59]# 矩阵的特征值和特征向量self.eig_val, self.eig_vector = np.linalg.eig(self.array)# 矩阵的最大特征值self.max_eig_val = np.max(self.eig_val)# 矩阵最大特征值对应的特征向量self.max_eig_vector = self.eig_vector[:, np.argmax(self.eig_val)].real# 矩阵的一致性指标CIself.CI_val = (self.max_eig_val - self.n) / (self.n - 1)# 矩阵的一致性比例CRself.CR_val = self.CI_val / (self.RI_list[self.n - 1])"""
一致性判断
"""def test_consist(self):# 打印矩阵的一致性指标CI和一致性比例CRprint("判断矩阵的CI值为:" + str(self.CI_val))print("判断矩阵的CR值为:" + str(self.CR_val))# 进行一致性检验判断if self.n == 2:  # 当只有两个子因素的情况print("仅包含两个子因素,不存在一致性问题")else:if self.CR_val < 0.1:  # CR值小于0.1,可以通过一致性检验print("判断矩阵的CR值为" + str(self.CR_val) + ",通过一致性检验")return Trueelse:  # CR值大于0.1, 一致性检验不通过print("判断矩阵的CR值为" + str(self.CR_val) + "未通过一致性检验")return False"""
算术平均法求权重
"""def cal_weight_by_arithmetic_method(self):# 求矩阵的每列的和col_sum = np.sum(self.array, axis=0)# 将判断矩阵按照列归一化array_normed = self.array / col_sum# 计算权重向量array_weight = np.sum(array_normed, axis=1) / self.n# 打印权重向量print("算术平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""
几何平均法求权重
"""def cal_weight__by_geometric_method(self):# 求矩阵的每列的积col_product = np.product(self.array, axis=0)# 将得到的积向量的每个分量进行开n次方array_power = np.power(col_product, 1 / self.n)# 将列向量归一化array_weight = array_power / np.sum(array_power)# 打印权重向量print("几何平均法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight"""
特征值法求权重
"""def cal_weight__by_eigenvalue_method(self):# 将矩阵最大特征值对应的特征向量进行归一化处理就得到了权重array_weight = self.max_eig_vector / np.sum(self.max_eig_vector)# 打印权重向量print("特征值法计算得到的权重向量为:\n", array_weight)# 返回权重向量的值return array_weight

if name == “main”:
# 给出判断矩阵
b = np.array([[1, 1 / 3, 1 / 8], [3, 1, 1 / 3], [8, 3, 1]])

# 算术平均法求权重
weight1 = AHP(b).cal_weight_by_arithmetic_method()
# 几何平均法求权重
weight2 = AHP(b).cal_weight__by_geometric_method()
# 特征值法求权重
weight3 = AHP(b).cal_weight__by_eigenvalue_method()

数学建模——层次分析法Python代码相关推荐

  1. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

  2. [清风数学建模]层次分析法(AHP)笔记及代码实现

    本文章是学习清风老师数学建模视频后所做的笔记,其中一些图片及代码实现来源于清风老师的B站视频: [强烈推荐]清风:数学建模算法.编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilib ...

  3. 数学建模 层次分析法

    层次分析法介绍 层次分析法是对一些较为复杂而且模糊的问题做出分析的一种简易方法,它适用于解决难以完全定量的问题. 该方法在数学建模中运用较多,但是主观因素很大,特别是构造成对比较矩阵的时候,必须要有完 ...

  4. 数学建模层次分析法例题及答案_斩获国际特等奖!兰理工数学建模团队为百年校庆献礼...

    近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布. 兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(Outstanding Winner)1项.一等奖(Meritorious ...

  5. 数学建模 --- 层次分析法(AHP模型)

    层次分析法 评价类问题 该问题思路 选出相关指标,求各个指标之间的权重 和 对某个指标而言各个选择权重(分而治之思想) 计算每个方案的得分 层次分析法 层次分析法第一步 --- 层次结构图 层次分析法 ...

  6. 数学建模层次分析法一致性检验建立

    2023年2月11日,备赛美赛复习建模需要使用的算法.在复习层次分析法的过程可以发现,层次分析法建立判断矩阵时具有强主观性,这个时候就需要建立一致性检验,对模型的差异性进行评估. 计算一致性比例: ​ ...

  7. 数学建模-层次分析法

    决策 层次分析法原理 相对重要权值的确定 算法步骤 目标层 准则层 方案层 层次分析法解决旅游问题 B1~B5表示 5个属性对于三地的各个重要性 通过层次分析矩阵 得到 各个属性相对于目标的权重. 最 ...

  8. 数学建模|层次分析法笔记

    一.什么是层次分析法?  定义: 由目标.方案.指标三部分组成. 框架图: 1.含子准则: 2.方案多种(方案交叉): 3.一对多(一准则多方案,方案不交叉): 二.层次分析法如何设计? 层次分析法步 ...

  9. 数学建模层次分析法例题及答案_【热门推荐】影响力意志力创新力、数学建模简明教程...

    <影响力•意志力•创新力> 索书号:B848.4-49/1028 作者:邢群麟编著 出版社:浙江工商大学出版社,2018 馆藏地:新馆304室 简介:本书在总结众多成功人士经验的基础上, ...

最新文章

  1. Django 模型查询2.3
  2. HashSet 详解
  3. java之yield(),sleep(),wait()区别详解
  4. 26 款阿里超神 Java 开源项目,看看你用过几个?
  5. java代码执行流程
  6. API测试工具SoapUI Postman对比分析
  7. NormalMap 贴图 [转]
  8. php 缺少 wordpress,Wordpress localhost安装错误 - 您的PHP安装似乎缺少WordPress所需的MySQL扩展程序...
  9. CAS单点登陆的两个原理图
  10. 机械厂html5手机模板,营销型机械消费设备企业通用织梦模板(带html5手机端) v1.0...
  11. 热胀冷缩,但为什么水结冰体积会膨胀?
  12. mysql ddl 锁_MySQL Online DDL导致全局锁表案例分析
  13. ELK下es索引管理工具-curator
  14. 解压软件Bandizip Archiver for mac
  15. 如何通过FTP从Mac快速发送和接收文件
  16. 高电压与绝缘技术方向,代做EMTP,ATP输电线路防雷仿真
  17. XCTF练习题---MISC---simple_transfer
  18. 计算机课ppt插入图片,PPT中图片的巧妙切换 -电脑资料
  19. 天雁计算机TY-82MS-4说明书,怎样用天雁TY-82MS-4计算器做一次和二次函数,跪谢!...
  20. Xmanager7 解决图形显示问题

热门文章

  1. 图解 Hibernate,session.close(),session.clear()区别
  2. java 中组合与复用_可复用性和组合
  3. 计算机端口封闭,如何查询局域网内被封的电脑端口?
  4. Linux什么是文件IO,linux中文件IO
  5. python 中float 的语法_python语法和基本数据类型
  6. 绿色计算在数据中心的应用及节能效果浅析
  7. 通过options探测服务器信息,OPTIONS 方法在跨域请求(CORS)中的应用
  8. mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
  9. 成功解决ERROR: Could not find a version that satisfies the requirement xgboost (from versions: none) ERR
  10. ML之ME/LF:机器学习中回归预测模型评估指标(MSE/RMSE/MAE)简介、使用方法、代码实现、案例应用之详细攻略