python数学实验与建模,数学建模 Python

  python数学实验与建模,数学建模 Python

  数学建模——TOPSIS综合评价模型Python代码

  正电码

  将numpy作为np #导入numpy包,并将其命名为np。

  # #定义一个正的函数。

  定义正定性(x,type,I):

  x:对应于要规范化的索引的原始向量typ:索引类型(1:最小,2:中间,3:区间)I:如果type==1,则正在处理原始矩阵的哪一列:# minimal print(第一个,I,列最小,正在规范化.)POSIT _ X=X .对列的极小处理)print ( -列是中间类型)best=int(input(请输入最佳值:))m=(ABS (x-best))。max()POSIT _ x=1-ABS(x-best)/m print( first ,I,列中间处理完成)print ( - B=[int(l) for l in input(按顺序输入最佳区间的左右界,用逗号分隔:)。Split(,)] m=(NP。Append (A-X.min()、X.max ()-b))。max () x _ row=x.shape [0] #获取x posit_x=np.zeros的行数((x _ row,1),Dtype=float)for r in range(x _ row):if x[r]a:POSIT _ x[r]=1-(a-x[r])/MELIF x[r]b:POSIT _ x[r]=1-(x[r]-b)列间隔处理完成)print(-a

  X _ mat=np.loadtxt (river.csv ,编码= UTF-8-SIG ,分隔符=,)# csv格式文件推荐使用。

  第二步:确定是否需要转发N,m=x _ mat.shape。

  打印(“合计”,n,“评价对象”,m,“评价指标”)

  Judge=int(输入("指标是否需要前向处理,必要时请输入1,不需要时输入0:"))

  如果judge==1:

  position=NP . array([int(I)for I in input("请输入待处理指标的列,例如,如果需要处理1、3、4列,则输入1、3、4 ")。拆分(,)])

  位置=位置-1

  typ=NP . array([int(j)for j in input("请按顺序输入这些列的索引类型(1: minimal,2: intermediate,3: interval)格式同上")。拆分(,)])

  对于范围内的k(position . shape[0]):

  x_mat[:position[k]]=正定性(x_mat[:position[k]],typ[k],position[k])

  Print("归一化后的矩阵:",x_mat)

  第三步:标准化归一化矩阵TEP _ X1=(x _ mat * x _ mat)。SUM (axis=0) #每个元素都被平方并按列相加。

  Tep_x2=np.tile(tep_x1,(n,1)) #将矩阵tep_x1平铺n行。

  Z=x_mat/((tep_x2) ** 0.5) # Z为标准化矩阵。

  Print("标准化矩阵是:",z)

  第四步:从最大值和最小值计算距离,计算得分tep_max=Z.max(0) #得到z中各列的最大值。

  Tep_min=Z.min(0) #每列的最小值

  TEP _ A=Z-NP。Tile (tep_max,(N,1)) #将tep_max向下平铺N行,并与z中的每个对应元素产生差异

  TEP _ I=Z-NP。Tile (TEP _最小,(n,1)) #将步长_最大值向下平铺n行,并对z中的每个对应元素进行差分

  D _ P=((TEP _ A * * 2)。SUM (axis=1)) * *距离最大值0.5 # D的距离矢量

  D_N=((tep_i ** 2)。sum(轴=1)) ** 0.5

  S=D_N/(D_P D_N) #非标准化分数

  std_S=S/S.sum(轴=0)

  sorted_S=np.sort(std_S,axis=0)

  Print(std_S) #打印标准化分数

  Std_S.to_csv(std_S.csv)结果输出到std_S.csv文件案例:

  一个教育评估机构评估五个研究生院。该机构选取了人均专著数、生师比、科研经费、逾期毕业率四个评价指标。收集的数据显示在表格中。

  解释:人均专著和科研经费是效率指标,期望毕业率是成本导向,生师比是区间导向。最优区间为[5,6],最差下限为2,最差上限为12。4.这些指标的权重由专家打分,分别为0.2、0.3、0.4、0.1。

  实施代码:

  将numpy作为np导入

  进口熊猫作为pd

  #TOPSIS方法功能

  定义Topsis(A1):

  W0=[0.2,0.3,0.4,0.1] #权重矩阵

  W=np.ones([A1.shape[1],A1.shape[1]],float)

  对于范围内的我(兰(西)):

  对于范围内的j(len(W)):

  如果i==j:

  W[i,j]=W0[j]

  否则:

  W[i,j]=0

  Z=np.ones([A1.shape[0],A1.shape[1]],float)

  Z=np.dot(A1,W) #加权矩阵

  #计算正、负理想解Zmax=np.ones([1,A1.shape[1]],float)Zmin=np.ones([1,A1.shape[1]],float)对于范围(A1 .shape[1]):如果j==3:Zmax[0,j]=min(Z[:j]) Zmin[0,j]=max(Z[:j]) else: Zmax[0,j]=max(Z[:j]) Zmin[0,j]=min(Z[:j计算各个方案的相对贴近度对于范围(a1)内的I,CC=[]。shape[0]):Smax=NP。sqrt(NP。sum(NP。square(Z[I,-Zmax[0,)Smin=NP。sqrt(NP。sum(NP。square(Z[I,-Zmin[0,)C.append(Smin/(Smax Smin))C=pd .DataFrame(C,index=[院校i for i in list(12345)])返回C #标准化处理

  定义标准(一):

  #效益型指标

  A1=np.ones([A.shape[0],A.shape[1]],float)

  对于范围内的I(a .形状[1]):

  如果i0或i2:

  如果max(A[:i])==min(A[:i]):

  A1[:i]=1

  否则:

  对于范围内的j(a . shape[0]):

  A1[j,i]=(A[j,i]-min(A[:i])/(max(A[:i])-min(A[:i]))

  #成本型指标elif i==3: if max(A[:i])==min(A[:i]): A1[:I]=1 else:for j in range(A . shape[0]):A1[j,i]=(max(A[:i])-A[j,i])/(max(A[:i])-min(A[:I])#区间型指标else: a,b,lb,ub=5,6,2,12 for j in range(A . shape[0]):if lb=A[j,i] a: A1[j,i]=(A[j,i]-lb)/(a-lb) elif a=A[j,i] b: A1[j,i]=1 elif b=A[j,i]=ub: A1[j,i]=(ub-A[j,I]/(u b-b)else:# A[I读取初始矩阵并计算

  定义数据(文件路径):

  data=pd.read_excel(文件路径).价值观念

  a=数据[:1:]

  A=np.array(A)

  #m,n=A.shape[0],A.shape[1] #m表示行数,n表示列数

  返回A

  #权重

  a=数据(研究生院评估数据. xlsx’)

  A1=标准(一)

  C=Topsis(A1)

  打印

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: