0
点赞
收藏
分享

微信扫一扫

【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列

hwwjian 2022-11-28 阅读 210
算法

【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列

文章目录

1、TOPSIS法的原理

2、TOPSIS法案例分析

3.建立模型并求解

3.1数据预处理

3.2代码实现数据预处理

3.3 本案例中数据预处理的运用

4.计算距离和评价指标

4.1 代码

4.2 运行结果

5.总结


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']

4.2 运行结果

5.总结

举报

相关推荐

0 条评论