TOPSIS法 (优劣解距离法)
来源:清风老师数学建模ppt,全手打
-
TOPSIS法:
- 又名为:逼近理想排序法或优劣解距离法。
- 是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
- 基本过程为:先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。
-
常见的四种指标:
指标名称 指标特点 例子 极大型(效益型)指标 越大(多)越好 成绩、GDP增速、利润 极小型(成本型)指标 越小(少)越好 费用、坏品率、污染程度 中间型指标 越接近某个值越好 水质量评估时的PH值 区间型指标 落在某个区间最好 体温、水中植物性营养物量
-
统一指标类型:
- 将所有的指标转化为极大型成为指标正向化(最常用的)。
-
标准化处理:
-
为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。
-
标准化处理的公式:假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化矩阵如下:
-
[X=left[egin{matrix}x_{11}&x_{12}&cdots&x_{1m}\x_{21}&x_{22}&cdots&x_{2m}\vdots&vdots&ddots&vdots\x_{n1}&x_{n2}&cdots&x_{nm}end{matrix} ight] ]
-
那么,对其标准化的矩阵记为Z,Z中的每一个元素:
[z_{ij}=frac{x_{ij}}{sqrt{sum_{i=1}^n x^2_{ij}}} ]
-
-
-
构建计算公式:
-
[frac{x-min}{max-min}=frac{x-min}{(max-x)+(x-min)}=frac{x与最小值的距离}{x与最大值的距离+x与最小值的距离} ]
-
[Z=left[egin{matrix}z_{11}&z_{12}&cdots&z_{1m}\z_{21}&z_{22}&cdots&z_{2m}\vdots&vdots&ddots&vdots\z_{n1}&z_{n2}&cdots&z_{nm}end{matrix} ight] ]
-
定义最大值Z+=((Z^+_1,Z^+_2,cdots,Z^+_m)) = (max{(z_{11},z_{21},cdots,z_{n1})},max{(z_{12},z_{22},cdots,z_{n2})},(cdots),max{(z_{1m},z_{2m},cdots,z_{nm})})
-
定义最小值定义最大值Z—=((Z^-_1,Z^-_2,cdots,Z^-_m)) = (min{(z_{11},z_{21},cdots,z_{n1})},min{(z_{12},z_{22},cdots,z_{n2})},(cdots),min{(z_{1m},z_{2m},cdots,z_{nm})})
-
定义第i(i=1,2,3,(cdots),n)个评价对象与最大值的距离:
-
[D^+_i=sqrt{sum_{j=1}^m (Z^+_j-z_{ij})^2} ]
-
-
定义第i(i=1,2,3,(cdots),n)个评价对象与最小值的距离:
-
[D^-_i=sqrt{sum_{j=1}^m (Z^-_j-z_{ij})^2} ]
-
-
那么,我们可以计算得出第i(i=1,2,(cdots),n)个评价对象未归一化的得分:Si=(frac{D^-_i}{D^+_i+D^-_i})很明显。0(leq)Si$leq$1,且Si越大 (D^+_i) 越小,即越接近最大值。
-
解题思路:
第一步:将原始矩阵正向化,将所有的指标类型统一转化为极大型指标。
-
极小型指标转化为极大型指标:max-x,或者是(frac{1}{x})
-
中间型指标转化为极大型指标:
- 中间型指标:指标值既不要太大也不要太小,取某特定值最好。
- {xi}是一组中间型指标序列,且最佳的数值为xbest,那么正向化公式如下:M=max{|xi—xbest|},( ilde{x})=1— (frac{|x~i~— x~best~|}{M}) 。
-
区间型指标转化为极大型指标:
-
[f(x)=left{ egin{aligned} 1-frac{a-x_i}{M} &,x_i<a\ 1&,aleq x_ileq b\ 1-frac{x_i-b}{M}&,x_i>b end{aligned} ight. ]
-
第二步:
-
正向化矩阵标准化。
X = [89,1; 60,3; 74,2; 99,0] [n , m] = size(X) X ./ repmat(sum(X.*X) .^ 0.5, n, 1)
第三步:
-
构建计算公式计算得分并归一化
= [89,1;60,3;74,2;99,0] [n , m] = size(X); Z = X ./ repmat(sum(X.*X) .^ 0.5,n,1); D_P = sum([(Z - repmat(max(Z),n,1)).^2 ],2) .^ 0.5 %D+向量 D_N = sum([(Z - repmat(min(Z),n,1)).^2 ],2) .^ 0.5 %D-向量
- 得分归一化:( ilde{S_i}=frac{S_i}{sum_{i=1}^n S_i}),这样的话,(sum_{i=i}^n ilde{S_i}=1) 。
- 得分归一化不影响排序。
-
当加上权重的时候,需要(D^+_i=sqrt{sum_{j=1}^m w_i(Z^+_j-z_{ij})^2}),其他的类似。wi在这里是权重。