topsis法_Mathematical Modeling Tutorial 2:TOPSIS法

topsis法_Mathematical Modeling Tutorial 2:TOPSIS法_第1张图片

TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息, 其结果能精确地反映各评价方案之间的差距。


Part 1 Tutorial

第一步:指标正向化

最常见的四种指标:

  1. 极大型(效益型)指标越大(多)越好 (GDP增速、企业利润)
  2. 极小型(成本型)指标越小(少)越好 (费用、坏品率、污染程度 )
  3. 中间型指标越接近某个值越好 (水质量评估时的PH值 )
  4. 区间型指标落在某个区间最好 (体温、水中植物性营养物量)

指标正向化就是要将所有的指标类型统一转化为 极大型指标

  • 极小型指标->极大型指标

  • 中间型指标->极大型指标:

  • 区间型指标->极大型指标:

设最优区间为[a,b],则:

第二步:正向化矩阵标准化

topsis法_Mathematical Modeling Tutorial 2:TOPSIS法_第2张图片
来源于清风数学建模
第三步:计算得分并归一化

topsis法_Mathematical Modeling Tutorial 2:TOPSIS法_第3张图片
来源于清风数学建模

Part 2 : Homework

练习数据:

topsis法_Mathematical Modeling Tutorial 2:TOPSIS法_第4张图片
来源于清风数学建模
代码实现

指标正向化:

  • 极小指标->极大型指标
function vec = min_to_max(X,column)
max_value = max(X(:,column));
X(:,column) = - X(:,column) + max_value;
vec = X;
  • 中间型指标->极大型指标
function vec = middle(X,column,best_value)
M = max(abs(X(:,column) - best_value));
X(:,column) = 1 - abs(X(:,column) - best_value) / M;
vec = X;
  • 区间型指标->极大型指标
function vec = a2b_section(X,column,a,b)
[r,c] = size(X);
M = max(max(X(:,column))-b,(a-min(X(:,column))));
for i=1:r
    if X(i,column) < a
        X(i,column) = 1 - (a - X(i,column)) / M;
    elseif X(i,column) > b
        X(i,column) = 1 - (X(i,column) - b) / M;
    else
        X(i,column) = 1;
    end;
end;
vec = X;

标准化:

function X = standardization(X)
[m,n] = size(X);
temp = X.^2;
square_everage = sum(temp,1).^0.5;
X = X ./ repmat(square_everage,m,1);

计算得分并归一化:

function S = norm_(X,weights)
[m,n] = size(X);
%weight: a list 
Z_max = max(X);
Z_min = min(X);
weights = repmat(weights,m,1);
D_max =  sum(((repmat(Z_max,m,1) - X).^2).*weights,2).^0.5;
D_min =  sum(((repmat(Z_min,m,1) - X).^2).*weights,2).^0.5;
S = D_min./(D_min+D_max);
S = S / sum(S);

下一节:插值算法代码笔记

To be continue......

你可能感兴趣的:(topsis法)