topsis法
一、引入
由于层次分析法自身的局限性,在决策因素过多,数据已知情况下不易准确说明。特此引入优劣解距离法(Technique for Order Preference by Similarity to Ideal Solution)。TOPSIS 法是一种常用的 综合评价方法,其能 充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
--------------------------------------------------------------------------------------------------------------------------------
二、建模过程
1.矩阵正向化
1.1 含义:矩阵正向化(matrix normalization)是一种处理矩阵的方法,使其满足某种“标准”形式,消除各评价指标(或属性)单位和量纲的影响
1.2 常见要转化的指标:
指标名称 | 指标特点 | 例子 | 转换函数 |
---|---|---|---|
极大型(效益型)指标 | 越大(多)越好 | 成绩、GDP增速、企业利润 | none |
极小型(成本型)指标 | 越小(少)越好 | 费用、坏品率、污染程度 | max-x或取倒数 |
中间型指标 | 越接近某个值越好 | 水质量评估时的PH值 | a |
区间型指标 | 落在某个区间最好 | 体温、水中植物性营养物量 | b |
a:
b:

2.正向化矩阵标准化
矩阵正向化后,再进行标准化
3.计算得分并归一化
定义最大值,最小值
D-:第i(i = 1,2,…,n)个评价对象与最小值的距离
D+:第i(i = 1,2,…,n)个评价对象与最大值的距离
Si为归一化后的得分,至此利用topsis法,算出所得值
--------------------------------------------------------------------------------------
三、模型拓展
若是指标权重不同,则应该用权重对公式进行修正,修正后的公式如下,ω 代表权重。
--------------------------------------------------------------------------------------------------------------------------------
四、代码实现
% 输入数据矩阵
D = [
0.5 0.8 0.2 0.9;
0.7 0.6 0.3 0.8;
0.6 0.9 0.4 0.7;
0.8 0.7 0.5 0.6;
];
% 权重向量
W = [0.25, 0.25, 0.25, 0.25];
% 正向标准化数据
[m, n] = size(D);
normalized_D = D;
for i = 1:n
col = D(:, i);
normalized_D(:, i) = col ./ sqrt(sum(col.^2));
end
% 理想解的计算(最大化和最小化)
P = max(normalized_D);
N = min(normalized_D);
% 计算每个候选方案到理想解的距离
DP = sqrt(sum((normalized_D - P).^2, 2));
DN = sqrt(sum((normalized_D - N).^2, 2));
% 计算综合评分
C = DN ./ (DP + DN);
% 排序并获得最佳候选方案
[sorted_C, idx] = sort(C, 'descend');
best_candidate = idx(1);
fprintf('最佳候选方案是第 %d 个方案\n', best_candidate);
不 行 就 滚