【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列
文章目录
1、TOPSIS法的原理
2、TOPSIS法案例分析
3.建立模型并求解
3.1数据预处理
3.2代码实现数据预处理
%数据预处理方法:线性归一化
%a为处理数据矩阵 u为选择处理方法 1为效益型 2为成本型 3为区间型 qujian为效益形中的最优属性区间 rennai为忍耐上下限区间
function b=topsis(a,u,qujian,rennai)
am1=min(a);am2=max(a);
% 效益型数据处理(即数据越大越好)
if u==1
b=(a-am1)./(am2-am1);
% 成本型数据处理(即数据越小越好)
elseif u==2
b=(am2-a)./(am2-am1);
% 区间型数据处理
elseif u==3
n=length(a);
for k=1:n
if a(k)>=rennai(1)&a(k)<qujian(1)
b(k)=1-(qujian(1)-a(k))/(qujian(1)-rennai(1));
elseif a(k)>=qujian(1)&a(k)<=qujian(2)
b(k)=1;
elseif a(k)>qujian(2)&a(k)<=rennai(2)
b(k)=1-(a(k)-qujian(2))/(rennai(2)-qujian(2));
else
b(k)=0;
end
end
end
3.3 本案例中数据预处理的运用
A=[0.1 0.2 0.4 0.9 1.2;
5 6 7 10 2;
5000 6000 7000 10000 400;
4.7 5.6 6.7 2.3 1.8];
A=A';
a1=A(:,1);a2=A(:,2);a3=A(:,3);a4=A(:,4);
b1=topsis(a1,1);
b2=topsis(a2,3,[5,6],[2,12]);
b3=topsis(a3,2);
b4=topsis(a4,2);
[b1,b2',b3,b4]
4.计算距离和评价指标
4.1 代码
A=[0.1 0.2 0.4 0.9 1.2;
5 6 7 10 2;
5000 6000 7000 10000 400;
4.7 5.6 6.7 2.3 1.8];
A=A';
a1=A(:,1);a2=A(:,2);a3=A(:,3);a4=A(:,4);
b1=topsis1(a1,1);
b2=topsis1(a2,3,[5,6],[2,12]);
b3=topsis1(a3,2);
b4=topsis1(a4,2);
I=[1 1/3 2 3;3 1 4 2;1/2 1/4 1 2;1/3 1/2 1/2 1];
[x,y]=eig(I);
w1=x(:,1);
w=w1/sum(w1);
c1=b1*w(1);c2=b2'*w(2);c3=b3*w(3);c4=b4*w(4);
C=[c1,c2,c3,c4];
cx=[0.2494 0.4814 0.1482 0];
cL=[0 0 0 0.1210];
for k=1:5
s1(k)=dist(C(k,:),cx');
s2(k)=dist(C(k,:),cL');
end
f=s2./(s1+s2);
[s1',s2',f']