TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)评价方法,也被称为逼近理想解排序法或优劣解距离法,是一种常用的综合评价方法。该方法由Hwang和Yoon于1981年提出,它主要用于对多个方案进行综合评价和排序,基于各方案与理想解(最优方案)和负理想解(最劣方案)之间的接近程度来评估方案的优劣。
TOPSIS方法的基本原理是通过构造多属性问题的理想解和负理想解,计算每个方案到理想解和负理想解的距离,从而确定方案之间的优劣排序。具体步骤如下:
(1)构建原始数据矩阵,其中每一列代表一个评价指标,每一行代表一个待评价方案。
(2)对原始数据进行标准化处理,以消除不同指标之间的量纲差异和数值大小的影响。
(3)确定各评价指标的权重,这可以通过主观赋权法(如专家打分法)或客观赋权法(如熵权法)来确定。
(4)根据权重和标准化后的数据,计算每个方案到理想解和负理想解的距离。理想解是各指标值都达到最优的解,而负理想解是各指标值都达到最劣的解。
(5)计算每个方案与理想解的相对接近程度,作为评价方案优劣的依据。相对接近程度越高,说明方案越优。
TOPSIS方法的优点在于能够充分利用原始数据信息,结果能够精确地反映各评价方案之间的差距。同时,它对数据分布及样本含量没有严格限制,数据计算简单易行。
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;
% 示例数据,每一行代表一个方案,每一列代表一个属性
data = [2 1 3 2;
4 3 2 5;
3 2 4 2;
1 4 5 8];
% 属性的权重,可以根据实际情况调整
weights = [0.3, 0.4, 0.2,0.1];
% 数据标准化
normalized_data = bsxfun(@rdivide, data, sqrt(sum(data.^2, 1)));
% 加权标准化数据
weighted_data = bsxfun(@times, normalized_data, weights);
% 确定正理想解和负理想解
ideal_solution = max(weighted_data, [], 1);
negative_ideal_solution = min(weighted_data, [], 1);
% 计算各方案到正理想解和负理想解的距离
distances_to_ideal = sqrt(sum(bsxfun(@minus, weighted_data, ideal_solution).^2, 2));
distances_to_negative_ideal = sqrt(sum(bsxfun(@minus, weighted_data, negative_ideal_solution).^2, 2));
% 计算各方案的接近度
closeness = distances_to_negative_ideal ./ (distances_to_ideal + distances_to_negative_ideal);
% 对接近度进行排序,得到方案的排序结果
[sorted_closeness, sorted_indices] = sort(closeness, 'descend');
disp('方案的排序结果为:');
disp(sorted_indices);
% 数据可视化
figure;
bar(closeness, 'FaceColor', 'b');
title('TOPSIS评价结果');
xlabel('方案');
ylabel('接近度');
set(gca, 'xticklabel', {'方案1', '方案2', '方案3', '方案4'});
ylim([0 1.1]);
grid on;
程序结果: