条理分析法的Python实现--数学建模学习日志 [复制链接]
发表于 2025-7-3 14:59:12 | 显示全部楼层 |阅读模式
数学建模角逐即将到来,各人应该都投身于学习当中了,b站上比较热门的一个课程是
b站数学建模学习视频
在这里讲解了数学建模常见的方法和写论文的要点,同时up主知心地有所有方法的源码实现,但是全部都是matlab的代码。作为计算机人,python对我肯定是要比matlab熟悉的,以是我本身在学习过程中研究了如何用python实现这些方法,在这里分享给各位!
一、条理分析法

条理分析法(Analytic Hierarchy Process)是一种由美国运筹学家托马斯·萨蒂(Thomas L. Saaty)于20世纪70年代提出的多准则决策方法。它将复杂问题分解为条理结构,通过定量与定性联合的方式,对备选方案进行优先排序。核心思想是通过构建判断矩阵,量化决策者的主观判断,最终计算各元素的权重。
重要分为以下几个步骤:(图片内容来自up主的 ppt)

  当然,讲解这个方法不是我这篇文章的重点,详细方法请到视频中观看,下面先容如何利用python实现条理分析方法。
二、Python实现条理分析法

1.导入相关库

条理分析法重要对矩阵进行操作,以是重要利用的是numpy库,各位如果想详细了解numpy库的各种操作,可以见我的这篇博客:
[numpy学习笔记](https://blog.csdn.net/2401_83372039/article/details/146212725?spm=1001.2014.3001.5501)
接下来重要就是代码的实现展示,我就不一一讲解numpy的操作了,各人可以照着我上面的博客来查用法,当作字典用即可。所有涉及用法上面均有!!!
  1. import numpy as np
复制代码
2.读取矩阵

A.size返回的是矩阵的尺寸是长乘宽的结果,shape是返回以元组形式储存的长和宽。条理分析法的矩阵都是方阵,以是随便生存一个即可。
输入矩阵:
[[1,2,5],[1/2,1,2],[1/5,1/2,1]]
  1. A=np.array(eval(input("请输入矩阵A=")))
  2. print(A)
  3. n=A.size    #这里的size结果是3*3=9
  4. n=A.shape[0]  #这里才是获取了行数
复制代码
[[1.  2.  5. ]
[0.5 1.  2. ]
[0.2 0.5 1. ]]
3.算数平均法求权重
  1. #按照列求总值
  2. A_sum=np.sum(A,axis=0)
  3. stand_A=A/A_sum
  4. print(stand_A)
  5. print("算数平均法求权值的结果为:")
  6. w1=np.sum(stand_A,axis=1)/n
  7. print(w1)
复制代码

4.特征值法求权重
  1. A_elg=np.linalg.eig(A)
  2. print(A_elg)  #eigenvalues是特征值,eigenvectors是特征向量
  3. max_elg=np.max(A_elg[0]).real
  4. print(max_elg)
  5. #获取最大特征值处的特征向量
  6. w2=A_elg[1][:,A_elg[0]==max_elg]
  7. print("特征值法求权值的结果为:")
  8. #归一化
  9. print(w2/np.sum(w2.real))
  10. #我们可以将两种方法平均
  11. w3=(w1+w2)/2
  12. w3
复制代码

条理分析法中,我们可以将两种方法联合起来,求个均值来作为我们的权重,当然要是不联合,更推荐利用特征值法求权重。
特征值和特征向量的计算会带上虚数,这里利用A.real来只是用实数部分。
留意, np.linalg.eig()函数会返回两个值,第一个是特征值第二个是特征向量,和matlab的相反。
5.计算一致性比例CR


  • 留意:第一步就应该要检验矩阵是否符合一致性,写此处只是为了编程方便!!!
[code]CI=(max_elg-n)/(n-1)RI=np.array( [0.00, 0.00, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49, 1.51, 1.54, 1.56, 1.58, 1.59])  #留意RI最大支持RI是n=15!!!CR=CI/RI[n-1]if CR

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表