赞
踩
目录
TOPSIS法 —— matlab :传送门
灰色关联法 —— matlab:传送门
设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m*n,设数据矩阵内元素,经过指标正向化处理过后的元素为xij'
设正向化标准化后的数据矩阵。
最大参考向量由各个指标的最大值构成
最小参考向量由各个指标的最小值构成
求出标准化后数据矩阵X和最大参考向量Vmax和最小参考向量Vmin的灰色相关系数。
该过程仿照灰色关联度分析法做就行
例如研究x2指标与x1指标之间的灰色关联度。所以将x1列作为参考向量,即要研究与谁的关系,就将谁作为参考。设参考向量为Y1=x1,生成新的数据矩阵 X1=x2.
设生成的绝对值矩阵为A
A=[X1-Y1],亦是A=[x2-x1]
设dmax为绝对值矩阵A的最大值,dmin为绝对值矩阵A的最小值。
计算灰色关联矩阵
设灰色关联矩阵为B
数据来源:蓝奏云
data=xlsread('D:\桌面\TOPSIS.xlsx')' %横坐标为评价指标,纵坐标为评价对象
返回:
- %% 标准化
- data1=mapminmax(data,0.002,1);%标准化到0.002-1区间
返回:
- data1=data1';
- V_max=max(data1);%最大参考行,指标最大
- V_min=min(data1);%最小参考行,指标最小
- %% 与最大值的灰色相关系数
- [m,n]=size(data1);%得到行数和列数
- data2=data1;
- for i=1:m
- data2(i,:)=abs(data1(i,:)-V_min);
- end
- %得到绝对值矩阵的全局最大值和最小值
- d_max=max(max(data2));
- d_min=min(min(data2));
- %灰色关联矩阵
- a=0.5; %分辨系数
- data3=(d_min+a*d_max)./(data2+a*d_max);
- xi_min=mean(data3')
返回:
- %% 与最小值的灰色相关系数
- [m,n]=size(data1);%得到行数和列数
- data2=data1;
- for i=1:m
- data2(i,:)=abs(data1(i,:)-V_max);
- end
- % data2=abs(data1-V_max);
- %得到绝对值矩阵的全局最大值和最小值
- d_max=max(max(data2));
- d_min=min(min(data2));
- data3=(d_min+a*d_max)./(data2+a*d_max);
- xi_max=mean(data3')
返回:
- %% 综合评分
- %与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
- Score=1./(1+xi_min./xi_max).^2;
- for i=1:length(Score)
- fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));
- end
返回:
- clc;clear;
- data=xlsread('D:\桌面\TOPSIS.xlsx')'; %横坐标为评价指标,纵坐标为评价对象
- %% 标准化
- data1=mapminmax(data,0.002,1);%标准化到0.002-1区间
- data1=data1';
- V_max=max(data1);%最大参考行,指标最大
- V_min=min(data1);%最小参考行,指标最小
- %% 与最大值的灰色相关系数
- [m,n]=size(data1);%得到行数和列数
- data2=data1;
- for i=1:m
- data2(i,:)=abs(data1(i,:)-V_min);
- end
- %得到绝对值矩阵的全局最大值和最小值
- d_max=max(max(data2));
- d_min=min(min(data2));
- %灰色关联矩阵
- a=0.5; %分辨系数
- data3=(d_min+a*d_max)./(data2+a*d_max);
- xi_min=mean(data3');
- %% 与最小值的灰色相关系数
- [m,n]=size(data1);%得到行数和列数
- data2=data1;
- for i=1:m
- data2(i,:)=abs(data1(i,:)-V_max);
- end
- % data2=abs(data1-V_max);
- %得到绝对值矩阵的全局最大值和最小值
- d_max=max(max(data2));
- d_min=min(min(data2));
- data3=(d_min+a*d_max)./(data2+a*d_max);
- xi_max=mean(data3');
- %% 综合评分
- %与最大指标行相关系数越大,最小指标构成的行相关系数越小得分大
- Score=1./(1+xi_min./xi_max).^2;
- for i=1:length(Score)
- fprintf('第%d个投标者评分为:%4.2f\n',i,Score(i));
- end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。