title: TOPSIS算法
date: 2020-02-24 11:18:06
categories: 数学建模
tags: [评价模型, MATLAB]
mathjax: true
定义
? C.L.Hwang和K.Yoon于1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理 想解排序法,国内常简称为优劣解距离法。
? TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的 信息,其结果能精确地反映各评价方案之间的差距。
? 基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指 标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分 别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对 象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。
例子
评价下表中20条河流的水质情况。 注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐20之间最佳,超 过20或低于10均不好。
步骤
第一步:将原始矩阵正向化
最常见的四种指标:
指标名称
指标特点
例子
极大型(效益型)指标
越大(多)越好
成绩、GDP增速、企业利润
极小型(成本型)指标
越小(少)越好
费用、坏品率、污染程度
中间型指标
越接近某个值越好
水质量评估时的PH值
区间型指标
落在某个区间最好
体温、水中植物性营养物量
所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为 极大型指标。(转换的函数形式可以不唯一 )
极小型指标->极大型指标
极小型指标转换为极大型指标的公式:
[
max-x
]
如果所有的元素均为正数,那么也可以使用 1/x
中间型指标->极大型指标
{(x_{i})}是一组中间型指标序列,且最佳的数值为(x_{best}),那么正向化的公式如下:
[
M=max left{left|x_{i}-x_{ext {best}}ight|ight}, quad ilde{x}_{i}=1-frac{left|x_{i}-x_{ext {best}}ight|}{M}
]
举个例子:
区间型指标->极大型指标
{(x_{i})}是一组中间型指标序列,且最佳的区间为[a,b],那么正向化的公式如下:
[
M=max left{a-min left{x_{i}ight}, max left{x_{i}ight}-bight}, quad ilde{x}_{i}=left{egin{array}{ll}
{1-frac{a-x}{M}} & {, xb}
end{array}ight.
]
第二步:正向化矩阵标准化
为了消去不同指标量纲的影响, 需要对已经正向化的矩阵进行标准化处理。
假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化矩阵如下:
[
A=egin{bmatrix}a_{11}& a_{12}& cdots & a_{1n}a_{21}& a_{22}& cdots & a_{2n}vdots & vdots & ddots & vdots a_{m1}& a_{m2}& cdots & a_{mn}end{bmatrix}
]
那么,对其标准化的矩阵记为Z,Z中的每一个元素:
[
z_{ij}=a_{ij}/ sqrt{sum_{i=1}^{n}a_{ij}^{2} }
]
[