im钱包安卓版下载
数字资产服务平台

im钱包安卓版下载是全球著名的数字资产交易平台之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的币币和衍生品交易服务。

比特浏览器app下载|topsis matlab

时间:2024-03-16 11:12:16

MATLAB软件下载 - 数值计算和科学编程最新版 | 科学计算工具 - 智合数方—综合数据分析服务平台

MATLAB软件下载 - 数值计算和科学编程最新版 | 科学计算工具 - 智合数方—综合数据分析服务平台

首页Home

软件产品Nav

学习教程Nav

在线数据分析Nav

关于我们Nav

STATA教程大全NVivo教程大全Mplus教程大全MDI Jade教程大全Citespace教程大全Eviews教程大全Revman教程大全SPSS教程大全Rstudio教程大全AMOS教程大全ArcGIS教程大全

Matlab

Matlab

一款功能强大且性能稳定的商业数学软件

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。

代做程序设计

立即下载

购买咨询

Matlab是一款功能强大且性能稳定的商业数学软件

强大的数值计算能力

交互式开发环境

丰富的工具箱

跨平台支持

易于学习和使用

广泛的应用领域

Matlab 提供了丰富的数值计算功能,包括线性代数、微积分、微分方程求解、信号处理、图像处理等,可以高效地进行数值模拟和计算。

Matlab 提供了多个专业工具箱,覆盖了各种领域的计算需求,如统计工具箱、控制系统工具箱、机器学习工具箱等,用户可以根据自己的需求选择合适的工具箱进行扩展。

Matlab 可以在多种操作系统上运行,包括 Windows、MacOS 和 Linux,用户可以在不同平台上使用相同的 Matlab 程序和代码,保证了软件的跨平台兼容性。

Matlab 提供了交互式的开发环境,包括命令行界面和图形用户界面,用户可以通过命令行直接执行命令和查看结果,也可以通过图形用户界面进行交互式编程和数据可视化。

Matlab 的语法设计简洁清晰,类似于常见的数学表达式,易于学习和使用。同时,Matlab 提供了丰富的文档和教程,帮助用户快速掌握软件的基本操作和高级功能。

Matlab 在科学计算、工程技术、金融经济等领域有着广泛的应用,被用于数据分析、模拟仿真、算法开发、图像处理等各种领域,为用户提供了一种强大的技术计算和科学研究工具。

工程设计与模拟 信号和图像处理 机器人技术 数据分析与机器学习

工程设计与模拟基本介绍:

——

MATLAB 被广泛应用于各种工程领域,包括电气工程、机械工程、航空航天工程等。它支持工程模型的建立、系统仿真、优化设计和性能分析,帮助工程师和设计师快速有效地解决复杂的设计和分析问题。

获取软件 >

信号和图像处理基本介绍:

——

MATLAB 提供了强大的信号处理和图像处理工具,支持信号分析、滤波器设计、图像增强、特征提取和模式识别等。这在通信、医学成像、机器视觉等领域中具有重要应用价值。

获取软件 >

控制系统与机器人技术基本介绍: —— MATLAB 提供了先进的控制系统设计和分析工具,包括系统建模、控制器设计、稳定性分析和性能优化。这在自动化、机器人技术、无人驾驶汽车等领域中发挥了关键作用。

获取软件 >

数据分析与机器学习基本介绍: ——MATLAB 提供了丰富的数据分析和机器学习工具,支持数据预处理、特征选择、模型训练和预测分析等。这在大数据分析、人工智能、模式识别等领域中具有广泛应用。

获取软件 >

————  应用场景  ————

专业学术和研究领域的综合性数据分析服务平台

MATLAB 是我工程设计和模拟的得力助手。它不仅提供了强大的数值计算和仿真工具,还支持复杂系统的建模和优化。在我的项目中,MATLAB 帮助我快速验证设计方案、分析性能指标和优化控制策略。

作为一名数据科学家,MATLAB 为我提供了丰富的数据分析和机器学习工具。它支持数据预处理、特征工程、模型训练和预测分析,帮助我从大量数据中挖掘有价值的信息和见解。大大提高了我的工作效率和项目成功率。

在科学研究中,MATLAB 提供了全面和灵活的技术计算环境。它支持复杂的数学模型、仿真实验和数据可视化,满足了我的研究需求和挑战。通过使用 MATLAB,我能够探索新的理论、验证假设和发表高质量的研究成果。

匿名用户:**鑫服务内容:Matlab软件

匿名用户:**威服务内容:Matlab软件

匿名用户:**然软件版本:Matlab软件

— 客户感言 —

智合数方 专业数据分析服务

专业学术和研究领域的综合性数据分析服务平台

——————————————————————————————————————————————————————

微信客服            

本站教程已获得国家版权登记证书,受版权保护。未经授权,任何个人或机构不得以任何形式复制、传播、修改或用于商业目的。违反者将承担法律责任。如需使用本站教程内容,请联系我们获取授权。谢谢合作!以下为部分版权登记号:鲁作登字-2023-L-00466766   鲁作登字-2023-L-00466759   鲁作登字-2023-L-00466761   鲁作登字-2023-L-00466763   鲁作登字-2023-L-00466757

©2023 建邺区舒奇兰数据分析工作室 版权所有 苏ICP备2023032992号-1 | 本站支持  --

TOPSIS模型原理和MATLAB代码实现_topsis法matlab代码-CSDN博客

>

TOPSIS模型原理和MATLAB代码实现_topsis法matlab代码-CSDN博客

TOPSIS模型原理和MATLAB代码实现

yanyanwenmeng

已于 2022-06-04 22:36:49 修改

阅读量5.3w

收藏

1.2k

点赞数

219

分类专栏:

数学建模

文章标签:

MATLAB

数学建模

topsis

于 2020-04-16 21:49:18 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yanyanwenmeng/article/details/105521269

版权

数学建模

专栏收录该内容

35 篇文章

132 订阅

订阅专栏

IMMC2020:熵权TOPSIS

笔记整理来自清风老师的数学建模课程:TOPSIS教程

 

目录

1. 层次分析法的局限性(主观求权重方法)

2. TOPSIS法引入

2.1 一个指标的情况

2.2 2个指标的情况

2.2.1 指标正向化

2.2.2 指标标准化处理

 2.2.3 计算得分

2.2.4 实例计算

3. TOPSIS简介

4. TOPSIS法步骤

4.1 将原始矩阵正向化(可以在Excel中完成)

4.1.1 极小型指标转换为极大型指标

4.1.2 中间型指标转换为极大型指标

4.1.3 区间型指标转换为极大型指标

4.2 正向化矩阵标准化 

 4.3 计算得分并归一化

5. 例题:评价水质情况

6. 代码讲解

6.1 将数据导入到MATLAB中

6.2 判断指标是否正向化

 6.2.1 极小型指标正向化

6.2.3 中间型指标正向化

 6.2.4 区间型指标正向化

 6.2.5 指标正向化处理

 6.3 对正向化后的矩阵进行标准化

6.4 计算得分并归一化(计算与最大值的距离和最小值的距离,并算出得分)

7. 模型拓展

1. 层次分析法的局限性(主观求权重方法)

层次分析法真正的核心是判断矩阵的填写,但是判断矩阵受人为因素比较大,所以最后计算得出的权重也比较主观。如果在有数据的情况下最好不要使用层次分析法。

(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致性差异可能会很大。(可能会通过不了一致性检验)

 

(2)如果决策层中指标的数据是已知的,那么我们如何利用这些数据来使得评价更加准确呢?

可以分析数据内在的特征就行评价。(熵权法、TOPSIS法)

2. TOPSIS法引入

2.1 一个指标的情况

小明同宿舍共有四名同学,他们第一学期的高数成绩如下表所示:

请你为这四名同学进行评分,该评分能合理的描述其高数成绩的高低。 (注:这里要求的评分可以类比于上一讲层次分析法中要求的那个权重)

 修正后的排名表示数字越大越好,评分用排名的得分/总得分

可以随便修改成绩,只要保证排名不变,那么评分就不会改变!

【矛盾】评分没变说明结果有问题,说明这种评分方式不能够全部反应原始数据的全部信息。

想法1:把数都减去一个最小值。结果通过与(max-min)相处,将数字变为【0,1】之间的数。

将数归一化:

需要说明的问题:如果用下面这种方法,虽然结果更加精确,能够反应更多的原始信息;比如60分时,我们得到的结果是0.6,而不是0。但是需要知道理论的最大值和最小值。

但是大多数情况下,我们是无法知道理论的最大值与最小值的,只能得到1组数据中的最大值与最小值,所以常用的评分方法是上一种。

 为什么不用上面表格这个理论最大值最小值的公式:

2.2 2个指标的情况

新增加了一个指标,现在要综合评价四位同学,并为他们进行评分。

成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)。 与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)。

在进行分析的时候我们需要将指标统一为一个类型,一般都转为极大型指标。

2.2.1 指标正向化

将所有的指标转化为极大型称为指标正向化(最常用)

可以在excel中进行计算。比如折扣需要正向化处理。

2.2.2 指标标准化处理

只有一个指标的时候不需要消除量纲的影响,但是2个指标及以上呢?

由于成绩和争吵次数的量纲不同(单位不同),所以需要消除指标对不同量纲的影响。

为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。

 可以发现标准化后不会影响到指标的相对大小。

matlab代码:B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。

X = [89 1; 60 3; 74 2; 99 0]

[n,m] = size(X)

X./repmat(sum(X.*X).^0.5,n,1)

代码分解:

X.*X

得到 

 

sum(X.*X)

得到

sum(X.*X).^0.5

 得到

由于矩阵(点除)除法的运算需要行列一致。

repmat(sum(X.*X).^0.5,n,1)

 

X./repmat(sum(X.*X).^0.5,n,1)

 得到

 

所以:

 

 

 2.2.3 计算得分

 计算多个指标的得分时,可以类别只有一个指标时的得分。

先求出每一列的最大值最小值,再求每个元素与最大值(最小值)的距离(欧式距离)。最后求得分即可。(和只有一个指标时的解法一样)

2.2.4 实例计算

代码:

X = [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- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

 D+代码分解:D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5;   % D+ 与最大值的距离向量

 max(Z)%求出Z矩阵中每列的最大值。

 

repmat(max(Z),n,1)%将max(Z)矩阵复制n次

(Z - repmat(max(Z),n,1))%得到每一行的数与最大值的差

(Z - repmat(max(Z),n,1)) .^ 2%得到每行中的每个数与其最大值差的平方

 

 

sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2)%得到(Z - repmat(max(Z),n,1)) .^ 2 ]矩阵每一行的和 后面不加2默认是求每一列的和。

 

  

sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5 %将 sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) 的结果开根号

 最后求得的结果就是D+的结果。

结果如下: 

3. TOPSIS简介

C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。 基本过程为:

(1)将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵;

(2)再对正向化的矩阵进行标准化处理以消除各指标量纲的影响;

(3)并找到有限方案中的最优方案和最劣方案;

(4)然后分别计算各评价对象与最优方案和最劣方案间的距离;

(5)获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。

该方法对数据分布及样本含量没有严格限制,数据计算简单易行。 

4. TOPSIS法步骤

4.1 将原始矩阵正向化(可以在Excel中完成)

所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为 极大型指标。(转换的函数形式可以不唯一哦~ )

 

多指标综合评价中指标正向化和无量纲化方法的选择

 

4.1.1 极小型指标转换为极大型指标

4.1.2 中间型指标转换为极大型指标

 化简后的结果尽量在[0,1]之间。并且越靠近于最优值(这里为7)越接近于1.

4.1.3 区间型指标转换为极大型指标

4.2 正向化矩阵标准化 

标准化的目的是消除不同指标量纲的影响

【注意】标准化的方法有很多种,其主要目的就是去除量纲的影响,未来我们还可能见到更多 种的标准化方法,例如:(x‐x的均值)/x的标准差;具体选用哪一种标准化的方法在多数情况下 并没有很大的限制,这里我们采用的是前人的论文中用的比较多的一种标准化方法。

 

几种数据标准化的方法

 

指标标准化的方法

 

 4.3 计算得分并归一化

5. 例题:评价水质情况

评价下表中

20

条河流的水质情况

 

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐20之间最佳,超 过20或低于10均不好。

 

代码知识点:

 

(1)将EXCEL中的数据导入到Matlab,并另存为mat文件,下次可直接load  Matlab中函数的编写和调用

(2)magic(n)幻方矩阵

(3)sort函数

(4)zeros和ones函数

6. 代码讲解

6.1 将数据导入到MATLAB中

第一步:Ctrl+C复制Excel中的数据

第二步:在工作区新建一个空白的数据文件(.mat),命名为data_water.

 第三步:双击data_water,将数据按住Ctrl+v粘贴到里面即可。

 第四步:右击数据文件,另存为.mat文件,下次使用时可以直接用load导入数据。

 

代码: 

load data_water.mat

 然后可以将数据表的文件名改成X(短一些,好写代码)

6.2 判断指标是否正向化

 第一步:判断是否需要正向化,只有当存在非极大型指标时才需要正向化处理。

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

这里采用矩阵的形式拼接字符。 

第二步:如果需要正向化处理,输入1.

 

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如第2、3、6三列需要处理,那么你需要输入[2,3,6]: '); %[2,3,6]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如:第2列是极小型,第3列是区间型,第6列是中间型,就输入[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2) %这里需要对这些列分别处理,因此我们需要知道一共要处理的次数,即循环的次数

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% Positivization是我们自己定义的函数,其作用是进行正向化,其一共接收三个参数

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i)) 回顾上一讲的知识,X(:,n)表示取第n列的全部元素

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 该函数有一个返回值,它返回正向化之后的指标,我们可以将其直接赋值给我们原始要处理的那一列向量

end

disp('正向化后的矩阵 X = ')

disp(X)

end

 

可以得到正向化后的矩阵为:

4.690.717241379312.030.406896552350.6940363019.110.52413793180.9057908388.610.96551724180.4442523777.130.65517241440.6914433882.390.84137931160.6006914437.690.855172414160.655142619.30.8689655172705.450.5724137934916.190.813793103370.7847882457.930.634482759450.6992221264.40.806896552370.5419187557.460.1448275863112.01070.4546240282.040.5862068973117.730.406896552216.350.6290.1823681948.290.0275862071513.540.81379310300.4088159037.440.489655172460.273120138

 6.2.1 极小型指标正向化

function [posit_x] = Min2Max(x)

posit_x = max(x) - x;

%posit_x = 1 ./ x; %如果x全部都大于0,也可以这样正向化

end

6.2.3 中间型指标正向化

function [posit_x] = Mid2Max(x,best)

M = max(abs(x-best));

posit_x = 1 - abs(x-best) / M;

end

 6.2.4 区间型指标正向化

function [posit_x] = Inter2Max(x,a,b)

r_x = size(x,1); % row of x

M = max([a-min(x),max(x)-b]);

posit_x = zeros(r_x,1); %zeros函数用法: zeros(3) zeros(3,1) ones(3)

% 初始化posit_x全为0 初始化的目的是节省处理时间

for i = 1: r_x

if x(i) < a

posit_x(i) = 1-(a-x(i))/M;

elseif x(i) > b

posit_x(i) = 1-(x(i)-b)/M;

else

posit_x(i) = 1;

end

end

end

 6.2.5 指标正向化处理

% function [输出变量] = 函数名称(输入变量)

% 函数的中间部分都是函数体

% 函数的最后要用end结尾

% 输出变量和输入变量可以有多个,用逗号隔开

% function [a,b,c]=test(d,e,f)

% a=d+e;

% b=e+f;

% c=f+d;

% end

% 自定义的函数要单独放在一个m文件中,不可以直接放在主函数里面(和其他大多数语言不同)

function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值: ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end

 6.3 对正向化后的矩阵进行标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

可以得到标准化后的矩阵为:

0.1621859160.2482552780.0245440350.3064575630.0701998740.1408371290.2863470710.2126926740.3150349040.1814173190.0654507590.2775864530.2977442940.3341897980.0654507590.1361445010.246564090.2267716480.032725380.2118980560.0826491130.2912225380.1309015180.1840864360.2659295730.2959966780.1309015180.2007734080.3216053350.3007708180.22089631200.1884676430.1981268090.40088590.3064575630.2140577450.2816742580.3027097610.2405042930.2742290650.2196104380.368160520.2142819090.1521573630.2792871880.3027097610.1660751010.2579758920.050128470.2536216920.3064575630.0695082500.0572694140.1393229720.0705456860.2029009490.2536216920.3064575630.2673128220.1408371290.016362690.3064575630.219590740.2076750880.2372590020.0558881120.2866783040.009548280.1227201730.3064575630.1224175150.28167425800.1252847260.2572842680.1694819690.3763418650.083699732

6.4 计算得分并归一化(计算与最大值的距离和最小值的距离,并算出得分)

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- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)%归一化后的得分

%[sorted_S,index] = sort(stand_S ,'descend')

 

 

 排序(可以在Excel中完成),可以看出河流K的得分最高,排名最高。

河流D+D-Stand_S(归一化后得分)排名K0.1579 0.5212 0.0702 1J0.1683 0.4997 0.0684 2I0.1904 0.5550 0.0681 3L0.2471 0.4517 0.0591 4T0.2855 0.4611 0.0565 5G0.2977 0.4285 0.0539 6O0.3193 0.4466 0.0533 7M0.3262 0.4430 0.0527 8H0.3570 0.4503 0.0510 9D0.3770 0.4320 0.0488 10C0.3698 0.4178 0.0485 11B0.3500 0.3835 0.0478 12Q0.3405 0.3537 0.0466 13A0.4177 0.4059 0.0451 14F0.3832 0.3688 0.0448 15R0.4289 0.3953 0.0438 16P0.4338 0.3913 0.0434 17E0.4021 0.3588 0.0431 18S0.4858 0.3128 0.0358 19N0.5668 0.1506 0.0192 20

 

7. 模型拓展

 

 

 

优惠劵

yanyanwenmeng

关注

关注

219

点赞

1241

收藏

觉得还不错?

一键收藏

知道了

30

评论

TOPSIS模型原理和MATLAB代码实现

IMMC2020:熵权TOPSIS1. 层次分析法的局限性(主观求权重方法)层次分析法真正的核心是判断矩阵的填写,但是判断矩阵受人为因素比较大,所以最后计算得出的权重也比较主观。如果在有数据的情况下最好不要使用层次分析法。(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致性差异可能会很大。(可能会通过不了一致性检验)(2)如果决策层中指标的数据是已知的,那么......

复制链接

扫一扫

专栏目录

基于Matlab实现topsis(源码).rar

07-20

基于Matlab实现topsis(源码).rar

TOPSIS法(熵权法)(模型+MATLAB代码)

热门推荐

m0_62504956的博客

12-27

1万+

标准化处理:为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。(2)计算第j项指标下第i个样本所占的比重,并将其看作相对熵计算中用到的概率。(3)计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。信息效用值的定义:dj=1-ej 信息效用值越大,其对应的信息就越多。(1)判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间。当然:层次分析法的主观性太强了,更推荐大家使用。TOPSIS法是一种常用的。带权重的TOPSIS:使用。信息熵越大对应的信息量越小。

30 条评论

您还未登录,请先

登录

后发表或查看评论

TOPSIS法Matlab代码

最新发布

qq_64408956的博客

12-15

428

Topsis法Matlab实现

matlab算法第二篇熵权TOPSIS法综合评价

m0_58267655的博客

09-21

2676

TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

...

TOPSIS法详细原理+MATLAB代码

weixin_62616638的博客

12-05

1228

❑ TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法是一种多属性决策方法,通过比较备选解与理想解之间的距离来确定最佳的排序顺序。正理想解是在每个属性上都达到最佳值的解,而负理想解则是在每个属性上都达到最差值的解。❑ 为了确定备选解与理想解的距离,首先计算每个备选解与理想解之间的欧式距离或其他合适的距离度量。然后,计算备选解与理想解之间的正标准化距离和负标准化距离。

数学建模TOPSIS法(优劣解距离法)Matlab实现代码

数学建模学习交流的博客

07-27

1万+

TOPSIS法

(Technique for Order Preference by Similarity to Ideal Solution)

可翻译为逼近理想解排序法,国内常简称为优劣解距离法

TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。

实现代码共五个m文件

(1)主程序 topsis.m

%% 第一步:把数据复制...

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

m0_73879806的博客

06-11

7433

TOPSI客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

例题:为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,表1是所给出的部分数据。

数学建模之TOPSIS模型(含matlab代码)

lingdangbell的博客

07-20

1120

数学建模之TOPSIS模型,内含代码和讲解,可自行修改。笔记来自b站建模老哥

MATLAB 之 优劣解距离法(TOPSIS )

每天进步一点点!

11-23

6736

TOPSIS 总结

熵权法优化TOPSIS(MATLAB)

qq_53471484的博客

07-19

1179

熵权法优化TOPSIS

评价类算法 之 Topsis优劣解距离法和熵权法权值确定

[ 25'h ]

03-08

4558

评价类算法 之 Topsis优劣解距离法和熵权法权值确定

topsis代码matlab可直接用

m0_62977097的博客

09-27

610

【代码】topsis代码matlab可直接用。

水质评价模糊分析代码matlab

10-15

水质评价模糊分析matlab代码,原创。

内有使用说明。

帮人写的,我非专业人士。

算法仅供参考,不一定科学。

学习matlab编程的话就无所谓了。

【数据分析】Matlab实现熵权TOPSIS.zip

04-20

1.版本:matlab2014/2019a,内含运行结果,不会运行可私信

2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像

3.内容:标题所示,对于介绍可点击主页搜索博客

4.适合人群:本科,硕士等教研学习使用

5.博客介绍:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可si信

用MATLAB实现topsis评价法

STONE10089的博客

11-04

6027

最近将topsis评价方法用matlab实现了,就此分享一下具体操作方法,以供大家参考纠正。

1 将topsis的评价流程及函数方程列出

1.1 对各评价对象的参数矩阵进行同向化处理。

一般选择正向化处理,下面列举一些网络上其他博主的公式,以供参考使用。

1.1.1 极大型指标正向化

极大型指标所指意思为,这个指标越大越好,例如(升学率,毕业率等)

X:各极大型属性指标的参数;

Xmax:X参数中的最大参数;

Xmin:X参数中的最小参数;

1.1.2 极小型指标正向化

同极大型

topsis法matlab程序,TOPSIS算法(示例代码)

weixin_39800957的博客

03-20

2811

title: TOPSIS算法date: 2020-02-24 11:18:06categories: 数学建模tags: [评价模型, MATLAB]mathjax: true定义? C.L.Hwang和K.Yoon于1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近...

TOPSIS(优劣解距离法)清风建模学习笔记

m0_52453314的博客

07-11

2421

简介

TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

层次分析法的局限性

Matlab实现——结合AHP or 熵权法的TOPSIS评判模型

jiushiabingbing的博客

07-07

6376

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np

import

数学建模学习笔记(2):TOPSIS方法(优劣解距离法)和熵权法修正

hanmo22357的博客

08-01

8021

对于指标已经存在一定的客观数值可以作为评价标准时,层次分析法来进行对某一指标的评分就已经不适用了,此时可以使用TOPSIS方法进行评价。

基于熵权法的topsis模型代码matlab

05-29

以下是基于熵权法的topsis模型的Matlab代码示例: 假设有5个方案,每个方案有3个属性。数据如下: ``` X = [8 7 6; 4 6 10; 9 9 7; 7 8 5; 6 7 8]; ``` 首先,对数据进行归一化处理: ``` [m, n] = size(X); X_...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

yanyanwenmeng

CSDN认证博客专家

CSDN认证企业博客

码龄7年

暂无认证

353

原创

3万+

周排名

1422

总排名

136万+

访问

等级

1万+

积分

1064

粉丝

1770

获赞

191

评论

9496

收藏

私信

关注

热门文章

sscanf的用法

72597

citespace教程

63335

TOPSIS模型原理和MATLAB代码实现

53233

citespace 下载及安装

50365

模糊综合评价模型原理及matlab实现

40103

分类专栏

数学建模

35篇

结构方程模型

3篇

量表开发与验证

3篇

kaggle

2篇

2篇

前缀和差分

3篇

USACO

17篇

优化

6篇

NOIP复赛

1篇

机器学习 weka软件使用

4篇

论文

17篇

程序设计与算法(二)算法基础

22篇

趣学算法

6篇

程序设计与算法(一) C语言程序设计

67篇

App Inventor

3篇

算法

35篇

信息技术与课程整合

ACM

7篇

算法 结构体

13篇

排序

19篇

字符处理

19篇

动态规划

29篇

数组

17篇

枚举

21篇

循环结构

10篇

搜索

11篇

递归

23篇

竞赛知识点

49篇

分治

8篇

数据结构

16篇

11篇

指针

14篇

链表

10篇

队列

1篇

STL

16篇

贪心

17篇

顺序查找

1篇

图的遍历

1篇

最短路径问题

3篇

网页设计

9篇

计算机基础知识

1篇

NOIP初赛

4篇

学生辅导

2篇

小学奥数

2篇

进制转换

5篇

PPT

1篇

matlab

8篇

会考系统问题

学校

高精度

3篇

python

3篇

递推

8篇

最新评论

TOPSIS模型原理和MATLAB代码实现

诺言与等待225:

你把Positivization单独存一个.m文件

数据结构 找树根和孩子(树)

wangsenluo:

有多个max的结点要全部输出

citespace教程

2301_80793920:

为什么visio做好的流程图复制到word里面格式变了

TOPSIS模型原理和MATLAB代码实现

2301_80138581:

大佬救命,显示函数或变量 'Positivization' 无法识别。

区间内的真素数

2301_78153715:

主函数里面那个数组s没有定义是怎么直接可以用的?我不是很懂

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

制作照片数字人,让图片开口说话

将python程序打包为exe格式

数据的存储与保护

2024年2篇

2023年8篇

2022年21篇

2021年1篇

2020年47篇

2019年62篇

2018年117篇

2017年96篇

2016年11篇

目录

目录

分类专栏

数学建模

35篇

结构方程模型

3篇

量表开发与验证

3篇

kaggle

2篇

2篇

前缀和差分

3篇

USACO

17篇

优化

6篇

NOIP复赛

1篇

机器学习 weka软件使用

4篇

论文

17篇

程序设计与算法(二)算法基础

22篇

趣学算法

6篇

程序设计与算法(一) C语言程序设计

67篇

App Inventor

3篇

算法

35篇

信息技术与课程整合

ACM

7篇

算法 结构体

13篇

排序

19篇

字符处理

19篇

动态规划

29篇

数组

17篇

枚举

21篇

循环结构

10篇

搜索

11篇

递归

23篇

竞赛知识点

49篇

分治

8篇

数据结构

16篇

11篇

指针

14篇

链表

10篇

队列

1篇

STL

16篇

贪心

17篇

顺序查找

1篇

图的遍历

1篇

最短路径问题

3篇

网页设计

9篇

计算机基础知识

1篇

NOIP初赛

4篇

学生辅导

2篇

小学奥数

2篇

进制转换

5篇

PPT

1篇

matlab

8篇

会考系统问题

学校

高精度

3篇

python

3篇

递推

8篇

目录

评论 30

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

TOPSIS模型原理和MATLAB代码实现_topsis法matlab代码-CSDN博客

>

TOPSIS模型原理和MATLAB代码实现_topsis法matlab代码-CSDN博客

TOPSIS模型原理和MATLAB代码实现

yanyanwenmeng

已于 2022-06-04 22:36:49 修改

阅读量5.3w

收藏

1.2k

点赞数

219

分类专栏:

数学建模

文章标签:

MATLAB

数学建模

topsis

于 2020-04-16 21:49:18 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yanyanwenmeng/article/details/105521269

版权

数学建模

专栏收录该内容

35 篇文章

132 订阅

订阅专栏

IMMC2020:熵权TOPSIS

笔记整理来自清风老师的数学建模课程:TOPSIS教程

 

目录

1. 层次分析法的局限性(主观求权重方法)

2. TOPSIS法引入

2.1 一个指标的情况

2.2 2个指标的情况

2.2.1 指标正向化

2.2.2 指标标准化处理

 2.2.3 计算得分

2.2.4 实例计算

3. TOPSIS简介

4. TOPSIS法步骤

4.1 将原始矩阵正向化(可以在Excel中完成)

4.1.1 极小型指标转换为极大型指标

4.1.2 中间型指标转换为极大型指标

4.1.3 区间型指标转换为极大型指标

4.2 正向化矩阵标准化 

 4.3 计算得分并归一化

5. 例题:评价水质情况

6. 代码讲解

6.1 将数据导入到MATLAB中

6.2 判断指标是否正向化

 6.2.1 极小型指标正向化

6.2.3 中间型指标正向化

 6.2.4 区间型指标正向化

 6.2.5 指标正向化处理

 6.3 对正向化后的矩阵进行标准化

6.4 计算得分并归一化(计算与最大值的距离和最小值的距离,并算出得分)

7. 模型拓展

1. 层次分析法的局限性(主观求权重方法)

层次分析法真正的核心是判断矩阵的填写,但是判断矩阵受人为因素比较大,所以最后计算得出的权重也比较主观。如果在有数据的情况下最好不要使用层次分析法。

(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致性差异可能会很大。(可能会通过不了一致性检验)

 

(2)如果决策层中指标的数据是已知的,那么我们如何利用这些数据来使得评价更加准确呢?

可以分析数据内在的特征就行评价。(熵权法、TOPSIS法)

2. TOPSIS法引入

2.1 一个指标的情况

小明同宿舍共有四名同学,他们第一学期的高数成绩如下表所示:

请你为这四名同学进行评分,该评分能合理的描述其高数成绩的高低。 (注:这里要求的评分可以类比于上一讲层次分析法中要求的那个权重)

 修正后的排名表示数字越大越好,评分用排名的得分/总得分

可以随便修改成绩,只要保证排名不变,那么评分就不会改变!

【矛盾】评分没变说明结果有问题,说明这种评分方式不能够全部反应原始数据的全部信息。

想法1:把数都减去一个最小值。结果通过与(max-min)相处,将数字变为【0,1】之间的数。

将数归一化:

需要说明的问题:如果用下面这种方法,虽然结果更加精确,能够反应更多的原始信息;比如60分时,我们得到的结果是0.6,而不是0。但是需要知道理论的最大值和最小值。

但是大多数情况下,我们是无法知道理论的最大值与最小值的,只能得到1组数据中的最大值与最小值,所以常用的评分方法是上一种。

 为什么不用上面表格这个理论最大值最小值的公式:

2.2 2个指标的情况

新增加了一个指标,现在要综合评价四位同学,并为他们进行评分。

成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)。 与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)。

在进行分析的时候我们需要将指标统一为一个类型,一般都转为极大型指标。

2.2.1 指标正向化

将所有的指标转化为极大型称为指标正向化(最常用)

可以在excel中进行计算。比如折扣需要正向化处理。

2.2.2 指标标准化处理

只有一个指标的时候不需要消除量纲的影响,但是2个指标及以上呢?

由于成绩和争吵次数的量纲不同(单位不同),所以需要消除指标对不同量纲的影响。

为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。

 可以发现标准化后不会影响到指标的相对大小。

matlab代码:B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。

X = [89 1; 60 3; 74 2; 99 0]

[n,m] = size(X)

X./repmat(sum(X.*X).^0.5,n,1)

代码分解:

X.*X

得到 

 

sum(X.*X)

得到

sum(X.*X).^0.5

 得到

由于矩阵(点除)除法的运算需要行列一致。

repmat(sum(X.*X).^0.5,n,1)

 

X./repmat(sum(X.*X).^0.5,n,1)

 得到

 

所以:

 

 

 2.2.3 计算得分

 计算多个指标的得分时,可以类别只有一个指标时的得分。

先求出每一列的最大值最小值,再求每个元素与最大值(最小值)的距离(欧式距离)。最后求得分即可。(和只有一个指标时的解法一样)

2.2.4 实例计算

代码:

X = [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- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

 D+代码分解:D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5;   % D+ 与最大值的距离向量

 max(Z)%求出Z矩阵中每列的最大值。

 

repmat(max(Z),n,1)%将max(Z)矩阵复制n次

(Z - repmat(max(Z),n,1))%得到每一行的数与最大值的差

(Z - repmat(max(Z),n,1)) .^ 2%得到每行中的每个数与其最大值差的平方

 

 

sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2)%得到(Z - repmat(max(Z),n,1)) .^ 2 ]矩阵每一行的和 后面不加2默认是求每一列的和。

 

  

sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) .^ 0.5 %将 sum([(Z - repmat(max(Z),n,1)) .^ 2 ],2) 的结果开根号

 最后求得的结果就是D+的结果。

结果如下: 

3. TOPSIS简介

C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。 基本过程为:

(1)将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵;

(2)再对正向化的矩阵进行标准化处理以消除各指标量纲的影响;

(3)并找到有限方案中的最优方案和最劣方案;

(4)然后分别计算各评价对象与最优方案和最劣方案间的距离;

(5)获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。

该方法对数据分布及样本含量没有严格限制,数据计算简单易行。 

4. TOPSIS法步骤

4.1 将原始矩阵正向化(可以在Excel中完成)

所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为 极大型指标。(转换的函数形式可以不唯一哦~ )

 

多指标综合评价中指标正向化和无量纲化方法的选择

 

4.1.1 极小型指标转换为极大型指标

4.1.2 中间型指标转换为极大型指标

 化简后的结果尽量在[0,1]之间。并且越靠近于最优值(这里为7)越接近于1.

4.1.3 区间型指标转换为极大型指标

4.2 正向化矩阵标准化 

标准化的目的是消除不同指标量纲的影响

【注意】标准化的方法有很多种,其主要目的就是去除量纲的影响,未来我们还可能见到更多 种的标准化方法,例如:(x‐x的均值)/x的标准差;具体选用哪一种标准化的方法在多数情况下 并没有很大的限制,这里我们采用的是前人的论文中用的比较多的一种标准化方法。

 

几种数据标准化的方法

 

指标标准化的方法

 

 4.3 计算得分并归一化

5. 例题:评价水质情况

评价下表中

20

条河流的水质情况

 

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐20之间最佳,超 过20或低于10均不好。

 

代码知识点:

 

(1)将EXCEL中的数据导入到Matlab,并另存为mat文件,下次可直接load  Matlab中函数的编写和调用

(2)magic(n)幻方矩阵

(3)sort函数

(4)zeros和ones函数

6. 代码讲解

6.1 将数据导入到MATLAB中

第一步:Ctrl+C复制Excel中的数据

第二步:在工作区新建一个空白的数据文件(.mat),命名为data_water.

 第三步:双击data_water,将数据按住Ctrl+v粘贴到里面即可。

 第四步:右击数据文件,另存为.mat文件,下次使用时可以直接用load导入数据。

 

代码: 

load data_water.mat

 然后可以将数据表的文件名改成X(短一些,好写代码)

6.2 判断指标是否正向化

 第一步:判断是否需要正向化,只有当存在非极大型指标时才需要正向化处理。

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

这里采用矩阵的形式拼接字符。 

第二步:如果需要正向化处理,输入1.

 

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如第2、3、6三列需要处理,那么你需要输入[2,3,6]: '); %[2,3,6]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如:第2列是极小型,第3列是区间型,第6列是中间型,就输入[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2) %这里需要对这些列分别处理,因此我们需要知道一共要处理的次数,即循环的次数

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% Positivization是我们自己定义的函数,其作用是进行正向化,其一共接收三个参数

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i)) 回顾上一讲的知识,X(:,n)表示取第n列的全部元素

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 该函数有一个返回值,它返回正向化之后的指标,我们可以将其直接赋值给我们原始要处理的那一列向量

end

disp('正向化后的矩阵 X = ')

disp(X)

end

 

可以得到正向化后的矩阵为:

4.690.717241379312.030.406896552350.6940363019.110.52413793180.9057908388.610.96551724180.4442523777.130.65517241440.6914433882.390.84137931160.6006914437.690.855172414160.655142619.30.8689655172705.450.5724137934916.190.813793103370.7847882457.930.634482759450.6992221264.40.806896552370.5419187557.460.1448275863112.01070.4546240282.040.5862068973117.730.406896552216.350.6290.1823681948.290.0275862071513.540.81379310300.4088159037.440.489655172460.273120138

 6.2.1 极小型指标正向化

function [posit_x] = Min2Max(x)

posit_x = max(x) - x;

%posit_x = 1 ./ x; %如果x全部都大于0,也可以这样正向化

end

6.2.3 中间型指标正向化

function [posit_x] = Mid2Max(x,best)

M = max(abs(x-best));

posit_x = 1 - abs(x-best) / M;

end

 6.2.4 区间型指标正向化

function [posit_x] = Inter2Max(x,a,b)

r_x = size(x,1); % row of x

M = max([a-min(x),max(x)-b]);

posit_x = zeros(r_x,1); %zeros函数用法: zeros(3) zeros(3,1) ones(3)

% 初始化posit_x全为0 初始化的目的是节省处理时间

for i = 1: r_x

if x(i) < a

posit_x(i) = 1-(a-x(i))/M;

elseif x(i) > b

posit_x(i) = 1-(x(i)-b)/M;

else

posit_x(i) = 1;

end

end

end

 6.2.5 指标正向化处理

% function [输出变量] = 函数名称(输入变量)

% 函数的中间部分都是函数体

% 函数的最后要用end结尾

% 输出变量和输入变量可以有多个,用逗号隔开

% function [a,b,c]=test(d,e,f)

% a=d+e;

% b=e+f;

% c=f+d;

% end

% 自定义的函数要单独放在一个m文件中,不可以直接放在主函数里面(和其他大多数语言不同)

function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值: ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end

 6.3 对正向化后的矩阵进行标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

可以得到标准化后的矩阵为:

0.1621859160.2482552780.0245440350.3064575630.0701998740.1408371290.2863470710.2126926740.3150349040.1814173190.0654507590.2775864530.2977442940.3341897980.0654507590.1361445010.246564090.2267716480.032725380.2118980560.0826491130.2912225380.1309015180.1840864360.2659295730.2959966780.1309015180.2007734080.3216053350.3007708180.22089631200.1884676430.1981268090.40088590.3064575630.2140577450.2816742580.3027097610.2405042930.2742290650.2196104380.368160520.2142819090.1521573630.2792871880.3027097610.1660751010.2579758920.050128470.2536216920.3064575630.0695082500.0572694140.1393229720.0705456860.2029009490.2536216920.3064575630.2673128220.1408371290.016362690.3064575630.219590740.2076750880.2372590020.0558881120.2866783040.009548280.1227201730.3064575630.1224175150.28167425800.1252847260.2572842680.1694819690.3763418650.083699732

6.4 计算得分并归一化(计算与最大值的距离和最小值的距离,并算出得分)

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- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)%归一化后的得分

%[sorted_S,index] = sort(stand_S ,'descend')

 

 

 排序(可以在Excel中完成),可以看出河流K的得分最高,排名最高。

河流D+D-Stand_S(归一化后得分)排名K0.1579 0.5212 0.0702 1J0.1683 0.4997 0.0684 2I0.1904 0.5550 0.0681 3L0.2471 0.4517 0.0591 4T0.2855 0.4611 0.0565 5G0.2977 0.4285 0.0539 6O0.3193 0.4466 0.0533 7M0.3262 0.4430 0.0527 8H0.3570 0.4503 0.0510 9D0.3770 0.4320 0.0488 10C0.3698 0.4178 0.0485 11B0.3500 0.3835 0.0478 12Q0.3405 0.3537 0.0466 13A0.4177 0.4059 0.0451 14F0.3832 0.3688 0.0448 15R0.4289 0.3953 0.0438 16P0.4338 0.3913 0.0434 17E0.4021 0.3588 0.0431 18S0.4858 0.3128 0.0358 19N0.5668 0.1506 0.0192 20

 

7. 模型拓展

 

 

 

优惠劵

yanyanwenmeng

关注

关注

219

点赞

1241

收藏

觉得还不错?

一键收藏

知道了

30

评论

TOPSIS模型原理和MATLAB代码实现

IMMC2020:熵权TOPSIS1. 层次分析法的局限性(主观求权重方法)层次分析法真正的核心是判断矩阵的填写,但是判断矩阵受人为因素比较大,所以最后计算得出的权重也比较主观。如果在有数据的情况下最好不要使用层次分析法。(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致性差异可能会很大。(可能会通过不了一致性检验)(2)如果决策层中指标的数据是已知的,那么......

复制链接

扫一扫

专栏目录

基于Matlab实现topsis(源码).rar

07-20

基于Matlab实现topsis(源码).rar

TOPSIS法(熵权法)(模型+MATLAB代码)

m0_62504956的博客

12-27

1万+

标准化处理:为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理。(2)计算第j项指标下第i个样本所占的比重,并将其看作相对熵计算中用到的概率。(3)计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。信息效用值的定义:dj=1-ej 信息效用值越大,其对应的信息就越多。(1)判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间。当然:层次分析法的主观性太强了,更推荐大家使用。TOPSIS法是一种常用的。带权重的TOPSIS:使用。信息熵越大对应的信息量越小。

30 条评论

您还未登录,请先

登录

后发表或查看评论

TOPSIS法Matlab代码

最新发布

qq_64408956的博客

12-15

428

Topsis法Matlab实现

matlab算法第二篇熵权TOPSIS法综合评价

m0_58267655的博客

09-21

2676

TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

...

TOPSIS法详细原理+MATLAB代码

weixin_62616638的博客

12-05

1228

❑ TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法是一种多属性决策方法,通过比较备选解与理想解之间的距离来确定最佳的排序顺序。正理想解是在每个属性上都达到最佳值的解,而负理想解则是在每个属性上都达到最差值的解。❑ 为了确定备选解与理想解的距离,首先计算每个备选解与理想解之间的欧式距离或其他合适的距离度量。然后,计算备选解与理想解之间的正标准化距离和负标准化距离。

数学建模之TOPSIS模型(含matlab代码)

lingdangbell的博客

07-20

1120

数学建模之TOPSIS模型,内含代码和讲解,可自行修改。笔记来自b站建模老哥

水质评价模糊分析代码matlab

10-15

水质评价模糊分析matlab代码,原创。

内有使用说明。

帮人写的,我非专业人士。

算法仅供参考,不一定科学。

学习matlab编程的话就无所谓了。

如何用matlaab把csv转为mat文件_数学建模竞赛学习笔记:用TOPSIS模型进行综合评价

weixin_39653448的博客

11-12

1449

笔记整理来自清风老师的数学建模课程(可以在B站里搜索到,头条无法放站外链接,我就不放了):TOPSIS教程目录1. 层次分析法的局限性(主观求权重方法)2. TOPSIS法引入2.1 一个指标的情况2.2 2个指标的情况2.2.1 指标正向化2.2.2 指标标准化处理 2.2.3 计算得分2.2.4 实例计算3. TOPSIS简介4. TOPSIS法步骤4.1 将原始矩阵正向化(可以在Excel中...

TOPSIS法 —— matlab

PY洋洋

01-30

1万+

1.TOPSIS法介绍

2. 计算步骤

(1)数据标准化

(2)得到加权后的矩阵

(3)确定正理想解和负理想解

(4)计算各方案到正(负)理想解的距离

(5)计算综合评价值

3.实例研究

3.1 读取数据

3.2 数据标准化

3.3 得到信息熵

3.4 计算权重并计算权重数据

3.5得到最大值和最小值距离

3.6 计算得分

总代码

【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列

m0_52474147的博客

11-28

1万+

设多属性决策方案(单元)为D={d1,d2,…,dm},衡量方案优劣的属性变量为x1,x2,…,xn,这些方案D中的每个方案di(i=1,2,…)的n个属性构成向量[ai1,ai2,…,ain],将其作为n维空间的一个点,能唯一地代表方案di。正理想解C*是一个方案D中不存在的虚拟最佳方案,它的每个属性都是决策矩阵中该属性的最优值;而负理想解C0则是虚拟的最差方案,它的每个属性都是决策矩阵中该属性的最差值。

评价与决策原理:将D中每个

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

m0_73879806的博客

06-11

7433

TOPSI客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

例题:为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,表1是所给出的部分数据。

结合熵权法的TOPSIS方法

09-27

结合熵权法的topsis方法的代码,由于本身函数较多,还有一些数据作为例题所以没有办法单独放在网页上,只能通过压缩包下载

【数据分析】Matlab实现熵权TOPSIS.zip

04-20

1.版本:matlab2014/2019a,内含运行结果,不会运行可私信

2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像

3.内容:标题所示,对于介绍可点击主页搜索博客

4.适合人群:本科,硕士等教研学习使用

5.博客介绍:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可si信

topsis优劣解距离法MATLAB代码实现

08-14

数学建模优劣解距离法的案例程序

TOPSIS模型具体步骤及代码.zip

03-17

“双基点法”也称作TOPSIS(Technique for order Preference by Similarity to idealsolution)法,它可用来 解决社会经济和工程技术领域经常遇到的一类多指标多方案的评价与排序问题。在备选方案集中,根据 指标性质...

topsis_matlab_topsis代码_topsis_权重kb_

10-03

topsis加权代码,仅供参考,非原创。

citespace教程

热门推荐

yanyanwenmeng的博客

02-16

6万+

参考视频教程:【CiteSpace保姆级教程1】文献综述怎么写?研究生写文神器 | 手把手教你做科学知识图谱 | 以中国知网为例_哔哩哔哩_bilibili

一、citespace区域

1. 操作区

2. 时间切片区

可以控制我们所需要分析的文献起始年份

3. 文本处理区

保持默认即可,不需要特别的更改

4. 网络配置功能区

Node Types

蓝色:合作网络分析,对象为作者、机构、国家,可以分析哪些作者(结构、国家)发文量、合作比较多。

绿色:共线分析,...

citespace 下载及安装

yanyanwenmeng的博客

02-14

5万+

一、citespace软件下载

进入官网:Downloadhttp://cluster.cis.drexel.edu/~cchen/citespace/download/

1. 点击"download now"下载

二、Java下载

官网地址:https://www.java.com/zh-CN/download/https://www.java.com/zh-CN/download/

基于熵权法的topsis模型代码matlab

05-29

以下是基于熵权法的topsis模型的Matlab代码示例:

假设有5个方案,每个方案有3个属性。数据如下:

```

X = [8 7 6; 4 6 10; 9 9 7; 7 8 5; 6 7 8];

```

首先,对数据进行归一化处理:

```

[m, n] = size(X);

X_norm = X./repmat(sqrt(sum(X.^2, 2)), 1, n);

```

然后,使用熵权法计算每个属性的权重:

```

E = -mean(X_norm.*log(X_norm));

w = (1-E)/(n-sum(E));

```

接下来,对数据进行加权处理:

```

X_weighted = X_norm.*repmat(w, m, 1);

```

然后,使用topsis算法对每个方案进行评估:

```

v1 = max(X_weighted, [], 2);

v2 = min(X_weighted, [], 2);

S1 = sqrt(sum((X_weighted-repmat(v1, 1, n)).^2, 2));

S2 = sqrt(sum((X_weighted-repmat(v2, 1, n)).^2, 2));

C = S2./(S1+S2);

```

最后,选出最优方案:

```

[~, idx] = max(C);

```

以上就是基于熵权法的topsis模型的Matlab代码示例。注意,在实际应用中,可能需要对数据进行更多的处理和优化,以达到更好的效果。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

yanyanwenmeng

CSDN认证博客专家

CSDN认证企业博客

码龄7年

暂无认证

353

原创

3万+

周排名

1422

总排名

136万+

访问

等级

1万+

积分

1064

粉丝

1770

获赞

191

评论

9496

收藏

私信

关注

热门文章

sscanf的用法

72597

citespace教程

63335

TOPSIS模型原理和MATLAB代码实现

53233

citespace 下载及安装

50365

模糊综合评价模型原理及matlab实现

40103

分类专栏

数学建模

35篇

结构方程模型

3篇

量表开发与验证

3篇

kaggle

2篇

2篇

前缀和差分

3篇

USACO

17篇

优化

6篇

NOIP复赛

1篇

机器学习 weka软件使用

4篇

论文

17篇

程序设计与算法(二)算法基础

22篇

趣学算法

6篇

程序设计与算法(一) C语言程序设计

67篇

App Inventor

3篇

算法

35篇

信息技术与课程整合

ACM

7篇

算法 结构体

13篇

排序

19篇

字符处理

19篇

动态规划

29篇

数组

17篇

枚举

21篇

循环结构

10篇

搜索

11篇

递归

23篇

竞赛知识点

49篇

分治

8篇

数据结构

16篇

11篇

指针

14篇

链表

10篇

队列

1篇

STL

16篇

贪心

17篇

顺序查找

1篇

图的遍历

1篇

最短路径问题

3篇

网页设计

9篇

计算机基础知识

1篇

NOIP初赛

4篇

学生辅导

2篇

小学奥数

2篇

进制转换

5篇

PPT

1篇

matlab

8篇

会考系统问题

学校

高精度

3篇

python

3篇

递推

8篇

最新评论

TOPSIS模型原理和MATLAB代码实现

诺言与等待225:

你把Positivization单独存一个.m文件

数据结构 找树根和孩子(树)

wangsenluo:

有多个max的结点要全部输出

citespace教程

2301_80793920:

为什么visio做好的流程图复制到word里面格式变了

TOPSIS模型原理和MATLAB代码实现

2301_80138581:

大佬救命,显示函数或变量 'Positivization' 无法识别。

区间内的真素数

2301_78153715:

主函数里面那个数组s没有定义是怎么直接可以用的?我不是很懂

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

制作照片数字人,让图片开口说话

将python程序打包为exe格式

数据的存储与保护

2024年2篇

2023年8篇

2022年21篇

2021年1篇

2020年47篇

2019年62篇

2018年117篇

2017年96篇

2016年11篇

目录

目录

分类专栏

数学建模

35篇

结构方程模型

3篇

量表开发与验证

3篇

kaggle

2篇

2篇

前缀和差分

3篇

USACO

17篇

优化

6篇

NOIP复赛

1篇

机器学习 weka软件使用

4篇

论文

17篇

程序设计与算法(二)算法基础

22篇

趣学算法

6篇

程序设计与算法(一) C语言程序设计

67篇

App Inventor

3篇

算法

35篇

信息技术与课程整合

ACM

7篇

算法 结构体

13篇

排序

19篇

字符处理

19篇

动态规划

29篇

数组

17篇

枚举

21篇

循环结构

10篇

搜索

11篇

递归

23篇

竞赛知识点

49篇

分治

8篇

数据结构

16篇

11篇

指针

14篇

链表

10篇

队列

1篇

STL

16篇

贪心

17篇

顺序查找

1篇

图的遍历

1篇

最短路径问题

3篇

网页设计

9篇

计算机基础知识

1篇

NOIP初赛

4篇

学生辅导

2篇

小学奥数

2篇

进制转换

5篇

PPT

1篇

matlab

8篇

会考系统问题

学校

高精度

3篇

python

3篇

递推

8篇

目录

评论 30

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎

TOPSIS(逼近理想解)算法原理详解与代码实现 - 知乎首发于11111切换模式写文章登录/注册TOPSIS(逼近理想解)算法原理详解与代码实现子木​程序在公众号(不更新推文,不发广告):一个安静的资料号写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的接近程度,作为评价方案的优劣标准,最后得到各个方案的优劣值。目录一、TOPSIS算法1.1 TOPSIS算法的原理1.2 TOPSIS算法的实现二、数据预处理2.1 数据正向化处理2.1.1对于极小型指标的正向化处理2.1.2 对于中间型指标的正向化处理2.1.3对于区间型指标的正向化处理2.2数据标准化处理三、TOPSIS算法实现3.1最优解与最劣解计算3.2 TOPSIS评分计算四、TOPSIS算法总结4.1 TOPSIS算法实现步骤五、TOPSIS算法示例与扩展5.1 TOPSIS算法示例5.2 TOPSIS算法扩展六、程序源码如有专业问题或者需要仿真可以点下面付费咨询链接。一、TOPSIS算法1.1 TOPSIS算法的原理TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。为了对众多方案给出一个排序,在给出所有方案之后,可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解。而TOPSIS的想法就是,通过一定的计算,评估方案系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据,理想最劣解同理。如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS基本思想是用下面这个表达式进行衡量:\frac{某一方案-最劣解}{理想最优解-最劣解} 可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。当然这个公式只是一个基本的思路,实际上,为了更准确与合理,会对该公式进行优化。1.2 TOPSIS算法的实现在了解TOPSIS算法的基本思想后就是对相应参数的计算了,从上面的描述可以知道,除了要对该公式进行改进之外,因为涉及到数据之间的比较,还需要对方案数据进行处理,消除量纲以及范围太大带来的一系列问题。二、数据预处理2.1 数据正向化处理在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。将指标分为四类,如下表所示。四类指标类型正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。2.1.1 对于极小型指标的正向化处理例如费用,我们可以用​将其转化为极大型,如果所有元素都为正数,也可以使用2.1.2 对于中间型指标的正向化处理如果其最佳数值是 x_{best} ,我们可以取 M=max\left\{ |x_{i}-x_{best}| \right\} ,之后按照转化。PH值正向化处理2.1.3 对于区间型指标的正向化处理对于区间型指标,如果其最佳区间是[a,b],我们取M=max\left\{ a-min\left\{ x_{i} \right\}, max\left\{ x_{i} \right\}-b\right\},之后按照转化,示例如下。区间型指标正向化处理至此,已将所有的数据都转化为极大型数据了。2.2 数据标准化处理为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是 \frac{X-EX}{\sqrt{DX}} ,不过这里我们不采用。记标准化后的矩阵为Z,其中 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} ,也就是 \frac{每一个元素}{\sqrt{其所在列的元素的平方和}} 。对数据进行了相应的处理后,可以用向量z_{i}来表达第i个方案。假设有n个待评价的方案,m个指标,此时 z_{i}=[z_{i1},z_{i2},...,z_{im}] 。由这n个向量构成的矩阵也就是我们的标准化矩阵Z了。经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。三、TOPSIS算法实现3.1 最优解与最劣解计算经过了正向化处理和标准化处理的评分矩阵Z,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即同理,取每一列中最小的数计算理想最劣解向量:z^{+}就是 z_{max} , z^{-} 就是 z_{min} 。在得到理想最优解和理想最劣解的基础上就能计算每个方案的评分了。根据上面的距离评分公式:对其进行变型,也就是:变型的目的是为了使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的(因为这里zi是一个向量)。这样更能体现出是综合距离。否则所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。3.2 TOPSIS评分计算于是计算距离评分:对于第i个方案zi,我们计算它与最优解的距离:与最劣解的距离:定义第i个方案的评分为Si:也就是前面提到的综合距离。0\leq S_{i} \leq 1,且 d_{i}^{+} 越小,也就是该方案与最优解的距离越小时,S_{i} 越大;相应的,d_{i}^{-}越小,也就是该方案与最劣解的距离越小时, S_{i} 越小。 为同时兼顾了该方案与最优解与最劣解的距离的评分。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较差。四、TOPSIS算法总结4.1 TOPSIS算法实现步骤1.将原始数据矩阵正向化。也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。2.将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。3.计算每个方案各自与最优解和最劣解的距离:与最优解的距离:与最劣解的距离:4.根据最优解与最劣解计算得分并排序五、TOPSIS算法示例5.1 TOPSIS算法示例对一个需要根据学生智商和情商进行排名的数据:原始数据矩阵如下对其进行正向化:对其进行标准化:计算与最优解和最劣解的距离:最后计算得分给出排名:这个例子告诉我们,成绩很重要,但是情商更重要。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价。5.2 TOPSIS算法扩展从上面计算各自与最优解和最劣解的距离时,我们看到,每一项指标的权重是一样的。在实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。考虑权重后,不同指标对最后的影响不一样,考虑权重的评价往往是实际生活中很常见的一种评价方式。关于权重的选取也有不同的方法,比如层次分析法(主观给出)、熵权法等等。六、程序源码TOPSIS.m程序clear all

clc

%% 导入数据

% (1)在工作区右键,点击新建(Ctrl+N),输入变量名称为X

% (2)双击进入X,输入或拷贝数据到X

% (3)关掉这个窗口,点击X变量,右键另存为,保存为mat文件

% (4)注意,代码和数据要放在同一个目录下哦,且Matlab的当前文件夹也要是这个目录。

load data_water_quality.mat

%% 数据预处理_正向化

[n,m] = size(X);

disp(['共有' num2str(n) '个评价对象, ' num2str(m) '个评价指标'])

Judge = input(['这' num2str(m) '个指标是否需要经过正向化处理,需要请输入1 ,不需要输入0: ']);

if Judge == 1

Position = input('请输入需要正向化处理的指标所在的列,例如[2,3,6]: '); %[2,3,4]

disp('请输入需要处理的这些列的指标类型(1:极小型, 2:中间型, 3:区间型) ')

Type = input('例如[1,3,2]: '); %[2,1,3]

% 注意,Position和Type是两个同维度的行向量

for i = 1 : size(Position,2)%对每一列进行正向化处理

X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));

% 第一个参数是要正向化处理的那一列向量 X(:,Position(i))

% 第二个参数是对应的这一列的指标类型(1:极小型, 2:中间型, 3:区间型)

% 第三个参数是告诉函数我们正在处理的是原始矩阵中的哪一列

% 返回值返回正向化之后的指标

end

disp('正向化后的矩阵 X = ')

disp(X)

end

%% 数据预处理_标准化

Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1);

disp('标准化矩阵 Z = ')

disp(Z)

%% 指标权重赋值

disp("请输入是否需要增加权重向量,需要输入1,不需要输入0")

Judge = input('请输入是否需要增加权重: ');

if Judge == 1

disp(['有多少个指标就输入多少个权重数(权重和为1),如[0.25,0.25,0.5]']);

weigh = input(['请输入输入' num2str(m) '个权重: ']);

if abs(sum(weigh) - 1)<0.000001 && size(weigh,1) == 1 && size(weigh,2) == m % 这里要注意浮点数的运算是不精准的。

else

weigh = input('你输入的有误,请重新输入权重行向量: ');

end

else

weigh = ones(1,m) ./ m ; %如果不需要加权重就默认权重都相同,即都为1/m

end

%% 计算与最大值的距离和最小值的距离,并算出得分

D_P = sum([(Z - repmat(max(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D+ 与最大值的距离向量

D_N = sum([(Z - repmat(min(Z),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5; % D- 与最小值的距离向量

S = D_N ./ (D_P+D_N); % 未归一化的得分

disp('最后的得分为:')

stand_S = S / sum(S)% 归一化的得分

[sorted_S,index] = sort(stand_S ,'descend')%对得分进行排序并返回原来的位置

plot(sorted_S,'r-o')

xmin=1;xmax = size(sorted_S,1);

ymin = 0;ymax = max(sorted_S)+min(sorted_S);

axis([xmin xmax ymin ymax]); % 设置坐标轴在指定的区间

grid on

xlabel('方案');ylabel('分数');%坐标轴表示对bai象标签

title('TOPSIS算法最终评分排序')正向化处理函数Positivization.m程序function [posit_x] = Positivization(x,type,i)

% 输入变量有三个:

% x:需要正向化处理的指标对应的原始列向量

% type: 指标的类型(1:极小型, 2:中间型, 3:区间型)

% i: 正在处理的是原始矩阵中的哪一列

% 输出变量posit_x表示:正向化后的列向量

if type == 1 %极小型

disp(['第' num2str(i) '列是极小型,正在正向化'] )

posit_x = Min2Max(x); %调用Min2Max函数来正向化

disp(['第' num2str(i) '列极小型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 2 %中间型

disp(['第' num2str(i) '列是中间型'] )

best = input('请输入最佳的那一个值(中间的那个值): ');

posit_x = Mid2Max(x,best);

disp(['第' num2str(i) '列中间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

elseif type == 3 %区间型

disp(['第' num2str(i) '列是区间型'] )

a = input('请输入区间的下界: ');

b = input('请输入区间的上界: ');

posit_x = Inter2Max(x,a,b);

disp(['第' num2str(i) '列区间型正向化处理完成'] )

disp('~~~~~~~~~~~~~~~~~~~~分界线~~~~~~~~~~~~~~~~~~~~')

else

disp('没有这种类型的指标,请检查Type向量中是否有除了1、2、3之外的其他值')

end

end以下面这个例子为例:首先导入数据,然后运行程序,结果如下:编辑于 2022-04-18 21:54排序算法人工智能算法决策理论​赞同 318​​14 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录1111111

TOPSIS法 —— matlab_matlab topsis-CSDN博客

>

TOPSIS法 —— matlab_matlab topsis-CSDN博客

TOPSIS法 —— matlab

洋洋菜鸟

已于 2022-02-01 10:34:51 修改

阅读量1.2w

收藏

212

点赞数

19

分类专栏:

数学建模

文章标签:

matlab

p2p

linq

于 2022-01-30 20:05:57 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_25990967/article/details/122754308

版权

数学建模

专栏收录该内容

39 篇文章

143 订阅

订阅专栏

目录

1.TOPSIS法介绍

2. 计算步骤

(1)数据标准化

(2)得到加权后的矩阵

(3)确定正理想解和负理想解 

(4)计算各方案到正(负)理想解的距离

(5)计算综合评价值

3.实例研究 

3.1 读取数据

3.2 数据标准化

3.3 得到信息熵

3.4 计算权重并计算权重数据

3.5 得到最大值和最小值距离

3.6 计算得分

总代码

1.TOPSIS法介绍

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

2. 计算步骤

(1)数据标准化

        设决策矩阵为X=(xij)m×n,(在进行决策时,因决策属性类型的不同、属性量纲不同和属性值的大小不同,决策与评价的结果会受影响)进行属性值的规范化(方法不唯一,可视具体情况而定),设规范化决策矩阵(也就是标准化后的矩阵)X=(xij)m×n ,其中

(2)得到加权后的矩阵

计算信息熵:

权重为:

设标准化后的数据矩阵元素为rij  ,由上可得指标正向化后数据矩阵元素为xij' :

(3)确定正理想解和负理想解 

处理过后可以构成数据矩阵 R=(rij)m*n  

定义每个指标即每列的最大值为正理想解

定义每个指标即每列的最大值为负理想解 

(4)计算各方案到正(负)理想解的距离

定义第i个对象与最大值距离为正理想解的距离

定义第i个对象与最大值距离为负理想解的距离

(5)计算综合评价值

得分为:

明显可以看出0<=score<=1 ,当scorei越大时,d+越小,说明指标离最大值距离越小,越接近最大值

3.实例研究 

数据来源:蓝奏云

3.1 读取数据

data=xlsread('D:\桌面\TOPSIS.xlsx')

3.2 数据标准化

%标准化 标准化处理后数据为data1

data1=data;

for j=1:size(data1,2)

data1(:,j)= data(:,j)./sqrt(sum(data(:,j).^2));

end

3.3 得到信息熵

%得到信息熵

[m,n]=size(data1);

p=zeros(m,n);

for j=1:n

p(:,j)=data1(:,j)/sum(data1(:,j));

end

for j=1:n

E(j)=-1/log(m)*sum(p(:,j).*log(p(:,j)));

end

3.4 计算权重并计算权重数据

%计算权重

w=(1-E)/sum(1-E);

%得到加权重后的数据

R=data1*w';

3.5 得到最大值和最小值距离

%得到最大值和最小值距离

r_max=max(R); %每个指标的最大值

r_min=min(R); %每个指标的最小值

d_z = sqrt(sum([(R -repmat(r_max,size(R,1),1)).^2 ],2)) ; %d+向量

d_f = sqrt(sum([(R -repmat(r_min,size(R,1),1)).^2 ],2)); %d-向量

3.6 计算得分

%得到得分

s=d_f./(d_z+d_f );

Score=100*s/max(s);

for i=1:length(Score)

fprintf('第%d个投标者百分制评分为:%d\n',i,Score(i));

end

返回:

总代码

clc;clear;

data=xlsread('D:\桌面\TOPSIS.xlsx');

%标准化 标准化处理后数据为data1

data1=data;

for j=1:size(data1,2)

data1(:,j)= data(:,j)./sqrt(sum(data(:,j).^2));

end

%得到信息熵

[m,n]=size(data1);

p=zeros(m,n);

for j=1:n

p(:,j)=data1(:,j)/sum(data1(:,j));

end

for j=1:n

E(j)=-1/log(m)*sum(p(:,j).*log(p(:,j)));

end

%计算权重

w=(1-E)/sum(1-E)

%得到加权重后的数据

% w=[0.3724, 0.1003,0.1991, 0.1991,0.0998,0.0485]; %使用求权重的方法求得

R=data1*w';

%得到最大值和最小值距离

r_max=max(R); %每个指标的最大值

r_min=min(R); %每个指标的最小值

d_z = sqrt(sum([(R -repmat(r_max,size(R,1),1)).^2 ],2)) ; %d+向量

d_f = sqrt(sum([(R -repmat(r_min,size(R,1),1)).^2 ],2)); %d-向量

%sum(data,2)对行求和 ,sum(data)默认对列求和

%得到得分

s=d_f./(d_z+d_f );

Score=100*s/max(s);

for i=1:length(Score)

fprintf('第%d个投标者百分制评分为:%d\n',i,Score(i));

end

优惠劵

洋洋菜鸟

关注

关注

19

点赞

212

收藏

觉得还不错?

一键收藏

知道了

5

评论

TOPSIS法 —— matlab

1.TOPSIS法介绍2. 计算步骤(1)数据标准化(2)得到加权后的矩阵(3)确定正理想解和负理想解(4)计算各方案到正(负)理想解的距离(5)计算综合评价值3.实例研究3.1 读取数据3.2 数据标准化3.3 得到信息熵3.4 计算权重并计算权重数据3.5得到最大值和最小值距离3.6 计算得分总代码

复制链接

扫一扫

专栏目录

利用熵值法计算权重的TOPSIS综合分析法

07-07

Matlab_利用熵值法计算权重的TOPSIS综合分析法

topsismatlab代码-TOPSIS:作为模糊MCDM研究项目的一部分编写的TOPSIS和模糊TOPSIS的MATLAB代码

06-13

topsis

matlab代码托普西斯

这个

repo

包含

MATLAB

代码,用于通过与理想解决方案相似性的偏好排序技术

[TOPSIS]

和模糊

TOPSIS,作为模糊多标准决策研究项目的一部分编写。

5 条评论

您还未登录,请先

登录

后发表或查看评论

【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列

热门推荐

m0_52474147的博客

11-28

1万+

设多属性决策方案(单元)为D={d1,d2,…,dm},衡量方案优劣的属性变量为x1,x2,…,xn,这些方案D中的每个方案di(i=1,2,…)的n个属性构成向量[ai1,ai2,…,ain],将其作为n维空间的一个点,能唯一地代表方案di。正理想解C*是一个方案D中不存在的虚拟最佳方案,它的每个属性都是决策矩阵中该属性的最优值;而负理想解C0则是虚拟的最差方案,它的每个属性都是决策矩阵中该属性的最差值。

评价与决策原理:将D中每个

MATLAB源码集锦-Topsis算法综合评价代码.txt

05-01

MATLAB源码集锦-Topsis算法综合评价代码

topsis加入了权重的代码_TOPSIS优劣距离法_

10-02

TOPSIS加了权重的代码,可在MATLAB中实现,亲测可用

TOPSIS法——Matlab实操

weixin_62490408的博客

07-14

3955

TOPSIS是一种解决多属性决策问题的评价方法,亦称优劣解距离法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解。通过计算每个方案到理想方案(即靠近正理想解和远离负理想解)的相对贴近程度来对备选方案进行排序,从而选出最优方案。

对一个被评价的系统 f(x1, x2, …, xn)而言,假设理想解为(x1*, x2*, …, xn*)。定义第i种备选方案与理想解之间的距离如下:

Di=g(Xi, X*)

这里所指的距离通常是指欧式距离。需要指出的是:正理想解是一个并不存在的虚拟的

python实现topsis法

weixin_52300428的博客

08-12

5232

1.模型介绍

C.L.Hwang 和 K.Yoon 于1981年首次提(Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为。TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。...

MATLAB 之 优劣解距离法(TOPSIS )

每天进步一点点!

11-23

6736

TOPSIS 总结

TOPSIS法(优劣距离法)

yying_guc的博客

07-04

9218

数学建模中TOPSIS方法步骤讲解~

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

m0_73879806的博客

06-11

7433

TOPSI客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

例题:为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,收集有关数据资料进行了试评估,表1是所给出的部分数据。

topsis_matlab优劣解距离法_topsis_

10-01

matlab程序,topsis工具箱 ,本代码仅供参考,非本人原创

【数据分析】Matlab实现熵权TOPSIS.zip

04-20

1.版本:matlab2014/2019a,内含运行结果,不会运行可私信

2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像

3.内容:标题所示,对于介绍可点击主页搜索博客

4.适合人群:本科,硕士等教研学习使用

5.博客介绍:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可si信

论文研究-基于“垂面”距离的TOPSIS法——正交投影法.pdf

09-20

论文研究-基于“垂面”距离的TOPSIS法——正交投影法.pdf, 针对TOPSIS法的不足之处,提出了一种改进方法:基于"垂面"距离的TOPSIS法——正交投影法.回顾了TOPSIS法.定义...

topsis 熵权topsis MATLAB程序

08-27

topsis 熵权topsis MATLAB程序 已跑无误

基于MATLAB的熵权TOPSIS

05-25

基于MATLAB的熵权TOPSIS综合评价法

场的概念---数量场(标量场)和矢量场介绍理解

qq_44588244的博客

03-10

601

其中每个点的方向是矢量线在该点的切线方向。矢量线反应了A的方向在空间中变化的情况。场在数学上是指一个向量到另一个向量或数的映射。矢量场变化快的时候,矢量线密集,矢量场变化慢的时候,矢量线画的稀疏。在物理学中,经常要研究某种物理量在空间的分布和变化规律。上图中左图是一个数量场的模型,右图是该数量场的等值面。2、稳定场(恒定场)【不随时间变化的场】,时变场;这样可以方便我们观察沿着不同方向 场的变化。无穷多根矢量线中,任意两根矢量线是不相交的。1、数量场(标量场),矢量场;为x,y,z方向上的单位矢量。

189基于matlab的Wigner-Ville时频分布图

m0_59476991的博客

03-11

398

基于matlab的Wigner-Ville时频分布图,计算时间序列的Wigner-Ville时频分布图,得到瞬时频率。通过GUI可以调节图像的展示样式。程序已调通,可直接运行。

【危化品泄漏源定位】基于改进哈里斯鹰优化算法的危化品泄漏源定位算法 溯源定位算法【Matlab代码#63】

最新发布

xiongyajun123的博客

03-11

769

针对泄漏事故,提出了一种融合气体扩散模型、传感器布局和优化算法的危化品泄漏源定位模型,将传感器获取的测量浓度数据与扩散模型的计算浓度进行误差对比,把二者之间的最小误差作为优化目标函数,利用改进后的哈里斯鹰优化算法对目标函数进行迭代寻优。

Matlab 字符串相关命令

try_trying_try的博客

03-11

402

参考。

topsis综合评价法matlab

07-25

topsis综合评价法是一种多指标决策方法,用于评估多个候选方案的综合表现。在MATLAB中,可以使用一些函数和算法来实现topsis方法。首先,需要计算每个候选方案的正向化得分和负向化得分。根据引用\[1\]中的公式,可以计算出未归一化的得分D_P和D_N。然后,可以使用这些得分来计算每个候选方案的综合得分S。引用\[2\]中给出了一个示例得分矩阵stand_S,其中包含了每个候选方案的归一化得分。最后,可以根据得分进行排序,以确定每个候选方案的排名情况。根据引用\[3\]中的描述,可以对Excel数据进行处理,将各列指标正向化为极大型指标,然后进行标准化处理,最后进行归一化得分的统筹。

#### 引用[.reference_title]

- *1* *2* *3* [TOPSIS评价方法()matlab](https://blog.csdn.net/qq_47540409/article/details/118826804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]

[ .reference_list ]

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

洋洋菜鸟

CSDN认证博客专家

CSDN认证企业博客

码龄9年

暂无认证

291

原创

8万+

周排名

20万+

总排名

133万+

访问

等级

5420

积分

1896

粉丝

1785

获赞

563

评论

1万+

收藏

私信

关注

热门文章

主成分分析(PCA)及其可视化——python

80739

油猴的简介和安装

57373

熵权法 —— matlab

48581

mysql-installer安装教程(详细图文)

44368

K-means聚类 —— matlab

35360

分类专栏

Matlab基础

19篇

java基础

16篇

油猴脚本开发指南

3篇

C语言基础

14篇

SPSS基础

9篇

智能计算

8篇

时间序列

27篇

R基础入门

13篇

机器学习

21篇

MySQL

14篇

所遇报错问题

7篇

python爬虫

14篇

python基础

35篇

python实例

54篇

数学建模

39篇

最新评论

主成分分析(PCA)及其可视化——python

可可嘉德珠:

请问球形检验目的是什么啊,输出的结果表示什么含义啊

ARIMA模型之疏系数模型

m0_74023487:

怎么用python实现啊

层次分析法之python

恒山海听雨_szh:

我觉得是,我最后用的np.dot或者@做矩阵乘法

因子分析——matlab

不是程序员依然逃不过代码:

谢谢!

因子分析——python

TTCP:

特征值为什么是一个矩阵呢?不应该是一个向量吗

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

抄袭声明!!

16、字符串生成器

15、正则表达式

2023年61篇

2022年148篇

2021年83篇

目录

目录

分类专栏

Matlab基础

19篇

java基础

16篇

油猴脚本开发指南

3篇

C语言基础

14篇

SPSS基础

9篇

智能计算

8篇

时间序列

27篇

R基础入门

13篇

机器学习

21篇

MySQL

14篇

所遇报错问题

7篇

python爬虫

14篇

python基础

35篇

python实例

54篇

数学建模

39篇

目录

评论 5

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

TOPSIS算法(优劣解距离法)的使用举例与matlab实现-CSDN博客

>

TOPSIS算法(优劣解距离法)的使用举例与matlab实现-CSDN博客

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

最新推荐文章于 2024-02-12 17:07:19 发布

「已注销」

最新推荐文章于 2024-02-12 17:07:19 发布

阅读量1.6w

收藏

217

点赞数

32

分类专栏:

数学

MatLab

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yanzhenhuai/article/details/113242618

版权

MatLab

同时被 2 个专栏收录

9 篇文章

2 订阅

订阅专栏

数学

4 篇文章

3 订阅

订阅专栏

文章目录

一、算法的提出二、TOPSIS算法的一般步骤1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理a.极大值指标正向化b.极小型指标极大正向化c.中间型指标极大正向化d.区间型指标极大正向化

(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵

3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值

三、使用举例1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵

3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值

4.根据优劣值进行排序得到结果

四、matlab代码实现

一、算法的提出

  ​  C.L.Hwang和K.Yoon在1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution)算法,直接即逼近理想解排序法,国内通常称之为优劣解距离法。     相比较于层次分析法AHP与模糊综合评价法,TOPSIS算法能够充分利用原始数据的信息,并能更精确反映出各个状况/方案之间的优劣与差距。     ​TOPSIS算法的基本过程为先将原始数据矩阵(决策矩阵)进行正向化处理得到正向化矩阵,再进行标准化处理消除各指标量纲的影响。再通过AHP或其他方法得到各个因素之间的权重向量,构造出新的加权决策矩阵。      然后在所有的数据中找到最优和最劣方案,计算各个评价对象相对于最优方案与最劣方案的欧氏距离,最终获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。     TOPSIS算法对数据的分布及含量等没有严格限制,且数据易处理计算简单,思路清晰,因而被广泛使用。

二、TOPSIS算法的一般步骤

注意:下列的交标含义请仔细辨别,交标含义并未相同含义贯穿始终。 如果有不清楚的地方可以在评论区指出,有人指出后我再修改交标含义。

1.形成决策矩阵

设共有

n

n

n个评价对象,每个评价对象含有

m

m

m个参数指标。将

n

n

n个评价对象的参数指标排列得到

n

×

m

n×m

n×m矩阵,即决策矩阵:

[

x

11

x

12

x

1

m

x

21

x

22

x

2

m

x

n

1

x

n

2

x

n

m

]

\begin{bmatrix} x_{11} & x_{12} & \dots & x_{1m} \\ x_{21} & x_{22} & \dots& x_{2m}\\ \dots& \dots & \ddots& \dots\\ x_{n1}& x_{n2}& \dots& x_{nm}\end{bmatrix}

⎣⎢⎢⎡​x11​x21​…xn1​​x12​x22​…xn2​​……⋱…​x1m​x2m​…xnm​​⎦⎥⎥⎤​

2.计算加权决策矩阵

(1)指标正向化处理

常见的四种指标(即评价对象的

m

m

m个参数指标所属类型)

指标类型指标特点举例极大型指标(效益型)越大越好成绩、利润极小型指标(成本型)越小越好成本、费用中间型指标越接近某个值越好人体所处环境温度区间型指标落在某个区间最好体温、饮用水中的矿物质含量

为了后续处理,我们需要将所有类型的指标转换为极大值指标,且需要将所有指标类型统一转换为各自对应的正向化指标,准换的方式可以不一样,下面给出一些转换公式的参考。

a.极大值指标正向化

x

i

=

x

i

x

m

i

n

x

m

a

x

x

m

i

n

x'_i=\frac{x_i-x_{min}}{x_{max}-x_{min}}

xi′​=xmax​−xmin​xi​−xmin​​

b.极小型指标极大正向化

x

i

=

x

m

a

x

x

i

x

m

a

x

x

m

i

n

x'_{i}=\frac{x_{max}-x_i}{x_{max}-x_{min}}

xi′​=xmax​−xmin​xmax​−xi​​

c.中间型指标极大正向化

x

i

=

1

x

i

x

b

e

s

t

x

i

x

b

e

s

t

m

a

x

x'_i=1-\frac{|x_i-x_{best}|}{|x_i-x_{best}|_{max}}

xi′​=1−∣xi​−xbest​∣max​∣xi​−xbest​∣​

d.区间型指标极大正向化

设最佳区间为

[

a

,

b

]

[a,b]

[a,b],且记

M

=

max

{

a

min

{

x

i

}

,

max

{

x

i

}

b

}

M=\max\{a-\min\{x_i\},\max\{x_i\}-b\}

M=max{a−min{xi​},max{xi​}−b} 则

x

i

=

{

1

a

x

M

     

x

<

a

1

                

a

x

b

1

x

b

M

     

x

>

b

x_i'= \begin{cases} 1-\frac{a-x}{M}\ \ \ \ \ xb \end{cases}

xi′​=⎩⎪⎨⎪⎧​1−Ma−x​     xb​

(2)指标标准化处理得到新矩阵

a

i

=

x

i

j

=

1

n

x

j

a_i=\frac{x_i'}{\sum_{j=1}^nx_j'}

ai​=∑j=1n​xj′​xi′​​

此时我们已经得到了一个经过正向化、标准化的决策矩阵:

A

n

×

m

=

[

a

11

a

12

a

1

m

a

21

a

22

a

2

m

a

n

1

a

n

2

a

n

m

]

A_{n×m}=\begin{bmatrix} a_{11} & a_{12} & \dots & a_{1m} \\ a_{21} & a_{22} & \dots& a_{2m}\\ \dots& \dots & \ddots& \dots\\ a_{n1}& a_{n2}& \dots& a_{nm}\end{bmatrix}

An×m​=⎣⎢⎢⎡​a11​a21​…an1​​a12​a22​…an2​​……⋱…​a1m​a2m​…anm​​⎦⎥⎥⎤​

(3)计算加权决策矩阵

对于

m

m

m个因素,我们使用层次分析法AHP计算

m

m

m个因素的权重向量:

ω

=

(

w

1

,

w

2

,

.

.

.

,

w

m

)

\omega=(w_1,w_2,...,w_m)

ω=(w1​,w2​,...,wm​)

层次分析法AHP的简单使用举例与matlab实现

将各个指标对应的权重与正向化标准化的决策矩阵相乘得到加权决策矩阵:

R

=

(

r

i

j

)

n

×

m

R=(r_{ij})_{n×m}

R=(rij​)n×m​

r

i

j

=

w

j

×

a

i

j

i

=

1

,

2

,

.

.

.

,

n

r_{ij}=w_j×a_{ij},i=1,2,...,n

rij​=wj​×aij​,i=1,2,...,n

3.计算每个方案的优劣值

(1)计算每个参数对应的最大最小值

z

j

+

=

max

{

r

1

j

,

r

2

j

,

.

.

.

,

r

n

j

}

j

=

1

,

2

,

.

.

.

,

m

z_{j}^+=\max\{r_{1j},r_{2j},...,r_{nj}\},j=1,2,...,m

zj+​=max{r1j​,r2j​,...,rnj​},j=1,2,...,m

z

j

=

min

{

r

1

j

,

r

2

j

,

.

.

.

,

r

n

j

}

j

=

1

,

2

,

.

.

.

,

m

z_{j}^-=\min\{r_{1j},r_{2j},...,r_{nj}\},j=1,2,...,m

zj−​=min{r1j​,r2j​,...,rnj​},j=1,2,...,m

事实上,我们结合之前正向化的步骤很容易知道,

z

j

z_j^-

zj−​其实就是一个零向量。

(2)计算每个方案距离最优最劣解的距离

由于我们已经将四种类型的指标转换为了极大型指标,所以我们已经可以认为,每个参数存在的最大值就是最优解,每个参数存在的最小值就是最劣解。 我们采用欧式距离计算每个方案在各个因素下的最优距离与最劣距离:

d

i

+

=

j

=

1

m

(

z

j

+

r

i

j

)

2

d_i^+=\sqrt{\sum_{j=1}^m(z_j^+-r_{ij})^2}

di+​=j=1∑m​(zj+​−rij​)2

d

i

=

j

=

1

m

(

z

j

r

i

j

)

2

d_i^-=\sqrt{\sum_{j=1}^m(z_j^--r_{ij})^2}

di−​=j=1∑m​(zj−​−rij​)2

余弦距离与欧氏距离的关系与使用

(3)计算每个方案的优劣值

定义第

i

i

i个方案的优劣值:

v

i

=

d

i

d

i

+

+

d

i

v_i=\frac{d_i^-}{d_i^++d_i^-}

vi​=di+​+di−​di−​​ 我们先来理解一下每个方案距离最优最劣解的距离

d

i

+

d

i

d_i^+、d_i^-

di+​、di−​的含义。 首先我们先时刻记住“距离”这一含义: 距离值越大,说明离得越远;距离值越小,说明离得越近。 对应地:

d

i

+

d^+_i

di+​越大,说明离最优情况越远,该方案越不优秀。   

d

i

+

d^+_i

di+​越小,说明离最有情况越近,该方案更加优秀。

d

i

d^-_i

di−​同样去理解。 在我们现在明确了距离最优最劣解的距离

d

i

+

d

i

d_i^+、d_i^-

di+​、di−​的含义之后,我们就不难理解计算优劣值的表达式了: 当

d

i

+

d_i^+

di+​越大,离最优解越远,优劣值

v

i

v_i

vi​越小,更不优秀。 当

d

i

d_i^-

di−​越大,离最劣解越远,优劣值

v

i

v_i

vi​越大,更加优秀。

三、使用举例

如下题:(题目描述来源于网络,侵删)

评价下表中20条河流的水质情况 注意:含氧量越高越好;pH值越接近7越好;细菌总数越少越好;植物性营养含量在10~20之间最佳

1.形成决策矩阵

2.计算加权决策矩阵

(1)指标正向化处理

(2)指标标准化处理得到新矩阵

(3)计算加权决策矩阵

注意,此处我们层次分析法中的两两比较判断矩阵未必符合真实科学性,此处我们仅仅是作为一个例子来举例而已。 假设四个影响因素的两两比较判断矩阵为:

C

=

[

1

1

7

5

1

1

7

5

1

7

1

7

1

1

3

1

5

1

5

3

1

]

C=\begin{bmatrix} 1 & 1 & 7 & 5 \\ 1 & 1 & 7& 5\\ \frac17& \frac17 & 1& \frac13\\ \frac15& \frac15& 3& 1\end{bmatrix}

C=⎣⎢⎢⎡​1171​51​​1171​51​​7713​5531​1​⎦⎥⎥⎤​ 该矩阵的最大特征值:

λ

m

a

x

=

4.0735

\lambda_{max}=4.0735

λmax​=4.0735 一致性检验:

C

.

I

.

=

4.0735

4

4

1

0.0245

C.I.=\frac{4.0735-4}{4-1}≈0.0245

C.I.=4−14.0735−4​≈0.0245

R

.

I

.

=

0.89

R.I.=0.89

R.I.=0.89

C

.

R

.

=

0.0245

0.89

0.0275

<

0.1

C.R.=\frac{0.0245}{0.89}≈0.0275<0.1

C.R.=0.890.0245​≈0.0275<0.1 因此我们认为该判断矩阵的一致性可以接受。 计算得到权重向量:

W

=

(

0.4225

  

0.4225

  

0.0506

  

0.1044

)

W=(0.4225\ \ 0.4225\ \ 0.0506\ \ 0.1044)

W=(0.4225  0.4225  0.0506  0.1044) 接下来计算加权决策矩阵:

3.计算每个方案的优劣值

(1)计算每个参数对应的最大最小值

z

j

+

=

(

0.1476

  

0.1412

  

0.0203

  

0

0.0320

)

z_j^+=(0.1476\ \ 0.1412\ \ 0.0203\ \ 0-0.0320)

zj+​=(0.1476  0.1412  0.0203  0−0.0320)

z

j

=

(

0

  

0

  

0

  

0

)

z_j^-=(0\ \ 0\ \ 0\ \ 0)

zj−​=(0  0  0  0)

(2)计算每个方案距离最优最劣解的距离

(3)计算每个方案的优劣值

4.根据优劣值进行排序得到结果

最优状况排序如下: 4>8>7>11>3>10>5>20>16>17>12>1>9>19>18>13>6>15>2>4

四、matlab代码实现

M=[4.69 6.59 51 11.94;

2.03 7.86 19 6.46;

9.11 6.31 46 8.91;

8.61 7.05 46 26.43;

7.13 6.5 50 23.57;

2.39 6.77 38 24.62;

7.69 6.79 38 6.01;

9.3 6.81 27 31.57;

5.45 7.62 5 18.46;

6.19 7.27 17 7.51;

7.93 7.53 9 6.52;

4.4 7.28 17 25.3;

7.46 8.24 23 14.42;

2.01 5.55 47 26.31;

2.04 6.4 23 17.91;

7.73 6.14 52 15.72;

6.35 7.58 25 29.46;

8.29 8.41 39 12.02;

3.54 7.27 54 3.16;

7.44 6.26 8 28.41];%最开始的数据矩阵

type=[1,3,2,4];%指标类型矩阵,1表示极大型指标,2表示极小型指标,3表示中间型指标,4表示区间型矩阵

for j=1:4

if(type(j)==1)

Max=-99999.9999;

Min=99999.9999;

for i=1:20

Max=max(Max,M(i,j));

Min=min(Min,M(i,j));

end

for i=1:20

M(i,j)=(M(i,j)-Min)/(Max-Min);

end

elseif(type(j)==2)

Max=-99999.9999;

Min=99999.9999;

for i=1:20

Max=max(Max,M(i,j));

Min=min(Min,M(i,j));

end

for i=1:20

M(i,j)=(Max-M(i,j))/(Max-Min);

end

elseif(type(j)==3)

Max=-99999.9999;

for i=1:20

Max=max(Max,abs(M(i,j)-7));

end

for i=1:20

M(i,j)=1-abs(M(i,j)-7)/Max;

end

elseif(type(j)==4)

Max=-99999.9999;

Min=99999.9999;

for i=1:20

Max=max(Max,M(i,j));

Min=min(Min,M(i,j));

end

T=max(10-Min,Max-20);

for i=1:20

if(M(i,j)<10)

M(i,j)=1-(10-M(i,j))/T;

elseif(M(i,j)>20)

M(i,j)=1-(M(i,j)-20)/T;

else

M(i,j)=1;

end

end

end

end

%以上是讨论四种类型指标,分别进行正向化

A=zeros(20,4);

for j=1:4

sum=0

for i=1:20

sum=sum+M(i,j)^2;

end

sum=sqrt(sum);

for i=1:20

A(i,j)=M(i,j)/sum;

end

end

%以上是将正向化处理得到的矩阵进行标准化

C=[1 1 7 5;

1 1 7 5;

1/7 1/7 1 1/3;

1/5 1/5 3 1];

[Omega,Lambda]=eig(C);

mx=-99999.99999;

id=0;

for i=1:4

if(Lambda(i,i)>mx)

mx=Lambda(i,i);

id=i;

end

end

W=zeros(4,1);

sum=0;

for i=1:4

sum=sum+Omega(i,id);

end

for i=1:4

W(i,1)=Omega(i,id)/sum;

end

%以上是求得权重向量W

R=zeros(20,4);

for j=1:4

for i=1:20

R(i,j)=W(j,1)*A(i,j);

end

end

%求得加权决策矩阵R

Z_plus=[-99999.9999 -99999.9999 -99999.9999 -99999.9999];

Z_minus=[99999.9999 99999.9999 99999.9999 99999.9999 99999.9999];

for j=1:4

for i=1:20

Z_plus(j)=max(Z_plus(j),R(i,j));

Z_minus(j)=min(Z_minus(j),R(i,j));

end

end

%求得每个参数对应的最大最小值、

d_plus=zeros(20,1);

d_minus=zeros(20,1);

for i=1:20

for j=1:4

d_plus(i)=d_plus(i)+(Z_plus(j)-R(i,j))^2;

d_minus(i)=d_minus(i)+(Z_minus(j)-R(i,j))^2;

end

d_plus(i)=sqrt(d_plus(i));

d_minus(i)=sqrt(d_minus(i));

end

%计算每个方案距离最优最劣解的距离

v=zeros(20,2);

for i=1:20

v(i,1)=d_minus(i)/(d_plus(i)+d_minus(i));

v(i,2)=i;

end

%计算每个方案的优劣值

for i=1:20

MaxId=i;

for j=i+1:20

if(v(j,1)>v(MaxId,1))

MaxId=j;

end

end

temp=v(i,1);

v(i,1)=v(MaxId,1);

v(MaxId,1)=temp;

temp=v(i,2);

v(i,2)=v(MaxId,2);

v(MaxId,2)=temp;

end

%进行优劣值排序

%v的第二列即为排序结果

优惠劵

「已注销」

关注

关注

32

点赞

217

收藏

觉得还不错?

一键收藏

知道了

6

评论

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

文章目录一、算法的提出二、TOPSIS算法的一般步骤1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理a.极大值指标正向化b.极小型指标极大正向化c.中间型指标极大正向化d.区间型指标极大正向化(2)指标标准化处理得到新矩阵(3)计算加权决策矩阵3.计算每个方案的优劣值(1)计算每个参数对应的最大最小值(2)计算每个方案距离最优最劣解的距离(3)计算每个方案的优劣值三、使用举例1.形成决策矩阵2.计算加权决策矩阵(1)指标正向化处理一、算法的提出 ​  C.L.Hwang和K.Yoon

复制链接

扫一扫

专栏目录

topsis法_TOPSIS(逼近理想解)算法原理详解与代码实现

weixin_39612228的博客

12-05

5522

写在前面:个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣。中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所谓正理想值是一设想的最好值(方案),它的的各个属性值都达到各候选方案中最好的值,而负理想解是另一设想的最坏的值(方案),然后求出各个方案与正理想值和负理想值之间的加权欧氏距离,由此得出各方案与最优方案的...

Topsis算法.zip

09-02

Topsis算法——MATLAB版本,函数是较为通用的模板,分析各种指标数据的变化,并根据其中的算法,进行得分和排名。

6 条评论

您还未登录,请先

登录

后发表或查看评论

代码和例题数据_TOPSIS优劣距离法_

10-04

可在MATLAB中实现,包含实例,亲测可用

数学建模之TOPSIS法(优劣解距离法)

qq_63141702的博客

01-29

1102

数学建模之优劣解距离法

数学建模:EWM – TOPSIS 超强讲义! 原理、应用、代码

最新发布

数据分析、数据挖掘、大数据开发

02-12

645

数学建模评价类问题常用的组合模型EWM-TOPSIS的超强讲义!

学习数学模型【理想解法TOPSIS】

Luohuasheng_的博客

01-03

554

学习了理想解法TOPSIS并进行了实例的MATLAB实践

MATLAB 之 优劣解距离法(TOPSIS )

每天进步一点点!

11-23

6736

TOPSIS 总结

TOPSIS算法

rinascimanto的博客

01-28

1466

TOPSIS算法

评价模型:TOPSIS法(理想解法)

m0_64087341的博客

10-05

4032

数学建模之TOPSIS(理想解法)

【数学建模入门】TOPSIS算法

YangJinHong2003的博客

12-20

2789

TOPSIS法 可翻译为逼近理想解排序法,国内常简称为优劣解距离法与层次分析法相比,topsis的先决条件是有初始的数据,所以我们更应该通过这些数据进行分析。

(2)评价算法-TOPSIS算法

xdg15294969271的博客

09-07

3753

文章目录1、TOPSIS算法2、TOPSIS算法流程2.1、极大型转化2.1.1 极大型2.1.2 中间型2.1.3 极小型2.1.4 区间型2.2 计算每项指标的权重2.3 正向矩阵标准化2.4 计算得分3、实例4、参考资料

1、TOPSIS算法

TOPSIS方法是基于数据对样本进行排序的一种方法,其基本思想是根据样本数据构造一个理想化的目标。主要找到每一列(指标)的最大值让它们构成一个向量Z+Z^+Z+和每一列(指标)的最小值构成一个向量Z−Z^-Z−。只要找到这两个向量,后面的事情就好办了。

2、TO

TOPSIS的MATLAB算法实现

07-08

多属性决策的TOPSIS算法。其中leibie.mat可修改各个属性效益型or成本型,效益型即为1,成本型即为-1。shuxing.mat可修改各个方案的评价值。最终输出的index为最终的排名结果。

topsis_matlab优劣解距离法_topsis_

10-01

matlab程序,topsis工具箱 ,本代码仅供参考,非本人原创

topsis优劣解距离法MATLAB代码实现

08-14

数学建模优劣解距离法的案例程序

TOPSIS法(优劣解距离法)例子源码和拓展资料

11-09

该文件是全国大学生数学建模知识中的一个算法Topsis优劣解距离法的源码和建模赛题拓展资料,具体的讲解内容可以参考本人博客【优劣解距离法】

数学建模国赛获奖论文分类整理:优劣解距离法topsis

05-21

数学建模国赛获奖论文整理,使用优劣解距离法topsis做的论文集合,可以系统的学习优劣解距离法topsis在数学建模中的应用,非常有用。

MATLAB实现TOPSIS法(优劣解距离法)【数学建模、科学计算算法】.zip

04-14

MATLAB实现各类算法,适用于数学建模、科学计算、科研数据分析等场景。 项目代码可直接编译运行~

topsis(优劣解距离法

07-28

Topsis(优劣解距离法)是一种多属性决策分析方法,用于评估多个候选方案的综合性能。它基于两个关键概念:优劣解距离和相对接近度。

首先,需要确定每个候选方案的属性值。然后,通过对属性值进行标准化,将属性值归一化到一个统一的范围内。

接下来,计算每个候选方案与最佳和最差方案之间的欧氏距离。欧氏距离是根据各个属性值之间的差异度量的。

然后,计算每个候选方案与最佳方案之间的相对接近度。相对接近度是基于候选方案与最佳和最差方案之间的欧氏距离计算的。

最后,根据相对接近度的大小,对候选方案进行排序。具有最高相对接近度的候选方案被认为是最佳的。

这就是Topsis方法的基本步骤。它被广泛应用于多属性决策分析、项目选择和绩效评估等领域。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

「已注销」

博客等级

码龄6年

395

原创

561

点赞

388

收藏

64

粉丝

关注

私信

热门文章

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

16321

关于状压DP枚举子集的方法与理解

8245

备战NOIP2018(时间已不够用系列)!!!怀挺!!!!!!

2673

层次分析法AHP的简单使用举例与matlab实现

2468

MATLAB学习笔记(一)

1949

分类专栏

git

2篇

github

1篇

应用

1篇

VUE

JavaScript相关

7篇

正则表达式

1篇

动态规划练习

3篇

数据结构学习

5篇

算法学习

3篇

LeetCode

7篇

复习

18篇

数学

4篇

Python

2篇

Java

2篇

高数

13篇

MatLab

9篇

杂谈

7篇

解题报告

3篇

一些总结

5篇

OI/ACM之分治

25篇

OI/ACM之动态规划与递推

122篇

OI/ACM之数据结构

73篇

OI/ACM之图论

44篇

OI/ACM之数论数学

32篇

OI/ACM之搜索

5篇

OI/ACM之字符串

5篇

OI/ACM之其他如贪心

51篇

最新评论

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

CSDN-Ada助手:

多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8060235, 请多输出高质量博客, 帮助更多的人

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

东青:

请问下这道题用熵权法,加权和不加权的结果是一样的吗?

回顾一年的数模经历与一些准备比赛的建议

先躺会儿:

https://blog.csdn.net/CKJCKJCHEN/article/details/126602693

TOPSIS算法(优劣解距离法)的使用举例与matlab实现

Ahong605:

兄弟,有代码吗

欢迎访问「一名前端攻城师的个人修养」

清汤407:

赞一个

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

欢迎访问「一名前端攻城师的个人修养」

回顾一年的数模经历与一些准备比赛的建议

JavaScript中的逻辑与运算&&与逻辑或运算||中你不知道的操作

2021年28篇

2020年34篇

2018年333篇

目录

目录

分类专栏

git

2篇

github

1篇

应用

1篇

VUE

JavaScript相关

7篇

正则表达式

1篇

动态规划练习

3篇

数据结构学习

5篇

算法学习

3篇

LeetCode

7篇

复习

18篇

数学

4篇

Python

2篇

Java

2篇

高数

13篇

MatLab

9篇

杂谈

7篇

解题报告

3篇

一些总结

5篇

OI/ACM之分治

25篇

OI/ACM之动态规划与递推

122篇

OI/ACM之数据结构

73篇

OI/ACM之图论

44篇

OI/ACM之数论数学

32篇

OI/ACM之搜索

5篇

OI/ACM之字符串

5篇

OI/ACM之其他如贪心

51篇

目录

评论 6

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

MATLAB优劣解距离法(topsis)综合评价+代码 - Hk_Mayfly - 博客园

MATLAB优劣解距离法(topsis)综合评价+代码 - Hk_Mayfly - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

Hk_Mayfly

凡心所向,素履以往。生如逆旅,一苇以航。

博客园

首页

新随笔

联系

订阅

管理

MATLAB优劣解距离法(topsis)综合评价+代码

优劣解距离法

TOPSIS是通过逼近理想解的程度来评估各个样本的优劣等级

收集与整理

假设有n个待评价样本,p项评价指标,形成原始指标数据矩阵:

预处理数据

使指标具有同趋势性。评价指标中有正向指标和负向指标之分,一般把负向指标转化为正向指标,转化的方法可采用倒数法(即1/X),多适用于绝对数指标;差值法(即1-X),多适用于相对数指标。转化后的数据矩阵仍记为X。数据无量纲化.。将原始数据归一化,以消除量纲向量数据归一化的方式:

最终得到分析数据矩阵

寻找最优值和最劣值

找出各项指标的最优值和最劣值,建立最优值向量z+和最劣值z-向量

计算离尺度

计算理想解的接近度

排序

根据Ci的大小进行排序,Ci越大,表明评价对象越接近最优值。

 

原理讲解引自:https://blog.csdn.net/qq_42374697/article/details/105901229 

 

题目

评价下表中20条河流的水质情况。(熵权法和优劣解距离法对比)注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐20之间最佳,超过20或低于10均不好。

河流

含氧量(ppm)

PH值

细菌总数(个/mL)

植物性营养物量(ppm)

A

4.69

6.59

51

11.94

B

2.03

7.86

19

6.46

C

9.11

6.31

46

8.91

D

8.61

7.05

46

26.43

E

7.13

6.5

50

23.57

F

2.39

6.77

38

24.62

G

7.69

6.79

38

6.01

H

9.3

6.81

27

31.57

I

5.45

7.62

5

18.46

J

6.19

7.27

17

7.51

K

7.93

7.53

9

6.52

L

4.4

7.28

17

25.3

M

7.46

8.24

23

14.42

N

2.01

5.55

47

26.31

O

2.04

6.4

23

17.91

P

7.73

6.14

52

15.72

Q

6.35

7.58

25

29.46

R

8.29

8.41

39

12.02

S

3.54

7.27

54

3.16

T

7.44

6.26

8

28.41

代码

.mat数据:在MATLAB里面随便创建一个变量,将表格中的数据粘贴进变量中,再另存为.mat数据就行。

main.m

 

%% 数据读取

clear,clc

load rivers_data.mat

%% 正向化处理

[n,m] = size(datas_matrix);

% 正向化处理的数据所在列

Pos = [2,3,4];

% 指标类型:1:极小型,2:中间型,3:区间型

ch = [2,1,3];

% 循环处理每一列

for i = 1 : size(Pos,2)

datas_matrix(:,Pos(i)) = Forward_processing(datas_matrix(:,Pos(i)),ch(i),Pos(i));

end

%% 权重

%如果不需要加权重就默认权重都相同,即都为1/m

weigh = ones(1,m) ./ m ;

%% 归一化

for i = 1:m

tmp = datas_matrix(:,i)

datas_S_matrix(:,i) = (tmp - min(tmp))/(max(tmp) - min(tmp));

end

%% 计算与最大值的距离和最小值的距离,并算出得分

max_dis = sum([(datas_S_matrix - repmat(max(datas_S_matrix),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5;

min_dis = sum([(datas_S_matrix - repmat(min(datas_S_matrix),n,1)) .^ 2 ] .* repmat(weigh,n,1) ,2) .^ 0.5;

S = min_dis ./ (max_dis+min_dis);

results = S / sum(S);

[sorted_results,index] = sort(results ,'descend');

format short

R = [index,sorted_results];

xlswrite('results.xls',R);

 

 

 

Forward_processing.m

 

function [posit_x] = Forward_processing(x,type,~)

if type == 1 %极小型

%正向化

posit_x = max(x) - x;

elseif type == 2 %中间型

best = 7;

M = max(abs(x-best));

posit_x = 1 - abs(x-best) / M;

elseif type == 3 %区间型

a = 10;

b = 20;

r_x = size(x,1);

M = max([a-min(x),max(x)-b]);

posit_x = zeros(r_x,1);

for i = 1: r_x

if x(i) < a

posit_x(i) = 1-(a-x(i))/M;

elseif x(i) > b

posit_x(i) = 1-(x(i)-b)/M;

else

posit_x(i) = 1;

end

end

end

end

 

posted @

2020-06-12 00:13 

Hk_Mayfly 

阅读(2405) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 Hk_Mayfly

Powered by .NET 8.0 on Kubernetes

TOPSIS方法步骤与MATLAB代码实现 - 知乎

TOPSIS方法步骤与MATLAB代码实现 - 知乎首发于不看后悔一星期的管理与决策知识切换模式写文章登录/注册TOPSIS方法步骤与MATLAB代码实现LearningYard学苑分享兴趣,传播快乐,增长见闻,留下美好!分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard学苑。今天小编为大家带来《TOPSIS方法步骤与MATLAB代码实现》,一起来看看吧!⚡ 多图预警!建议连接WIFI阅读!⚡【1】基础概念TOPSIS方法由Hwang和Yoon提出,该方法通过确定与理想解距离最短、与负理想解距离最远的解,从而得到最具优势的方案。TOPSIS方法具有逻辑结构稳健、计算过程简单、同时考虑理想解和负理想解的优点,适用于基于决策者完全理性的多属性决策。【2】决策步骤(0)问题描述(1)标准化处理为能够科学地得出方案优势度,需将各指标进行标准化。令d为标准化后的结果,实数的标准化公式如下:(2)确定正负理想点TOPSIS方法的核心是在于比较方案与理想点的距离,因此需要确定每个属性的正负理想点,可根据每个属性中的最大最小值进行确定。其中,d+为正理想点,d-为负理想点。(3)计算方案属性与正负理想点的距离分别计算每个方案到正理想点与负理想点的距离,由于本文研究的属性值为实数,因此只需要将两者相减即可。(4)计算每个方案到正理想点的相对贴近度找出正负理想点后通过距离测度公式完成相对贴近度的计算,公式为:(5)根据结果确定方案排序按照相对贴近度从大到小的顺序对待决策方案进行排序,评价对象排在前面的优。【3】代码详解本文研究属性值实数,属性权重完全已知的多属性决策问题,原初矩阵如下表所示,其中所有属性均为效益型指标,决策与编码过程按以下步骤进行。原初矩阵在MATLAB中的编码如下所示。顺便测量一下原初矩阵的尺寸:对矩阵进行标准化处理:标准化后的结果如下所示:将扩充后的权重向量点乘标准化矩阵,得到加权矩阵。每列的最大值为1,最小值为0,直接计算相对贴近度。相对贴近度矩阵如下所示:将上述矩阵每行所有数值进行相加,得到每个方案的贴近度:从结果可以看出,方案1为最优方案。【英语学习】The TOPSIS method, also known as the method of approximating ideal points or the distance between superior and inferior solutions, was proposed by Hwang and Yoon. It assumes that the distance between the ideal solution and the positive ideal solution is the shortest, and the distance between the ideal solution and the negative ideal solution is the longest. These distances are included in the concept of similarity index, which will be sorted to find the best solution, and the relative closeness will be used to determine the ranking of the alternatives in each criterion.本期的分享就到这里,如果您对今天的文章有独特的想法,欢迎给我们留言,让我们相约明天,祝您今天过得开心快乐!本文由LearningYard学苑原创,仅代表作者个人观点,如有侵权请联系删除。翻译参考来源:Deepl。内容参考来源:[1] Sari F . Forest fire susceptibility mapping via multi-criteria decision analysis techniques for Mugla, Turkey: A comparative analysis of VIKOR and TOPSIS - ScienceDirect[J]. Forest Ecology and Management, 480.发布于 2021-12-11 21:49Matlab决策决策理论​赞同 12​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录不看后悔一星期的管理与决策知识小孩子不懂事,写

TOPSIS法的算法步骤及实战应用——MATLAB实现

IS法的算法步骤及实战应用——MATLAB实现最新活动产品解决方案千帆社区AI原生应用商店企业服务云市场合作与生态开发者服务与支持了解智能云备案文档管理控制台TOPSIS法的算法步骤及实战应用——MATLAB实现作者:很酷cat2024.01.18 05:51浏览量:1简介:TOPSIS法是一种多属性决策分析方法,用于评估不同方案之间的相对优劣。本文将详细介绍TOPSIS法的算法步骤,并通过MATLAB实现其计算过程。同时,结合实际案例,演示如何应用TOPSIS法进行决策分析。在多属性决策分析中,TOPSIS法是一种常用的方法,用于评估不同方案之间的相对优劣。该方法通过对备选方案进行排序,为决策者提供一种简单、直观的决策依据。算法步骤

构建初始矩阵:收集各方案在各个属性上的属性值,构建一个初始矩阵。矩阵中的每个元素表示某个方案在某个属性上的值。标准化矩阵:对初始矩阵进行标准化处理,消除不同属性量纲的影响。标准化的方法是将每个元素除以其所在列的最大值。计算权重:根据各属性的重要性,为每个属性赋予一个权重值。权重的确定可以采用多种方法,如层次分析法、熵权法等。计算加权标准化矩阵:将标准化矩阵与权重相乘,得到加权标准化矩阵。确定正负理想解:正理想解是所有方案中最好的属性值组成的向量,负理想解是所有方案中最差的属性值组成的向量。计算距离:分别计算每个方案到正负理想解的距离。距离的计算可以采用欧氏距离或曼哈顿距离等。排序:根据距离计算结果,对方案进行排序,距离正理想解越近的方案越优。下面我们将通过MATLAB实现TOPSIS法的算法步骤,并结合一个实际案例进行演示。实战应用假设我们有一个包含三个方案的决策问题,涉及到三个属性:成本、性能和可靠性。通过收集数据,我们得到以下初始矩阵:成本 性能 可靠性A 100 80 90B 90 95 85C 85 80 95标准化矩阵标准化的方法是将每个元素除以其所在列的最大值,得到标准化矩阵:0.4754 0.5556 0.44440.5246 0.4754 0.55560.4754 0.4444 0.4754计算权重假设我们采用层次分析法来确定权重,得到权重向量为 [0.3, 0.4, 0.3]。计算加权标准化矩阵将标准化矩阵与权重向量相乘,得到加权标准化矩阵:0.1427 0.2222 0.13330.1818 0.2222 0.22220.1427 0.1333 0.1427确定正负理想解正理想解为 [1, 1, 1],负理想解为 [0, 0, 0]。计算距离使用欧氏距离公式计算每个方案到正负理想解的距离:d_AB = sqrt((1-1)^2 + (1-1)^2 + (1-1)^2) = 0d_AC = sqrt((1-1)^2 + (1-1)^2 + (1-1)^2) = 0d_BC = sqrt((1-1)^2 + (1-1)^2 + (1-1)^2) = 0排序由于所有方案到正负理想解的距离都为0,无法直接排序。这表明所有方案在三个属性上都达到了正理想解的要求,没有明显的优劣之分。因此,我们可以认为这三个方案都是可行的,并且具有相同的优先级。通过以上步骤,我们完成了TOPSIS法的计算过程,并对方案进行了排序。在实际应用中,可以根据具体情况调整算法步骤和参数设置,以满足不同决策问题的需求。

325最热文章云数据库与自建数据库有什么不同?Windows幻兽帕鲁服务器一键搭建我的世界(minecraft) Java版一键部署分布式数据库 GaiaDB-X 金融应用实践2023 年中国数据库十大发展总结

关于智能云百度智能云2.0云智技术论坛行业白皮书智能云公告最新资讯客户案例服务案例方案手册产品手册热门产品云服务器对象存储数据可视化文字识别语音识别图像识别域名服务BML全功能AI开发平台曦灵·数字人直播平台内容分发网络CDN负载均衡智能解决方案智慧城市智能制造智慧能源智慧水务智慧金融智慧媒体智慧电信智慧教育企业上云快速入口控制台备案帮助产品促销企业服务云市场合作伙伴中心支持计划专家服务帮助文档售前服务咨询支持热线(4008-777-818)技术工单建议反馈违规举报关于百度智能云云智一体2.0AI体验中心最新资讯产品动态市场活动客户案例行业解读公告通知联系我们服务与支持文档中心入门指南视频中心培训与认证企业支持计划专家服务重大保障服务自助服务智能助手账户管理管理控制台实名认证域名管理备案管理个人中心财务与订单发票申请消息中心我的工单快速入口成为合作伙伴云市场最新活动企业服务开发者社区SDK中心API平台开发者沙龙飞桨大赛实用工具短网址域名信息查询SSL证书文字识别语音识别图片识别卡证识别文档翻译图片翻译售前咨询热线4008-777-818转1售前在线咨询售后智能助手技术工单违规举报头部7*24小时服务企业支持计划电子化备案建议反馈热门推荐云服务器云磁盘商标注册文字识别弹性公网IP海外CDN数据传输服务内容分发网络人脸与人体识别弹性裸金属服务器SSL证书域名服务容器引擎专线接入音视频直播智能推荐引擎GPU云服务器Elasticsearch云数据库HBase爱速搭低代码平台智能边缘私有网络应用引擎文件存储智能云解析MapReduce简单消息服务轻量应用服务器智能视联网平台云数据库GaiaDB-X日志服务消息服务负载均衡对象存储云虚拟主机数据仓库Palo容器镜像服务云数据库DocDB超级链BaaS平台云原生微服务应用平台解决方案智慧城市智慧金融智能制造智慧能源智慧媒体智慧水务智能图云企业上云区块链物联网热门搜索数字人云手机直播平台数据分析边缘计算域名解析数据可视化自然语言处理数据采集虚拟主机快速链接百度搜索百度大脑百度VR百度AI市场百度统计百度指数百度云加速百度阿波罗百度地图慧眼百度翻译开放平台百度营销百度如流百度安全百度短网址百度有驾百度联盟百度超级链百度数据众包百度网盘企业版百度搜索资源平台

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution - File Exchange - MATLAB Central

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution - File Exchange - MATLAB Central

Skip to content

Toggle Main Navigation

Sign In to Your MathWorks Account

My Account

My Community Profile

Link License

Sign Out

Products

Solutions

Academia

Support

Community

Events

Get MATLAB

MATLAB

Products

Solutions

Academia

Support

Community

Events

Get MATLAB

MATLAB

Sign In to Your MathWorks Account

My Account

My Community Profile

Link License

Sign Out

File Exchange

Search File Exchange

File Exchange

Support

MathWorks

Search Support

Support

File Exchange

MathWorks

Search MathWorks.com

MathWorks

File Exchange

Support

Close Mobile Search

Close Mobile Search

Toggle local navigation

MATLAB Central

Community Home

MATLAB Answers

File Exchange

Cody

Blogs

Discussions

AI Chat Playground

Communities

Treasure Hunt

Contests

Advisors

Virtual Badges

About

Files Authors My File ExchangeFollowed Content FeedManage FollowingCommunication PreferencesMy Files Publish About

Trial software

You are now following this Submission

You will see updates in your followed content feed

You may receive emails, depending on your communication preferences

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution

Version 1.1.0.0 (111 KB) by

Omid Ameri Sianaki

The function is provided for TOPSIS methodology with Information Entropy Weighting Methodology.

Follow

5.0

(1)

2K Downloads

Updated

20 May 2016

View License

×

License

Share

Open in MATLAB Online

Download

×

Share 'TOPSIS: Technique for Order Preference by Similarity to Ideal Solution'

Open in File Exchange

Open in MATLAB Online

Close

Overview

Functions

Version History

Reviews (1)

Discussions (6)

Of the numerous criteria decision-making (MCDM) methods, TOPSIS is a practical and useful technique for ranking and selecting a number of possible alternatives by measuring Euclidean distances. TOPSIS, is a simple ranking method in conception and application. The TOPSIS method based on information entropy is proposed as a decision support tool in many fields. The purpose of this methodology is to first arrive at an ideal solution and a negative ideal solution, and then find a scenario which is nearest to the ideal solution and farthest from the negative ideal solution.

Upon submission of an article to any Journal and conference, an author is required to transfer copyright in the article by citing below reference:

Sianaki, O. A. (2015). Intelligent Decision Support System for Energy Management in Demand Response Programs and Residential and Industrial Sectors of the Smart Grid. (PhD), Curtin University, Curtin University Library. Retrieved from http://espace.library.curtin.edu.au/R?func=dbin-jump-full&local_base=gen01-era02&object_id=240088 (240088)

I have already provided the ELECTRE function code that you may want to download it,

The link of the video for explaining the implementation of function and methodology is :

https://youtu.be/0_imbSU7mH4

Cite As

Omid Ameri Sianaki (2024). TOPSIS: Technique for Order Preference by Similarity to Ideal Solution (https://www.mathworks.com/matlabcentral/fileexchange/57143-topsis-technique-for-order-preference-by-similarity-to-ideal-solution), MATLAB Central File Exchange.

Retrieved March 16, 2024.

Requires

MATLAB

MATLAB Release Compatibility

Created with

R2014b

Compatible with any release

Platform Compatibility

Windows macOS Linux

Categories

Sciences

>

Chemistry

>

Find more on Chemistry in Help Center and MATLAB Answers

Tags

Add Tags

information entropy mcda multi criteria de... technique for ord... topsis

Cancel

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor

TOPSIS/

Inputdata.m

topsis

topsis

Version

Published

Release Notes

1.1.0.0

20 May 2016

In update version I just added an example and a video link to show how to implement the function code.

You need to make your own decision making matrix and change the data range for variables (input and output).

Update is about adding the training video link and presenting an example

Download

1.0.0.0

16 May 2016

Download

×

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

(English)

(Deutsch)

(Français)

(简体中文)

(English)

You can also select a web site from the following list

How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

Americas

América Latina (Español)

Canada (English)

United States (English)

Europe

Belgium (English)

Denmark (English)

Deutschland (Deutsch)

España (Español)

Finland (English)

France (Français)

Ireland (English)

Italia (Italiano)

Luxembourg (English)

Netherlands (English)

Norway (English)

Österreich (Deutsch)

Portugal (English)

Sweden (English)

Switzerland

Deutsch

English

Français

United Kingdom

(English)

Asia Pacific

Australia (English)

India (English)

New Zealand (English)

中国

简体中文Chinese

English

日本Japanese (日本語)

한국Korean (한국어)

Contact your local office

Trial software

Select a Web Site

United States

Trust Center

Trademarks

Privacy Policy

Preventing Piracy

Application Status

Terms of Use

© 1994-2024 The MathWorks, Inc.

Join the conversation

TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili

TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili 首页番剧直播游戏中心会员购漫画赛事投稿TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北

4436

7

2023-04-21 17:27:23

未经作者授权,禁止转载997813534记得一键三连哦~~ 需要课件和代码的可关注公众号:【数模加油站】或加入数模学习交流群:【870768113】,数模相关的问题也可以在群里一起交流学习。本套数学建模系列课程由数模加油站工作室倾力制作,本套课程全部免费,请大家放心观看。本工作室还给大家整理了大量数学建模相关资料,模型、代码、各数模竞赛优秀获奖论文及教程的配套课件,关注公众号:【数模加油站】,全部免费发放给大家!我在B站学习知识校园学习建模TOPSIS数学建模加油站快速入门江北数学模型数模必看教程

数模加油站

发消息

关注微信公众号:【数模加油站】,领取课程资料及更多免费资料!!需要课件和代码的可以加入交流群:【870768113】

关注 2.6万

实时桌宠互动,其乐无穷!

数学建模模型算法合集

(4/52)自动连播19.9万播放简介

订阅合集

1-1-1 评价类-层次分析法模型讲解

29:57

1-1-2 评价类-层次分析法matlab代码讲解

27:46

1-1-3 评价类-层次分析法python代码讲解

10:44

1-2-1 评价类-TOPSIS法模型讲解

16:27

1-2-2 评价类-TOPSIS法matlab代码讲解

22:01

1-2-3 评价类-TOPSIS法python代码讲解

26:36

1-3-1 评价类-熵权法模型讲解

07:41

1-3-2 评价类-熵权法matlab代码讲解

05:45

1-3-3 评价类-熵权法Python代码讲解

03:00

1-4-1 评价类-模糊综合评价模型讲解

35:07

1-4-2 评价类-模糊综合评价模型代码Matlab讲解 【数学建模快速入门】数模加油站 江北

02:37

1-4-3 评价类-模糊综合评价模型代码Python讲解 【数学建模快速入门】数模加油站 江北

02:27

1-4-4 评价类-模糊综合评价SPSSPRO应用

03:46

1-5-1 评价类-灰色关联分析讲解

13:25

1-5-2 评价类-灰色关联分析matlab代码讲解

05:29

1-5-3 评价类-灰色关联分析python代码讲解

04:22

1-6-1 评价类-主成分分析讲解

26:55

1-6-2 评价类-主成分分析matlab代码讲解

07:29

1-6-3 评价类-主成分分析python代码讲解

07:29

2-1-1 优化类-线性规划模型讲解 【数学建模快速入门】数模加油站 江北

15:11

2-1-2 优化类-线性规划matlab代码讲解 【数学建模快速入门】数模加油站 江北

15:33

2-2 蒙特卡罗法讲解【数学建模快速入门】数模加油站 江北

16:25

2-3-1 优化类-非线性规划模型讲解 【数学建模快速入门】数模加油站 江北

14:23

2-3-2 优化类-非线性规划matlab代码讲解 【数学建模快速入门】数模加油站 江北

31:37

2-4-1 优化类-整数规划和0-1规划模型讲解 【数学建模快速入门】数模加油站 江北

12:48

2-4-2 优化类-整数规划和0-1规划matlab代码讲解 【数学建模快速入门】数模加油站 江北

11:03

2-5-1 优化类-最大最小化模型讲解 【数学建模快速入门】数模加油站 江北

05:57

2-5-2 优化类-最大最小化模型matlab代码讲解 【数学建模快速入门】数模加油站 江北

02:24

2-6-1 优化类-多目标规划模型讲解 【数学建模快速入门】数模加油站 江北

20:52

2-6-2 优化类-多目标规划matlab代码讲解 【数学建模快速入门】数模加油站 江北

03:58

2-7-1 优化类-动态规划算法讲解 【数学建模快速入门】数模加油站 江北

20:57

2-7-2 优化类-动态规划算法python代码讲解 【数学建模快速入门】数模加油站 江北

05:00

2-8 运筹优化类-启发式算法(模拟退火,遗传算法,粒子群算法)

47:39

2-9-1 优化类-图论模型讲解 【数学建模快速入门】数模加油站 江北

09:13

2-9-2 优化类-图论绘图matlab代码讲解 【数学建模快速入门】数模加油站 江北

09:28

2-10-1 优化类-最短路径算法讲解 【数学建模快速入门】数模加油站 江北

16:30

2-10-2 优化类-最短路径matlab代码讲解 【数学建模快速入门】数模加油站 江北

05:21

2-11-1 优化类-最小生成树算法讲解 【数学建模快速入门】数模加油站 江北

15:22

2-11-2 优化类-最小生成树matlab代码讲解 【数学建模快速入门】数模加油站 江北

06:01

3-1-1 预测类-回归分析概述 【数学建模快速入门】数模加油站 江北

42:04

3-2-1 预测类-一元线性回归分析模型讲解 【数学建模快速入门】数模加油站 江北

14:17

3-2-1 预测类-一元线性回归分析matlab代码讲解 【数学建模快速入门】数模加油站 江北

03:48

3-3-1 预测类-多元线性回归分析模型讲解 【数学建模快速入门】数模加油站 江北

15:39

3-3-2 预测类-多元线性回归分析matlab代码讲解 【数学建模快速入门】数模加油站 江北

05:32

3-4-1 预测类-非线性回归分析模型讲解 【数学建模快速入门】数模加油站 江北

31:50

3-4-2 预测类-非线性回归分析matlab代码讲解 【数学建模快速入门】数模加油站 江北

04:40

3-5-1 预测类-灰色预测GM(1,1)模型讲解 【数学建模快速入门】数模加油站 江北

21:08

3-5-2 预测类-灰色预测GM(1,1)matlab代码讲解 【数学建模快速入门】数模加油站 江北

21:12

3-6-1 预测类-时间序列模型(ARIMA)讲解 【数学建模快速入门】数模加油站 江北

38:40

3-6-2 预测类-时间序列模型(ARIMA)matlab代码讲解 【数学建模快速入门】数模加油站 江北

06:53

4-1 机理分析类-微分方程(人口模型/阻滞增长模型/传染病模型)

1:34:54

5-1 机器学习模型专题讲解

1:34:48

灰色预测GM(1,1)模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

6304

2

层次分析法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

1.2万

60

灰色关联分析模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

3817

16

灰色预测GM(1,1)代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

3124

0

熵值法计算指标权重及TOPSIS模型评价——基于Excel软件学术小科蚪

793

0

回归分析概述(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

2985

8

4-6-2 控制预测类-时间序列模型(ARIMA)代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

6266

4

时间序列模型(ARIMA)讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

2.1万

20

模糊综合评价模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

5062

52

非线性回归分析模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

6339

6

主成分分析模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

4257

3

层次分析法模型matlab代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

3549

5

蒙特卡罗法讲解(附matlab和python代码)【数学建模快速入门】数模加油站 江北数模加油站

2621

1

线性规划代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

1622

0

一元线性回归分析模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

3161

1

图论绘图代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

1573

1

主成分分析代码matlab代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

2517

0

TOPSIS法模型Matlab代码讲解 【数学建模快速入门】数模加油站 江北数模加油站

2779

5

非线性规划模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

2483

3

动态规划算法讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北数模加油站

4640

6

展开

小窗

客服

顶部

赛事库 课堂 2021

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution - File Exchange - MATLAB Central

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution - File Exchange - MATLAB Central

跳到内容

切换主导航

登录到您的 MathWorks 帐户

我的帐户

我的社区资料

关联许可证

登出

产品

解决方案

学术

支持

社区

活动

获取 MATLAB

MATLAB

产品

解决方案

学术

支持

社区

活动

获取 MATLAB

MATLAB

登录到您的 MathWorks 帐户

我的帐户

我的社区资料

关联许可证

登出

File Exchange

搜索 File Exchange

File Exchange

Support

MathWorks

Search Support

Support

File Exchange

MathWorks

Search MathWorks.com

MathWorks

File Exchange

Support

Close Mobile Search

Close Mobile Search

Toggle local navigation

MATLAB Central

Community Home

MATLAB Answers

File Exchange

Cody

Blogs

Discussions

AI Chat Playground

Communities

Treasure Hunt

Contests

Advisors

Virtual Badges

About

文件 作者 我的 File Exchange关注的内容源管理关注通信预设项我的文件 发布 关于

试用软件

您现在正在关注此提交

您将在关注的内容源中看到更新

您可能会收到电子邮件,具体取决于您的通信预设项

TOPSIS: Technique for Order Preference by Similarity to Ideal Solution

版本 1.1.0.0 (110.7 KB) 作者:

Omid Ameri Sianaki

The function is provided for TOPSIS methodology with Information Entropy Weighting Methodology.

关注

5.0

(1)

2.0K 次下载

更新时间

2016/5/20

查看许可证

×

许可证

共享

在 MATLAB Online 中打开

下载

×

共享 'TOPSIS: Technique for Order Preference by Similarity to Ideal Solution'

在 File Exchange 中打开

在 MATLAB Online 中打开

关闭

总览

函数

版本历史记录

评论 (1)

讨论 (6)

Of the numerous criteria decision-making (MCDM) methods, TOPSIS is a practical and useful technique for ranking and selecting a number of possible alternatives by measuring Euclidean distances. TOPSIS, is a simple ranking method in conception and application. The TOPSIS method based on information entropy is proposed as a decision support tool in many fields. The purpose of this methodology is to first arrive at an ideal solution and a negative ideal solution, and then find a scenario which is nearest to the ideal solution and farthest from the negative ideal solution.

Upon submission of an article to any Journal and conference, an author is required to transfer copyright in the article by citing below reference:

Sianaki, O. A. (2015). Intelligent Decision Support System for Energy Management in Demand Response Programs and Residential and Industrial Sectors of the Smart Grid. (PhD), Curtin University, Curtin University Library. Retrieved from http://espace.library.curtin.edu.au/R?func=dbin-jump-full&local_base=gen01-era02&object_id=240088 (240088)

I have already provided the ELECTRE function code that you may want to download it,

The link of the video for explaining the implementation of function and methodology is :

https://youtu.be/0_imbSU7mH4

引用格式

Omid Ameri Sianaki (2024). TOPSIS: Technique for Order Preference by Similarity to Ideal Solution (https://www.mathworks.com/matlabcentral/fileexchange/57143-topsis-technique-for-order-preference-by-similarity-to-ideal-solution), MATLAB Central File Exchange.

检索来源 2024/3/16.

需要

MATLAB

MATLAB 版本兼容性

创建方式

R2014b

兼容任何版本

平台兼容性

Windows macOS Linux

类别

Sciences

>

Chemistry

>

在 Help Center 和 MATLAB Answers 中查找有关 Chemistry 的更多信息

标签

添加标签

information entropy mcda multi criteria de... technique for ord... topsis

取消

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

探索实时编辑器

创建集代码、输出和格式化文本于一体的可执行脚本文档。

了解实时编辑器

TOPSIS/

Inputdata.m

topsis

topsis

版本

已发布

发行说明

1.1.0.0

2016/5/20

In update version I just added an example and a video link to show how to implement the function code.

You need to make your own decision making matrix and change the data range for variables (input and output).

Update is about adding the training video link and presenting an example

下载

1.0.0.0

2016/5/16

下载

×

选择网站

选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。

(English)

(Deutsch)

(Français)

(简体中文)

(English)

您也可以从以下列表中选择网站:

如何获得最佳网站性能

选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。

美洲

América Latina (Español)

Canada (English)

United States (English)

欧洲

Belgium (English)

Denmark (English)

Deutschland (Deutsch)

España (Español)

Finland (English)

France (Français)

Ireland (English)

Italia (Italiano)

Luxembourg (English)

Netherlands (English)

Norway (English)

Österreich (Deutsch)

Portugal (English)

Sweden (English)

Switzerland

Deutsch

English

Français

United Kingdom

(English)

亚太

Australia (English)

India (English)

New Zealand (English)

中国

简体中文Chinese

English

日本Japanese (日本語)

한국Korean (한국어)

联系您当地的办事处

试用软件

选择网站

United States

信任中心

商标

隐私权政策

防盗版

应用状态

Terms of Use

京公网安备 11010502045942号京ICP备12052471号

© 1994-2024 The MathWorks, Inc.

x

WeChat

关注我们

MATLAB软件下载 - 数值计算和科学编程最新版 | 科学计算工具 - 智合数方—综合数据分析服务平台

MATLAB软件下载 - 数值计算和科学编程最新版 | 科学计算工具 - 智合数方—综合数据分析服务平台

首页Home

软件产品Nav

学习教程Nav

在线数据分析Nav

关于我们Nav

STATA教程大全NVivo教程大全Mplus教程大全MDI Jade教程大全Citespace教程大全Eviews教程大全Revman教程大全SPSS教程大全Rstudio教程大全AMOS教程大全ArcGIS教程大全

Matlab

Matlab

一款功能强大且性能稳定的商业数学软件

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。

代做程序设计

立即下载

购买咨询

Matlab是一款功能强大且性能稳定的商业数学软件

强大的数值计算能力

交互式开发环境

丰富的工具箱

跨平台支持

易于学习和使用

广泛的应用领域

Matlab 提供了丰富的数值计算功能,包括线性代数、微积分、微分方程求解、信号处理、图像处理等,可以高效地进行数值模拟和计算。

Matlab 提供了多个专业工具箱,覆盖了各种领域的计算需求,如统计工具箱、控制系统工具箱、机器学习工具箱等,用户可以根据自己的需求选择合适的工具箱进行扩展。

Matlab 可以在多种操作系统上运行,包括 Windows、MacOS 和 Linux,用户可以在不同平台上使用相同的 Matlab 程序和代码,保证了软件的跨平台兼容性。

Matlab 提供了交互式的开发环境,包括命令行界面和图形用户界面,用户可以通过命令行直接执行命令和查看结果,也可以通过图形用户界面进行交互式编程和数据可视化。

Matlab 的语法设计简洁清晰,类似于常见的数学表达式,易于学习和使用。同时,Matlab 提供了丰富的文档和教程,帮助用户快速掌握软件的基本操作和高级功能。

Matlab 在科学计算、工程技术、金融经济等领域有着广泛的应用,被用于数据分析、模拟仿真、算法开发、图像处理等各种领域,为用户提供了一种强大的技术计算和科学研究工具。

工程设计与模拟 信号和图像处理 机器人技术 数据分析与机器学习

工程设计与模拟基本介绍:

——

MATLAB 被广泛应用于各种工程领域,包括电气工程、机械工程、航空航天工程等。它支持工程模型的建立、系统仿真、优化设计和性能分析,帮助工程师和设计师快速有效地解决复杂的设计和分析问题。

获取软件 >

信号和图像处理基本介绍:

——

MATLAB 提供了强大的信号处理和图像处理工具,支持信号分析、滤波器设计、图像增强、特征提取和模式识别等。这在通信、医学成像、机器视觉等领域中具有重要应用价值。

获取软件 >

控制系统与机器人技术基本介绍: —— MATLAB 提供了先进的控制系统设计和分析工具,包括系统建模、控制器设计、稳定性分析和性能优化。这在自动化、机器人技术、无人驾驶汽车等领域中发挥了关键作用。

获取软件 >

数据分析与机器学习基本介绍: ——MATLAB 提供了丰富的数据分析和机器学习工具,支持数据预处理、特征选择、模型训练和预测分析等。这在大数据分析、人工智能、模式识别等领域中具有广泛应用。

获取软件 >

————  应用场景  ————

专业学术和研究领域的综合性数据分析服务平台

MATLAB 是我工程设计和模拟的得力助手。它不仅提供了强大的数值计算和仿真工具,还支持复杂系统的建模和优化。在我的项目中,MATLAB 帮助我快速验证设计方案、分析性能指标和优化控制策略。

作为一名数据科学家,MATLAB 为我提供了丰富的数据分析和机器学习工具。它支持数据预处理、特征工程、模型训练和预测分析,帮助我从大量数据中挖掘有价值的信息和见解。大大提高了我的工作效率和项目成功率。

在科学研究中,MATLAB 提供了全面和灵活的技术计算环境。它支持复杂的数学模型、仿真实验和数据可视化,满足了我的研究需求和挑战。通过使用 MATLAB,我能够探索新的理论、验证假设和发表高质量的研究成果。

匿名用户:**鑫服务内容:Matlab软件

匿名用户:**威服务内容:Matlab软件

匿名用户:**然软件版本:Matlab软件

— 客户感言 —

智合数方 专业数据分析服务

专业学术和研究领域的综合性数据分析服务平台

——————————————————————————————————————————————————————

微信客服            

本站教程已获得国家版权登记证书,受版权保护。未经授权,任何个人或机构不得以任何形式复制、传播、修改或用于商业目的。违反者将承担法律责任。如需使用本站教程内容,请联系我们获取授权。谢谢合作!以下为部分版权登记号:鲁作登字-2023-L-00466766   鲁作登字-2023-L-00466759   鲁作登字-2023-L-00466761   鲁作登字-2023-L-00466763   鲁作登字-2023-L-00466757

©2023 建邺区舒奇兰数据分析工作室 版权所有 苏ICP备2023032992号-1 | 本站支持  --