权重 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的数学建模---多模糊评价的更多相关文章

  1. 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

    函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...

  2. Python数学建模-01.新手必读

    Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...

  3. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  4. Python小白的数学建模课-A1.国赛赛题类型分析

    分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...

  5. Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评

    新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...

  6. Python小白的数学建模课-07 选址问题

    选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型. 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型. 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法. ...

  7. Python小白的数学建模课-09 微分方程模型

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...

  8. Python小白的数学建模课-B5. 新冠疫情 SEIR模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. 考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫的传染病. 本 ...

  9. Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SEIR 模型考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫 ...

  10. Python小白的数学建模课-B4. 新冠疫情 SIR模型

    Python小白的数学建模课-B4. 新冠疫情 SIR模型 传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SIR 模型将人群分为易感者(S类). ...

随机推荐

  1. KingbaseES V8R3 shared_buffer占用过多导致实例崩溃

    背景 有这样一个案例.客户备库意外宕机,从集群日志只看出发生了主备切换,备库一直持续恢复备库没有成功,从数据库日志看到如下报错: terminating connection because of c ...

  2. Windows Powershell安装错误

    今天需要更新一下VMware的 powercli.使用命令install-module -Name VMware.PowerCLI -AllowClobber但是遇到一个错误. Unable to r ...

  3. 如何在Windows中批量创建VMware的虚拟机

    在最近的工作中,需要创建一批类似的机器.在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署.系统中的计算机名,IP地址都可以自动的完成更新.唯一的缺点是,系统自带的向 ...

  4. Elasticsearch:正确使用regexp搜索

  5. host主机监控规则

    1.先在 Prometheus 主程序目录下创建rules目录,然后在该目录下创建 host.yml文件,内容如下: 内容很多,可以根据实际情况进行调整. 规则参考网址:https://awesome ...

  6. localStorage概要

    在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localSt ...

  7. python流程控制下-for、while循环补充

    循环结构之for循环 实现循环结构还可以用关键字for. for关键字 我们来看这一段代码: emotions = ['smile', 'laugh', 'cry', 'angry'] for emo ...

  8. MYSQL-->InnoDB引擎底层原理

    逻辑存储结构 逻辑存储结构图 表空间 表空间文件在Linux下存放在 /var/lib/mysql文件中的 xxx.ibd 文件就是表空间文件 表空间文件用来存储,记录,索引等数据. 段 段分为,数据 ...

  9. 测试Thread中的常用方法:

    测试Thread中的常用方法:start():启动当前线程:调用当前线程的run()run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread ...

  10. 代码块及final关键字的使用

    1.代码块的作用:用来初始化类.对象 2.代码块如果有修饰的话,只能使用static. 3.分类:静态代码块 vs 非静态代码块 4.静态代码块 内部可以有输出语句 随着类的加载而执行,而且只执行一次 ...