当前位置:   article > 正文

灰色关联与TOPSIS法 —— matlab_灰色关联分析+topsis

灰色关联分析+topsis

目录

1.简介

2.算法详解

2.1 指标正向化及标准化

2.2 找到最大最小参考向量

2.3 计算与参考向量的相关系数

2.4 求评分

3.实例分析

3.1 读取数据

3.2 数据标准化

3.3 得到最大最小参考行

3.4 与最大值的灰色相关系数

 3.5 与最小值的灰色相关系数

3.6 计算综合评分

完整代码


1.简介

TOPSIS法 —— matlab :传送门

灰色关联法 —— matlab:传送门

2.算法详解

2.1 指标正向化及标准化

        设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m*n,设数据矩阵内元素,经过指标正向化处理过后的元素为xij'

  • 若xj为负向指标(越小越优型指标)

  • 若xj为正向指标(越大越优型指标)

2.2 找到最大最小参考向量

设正向化标准化后的数据矩阵

最大参考向量由各个指标的最大值构成

最小参考向量由各个指标的最小值构成

2.3 计算与参考向量的相关系数

求出标准化后数据矩阵X和最大参考向量Vmax和最小参考向量Vmin的灰色相关系数。

该过程仿照灰色关联度分析法做就行

  • 参考向量的选择

        例如研究x2指标与x1指标之间的灰色关联度。所以将x1列作为参考向量,即要研究与谁的关系,就将谁作为参考。设参考向量为Y1=x1,生成新的数据矩阵 X1=x2.

  • 生成绝对值矩阵 

设生成的绝对值矩阵为A

A=[X1-Y1],亦是A=[x2-x1]

设dmax为绝对值矩阵A的最大值,dmin为绝对值矩阵A的最小值。

  • 计算灰色关联矩阵

设灰色关联矩阵为B

  • 计算灰色关联

2.4 求评分

3.实例分析

数据来源:蓝奏云

3.1 读取数据

data=xlsread('D:\桌面\TOPSIS.xlsx')' %横坐标为评价指标,纵坐标为评价对象

返回:

 

3.2 数据标准化

  1. %% 标准化
  2. data1=mapminmax(data,0.002,1);%标准化到0.002-1区间

返回:

3.3 得到最大最小参考行

  1. data1=data1';
  2. V_max=max(data1);%最大参考行,指标最大
  3. V_min=min(data1);%最小参考行,指标最小

3.4 与最大值的灰色相关系数

  1. %% 与最大值的灰色相关系数
  2. [m,n]=size(data1);%得到行数和列数
  3. data2=data1;
  4. for i=1:m
  5. data2(i,:)=abs(data1(i,:)-V_min);
  6. end
  7. %得到绝对值矩阵的全局最大值和最小值
  8. d_max=max(max(data2));
  9. d_min=min(min(data2));
  10. %灰色关联矩阵
  11. a=0.5; %分辨系数
  12. data3=(d_min+a*d_max)./(data2+a*d_max);
  13. xi_min=mean(data3')

 返回:

 3.5 与最小值的灰色相关系数

  1. %% 与最小值的灰色相关系数
  2. [m,n]=size(data1);%得到行数和列数
  3. data2=data1;
  4. for i=1:m
  5. data2(i,:)=abs(data1(i,:)-V_max);
  6. end
  7. % data2=abs(data1-V_max);
  8. %得到绝对值矩阵的全局最大值和最小值
  9. d_max=max(max(data2));
  10. d_min=min(min(data2));
  11. data3=(d_min+a*d_max)./(data2+a*d_max);
  12. xi_max=mean(data3')

返回:

3.6 计算综合评分

  1. %% 综合评分
  2. %与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
  3. Score=1./(1+xi_min./xi_max).^2;
  4. for i=1:length(Score)
  5. fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));
  6. end

返回:

完整代码

  1. clc;clear;
  2. data=xlsread('D:\桌面\TOPSIS.xlsx')'; %横坐标为评价指标,纵坐标为评价对象
  3. %% 标准化
  4. data1=mapminmax(data,0.002,1);%标准化到0.002-1区间
  5. data1=data1';
  6. V_max=max(data1);%最大参考行,指标最大
  7. V_min=min(data1);%最小参考行,指标最小
  8. %% 与最大值的灰色相关系数
  9. [m,n]=size(data1);%得到行数和列数
  10. data2=data1;
  11. for i=1:m
  12. data2(i,:)=abs(data1(i,:)-V_min);
  13. end
  14. %得到绝对值矩阵的全局最大值和最小值
  15. d_max=max(max(data2));
  16. d_min=min(min(data2));
  17. %灰色关联矩阵
  18. a=0.5; %分辨系数
  19. data3=(d_min+a*d_max)./(data2+a*d_max);
  20. xi_min=mean(data3');
  21. %% 与最小值的灰色相关系数
  22. [m,n]=size(data1);%得到行数和列数
  23. data2=data1;
  24. for i=1:m
  25. data2(i,:)=abs(data1(i,:)-V_max);
  26. end
  27. % data2=abs(data1-V_max);
  28. %得到绝对值矩阵的全局最大值和最小值
  29. d_max=max(max(data2));
  30. d_min=min(min(data2));
  31. data3=(d_min+a*d_max)./(data2+a*d_max);
  32. xi_max=mean(data3');
  33. %% 综合评分
  34. %与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
  35. Score=1./(1+xi_min./xi_max).^2;
  36. for i=1:length(Score)
  37. fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));
  38. end
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号