1. 程式人生 > 實用技巧 >建模學習第二天——優劣解距離法

建模學習第二天——優劣解距離法

TOPSIS法 (優劣解距離法)

來源:清風老師數學建模ppt,全手打

  • TOPSIS法:

    • 又名為:逼近理想排序法或優劣解距離法。
    • 是一種常用的綜合評價方法,其能充分利用原始資料的資訊,其結果能精確地反映各評價方案之間的差距。
    • 基本過程為:先將原始資料矩陣統一指標型別(一般正向化處理)得到正向化的矩陣,再對正向化的矩陣進行標準化處理消除各指標量綱的影響,並找到有限方案中的最優方案和最劣方案,然後分別計算各評價物件與最優方案和最劣方案間的距離,獲得各評價物件與最優方案的相對接近程度,以此作為評價優劣的依據。該方法對資料分佈及樣本含量沒有嚴格限制,資料計算簡單易行。

  • 常見的四種指標:

    指標名稱 指標特點 例子
    極大型(效益型)指標 越大(多)越好 成績、GDP增速、利潤
    極小型(成本型)指標 越小(少)越好 費用、壞品率、汙染程度
    中間型指標 越接近某個值越好 水質量評估時的PH值
    區間型指標 落在某個區間最好 體溫、水中植物性營養物量

  • 統一指標型別:

    • 將所有的指標轉化為極大型成為指標正向化(最常用的)。
  • 標準化處理:

    • 為了消去不同指標量綱的影響,需要對已經正向化的矩陣進行標準化處理。

    • 標準化處理的公式:假設有n個要評價的物件,m個評價指標(已經正向化了)構成的正向化矩陣如下:

      • \[X=\left[\begin{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}\right] \]

      • 那麼,對其標準化的矩陣記為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[\begin{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}\right] \]

    • 定義最大值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)個評價物件未歸一化的得分:S~i~=\(\frac{D^-_i}{D^+_i+D^-_i}\)很明顯。0\(\leq\)S~i~$\leq$1,且S~i~越大 \(D^+_i\) 越小,即越接近最大值。



解題思路:

第一步:將原始矩陣正向化,將所有的指標型別統一轉化為極大型指標。

  • 極小型指標轉化為極大型指標:max-x,或者是\(\frac{1}{x}\)

  • 中間型指標轉化為極大型指標:

    • 中間型指標:指標值既不要太大也不要太小,取某特定值最好。
    • {x~i~}是一組中間型指標序列,且最佳的數值為x~best~,那麼正向化公式如下:M=max{|x~i~—x~best~|},\(\tilde{x}\)=1— \(\frac{|x~i~— x~best~|}{M}\)
  • 區間型指標轉化為極大型指標:

    • \[f(x)=\left\{ \begin{aligned} 1-\frac{a-x_i}{M} &,x_i<a\\ 1&,a\leq x_i\leq b\\ 1-\frac{x_i-b}{M}&,x_i>b \end{aligned} \right. \]

第二步:

  • 正向化矩陣標準化。

    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-向量
    
    • 得分歸一化:\(\tilde{S_i}=\frac{S_i}{\sum_{i=1}^n S_i}\),這樣的話,\(\sum_{i=i}^n \tilde{S_i}=1\)
    • 得分歸一化不影響排序。
  • 當加上權重的時候,需要\(D^+_i=\sqrt{\sum_{j=1}^m w_i(Z^+_j-z_{ij})^2}\),其他的類似。w~i~在這裡是權重。