基于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的数学建模---多模糊评价的更多相关文章
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...
- Python数学建模-01.新手必读
Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...
- Python数学建模-02.数据导入
数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...
- Python小白的数学建模课-A1.国赛赛题类型分析
分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...
- Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评
新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...
- Python小白的数学建模课-07 选址问题
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型. 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型. 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法. ...
- Python小白的数学建模课-09 微分方程模型
小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...
- Python小白的数学建模课-B5. 新冠疫情 SEIR模型
传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. 考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫的传染病. 本 ...
- Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型
传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SEIR 模型考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫 ...
- Python小白的数学建模课-B4. 新冠疫情 SIR模型
Python小白的数学建模课-B4. 新冠疫情 SIR模型 传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SIR 模型将人群分为易感者(S类). ...
随机推荐
- js中new的原理
面向对象 在了解new的原理之前,先简单地了解一下构造函数和对象. js可以通过构造函数创建对象: function Test() { } var t = new Test(); 构造函数的首字母大写 ...
- 在Windows Server 2019上安装edge浏览器
在Windows 2016和2019的正式版本中是不带Edge浏览器的.有些工具.网站也不支持IE浏览器了.对于偶尔需要在服务器上访问这些站点的管理员来说有些不方便.不过可以通过安装三方浏览器或者Ed ...
- Kubernetes 监控--PromQL
Prometheus 通过指标名称(metrics name)以及对应的一组标签(label)唯一定义一条时间序列.指标名称反映了监控样本的基本标识,而 label 则在这个基本特征上为采集到的数据提 ...
- k8s控制器和Pod Template的关系
Pod 本身并不能自愈(self-healing).如果一个 Pod 所在的 Node (节点)出现故障,或者调度程序自身出现故障,Pod 将被删除:同理,当因为节点资源不够或节点维护而驱逐 Pod ...
- 如何评判一个企业是否需要实施erp系统?
一个企业是否需要实施ERP系统很大程度上取决于其规模.这里需要向提问者说明的一点是:很多企业上ERP,并不会用得到MRP,ERP是企业资源计划,不是制造业企业专用,MRP也不是ERP必须,金融.保险之 ...
- 云数据库技术|“重磅升级”后再测 TDSQL-C
来源:云数据库技术 标题 1.摘要 前段时间,测试了国内主要云原生数据库 PolarDB.TDSQL-C.GaussDB 的性能,参考:<再测云原生数据库性能>.在上次测试结果中,由于地域 ...
- 一个 dubbo 和 springboot 的兼容性问题
背景介绍 最近把dubbo的版本从2.7.3升级到2.7.15时,遇到一个报错 No application config found or it's not a valid config! ,对应的 ...
- TCP与UDP的联系与区别
TCP(Transmission Control Protocol,传输控制协议) 他是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接. 这说明TCP连接是一个非常复杂的过程,需 ...
- The project was not built due to "Could not delete '/XXX/WebRoot/WEB-INF/classes/library'.". Fix the problem, then try refreshing this project and building
在构建插件时提示如下错误: Description Resource Path Location Type The project was not built due to "Could n ...
- instanceof的使用和向下转型
x instanceof A:检验x是否为类A的对象,返回值为boolean型 使用情境:为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instance ...