TOPSIS的全称是“逼近于理想值的排序方法”
根据多项指标、对多个方案进行比较选择的分析方法,这种方法的中心思想在于首先确定各项指标的正理想值和负理想值,所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准。
%A为决策矩阵,W为权值矩阵,M为正指标所在的列,N为负指标所在的列
A=xlsread('F:/DATA/q2.xls','N15:U19');
W=[0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125];
[ma,na]=size(A); %ma为A矩阵的行数,na为A矩阵的列数
for i=1:na
B(:,i)=A(:,i)*W(i); %按列循环得到[加权标准化矩阵]
end
V1=zeros(1,na); %初始化正理想解和负理想解
V2=zeros(1,na);
BMAX=max(B); %取加权标准化矩阵每列的最大值和最小值
BMIN=min(B);
for i=1:na
%if i<=size(M,2) %循环得到理想解和负理想解,注意判断,不然会超个数
V1(i)=BMAX(i);
V2(i)=BMIN(i);
%end
%if i<=size(N,2)
%V1(N(i))=BMIN(N(i));
%V2(N(i))=BMAX(N(i));
%end
end
for i=1:ma %按行循环求各方案的贴近度
C1=B(i,:)-V1;
S1(i)=norm(C1); %S1,S2分别为离正理想点和负理想点的距离,用二阶范数
C2=B(i,:)-V2;
S2(i)=norm(C2);
T(i)=S2(i)/(S1(i)+S2(i)); %T为贴近度
end
output_args=T
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。