跳至主要內容

综合评价理想解法(TOPSIS解法)

CK...大约 9 分钟建模算法Matlab评价类算法TOPSIS数学建模

综合评价理想解法(TOPSIS解法)

问题的理想解法,理想解法亦称为 TOPSIS 法,是一种有效的多指标评价方法。这种方法。通过构造评价问题的正理想解和负理想解, 即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近正理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

计算步骤

TOPSIS 法的具体算法步骤如下:

  1. 用向量规划化的方法求得规范决策矩阵。设多属性决策问题的决策矩阵 A=(aij)m×n\boldsymbol{A}=\left(a_{i j}\right)_{m \times n}​, 规范化决策矩阵 B=(bij)m×n\boldsymbol{B}=\left(b_{i j}\right)_{m \times n}​​, 其中

bij=aij/i=1maij2,i=1,2,,m;j=1,2,,n b_{i j}=a_{i j} / \sqrt{\sum_{i=1}^{m} a_{i j}^{2}}, i=1,2, \cdots, m ; j=1,2, \cdots, n_{\circ}

  1. 构造加权规范阵 C=(cij)m×n\boldsymbol{C}=\left(c_{i j}\right)_{m \times n}​​ 。设由决策人给定各属性的权重向量为 w=[w1,w2,,wn]T\boldsymbol{w}=\left[w_{1},w_{2}, \cdots, w_{n}\right]^{\mathrm{T}}​​, 则

cij=wjbij,i=1,2,,m;j=1,2,,n c_{i j}=w_{j} \cdot b_{i j}, i=1,2, \cdots, m ; j=1,2, \cdots, n_{\circ}

  1. 确定正理想解 C\boldsymbol{C}^{*}​​ 和负理想解 C0\boldsymbol{C}^{0}​​ 。设正理想解 C\boldsymbol{C}^{*}​​ 的第 j\mathrm{j}​​ 个属性值为 cjc_{j}^{*}​​,负理想 解 C0\boldsymbol{C}^{0}​​ 第 jj​​ 个属性值为 cj0c_{j}^{0}​​, 则

​ 正理想解 :

cj={maxicij,j 为效益型属性, minicij,j 为成本型属性, j=1,2,,n c_{j}^{*}=\left\{\begin{array}{l}\max _{i} c_{i j}, j \text { 为效益型属性, } \\ \min _{i} c_{i j}, j \text { 为成本型属性, }\end{array} j=1,2, \cdots, n\right.

​ 负理想解 :

cj0={minicij,j 为效益型属性, maxcij,j 为成本型属性, j=1,2,,n c_{j}^{0}=\left\{\begin{array}{l}\min _{i} c_{i j}, j \text { 为效益型属性, } \\ \max c_{i j}, j \text { 为成本型属性, }\end{array} j=1,2, \cdots, n\right.

  1. 计算各方案到正理想解与负理想解的距离。

备选方案 di\boldsymbol{d}_{i}到正理想解的距离为

si=j=1n(cijcj)2,i=1,2,,m; s_{i}^{*}=\sqrt{\sum_{j=1}^{n}\left(c_{i j}-c_{j}^{*}\right)^{2}}, i=1,2, \cdots, m ;

​ 备选方案 di\boldsymbol{d}_{i} 到负理想解的距离为

si0=j=1n(cijcj0)2,i=1,2,,m s_{i}^{0}=\sqrt{\sum_{j=1}^{n}\left(c_{i j}-c_{j}^{0}\right)^{2}}, i=1,2, \cdots, m_{\circ}

  1. 计算各方案的排序指标值(即综合评价指数), 即

fi=si0/(si0+si),i=1,2,,m f_{i}^{*}=s_{i}^{0} /\left(s_{i}^{0}+s_{i}^{*}\right), i=1,2, \cdots, m_{\circ}

  1. fif_{i}^{*}​​ 由大到小排列方案的优劣次序。

示例:

例:科研团队实力评估

为了客观地评价我校各科研团队实力水平,经校领导研究决定组织一次对学校各科研团队的实力评估。为了取得经验,先选了5 个团队,收集有关资料信息进行试评估,下表是给出的部分数据。

承担项目跨学科数量 x1x_1平均科研经费 x2x_22018年承担项目数量 x3x_3
133753
264005
382803
424252
515004

第一步:数据预处理

数据的预处理又称属性值的规范化。属性值具有多种类型,包括效益型、成本型和区间型等。这三种属性,效益型属性越 大越好,成本型属性越小越好,区间型属性是在某个区间最佳。 在进行决策时,一般要进行属性值的规范化,主要有如下三个作用:

  • 属性值有多种类型,上述三种属性放在同一个表中不便于直接从数值大小判断方案的优劣,因此需要对数据进行预处理,使得表中任一属性下性能越优的方案变换后的属性值越大。

  • 非量纲化,多属性决策与评估的困难之一是属性间的不可公度性,即在属性值表中的每一列数具有不同的单位(量纲)。即使对同一属性,采用不同的计量单位,表中的数值也就不同。 在用各种多属性决策方法进行分析评价时,需要排除量纲的选用对决策或评估结果的影响,这就是非量纲化。

  • 归一化,属性值表中不同指标的属性值的数值大小差别很大,为了直观,更为了便于采用各种多属性决策与评估方法进行评价,需要把属性值表中的数值 归一化,即把表中数值均变换到 [0,1][0,1] 区间上。

此外,还可在属性规范时用非线性变换或其他办法,来解决或部分解决某些目标的达 到程度与属性值之间的非线性关系,以及目标间的不完全补偿性。常用的属性规范化方法有以下几种。

  1. **线性变换。**原始的决策矩阵为 A=(aij)m×n\boldsymbol{A}=\left(a_{i j}\right)_{m \times n} ​, 变换后的决策矩阵记为 B=(bij)m×n,i=1,,m;j=1,,n\boldsymbol{B}=\left(b_{i j}\right)_{m \times n}, i=1, \cdots, m ; j=1, \cdots, n_{\circ}​ 设 ajmaxa_{j}^{\mathrm{max}}​ 是决策矩阵第 jj​ 列中的最大值, ajmina_{j}^{\min }​ 是决策矩阵第 jj​ 列中的最小值。若 xjx_{j}​​​ 为效益型属性,则

bij=aij/ajmax b_{i j}=a_{i j} / a_{j}^{\max }

采用上式进行属性规范化时,经过变换的最差属性值不一定为 0 ,最优属性值为 1 。 若 xjx_{j} 为成本型属性,则

bij=1aij/ajmax b_{i j}=1-a_{i j} / a_{j}^{\max }

  1. **标准 010-1 变换。**为了使每个属性变换后的最优值为 1 且最差值为 0 , 可以进行 标准 010-1 变换。对效益型属性 xjx_{j}, 令

bij=aijajminajmaxajmin ,  b_{i j}=\frac{a_{i j}-a_{j}^{\min }}{a_{j}^{\max }-a_{j}^{\min }} \text { , }

对成本型属性 xjx_{j}, 令

bij=ajmaxaijajmaxajmin b_{i j}=\frac{a_{j}^{\max }-a_{i j}}{a_{j}^{\max }-a_{j}^{\min }}

  1. **区间型属性的变换。**有些属性既非效益型又非成本型,如生师比。显然这种属 性不能采用前面介绍的两种方法处理。 设给定的最优属性区间为 [aj0,aj],aj\left[a_{j}^{0}, a_{j}^{*}\right], a_{j}^{\prime} 为无法容忍下限,aja_{j}^{\prime \prime}​ 为无法容忍上限,则

bij={1(aj0aij)/(aj0aj),ajaij<aj0,1,aj0aijaj,1(aijaj)/(ajaj),aj<aijaj,0, 其他。  b_{i j}= \begin{cases}1-\left(a_{j}^{0}-a_{i j}\right) /\left(a_{j}^{0}-a_{j}^{\prime}\right), & a_{j}^{\prime} \leqslant a_{i j}<a_{j}^{0}, \\ 1, & a_{j}^{0} \leqslant a_{i j} \leqslant a_{j}^{*}, \\ 1-\left(a_{i j}-a_{j}^{*}\right) /\left(a_{j}^{\prime \prime}-a_{j}^{*}\right), & a_{j}^{*}<a_{i j} \leqslant a_{j}^{\prime \prime}, \\ 0, & \text { 其他。 }\end{cases}

变换后的属性值 bijb_{i j} 与原属性值 aija_{i j} 之间的函数图形为一般梯形。当属性值最优区间的上 下限相等时,最优区间退化为一个点时, 函数图形退化为三角形。

  1. 向量规范化。 无论成本型属性还是效益型属性,向量规范化均用下式进行变换:

bij=aii/i=1maij2,i=1,,m,j=1,,n b_{i j}=a_{i i} / \sqrt{\sum_{i=1}^{m} a_{i j}^{2}}, i=1, \cdots, m, j=1, \cdots, n_{\circ}

它与前面介绍的几种变换不同,从变换后属性值的大小上无法分辨属性值的优劣。 它的最大特点是,规范化后,各方案的同一属性值的平方和为 1 , 因此常用于计算各 方案与某种虛拟方案(如理想点或负理想点)的欧几里得距离的场合。

  1. **标准化处理。**在实际问题中,不同变量的测量单位往往是不一样的。为了消除 变量的量纲效应,使每个变量都具有同等的表现力,数据分析中常对数据进行标准化处理,即

bij=aijaˉjsj,i=1,2,,m,j=1,2,,n, 式中: aˉj=1mi=1maij,sj=1m1i=1m(aijaˉj)2,j=1,2,,n \begin{gathered} b_{i j}=\frac{a_{i j}-\bar{a}_{j}}{s_{j}}, i=1,2, \cdots, m, j=1,2, \cdots, n, \\ \text { 式中: } \bar{a}_{j}=\frac{1}{m} \sum_{i=1}^{m} a_{i j}, s_{j}=\sqrt{\frac{1}{m-1} \sum_{i=1}^{m}\left(a_{i j}-\bar{a}_{j}\right)^{2}}, j=1,2, \cdots, n_{\circ} \end{gathered}

本例及一般TOPSIS解法采用向量规范化处理数据,规范化后结果如下表所示:

承担项目跨学科数量 x1x_1平均科研经费 x2x_22018年承担项目数量 x3x_3
10.28100.41680.3780
20.56200.44450.6299
30.74930.31120.3780
40.18730.47230.2520
50.09370.55570.5040

### 第二步:加权向量规范化

设权向量为 w=[0.2,0.5,0.3]\boldsymbol{w}=[ 0.2,0.5,0.3 ]​​​​,得到加权后的向量规范属性矩阵见下表:

承担项目跨学科数量 x1x_1平均科研经费 x2x_22018年承担项目数量 x3x_3
10.05620.20840.1134
20.11240.22230.1890
30.14990.15560.1134
40.03750.23620.0756
50.01870.27780.1512

第三步: 计算正理想解和负理想解

正理想解 :

C=[0.1499,0.2778,0.1890]C^{*}=[0.1499,0.2778,0.1890]​​,

负理想解 :

C0=[0.0187,0.1556,0.0756]C^{0}=[0.0187,0.1556,0.0756]

第四步: 计算各方案到达各理想解的距离

分别用下面两式求各方案到正理想解的距离 sis_{i}^{*}​​​ 和负理想解的 距离 si0s_{i}^{0}​​​​​, 列于下表 。

备选方案 di\boldsymbol{d}_{i}到正理想解的距离为

si=j=1n(cijcj)2,i=1,2,,m; s_{i}^{*}=\sqrt{\sum_{j=1}^{n}\left(c_{i j}-c_{j}^{*}\right)^{2}}, i=1,2, \cdots, m ;

备选方案 di\boldsymbol{d}_{i} 到负理想解的距离为

si0=j=1n(cijcj0)2,i=1,2,,m s_{i}^{0}=\sqrt{\sum_{j=1}^{n}\left(c_{i j}-c_{j}^{0}\right)^{2}}, i=1,2, \cdots, m_{\circ}

距离值及综合指标值:

$s_{i}^{*} $si0s_{i}^{0}$ f_{i}^{*}$
10.13900.07500.3504
20.06700.16150.7067
30.14370.13650.4870
40.16500.08270.3339
50.13650.14370.5130

第五步: 计算排列指标值

根据上表 $ f_{i}^{*}$​​​ 指标排序,可得各方案​​从优到劣的次序为 4,1,3,5,2

排名承担项目跨学科数量 x1x_1平均科研经费 x2x_22018年承担项目数量 x3x_3
433753
164005
382803
524252
215004

MATLAB 实现代码

clc, clear
a=[3	375	 3
 6	400	 5
 8	280	 3
 2	425	 
 1	500	 4];
[m,n]=size(a);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:n
    b(:,j)=a(:,j)/norm(a(:,j));  %向量规划化
end
w=[0.2 0.5 0.3];
c=b.*repmat(w,m,1);      %求加权矩阵
Cstar=max(c);    %求正理想解
C0=min(c);       %求负理想解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:m
    Sstar(i)=norm(c(i,:)-Cstar);  %求到正理想解的距离
    S0(i)=norm(c(i,:)-C0);      %求到负理想的距离
end
f=S0./(Sstar+S0);
[sf,ind]=sort(f,'descend')       %求排序结果