当前位置:   article > 正文

层次分析法的python代码和原理

层次分析法的python代码和原理
  1. import torch
  2. # 输入判断矩阵
  3. print("输入判断矩阵")
  4. A_str = input("A=").split()
  5. # 使用input函数获取用户输入的字符串,并通过split方法将其分割成行列表。
  6. A = torch.tensor([[float(x) for x in row.split(',')] for row in A_str], dtype=torch.float32).cuda()
  7. # 使用列表推导式将每一行字符串分割成数字,并转换为浮点数,然后创建一个PyTorch张量(Tensor)。
  8. # 将张量的数据类型指定为torch.float32。
  9. # 使用.cuda()方法将张量移动到GPU上,以便进行GPU加速计算
  10. n = A.size(0) # 获取矩阵的行数,即n
  11. # 获取矩阵A的行数,并将其存储在变量n中。
  12. # 方法一 算术平均法求权重
  13. Sum_A = torch.sum(A, dim=0)
  14. Stand_A = A / Sum_A
  15. # 计算A的每一列的和,得到Sum_A。
  16. # 将矩阵A的每个元素除以其所在列的和,得到标准化后的矩阵Stand_A。
  17. print("平均值为")
  18. w1 = torch.sum(Stand_A, dim=1) / n
  19. print(w1)
  20. # 打印信息提示。
  21. # 计算标准化矩阵Stand_A的每一行的平均值,得到权重向量w1。
  22. # 打印权重向量w1
  23. # 方法二, 特征值法求权重
  24. eigenvalues, eigenvectors = torch.eig(A, eigenvectors=True)
  25. # 使用torch.eig函数计算矩阵A的特征值和特征向量。
  26. Max_eig = torch.max(eigenvalues[:, 0])
  27. index = torch.argmax(eigenvalues[:, 0])
  28. # 从特征值中找到最大的实部特征值,并存储在Max_eig中。
  29. # 找到最大特征值的索引,并存储在index中。
  30. print("特征值求权重的结果为:")
  31. w2 = eigenvectors[:, index] / torch.sum(eigenvectors[:, index])
  32. print(w2)
  33. # 打印信息提示。
  34. # 将对应的特征向量归一化,得到权重向量w2。
  35. # 打印权重向量w2。
  36. print("两种方法的平均值为:")
  37. print((w1 + w2) / 2)
  38. # 打印信息提示。
  39. # 计算两种方法得到的权重的平均值,并打印。
  40. # 计算一致性比例CR
  41. CI = (Max_eig - n) / (n - 1)
  42. # 计算一致性指标(CI),它是最大特征值与矩阵大小之差除以矩阵大小减1。
  43. RI = torch.tensor([0.0001, 0.52, 0.89, 1.12, 1.36, 1.41, 1.46, 1.49, 1.52, 1.54, 1.56, 1.58, 1.59],
  44. dtype=torch.float32).cuda()
  45. # 创建一个包含随机一致性指标(RI)值的张量,并将其移动到GPU上
  46. CR = CI / RI[n - 1]
  47. # 计算一致性比例(CR),它是CI除以对应的RI值
  48. print("最大特征值为:")
  49. print(Max_eig)
  50. print("一致性指标为CI=")
  51. print(CI)
  52. print("一致性比例为CR=")
  53. print(CR)
  54. # 打印最大特征值、一致性指标CI和一致性比例CR。
  55. if CR < 0.10:
  56. print("CR<0.10,该判断矩阵的一致性可以接受")
  57. else:
  58. print("注意,CR >=0.10,该判断举证需要进行修改!")
  59. # 根据CR的值判断矩阵的一致性是否可以接受,并打印相应的信息。如果CR小于0.10,则认为矩阵的一致性是可以接受的;否则,需要进行修改。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/958256
推荐阅读
相关标签
  

闽ICP备14008679号