日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/21 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学建模——层次分析法Python代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數學建模——層次分析法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代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。