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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

基于python的数学建模---多模糊评价

發布時間:2023/10/11 综合教程 106 老码农
生活随笔 收集整理的這篇文章主要介紹了 基于python的数学建模---多模糊评价 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

權重 ak的確定——頻數統計法

選取正整數p的方法

畫箱形圖   取1/4與3/4的距離(IQR)  ceil()取整

代碼:

import numpy as np
def frequency(matrix,p):
'''
頻數統計法確定權重
:param matrix: 因素矩陣
:param p: 分組數
:return: 權重向量
'''
A = np.zeros((matrix.shape[0]))
for i in range(0, matrix.shape[0]):
## 根據頻率確定頻數區間列表
row = list(matrix[i, :])
maximum = max(row)
minimum = min(row)
gap = (maximum - minimum) / p
row.sort()
group = []
item = minimum
while(item < maximum):
group.append([item, item + gap])
item = item + gap
print(group)
# 初始化一個數據字典,便于記錄頻數
dataDict = {}
for k in range(0, len(group)):
dataDict[str(k)] = 0
# 判斷本行的每個元素在哪個區間內,并記錄頻數
for j in range(0, matrix.shape[1]):
for k in range(0, len(group)):
if(matrix[k, j] >= group[k][0]):
dataDict[str(k)] = dataDict[str(k)] + 1
break
print(dataDict)
# 取出最大頻數對應的key,并以此為索引求組中值
index = int(max(dataDict,key=dataDict.get))
mid = (group[index][0] + group[index][1]) / 2
print(mid)
A[i] = mid
A = A / sum(A[:]) # 歸一化
return A

權重 ak的確定——模糊層次分析法

代碼:

import numpy as np

def AHP(matrix):
if isConsist(matrix):
lam, x = np.linalg.eig(matrix)
return x[0] / sum(x[0][:])
else:
print("一致性檢驗未通過")
return None def isConsist(matrix):
'''
:param matrix: 成對比較矩陣
:return: 通過一致性檢驗則返回true,否則返回false
'''
n = np.shape(matrix)[0]
a, b = np.linalg.eig(matrix)
maxlam = a[0].real
CI = (maxlam - n) / (n - 1)
RI = [0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45]
CR = CI / RI[n - 1]
if CR < 0.1:
return True, CI, RI[n - 1]
else:
return False, None, None

import numpy as np

def appraise(criterionMatrix, targetMatrixs, relationMatrixs):
'''
:param criterionMatrix: 準則層權重矩陣
:param targetMatrix: 指標層權重矩陣列表
:param relationMatrixs: 關系矩陣列表
:return:
'''
R = np.zeros((criterionMatrix.shape[1], relationMatrixs[0].shape[1]))
for index in range(0, len(targetMatrixs)):
row = mul_mymin_operator(targetMatrixs[index], relationMatrixs[index])
R[index] = row
B = mul_mymin_operator(criterionMatrix, R)
return B / sum(B[:]) def mul_mymin_operator(A, R):
B = np.zeros(1, R.shape[1])
for column in range(1, R.shape[1]):
list = []
for row in range(1, R.shape[0]):
list = list.append(A[row] * R[row, column])
B[0, column] = mymin(list)
return B def mymin(list):
global temp
for index in range(1, len(list)):
if index == 1:
temp = min(1, list[0] + list[1])
else:
temp = min(1, temp + list[index])
return temp

總結

以上是生活随笔為你收集整理的基于python的数学建模---多模糊评价的全部內容,希望文章能夠幫你解決所遇到的問題。

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