您的位置:首页 > 教育 > 锐评 > 聊城手机网站建设电话_重庆网站建设服务价格_北京seo学校_河北软文搜索引擎推广公司

聊城手机网站建设电话_重庆网站建设服务价格_北京seo学校_河北软文搜索引擎推广公司

2024/12/7 9:07:15 来源:https://blog.csdn.net/2301_80401457/article/details/143689062  浏览:    关键词:聊城手机网站建设电话_重庆网站建设服务价格_北京seo学校_河北软文搜索引擎推广公司
聊城手机网站建设电话_重庆网站建设服务价格_北京seo学校_河北软文搜索引擎推广公司

一、评价决策类

1、层次分析法(AHP)

层次分析法用来评价或选择一个更好更优的决策或方案

通过找到可以衡量其好坏的指标,进而衡量指标,再形成评价体系

归一化处理

让指标在同一数量级,且保证在同一指标下其差距保持不变

操作:指标的数组[a b c]归一化处理得到[ a/(a+b+c) , b/(a+b+c) , c/(a+b+c) ]

但实际上每个指标的重要性是不同的,可以给每个指标上加上一个权重 

而如何科学的设定权重,则体现出层次分析法的主要作用

层次分析法是对一些较复杂模糊的问题作出决策的简易方法,其适用于难以完全定量分析的问题

模型原理

首先要把问题条理化、层次化,构造出一个有层次的结构模型。复杂问题被分解为元素的组成部分,上一层次的元素作为准则对下一层次有关元素起支配作用

层次可以分为三类:最高层、中间层、最底层

基本步骤

其中第二步构造判断矩阵,要对指标的重要性进行两两比较

矩阵中的元素aij的意义为:第i个指标相对于第j个指标的重要程度

 依次对变量进行两两比较,得到完整的判断矩阵

而因为两两比较的过程中忽略了其他因素,导致最后的结果可能出现矛盾

所以需要一致性检验 

一致性检验 

 

 

求权重 

Ⅰ.算数平均法

①用每一个元素除以所在列的和

② 每一行相加

③得出的一列数据除以n

Ⅱ.几何平均法

①根据n来开根号

②用每一个开根号后的元素除以所在列的和

Ⅲ.特征值法

求评分

Python代码

在数学建模中最常用的三个库:Numpy、Pandas、Matplotlib

Numpy

Numpy是Python中用于科学计算和数值操作的基础库,其提供了很多高性能的多维数组对象和用于处理数组的各种函数

Pandas

用来提供高性能,易于使用的数据结构和数据分析工具所用的库

Matplotlib

创建可视化的库,也就是用来绘图的

#1、一致性检验
import numpy as np#as np是将numpy库名命名为np,这样在使用的时候更加方便
#定义矩阵A
#np.array是NumPy库中的一个函数,用于创建数组,它可以将输入的对象(列表元组其他数组等)转换为NumPy数组
A=np.array([[1,2,3,5],[1/2,1,1/2,2],[1/3,2,1,2],[1/5,1/2,1/2,1]])#二维数组作矩阵
n=A.shape[0]#shape获取形状信息,获取A的行,1为获取A的列
#求最大特征值以及对应的特征向量
#np.linalg.eig是NumPy库中的一个函数,用于计算方阵的特征值和特征向量
#eig_val特征值,eig_vec特征向量
eig_val,eig_vec=np.linalg.eig(A)
Max_eig=max(eig_val)#求特征值最大值
CI=(Max_eig-n)/(n-1)
#这里n=2时,一定为一致矩阵,所以CI=0,为了避免分母为0,将这里的第二个元素改为了很接近0的正整数
RI=[0,0.0001,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]#这里RI最多支持n=15
CR=CI/RI[n-1]
print('一致性指标CI=',CI)
print('一致性比例CR=',CR)
if CR<0.10:print('因为CR<0.10,所以该判断矩阵A的一致性可以接受')
else:print('注意:CR>=0.10,因此该判断矩阵A需要进行修改')

#2、算数平均法求权重
import numpy as np
A=np.array([[1,2,3,5],[1/2,1,1/2,2],[1/3,2,1,2],[1/5,1/2,1/2,1]])
#计算每一列的和
#no.sum函数可以计算一维数组中所有元素的总和
#可以通过指定axis参数来计算多维数组在某个维度上的元素总和
#例如在二维数组中,axis=0表示按列计算总和,axis=1表示按行计算
ASum=np.sum(A,axis=0)
n=A.shape[0]#shape获取形状信息,获取A的行,1为获取A的列
#归一化,二维数组除以一维数组,会自动将一维数组扩展为与二维数组相同的形状,然后进行逐元素的除法运算
Stand_A=A/ASum
#各列相加到同一行
ASumr=np.sum(Stand_A,axis=1)
#计算权重向量
weights=ASumr/n
print(weights)

 #3、几何平均法求权重
import numpy as np
A=np.array([[1,2,3,5],[1/2,1,1/2,2],[1/3,2,1,2],[1/5,1/2,1/2,1]])
#将A中的每一行元素相乘得到一列向量
#np.prod函数可以计算一维数组中所有元素的乘积
prod_A=np.prod(A,axis=1)
n=A.shape[0]
#将新的向量的每个分量开n次方
#np.power函数可以对数组中的元素进行幂运算
prod_n_A=np.power(prod_A,1/n)
#归一化
re_prod_A=prod_n_A/np.sum(prod_n_A)
print(re_prod_A)

#4、特征值法求权重

2、优劣解距离法(Topsis)

Topsis法是常用的综合评价法,其结果能精确的反应各评价方案之间的差距

其引入两个基本概念:

理想解:最优的解(方案),各个属性都达到了备选方案中的最好值

负理想解:最劣的解(方案),各个属性都达到了备选方案中的最坏值

Topsis法通过最接近理想解且最远离负理想解来确定最优选择

原始矩阵正向化

将所有指标类型转换为极大型指标

正向化矩阵后,要将矩阵标准化

正向化矩阵标准化

 标准化的目的在于消除不同指标量纲的影响

 计算得分并归一化

模型原理

Topsis在多目标决策分析中是一种非常有效的方法。通过归一化后的矩阵,找出理想解和负理想解,分别计算各个目标与理想解和负理想解的距离,获得各个目标和理想解的贴进度,按照贴进度的大小排序,以此作为评价目标优劣的依据。

贴进度取值在0~1之间,值越接近1,则目标越接近最有水平

基本步骤

Python代码

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com