MATLAB实现topsis评价方法(附完整代码和数据)

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;

程序结果:

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 19:30:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 19:30:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 19:30:01       87 阅读
  4. Python语言-面向对象

    2024-04-10 19:30:01       96 阅读

热门阅读

  1. 函数参数的类型

    2024-04-10 19:30:01       45 阅读
  2. flutter ios 运行报错

    2024-04-10 19:30:01       41 阅读
  3. 用选择法对数组中10个整数按由小到大排序

    2024-04-10 19:30:01       41 阅读
  4. 如何在苹果手机上安装iOS应用的.ipa文件?

    2024-04-10 19:30:01       118 阅读
  5. 每天学习一个Linux命令之hostnamectl

    2024-04-10 19:30:01       39 阅读
  6. 大语言模型RAG vs. 长文本

    2024-04-10 19:30:01       37 阅读
  7. 自然语言处理(NLP)技术

    2024-04-10 19:30:01       35 阅读
  8. 探索ChatGPT应用:学术写作实践与经验分享

    2024-04-10 19:30:01       30 阅读
  9. SQL注入攻击和防御

    2024-04-10 19:30:01       39 阅读