im钱包下载安装手机版|topsis法例题

作者: im钱包下载安装手机版
2024-03-16 11:11:00

TOPSIS法作业题_topsis方法的例题-CSDN博客

>

TOPSIS法作业题_topsis方法的例题-CSDN博客

TOPSIS法作业题

最新推荐文章于 2023-01-14 21:33:30 发布

刘秦001

最新推荐文章于 2023-01-14 21:33:30 发布

阅读量3.3k

收藏

37

点赞数

6

分类专栏:

数学建模

文章标签:

数学

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

本文链接:https://blog.csdn.net/m0_51589257/article/details/123245945

版权

数学建模

专栏收录该内容

2 篇文章

1 订阅

订阅专栏

河流水质评价

一、问题重述

1.1问题背景

我国是水资源极度贫乏的国家,虽然年水资源总量可达2.8万亿多吨,居世界第六位,但由于我国人口众多,人均水量不足2400立方米,仅为世界人均水量的1/4,世界排名第110位。本就先天不足,还要遭受到后天污染。国家环保局副局长汪纪戎表示:高强度的经济活动造成废物水的排放量相对的超过了流域的环境容量,我们中国的很多河流都是污水比例大,径流量偏小,所以水质的改善是相当艰巨的任务。由此观之,我国水资源现状不容乐观。

1.2问题重述

/mL)\植物性营养物量(ppm)。

问题一:衡量河流水质情况的数据指标在影响河流水质情况中所占的权重不同,需确定各个指标所占的权重。

问题二:通过搜集到的数据,结合问题一中给出的权重,综合评价20条河流的水质情况。

二、问题分析

2.1对问题一的分析

问题一具有明显的层次性,可划分成目标层——衡量河流水质情况,以及准则层——含氧量、PH值、细菌总数、植物性营养物量。为计算四个指标在衡量河流水质情况的权重,我们不妨采用层次分析法,构造比较矩阵,做层次单排序并作一致性检验。

2.2对问题二的分析

问题二是典型的综合评价类问题。考虑到已经得到充足的原始数据,我们将运动TOPSIS法,充分利用原始数据的信息,精确地反应各条河流的水质情况。

三、模型假设

1)假设20条河流的流量相同。

2)假设20条河流的流速相同。

3)假设20条河流流域内的土质状况相同。

4)假设20条河流流域内生物种类对河流水质情况无显著影响。

四、符号说明

符号 说明 M 目标层 C 准则层 λmax 最大特征值 ω 权重 DO 溶氧量 PH PH值 TCP 细菌总数 PN 植物性营养物量

五、模型的建立与求解

5.1问题一的模型建立与求解

5.1.1问题一的模型建立

(1)层次分析法概述

层次分析法是根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,该方法最终使得问题归结为最底层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

(2)模型建立

对于问题一,我们主要运用层次分析法中的层次但排序,即对于上次因素而言,本层次各因素的重要性的排序。

在问题一中,目标层M为衡量河流水质情况,标准层P为含氧量(C1)、PH值(C2)、细菌总数(C3)、植物性营养物量(C4)。结构层次如下图所示:

 

 

图1·层次结构图

5.5.2问题一模型的求解

(1)构造M-P比较矩阵

通过广泛搜集文献资料,权衡各准则之间重要性的比重,最终构造出如下比较矩阵:

表1·M-P比较矩阵

M C1 C2 C3 C4 C1 1 1 4 5 C2 1 1 3 4 C3 1/4 1/3 1 5 C4 1/5 1/4 1/5 1

(2)一致性检验

有公式CI=λmax-nn-1,根据CR=CI/RI,得到CR=0.0921<0,1,通过一致性检验。

表2·n与RI的关系

N 2 3 4 5 6 7 8 9 10 RI 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.52

(3)求解

首先,易求得比较矩阵的最大特征值λmax =4.2459,我们通过三种方法:算术平均法、几何平均法、特征值法分别求解,不同的方法得到的权重汇总如下表所示:

表3·权重矩阵

ω 算术平均值法 几何平均值法 特征值法 C1 0.4041 0.415 0.4124 C2 0.3569 0.3653 0.3584 C3 0.1716 0.1577 0.166 C4 0.0674 0.0621 0.0632

5.5.3问题一模型结果与分析

以往的论文利用层次分析法解决实际问题时,在求比重时,都是采用某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的稳健性,本文采用了三种方法分别求出了权重,再取平均,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。最终结果汇总如下表:

表4·权重汇总

含氧量(ppm) PH值 细菌总数(个/mL) 植物性营养物量(ppm) ω 0.4105 0.3602 0.1651 0.0642

由结果看,含氧量所占比重最高,二植物性营养物量所占比重最低,这为问题二我们运用TOPSIS评估河流水质情况提供了一个依据。

5.2问题二的模型建立与求解

5.2.1问题二的模型建立

(1)TOPSIS法的概述

TOPSIS法是根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求个效用函数具有单调递增(减)性就行。TOPSIS是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

(2)模型建立

我们首先将四个指标进行分类,含氧量越高越好,属于极大型指标:PH值越接近7越好,属于中间型指标;细菌总数越小越好,属于极小型指标;植物性营养物量介于10-20之间最佳,超过20或低于10均不好,属于区间型指标。

具体建模过程为:

1.先将原始数据矩阵同意指标类型,作正向化处理,得到正向化矩阵:

a.极大型指标不变;

b.极小型指标做变化max-x为极大型指标;

c.中间型指标,起义组序列{xi},最佳数值为xbext,那么正向化的公式如下:

 

 

2.对正向化的矩阵进行标准化处理以消除各指标量纲的影响:

 

3. 找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方

案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据,综合

权重,计算出得分,并归一化。

 

5.2.2问题二的模型求解

我们利用MATLAB软件对原始数据进行处理。

正向化、标准化后得到的结果如下:

表5·正向化后进行标准化后的结果

河流 含氧量(ppm) PH值 细菌总数(个/mL) 植物性营养物量(ppm) A 0.162185916 0.248255278 0.024544035 0.306457563 B 0.070199874 0.140837129 0.286347071 0.212692674 C 0.315034904 0.181417319 0.065450759 0.277586453 D 0.297744294 0.334189798 0.065450759 0.136144501 E 0.24656409 0.226771648 0.03272538 0.211898056 F 0.082649113 0.291222538 0.130901518 0.184086436 G 0.265929573 0.295996678 0.130901518 0.200773408 H 0.321605335 0.300770818 0.220896312 0 I 0.188467643 0.198126809 0.4008859 0.306457563 J 0.214057745 0.281674258 0.302709761 0.240504293 K 0.274229065 0.219610438 0.36816052 0.214281909 L 0.152157363 0.279287188 0.302709761 0.166075101 M 0.257975892 0.05012847 0.253621692 0.306457563 N 0.06950825 0 0.057269414 0.139322972 O 0.070545686 0.202900949 0.253621692 0.306457563 P 0.267312822 0.140837129 0.01636269 0.306457563 Q 0.21959074 0.207675088 0.237259002 0.055888112 R 0.286678304 0.00954828 0.122720173 0.306457563 S 0.122417515 0.281674258 0 0.125284726 T 0.257284268 0.169481969 0.376341865 0.083699732

综合在问题一中的权重,再经过归一化处理,得到:

表6·最终得分

河流 得分 A 0.0446 B 0.0349 C 0.0554 D 0.0651 E 0.0501 F 0.0428 G 0.0621 H 0.0687 I 0.0582 J 0.0632 K 0.0661 L 0.0555 M 0.0461 N 0.0117 O 0.0406 P 0.0454 Q 0.0516 R 0.0400 S 0.0397 T 0.0581

我们得出,河流K的得分最高,水质状况最好;河流N的得分最低,水质状况最差。(我的数据跟视频里不一样,但步骤感觉是对的)

参考文献

优惠劵

刘秦001

关注

关注

6

点赞

37

收藏

觉得还不错?

一键收藏

知道了

0

评论

TOPSIS法作业题

河流水质评价一、问题重述1.1问题背景我国是水资源极度贫乏的国家,虽然年水资源总量可达2.8万亿多吨,居世界第六位,但由于我国人口众多,人均水量不足2400立方米,仅为世界人均水量的1/4,世界排名第110位。本就先天不足,还要遭受到后天污染。国家环保局副局长汪纪戎表示:高强度的经济活动造成废物水的排放量相对的超过了流域的环境容量,我们中国的很多河流都是污水比例大,径流量偏小,所以水质的改善是相当艰巨的任务。由此观之,我国水资源现状不容乐观。1.2问题重述/mL)\植物性营养..

复制链接

扫一扫

专栏目录

Topsis法代码.zip_topsis matlab_topsis代码_topsis法_决策_理想解

07-14

TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

TOPSIS法——Matlab实操

weixin_62490408的博客

07-14

3955

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

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

Di=g(Xi, X*)

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

参与评论

您还未登录,请先

登录

后发表或查看评论

数学建模笔记2Topsis法

m0_60256026的博客

04-22

291

数学建模笔记Topsis方法

【Matlab数学建模】TOPSIS(优劣解距离法)

qq_52247089的博客

06-04

385

  先分析一下层次分析法的不足。  ① 平均随机一致性指标RI的表格中,n最大为15。那么n太大的话,无法进行一致性检验。

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

  ① 第一步:求最大最小值。  ② 第二步:带入构造计算评分的公式x−minmax−min\frac{x - min}{max - min}max−minx−min​。  ③ 第三步:进行归一化。

  代码演示:

  (注:上面的评分规则是不正确的,只是用来抛砖引玉,正确的评分规则见下文“三

数学建模学习笔记(二十八)评价类:TOPSIS模型

兴趣使然的创作者

02-04

2921

Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。

引入一个实际例子来理解一下:

例题:下表是5位同学身体相关参数,请用TOPSIS法来对同学身体情况进行一个综合的评价

注意到,上面四个指标方向并不相同

需要对不同指标进行正向化:

1、极小

美赛BOOM数学建模3-2TOPSIS法

yangxo2002的博客

01-14

969

美赛数学建模笔记——Topsis3-2

数学建模二:TOPSIS法(优劣解距离法) 附代码详解

Mamo_Z7的博客

10-14

5261

数学建模二:TOPSIS法(优劣解距离法)及熵权法 附代码详解

TOPSIS法(优劣解距离法)用于评价类问题。

层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案。同时层次分析法也难以处理已经存在评价数据的问题。而TOPSIS法(优劣解距离法)则没有这些问题。

TOPSIS法(优劣解距离法)步骤:

1.原始矩阵正向化。

2.正向化矩阵标准化。

3.计算得分并归一化。

例:评价下表中20条河流的水质情况。

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐2

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

秀岩的博客

01-08

4万+

优劣解距离法

  TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

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

...

数学建模暑期集训7:TOPSIS法(优劣解距离法)

兴趣使然的创作者

07-19

1488

在本专栏第28篇数学建模学习笔记(二十八)评价类:TOPSIS模型中,简单介绍了TOPSIS模型。本篇内容参照清风数学建模课程,对该部分内容进行重新整理和补充。

C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for

Order Preference by Similarity to an Ideal Solution),可翻译为逼近理

想解排序法,国内常简称为优劣解距离法。

1.指标正向化

为了方便计算,需要将所有指标均转换成极大型。

1.1极小型->

数学建模之综合评价模型(层次分析法+Topsis法+熵权法)

热门推荐

qq_53133234的博客

04-24

6万+

以下内容均听自清风老师的建模教程 (老师讲的很好哦,大家可以去听听,结合实例不枯燥!)

以例题进行分析:

小明同学想出去旅游,在查阅了网上的攻略后,他初步选择了苏杭,北戴河,桂林三个地方

请你确定评价指标,形成评价体系为小明同学选择最佳的方案。

第一步:确定模型

当题中出现“确定评价指标,形成评价体系”这类词眼,这就是一道层次分析题。

第二步:建立递接层次结构模型

我们从三个问题入手:

1.我们评价的目标是什么?

答:为...

基于熵权TOPSIS法的岩爆预测

05-25

为了进行科学合理的岩爆预测,选取能够通过室内试验和现场测试获取原始数据的应力系数、脆性系数和弹性能量指数作为评价指标,通过计算指标原始数据的信息熵确定各指标权重,在此基础上,建立基于熵权TOPSIS法的岩爆预测...

结合熵权法的topsis方法的代码.zip

09-13

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

TOPSIS熵值法R代码.R

04-06

topsis评价类算法+熵权法确定权重,r语言代码,可以直接代入数据进行运行,简单方便,私人编写的。

topsis_matlab优劣解距离法_topsis_

10-01

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

gensim-3.6.0-cp35-cp35m-manylinux1_x86_64.whl.zip

03-15

gensim-3.6.0-cp35-cp35m-manylinux1_x86_64.whl.zip

python爬虫-10-拷贝、移动文件和目录.ev4.rar

03-15

python爬虫-10-拷贝、移动文件和目录.ev4.rar

pandas_or-0.1.1-py3-none-any.whl

03-15

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

vHierarchy 2.0.12 终极层次资产Unity 层次列表插件C#

03-15

vHierarchy 2.0.12 终极层次资产Unity 层次列表插件C#

支持Unity版本2021.3.0及以上

通过简单的生活质量改善来组织您的层次结构并简化您的工作流程

最小-无杂乱,无无用功能

直观-用户体验简单而精致

可自定义-一切都是可选的

优化-无延迟或冻结

自定义图标和颜色

- 高亮显示场景或预制件中的对象

- 创建分隔符或文件夹

组件minimap

- 参见右侧列出的组件

- 按住Alt键并单击组件以打开迷你编辑器

可定制的调色板

- 添加图标

- 调整颜色

- 导出用于其他项目

可定制的外观

- 层次线

- 最小模态

- 斑马纹

启动开关

- 启用或禁用对象而不选择它们

快捷键(在鼠标下的对象上工作,不需要选择它)

- 按A键切换到活动状态

- 按F键聚焦对象

- 按X删除对象

- 按E展开或折叠

- 按Shift-E仅展开一个对象

- 按Ctrl-Shift-E折叠所有内容

pandas_plink-2.0.3-cp38-cp38-manylinux1_i686.whl

最新发布

03-15

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

TOPSIS法 python

09-02

TOPSIS法是一种用于综合评价的方法,可以利用原始数据信息准确地反映各评价方案之间的差距。它由C.L.Hwang和K.Yoon于1981年首次提出,也被称为逼近理想解排序法或优劣解距离法。

在使用TOPSIS法进行评价时,基本的过程包括以下几个步骤:

1. 将原始数据矩阵进行统一指标类型处理,通常是进行正向化处理,以确保各指标的方向一致。

2. 对正向化后的矩阵进行标准化处理,以消除各指标量纲的影响。

3. 找到最优方案和最劣方案,即在有限方案中找到最好和最差的方案。

4. 分别计算每个评价对象与最优方案和最劣方案之间的距离,以确定每个评价对象与最优方案的相对接近程度。

5. 根据计算结果,对评价对象进行排序,以确定其优劣程度。

对于使用Python实现TOPSIS法,可以使用NumPy等科学计算库进行矩阵运算和数学计算。具体实现涉及到数据处理、标准化、距离计算等步骤,可以根据实际需求选择合适的方法和函数。123

#### 引用[.reference_title]

- *1* *2* *3* [python实现topsis法](https://blog.csdn.net/weixin_52300428/article/details/126309794)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]

[ .reference_list ]

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

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

刘秦001

CSDN认证博客专家

CSDN认证企业博客

码龄3年

湖中医

33

原创

39万+

周排名

5万+

总排名

3万+

访问

等级

447

积分

59

粉丝

32

获赞

4

评论

181

收藏

私信

关注

热门文章

2021-06-23网页作业一,二,三,模拟考。

5899

TOPSIS法作业题

3363

2021-07-07 c++历史作业。

2657

层次分析法作业题

2612

0620指针与数组

2316

分类专栏

网络

1篇

javaWeb

9篇

数学建模

2篇

电路与模拟电子技术基础

1篇

数字逻辑

1篇

java

7篇

c++

3篇

html

1篇

指针

3篇

结构体变量与指针

1篇

结构体数组

数据结构

1篇

最新评论

2021-07-07 c++作业。

2301_81363167:

#include

#define N 5

int main()

{

int score[N],sum=0;

float ave;

printf("请依次输入N个同学的成绩:"

2021-07-07 c++作业。

西西西多余:

呜呜呜,期末人实名痛苦

2021-07-07 c++作业。

刘秦001:

我c++老差啦,去年学的早忘了,不知道啊

2021-07-07 c++作业。

西西西多余:

并集那一题unionElem函数里的

if(j>=n)

arr2[len++]=arr1[i];

是为什么呀?

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

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

怪不得浏览器和gpt都有点吓到我了

连上wifi但无法上网

通过继承HttpServlet实现servlet程序

2024年1篇

2023年1篇

2022年14篇

2021年17篇

目录

目录

分类专栏

网络

1篇

javaWeb

9篇

数学建模

2篇

电路与模拟电子技术基础

1篇

数字逻辑

1篇

java

7篇

c++

3篇

html

1篇

指针

3篇

结构体变量与指针

1篇

结构体数组

数据结构

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

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

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

TOPSIS法作业题_topsis方法的例题-CSDN博客

>

TOPSIS法作业题_topsis方法的例题-CSDN博客

TOPSIS法作业题

最新推荐文章于 2023-01-14 21:33:30 发布

刘秦001

最新推荐文章于 2023-01-14 21:33:30 发布

阅读量3.3k

收藏

37

点赞数

6

分类专栏:

数学建模

文章标签:

数学

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

本文链接:https://blog.csdn.net/m0_51589257/article/details/123245945

版权

数学建模

专栏收录该内容

2 篇文章

1 订阅

订阅专栏

河流水质评价

一、问题重述

1.1问题背景

我国是水资源极度贫乏的国家,虽然年水资源总量可达2.8万亿多吨,居世界第六位,但由于我国人口众多,人均水量不足2400立方米,仅为世界人均水量的1/4,世界排名第110位。本就先天不足,还要遭受到后天污染。国家环保局副局长汪纪戎表示:高强度的经济活动造成废物水的排放量相对的超过了流域的环境容量,我们中国的很多河流都是污水比例大,径流量偏小,所以水质的改善是相当艰巨的任务。由此观之,我国水资源现状不容乐观。

1.2问题重述

/mL)\植物性营养物量(ppm)。

问题一:衡量河流水质情况的数据指标在影响河流水质情况中所占的权重不同,需确定各个指标所占的权重。

问题二:通过搜集到的数据,结合问题一中给出的权重,综合评价20条河流的水质情况。

二、问题分析

2.1对问题一的分析

问题一具有明显的层次性,可划分成目标层——衡量河流水质情况,以及准则层——含氧量、PH值、细菌总数、植物性营养物量。为计算四个指标在衡量河流水质情况的权重,我们不妨采用层次分析法,构造比较矩阵,做层次单排序并作一致性检验。

2.2对问题二的分析

问题二是典型的综合评价类问题。考虑到已经得到充足的原始数据,我们将运动TOPSIS法,充分利用原始数据的信息,精确地反应各条河流的水质情况。

三、模型假设

1)假设20条河流的流量相同。

2)假设20条河流的流速相同。

3)假设20条河流流域内的土质状况相同。

4)假设20条河流流域内生物种类对河流水质情况无显著影响。

四、符号说明

符号 说明 M 目标层 C 准则层 λmax 最大特征值 ω 权重 DO 溶氧量 PH PH值 TCP 细菌总数 PN 植物性营养物量

五、模型的建立与求解

5.1问题一的模型建立与求解

5.1.1问题一的模型建立

(1)层次分析法概述

层次分析法是根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,该方法最终使得问题归结为最底层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

(2)模型建立

对于问题一,我们主要运用层次分析法中的层次但排序,即对于上次因素而言,本层次各因素的重要性的排序。

在问题一中,目标层M为衡量河流水质情况,标准层P为含氧量(C1)、PH值(C2)、细菌总数(C3)、植物性营养物量(C4)。结构层次如下图所示:

 

 

图1·层次结构图

5.5.2问题一模型的求解

(1)构造M-P比较矩阵

通过广泛搜集文献资料,权衡各准则之间重要性的比重,最终构造出如下比较矩阵:

表1·M-P比较矩阵

M C1 C2 C3 C4 C1 1 1 4 5 C2 1 1 3 4 C3 1/4 1/3 1 5 C4 1/5 1/4 1/5 1

(2)一致性检验

有公式CI=λmax-nn-1,根据CR=CI/RI,得到CR=0.0921<0,1,通过一致性检验。

表2·n与RI的关系

N 2 3 4 5 6 7 8 9 10 RI 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.52

(3)求解

首先,易求得比较矩阵的最大特征值λmax =4.2459,我们通过三种方法:算术平均法、几何平均法、特征值法分别求解,不同的方法得到的权重汇总如下表所示:

表3·权重矩阵

ω 算术平均值法 几何平均值法 特征值法 C1 0.4041 0.415 0.4124 C2 0.3569 0.3653 0.3584 C3 0.1716 0.1577 0.166 C4 0.0674 0.0621 0.0632

5.5.3问题一模型结果与分析

以往的论文利用层次分析法解决实际问题时,在求比重时,都是采用某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的稳健性,本文采用了三种方法分别求出了权重,再取平均,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。最终结果汇总如下表:

表4·权重汇总

含氧量(ppm) PH值 细菌总数(个/mL) 植物性营养物量(ppm) ω 0.4105 0.3602 0.1651 0.0642

由结果看,含氧量所占比重最高,二植物性营养物量所占比重最低,这为问题二我们运用TOPSIS评估河流水质情况提供了一个依据。

5.2问题二的模型建立与求解

5.2.1问题二的模型建立

(1)TOPSIS法的概述

TOPSIS法是根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求个效用函数具有单调递增(减)性就行。TOPSIS是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

(2)模型建立

我们首先将四个指标进行分类,含氧量越高越好,属于极大型指标:PH值越接近7越好,属于中间型指标;细菌总数越小越好,属于极小型指标;植物性营养物量介于10-20之间最佳,超过20或低于10均不好,属于区间型指标。

具体建模过程为:

1.先将原始数据矩阵同意指标类型,作正向化处理,得到正向化矩阵:

a.极大型指标不变;

b.极小型指标做变化max-x为极大型指标;

c.中间型指标,起义组序列{xi},最佳数值为xbext,那么正向化的公式如下:

 

 

2.对正向化的矩阵进行标准化处理以消除各指标量纲的影响:

 

3. 找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方

案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据,综合

权重,计算出得分,并归一化。

 

5.2.2问题二的模型求解

我们利用MATLAB软件对原始数据进行处理。

正向化、标准化后得到的结果如下:

表5·正向化后进行标准化后的结果

河流 含氧量(ppm) PH值 细菌总数(个/mL) 植物性营养物量(ppm) A 0.162185916 0.248255278 0.024544035 0.306457563 B 0.070199874 0.140837129 0.286347071 0.212692674 C 0.315034904 0.181417319 0.065450759 0.277586453 D 0.297744294 0.334189798 0.065450759 0.136144501 E 0.24656409 0.226771648 0.03272538 0.211898056 F 0.082649113 0.291222538 0.130901518 0.184086436 G 0.265929573 0.295996678 0.130901518 0.200773408 H 0.321605335 0.300770818 0.220896312 0 I 0.188467643 0.198126809 0.4008859 0.306457563 J 0.214057745 0.281674258 0.302709761 0.240504293 K 0.274229065 0.219610438 0.36816052 0.214281909 L 0.152157363 0.279287188 0.302709761 0.166075101 M 0.257975892 0.05012847 0.253621692 0.306457563 N 0.06950825 0 0.057269414 0.139322972 O 0.070545686 0.202900949 0.253621692 0.306457563 P 0.267312822 0.140837129 0.01636269 0.306457563 Q 0.21959074 0.207675088 0.237259002 0.055888112 R 0.286678304 0.00954828 0.122720173 0.306457563 S 0.122417515 0.281674258 0 0.125284726 T 0.257284268 0.169481969 0.376341865 0.083699732

综合在问题一中的权重,再经过归一化处理,得到:

表6·最终得分

河流 得分 A 0.0446 B 0.0349 C 0.0554 D 0.0651 E 0.0501 F 0.0428 G 0.0621 H 0.0687 I 0.0582 J 0.0632 K 0.0661 L 0.0555 M 0.0461 N 0.0117 O 0.0406 P 0.0454 Q 0.0516 R 0.0400 S 0.0397 T 0.0581

我们得出,河流K的得分最高,水质状况最好;河流N的得分最低,水质状况最差。(我的数据跟视频里不一样,但步骤感觉是对的)

参考文献

优惠劵

刘秦001

关注

关注

6

点赞

37

收藏

觉得还不错?

一键收藏

知道了

0

评论

TOPSIS法作业题

河流水质评价一、问题重述1.1问题背景我国是水资源极度贫乏的国家,虽然年水资源总量可达2.8万亿多吨,居世界第六位,但由于我国人口众多,人均水量不足2400立方米,仅为世界人均水量的1/4,世界排名第110位。本就先天不足,还要遭受到后天污染。国家环保局副局长汪纪戎表示:高强度的经济活动造成废物水的排放量相对的超过了流域的环境容量,我们中国的很多河流都是污水比例大,径流量偏小,所以水质的改善是相当艰巨的任务。由此观之,我国水资源现状不容乐观。1.2问题重述/mL)\植物性营养..

复制链接

扫一扫

专栏目录

Topsis法代码.zip_topsis matlab_topsis代码_topsis法_决策_理想解

07-14

TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。TOPSIS法是一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法,又称为优劣解距离法。

TOPSIS法——Matlab实操

weixin_62490408的博客

07-14

3955

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

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

Di=g(Xi, X*)

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

参与评论

您还未登录,请先

登录

后发表或查看评论

数学建模笔记2Topsis法

m0_60256026的博客

04-22

291

数学建模笔记Topsis方法

【Matlab数学建模】TOPSIS(优劣解距离法)

qq_52247089的博客

06-04

385

  先分析一下层次分析法的不足。  ① 平均随机一致性指标RI的表格中,n最大为15。那么n太大的话,无法进行一致性检验。

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

  ① 第一步:求最大最小值。  ② 第二步:带入构造计算评分的公式x−minmax−min\frac{x - min}{max - min}max−minx−min​。  ③ 第三步:进行归一化。

  代码演示:

  (注:上面的评分规则是不正确的,只是用来抛砖引玉,正确的评分规则见下文“三

数学建模学习笔记(二十八)评价类:TOPSIS模型

兴趣使然的创作者

02-04

2921

Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。

引入一个实际例子来理解一下:

例题:下表是5位同学身体相关参数,请用TOPSIS法来对同学身体情况进行一个综合的评价

注意到,上面四个指标方向并不相同

需要对不同指标进行正向化:

1、极小

美赛BOOM数学建模3-2TOPSIS法

yangxo2002的博客

01-14

969

美赛数学建模笔记——Topsis3-2

数学建模二:TOPSIS法(优劣解距离法) 附代码详解

Mamo_Z7的博客

10-14

5261

数学建模二:TOPSIS法(优劣解距离法)及熵权法 附代码详解

TOPSIS法(优劣解距离法)用于评价类问题。

层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案。同时层次分析法也难以处理已经存在评价数据的问题。而TOPSIS法(优劣解距离法)则没有这些问题。

TOPSIS法(优劣解距离法)步骤:

1.原始矩阵正向化。

2.正向化矩阵标准化。

3.计算得分并归一化。

例:评价下表中20条河流的水质情况。

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐2

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

秀岩的博客

01-08

4万+

优劣解距离法

  TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

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

...

数学建模暑期集训7:TOPSIS法(优劣解距离法)

兴趣使然的创作者

07-19

1488

在本专栏第28篇数学建模学习笔记(二十八)评价类:TOPSIS模型中,简单介绍了TOPSIS模型。本篇内容参照清风数学建模课程,对该部分内容进行重新整理和补充。

C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for

Order Preference by Similarity to an Ideal Solution),可翻译为逼近理

想解排序法,国内常简称为优劣解距离法。

1.指标正向化

为了方便计算,需要将所有指标均转换成极大型。

1.1极小型->

数学建模之综合评价模型(层次分析法+Topsis法+熵权法)

热门推荐

qq_53133234的博客

04-24

6万+

以下内容均听自清风老师的建模教程 (老师讲的很好哦,大家可以去听听,结合实例不枯燥!)

以例题进行分析:

小明同学想出去旅游,在查阅了网上的攻略后,他初步选择了苏杭,北戴河,桂林三个地方

请你确定评价指标,形成评价体系为小明同学选择最佳的方案。

第一步:确定模型

当题中出现“确定评价指标,形成评价体系”这类词眼,这就是一道层次分析题。

第二步:建立递接层次结构模型

我们从三个问题入手:

1.我们评价的目标是什么?

答:为...

基于熵权TOPSIS法的岩爆预测

05-25

为了进行科学合理的岩爆预测,选取能够通过室内试验和现场测试获取原始数据的应力系数、脆性系数和弹性能量指数作为评价指标,通过计算指标原始数据的信息熵确定各指标权重,在此基础上,建立基于熵权TOPSIS法的岩爆预测...

结合熵权法的topsis方法的代码.zip

09-13

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

TOPSIS熵值法R代码.R

04-06

topsis评价类算法+熵权法确定权重,r语言代码,可以直接代入数据进行运行,简单方便,私人编写的。

topsis_matlab优劣解距离法_topsis_

10-01

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

gensim-3.6.0-cp35-cp35m-manylinux1_x86_64.whl.zip

03-15

gensim-3.6.0-cp35-cp35m-manylinux1_x86_64.whl.zip

python爬虫-10-拷贝、移动文件和目录.ev4.rar

03-15

python爬虫-10-拷贝、移动文件和目录.ev4.rar

pandas_or-0.1.1-py3-none-any.whl

03-15

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

vHierarchy 2.0.12 终极层次资产Unity 层次列表插件C#

03-15

vHierarchy 2.0.12 终极层次资产Unity 层次列表插件C#

支持Unity版本2021.3.0及以上

通过简单的生活质量改善来组织您的层次结构并简化您的工作流程

最小-无杂乱,无无用功能

直观-用户体验简单而精致

可自定义-一切都是可选的

优化-无延迟或冻结

自定义图标和颜色

- 高亮显示场景或预制件中的对象

- 创建分隔符或文件夹

组件minimap

- 参见右侧列出的组件

- 按住Alt键并单击组件以打开迷你编辑器

可定制的调色板

- 添加图标

- 调整颜色

- 导出用于其他项目

可定制的外观

- 层次线

- 最小模态

- 斑马纹

启动开关

- 启用或禁用对象而不选择它们

快捷键(在鼠标下的对象上工作,不需要选择它)

- 按A键切换到活动状态

- 按F键聚焦对象

- 按X删除对象

- 按E展开或折叠

- 按Shift-E仅展开一个对象

- 按Ctrl-Shift-E折叠所有内容

pandas_plink-2.0.3-cp38-cp38-manylinux1_i686.whl

最新发布

03-15

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

TOPSIS法 python

09-02

TOPSIS法是一种用于综合评价的方法,可以利用原始数据信息准确地反映各评价方案之间的差距。它由C.L.Hwang和K.Yoon于1981年首次提出,也被称为逼近理想解排序法或优劣解距离法。

在使用TOPSIS法进行评价时,基本的过程包括以下几个步骤:

1. 将原始数据矩阵进行统一指标类型处理,通常是进行正向化处理,以确保各指标的方向一致。

2. 对正向化后的矩阵进行标准化处理,以消除各指标量纲的影响。

3. 找到最优方案和最劣方案,即在有限方案中找到最好和最差的方案。

4. 分别计算每个评价对象与最优方案和最劣方案之间的距离,以确定每个评价对象与最优方案的相对接近程度。

5. 根据计算结果,对评价对象进行排序,以确定其优劣程度。

对于使用Python实现TOPSIS法,可以使用NumPy等科学计算库进行矩阵运算和数学计算。具体实现涉及到数据处理、标准化、距离计算等步骤,可以根据实际需求选择合适的方法和函数。123

#### 引用[.reference_title]

- *1* *2* *3* [python实现topsis法](https://blog.csdn.net/weixin_52300428/article/details/126309794)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]

[ .reference_list ]

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

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

刘秦001

CSDN认证博客专家

CSDN认证企业博客

码龄3年

湖中医

33

原创

39万+

周排名

5万+

总排名

3万+

访问

等级

447

积分

59

粉丝

32

获赞

4

评论

181

收藏

私信

关注

热门文章

2021-06-23网页作业一,二,三,模拟考。

5899

TOPSIS法作业题

3363

2021-07-07 c++历史作业。

2657

层次分析法作业题

2612

0620指针与数组

2316

分类专栏

网络

1篇

javaWeb

9篇

数学建模

2篇

电路与模拟电子技术基础

1篇

数字逻辑

1篇

java

7篇

c++

3篇

html

1篇

指针

3篇

结构体变量与指针

1篇

结构体数组

数据结构

1篇

最新评论

2021-07-07 c++作业。

2301_81363167:

#include

#define N 5

int main()

{

int score[N],sum=0;

float ave;

printf("请依次输入N个同学的成绩:"

2021-07-07 c++作业。

西西西多余:

呜呜呜,期末人实名痛苦

2021-07-07 c++作业。

刘秦001:

我c++老差啦,去年学的早忘了,不知道啊

2021-07-07 c++作业。

西西西多余:

并集那一题unionElem函数里的

if(j>=n)

arr2[len++]=arr1[i];

是为什么呀?

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

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

怪不得浏览器和gpt都有点吓到我了

连上wifi但无法上网

通过继承HttpServlet实现servlet程序

2024年1篇

2023年1篇

2022年14篇

2021年17篇

目录

目录

分类专栏

网络

1篇

javaWeb

9篇

数学建模

2篇

电路与模拟电子技术基础

1篇

数字逻辑

1篇

java

7篇

c++

3篇

html

1篇

指针

3篇

结构体变量与指针

1篇

结构体数组

数据结构

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

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

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

评价类模型之优劣解距离法(TOPSIS) - 知乎

评价类模型之优劣解距离法(TOPSIS) - 知乎首发于数学建模常用模型切换模式写文章登录/注册评价类模型之优劣解距离法(TOPSIS)SPSSPRO​已认证账号当你得知自己这次期末考试的成绩为 96 分,乍一看觉得分数不错,但是问了一圈之后发现这次的题比较简单,大家普遍都得了高分,那你如何知道自己的成绩在班级中到底是好还是不好呢?按照常理我们通常会直接对成绩进行一个排名然后观察自己的分数在班级的哪个水平,但这种评价方法只能给出一个方向的情况,只要保证排名不变,即使随意修改成绩,评分也不会发生改变。而优劣解距离法(TOPSIS)的原理就是找出班上最高分和最低分,然后计算自己的分数和这两个分数之间的差距,从而得到自己分数好坏的一个客观评价。距离最高分越近,那么评价情况越好,距离最低分越近,那么评价情况越糟。1 优劣解距离法(TOPSIS)简介1.1 概念TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行1.2 适用范围评价对象得分,且各个指标值已知。1.3 模型基本步骤1.31 将原始数据矩阵正向化。也就是将那些极小型指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。1.32 将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。1.33 计算每个方案各自与最优解和最劣解的距离1.34 根据最优解与最劣解计算得分并排序2 案例介绍及操作为了客观地评价各风景地点的性价比,根据风景、人文、拥挤程度、票价等因素对各风景地点进行评估。风景和人文越高越好,这样的指标称为极大型指标(效益型指标)拥挤程度和票价越少越好,这样的指标称为极小型指标(成本型指标)2.1 原始数据同趋势化(一般选择指标正向化)对于极小型指标:\begin{split} & \quad&x'=M-x \end{split}对于中间型指标:x'=\left\{ \begin{split} &2\frac{x-m}{M-m},\qquad &m\le x\le\frac12(M+m)\\ &2\frac{M-x}{M-m},&\frac12(M+m)\le x\le M \end{split} \right.对于区间型指标:x'=\left\{ \begin{split} &1-\frac{a-x}{a-a^*}\qquad &x\lt a \\ &1&a\le x\le b\\ &1-\frac{x-b}{b^*-b}&x\gt b \end{split} \right.将极小型指标拥挤程度和票价正向化后得:2.2 构建标准化矩阵对该元素除以所在列的平方和再开根号:经过标准化后得到:例如A景区的风景该指标,我们使用公式 Z_{11}=\frac{4}{\sqrt{4^{2}+7^{2}+5^{2}+6^{2}+8^{2}}}=0.29 2.3 计算各评价指标与最优及最劣向量之间的差距定义第i个评价对象与最大值的距离:定义第i个评价对象与最小值的距离:其中w_j 为第j个属性的权重(重要程度),指标权重可以使用熵权法或者层次分析法等方法确认。D+和D-值的实际意义:评价对象与最优或最劣解的距离,值越大说明距离越远,研究对象D+值越大,说明与最优解距离越远;D-值越大,说明与最劣解距离越远。最理解的研究对象是D+值越小同时D-值越大。对于上述数据,最大值【0.58,0.68,0.77,0.73】,最小值【0.29,0.14,0,0】,得到如下数据:例如计算A景区的正理想解距离(D+):D_{A}^{+}=\sqrt{(0.58-0.29)^{2}+(0.68-0.34)^{2}+(0.77-0.77)^{2}+(0.73-0.73)^{2}}=0.43 2.4 评价对象与最优方案的接近程度D-值相对越大,则说明该研究对象距离最劣解越远,则研究对象越好;C值越大, 表明评价对象越优由上表可知,景点 A 的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点 A 的性价比较高,距离负理想解相对远,距离正理想解相对近。其次是D、E、C、B。3 案例工具实现3.1 使用工具SPSSPRO—>【综合评价(优劣解距离法(TOPSIS))】3.2 案例操作Step1:新建分析;Step2:上传数据;Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;step4:选择【优劣解距离法(TOPSIS)】;step5:查看对应的数据数据格式,【优劣解距离法(TOPSIS)】要求特征序列为定量变量,分为正向指标变量和负向指标变量,且正向指标变量和负向指标变量的个数之和大于等于两项。step6:设置变量权重(熵权法、不设置权重)。step7:点击【开始分析】,完成全部操作。3.3 分析结果解读以下生成的结果来源于SPSSPRO软件的分析结果导出输出结果 1:指标权重计算 ​熵权法的权重计算结果显示,风景的权重为 25.786%、人文的权重为 22.684%、拥挤程度的权重为 25.737%、票价的权重为 25.793%,其中指标权重最大值为票价(25.793%),最小值为人文(22.684%)。输出结果 2:TOPSIS 评价法计算结果 ​由上表可知,景点 A 的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点 A 的性价比较高,距离负理想解相对远,距离正理想解相对近。输出结果 3:中间值展示 ​正、负理想解(非距离),此两值分别代表评价指标的最大值,或者最小值(即最优解或最劣解),此两值用于计算D+或D-值使用,此两值大小并无太多意义。注:进行 TOPSIS 分析时,各个指标有着权重属性(当然通常情况并没有),那么可对应设置各个指标的权重(输入的权重值可以为相对数字,SPSSPRO 默认都会进行归一化处理让权重加和为 1),在进行 D+和 D-值计算时,SPSSPRO 会对应乘上权重值(如果没有权重则下述公式中权重值为 1),计算公式如下:对比层次分析法:层次分析法的判断矩阵是通过“专家”评分获取的,主观性强,且n不宜过大。优劣解距离法的指标评分则是现成的,且对较大的m与n同样适用。相较于层次分析法两两比较而言,优劣解距离法不易于发生混淆。4 结论Topsis法避免了数据的主观性,不需要目标函数,不用通过检验,而且能够很好的刻画多个影响指标的综合影响力度,并且对于数据分布及样本量、指标多少无严格限制,既适于小样本资料,也适于多评价单元、多指标的大系统,较为灵活、方便。但是该算法需要每个指标的数据,而对应的量化指标选取会有一定难度,同时不确定指标的选取个数为多少适宜,才能够去很好刻画指标的影响力度5 参考文献[1] Scientific Platform Serving for Statistics Professional 2021. SPSSPRO. (Version 1.0.11)[Online Application Software]. Retrieved from https://www.spsspro.com.[2] Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.[3] 刘浩然,汤少梁. 基于 TOPSIS 法与秩和比法的江苏省基本医疗服务均等化水平研究[J]. 中国全科医学,2016,19(7):819-823. DOI:10.3969/j.issn.1007-9572.2016.07.017.编辑于 2022-03-11 11:40spss软件数据模型权重​赞同 95​​9 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录数学建模常用模型通过案例分享快速了解数学建

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优劣距离法_

10-04

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

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

qq_63141702的博客

01-29

1102

数学建模之优劣解距离法

6 条评论

您还未登录,请先

登录

后发表或查看评论

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

最新发布

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

02-12

645

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

指标赋权与评价类方法总结

热门推荐

ZFour_X的博客

08-18

2万+

AHP层次分析、主成分分析、熵权法、组合赋权、Topsis、数据包络法、GRA灰色关联度分析

TOPSIS法(理想解法)

strive的博客

01-26

4109

TOPSIS法(理想解法)又称优劣解距离法

数学建模-Topsis综合评价(评价模型)

会思想的苇草i的博客

07-30

1万+

Topsis综合评价方法是一种常用的数学建模工具,用于多个指标下的决策评价和排序。本文将介绍Topsis方法的基本原理和应用,包括构建评价指标矩阵、计算正负理想解、计算综合评价值等步骤。我们还将通过实例演示如何利用Topsis方法解决实际问题,比如企业选址、产品选择等方面的应用。希望本文能够帮助读者理解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算法.zip

09-02

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

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方法的基本步骤。它被广泛应用于多属性决策分析、项目选择和绩效评估等领域。

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

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

「已注销」

CSDN认证博客专家

CSDN认证企业博客

码龄6年

重庆大学

395

原创

-

周排名

-

总排名

14万+

访问

等级

5452

积分

64

粉丝

561

获赞

39

评论

388

收藏

私信

关注

热门文章

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、付费专栏及课程。

余额充值

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法(优劣解距离法) - jingsupo - 博客园

评价类模型——TOPSIS法(优劣解距离法) - jingsupo - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

朝闻道,夕死可矣。

python数据分析 数据挖掘 机器学习

博客园

首页

新随笔

联系

订阅

管理

评价类模型——TOPSIS法(优劣解距离法)

一、TOPSIS方法    TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息, 其结果能精确地反映各评价方案之间的差距。    基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。 例题1:请你为以下四名同学进行评分,该评分能合理的描述其高数成绩的高低。

 

 

分析:此评价指标只有一项即“成绩”,评价对象为4个。topsis分析方法如下:解:     1.取指标成绩中,最高成绩max : 99        最低成绩min:60         构造计算评分的公式:

 

 

      2.根据评分公式为每一评价对象进行打分,构建如下评分表格、并归一化

 

 

       3.打分完成,接下来可以由评分确定谁的成绩最好,谁的最差。可见,清风的成绩最好,小王的最差例题2:请你为以下四名同学进行评分,该评分能合理的描述其综合评价。

 

 

分析:例题1考虑的评价指标只有一个,例题2转化为两个评价指标,且评价时指标一(成绩)应该越大越好,指标二(与他人争吵次数)应该越小越好。这就引发矛盾,怎么确定评分使得兼顾两种不同取向的指标?    注:成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)。    与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)。 解:      1.将所有的指标转化为极大型指标,即指标正向化。                极小型指标转换为极大型指标的公式:max-x       正向化后得到的表格如下:

 

 

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

 

 

        即每个元素除以其所在列各元素平方和的开方

 

 

          3. 计算评分首先看一下,两个指标的评分公式怎么推导的

 

 

           类比只有一个指标计算得分  

 

 

     即:取各列元素的最大值,组成一个列向量Z+,取各列元素的最小值,组成一个列向量Z-,计算每列元素与最大值组成的列向量Z+的距离D+,与最小值组成的列向量Z-的距离D-,在根据评分公式:D-/(D+ + D-)为每个对象进行打分。根据上面的评分公式,为各评价对象进行打分

 

 

     4.打分完成,进行数据分析       由综合评分可以看出,小王的评分最高,其成绩和与他人争吵次数的综合评价指标中是最好的;清风最差,即使其成绩是最好的,但是在与他人争吵的评分这项指标中,其与他人差别过大,此项导致其综合评分最低,由此可见指标二的评分在整个评分中作用更关键。二、 其他指标正向化方法    前面介绍了评价指标只有一种、以及评价指标有两种,且一种是极小型指标的例子。在例题二中,极小型指标要转化为极大型指标才能参与运算,常见的还有其他两种非极大型指标:中间型和区间型指标。下面介绍其如何转为极大型,即指标正向化。

 

 

1)、中间型指标 ——>极大型指标  

 

 

例如: 水质量评估 PH 值指标正向化,PH值取7时水质最好

 

 

2)、区间型指标——>极大型指标

 

 

例如: 例如人的体温在36摄氏度~37摄氏度这个区间内最好

 

 

可以看出,在区间内的36.6度评分最高为1,距离其越远的评分越低 三、TOPSIS方法总结1、如果有多个指标且不全是极大型指标,则进行指标正向化。2、之后对正向化矩阵进行标准化,目的是消除不同指标量纲的影响。 正向化方法:

 

 

3. 计算得分

 

 

4.归一化评分   即每个分数除以所有分数和 综合例题4:评价下表中A-T共20条河流的水质情况已知:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10-20之间最佳,超过20或低于10均不好。

 

 

解:1、将各项指标正向化PH值(中间型转极大型)、细菌总数(极小型转极大型)、植物性营养物量(区间型转极大型) 2、正向化后的矩阵进行标准化3、进行打分(20个评价对象,4个评价指标)4、分数归一化5、分析评分,最高得分的河流水质最好原文链接:https://blog.csdn.net/qq_36384657/article/details/98188769

作者:jsp

出处:http://www.cnblogs.com/jingsupo/

-------------------------------------------

个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @

2020-03-01 20:55 

jingsupo 

阅读(32176) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 jingsupo

Powered by .NET 8.0 on Kubernetes

欢迎光临

清风数学建模学习笔记(二)TOPSIS法练习题附代码_题目:评价下表中20条河流的水质情况 excel表 高教社杯2005-CSDN博客

>

清风数学建模学习笔记(二)TOPSIS法练习题附代码_题目:评价下表中20条河流的水质情况 excel表 高教社杯2005-CSDN博客

清风数学建模学习笔记(二)TOPSIS法练习题附代码

最新推荐文章于 2022-08-07 08:44:50 发布

王金泉~

最新推荐文章于 2022-08-07 08:44:50 发布

阅读量1.5k

收藏

16

点赞数

2

文章标签:

学习

matlab

算法

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

本文链接:https://blog.csdn.net/weixin_57697258/article/details/125407338

版权

题目:评价下表中20条河流的水质情况。

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

首先TOPSIS方法步骤如下:

1.判断是否需要正向化

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

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

一、判断是否需要正向化

由表格可知,含氧量是越高越好所以不需要处理,其他三个指标都需要正向话处理。

首先把表格数据加载到matlab中并保存为mat文件,加载文件

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,6]: '); %[2,3,4]

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

对调用的函数

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

function [posit_x] = Min2Max(x)

posit_x = max(x) - x;

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

end

function [posit_x] = Mid2Max(x,best)

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

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

end

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

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

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

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

disp(Z)

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

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')

此文章为记录自己学习建模学习笔记,仅供学习。大家一起努力加油❗

优惠劵

王金泉~

关注

关注

2

点赞

16

收藏

觉得还不错?

一键收藏

打赏

知道了

1

评论

清风数学建模学习笔记(二)TOPSIS法练习题附代码

matlab练习TOPSIS方法建模

复制链接

扫一扫

结合熵权法的topsis方法的代码.zip

09-13

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

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

秀岩的博客

01-08

4万+

优劣解距离法

  TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

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

...

1 条评论

您还未登录,请先

登录

后发表或查看评论

TOPSIS法——利用原始数据进行综合评价

Sup星月★然的博客

01-11

9018

数学建模中TOPSIS法也被称为优劣解距离法,本文详细讲解了该方法的原理与应用,在评价类问题中,当有原始数据时用TOPSIS法进行综合评价非常合适,避免了层次分析法主观性太强的影响。

【数学模型】TOPSIS

suic009的博客

08-07

4235

数学建模-TOPSISI

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

jiushiabingbing的博客

07-07

6376

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

前言

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

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

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

一、pandas是什么?

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

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np

import

灰色关联分析运用于综合评价问题

qq_46721967的博客

08-19

3887

对于传统的解决综合评价问题,一般用层次分析法或者Topsis法。在这我们引入一个新的方法来解决综合评价问题,这个方法就是灰色关联分析

接下来看一道例题,边做边学。

题目:评价下表中20条河流的水质情况。

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

1.先对各指标进行正向化。常见的指标类型有:极大型、极小型、中间型。

2.对正向化后的矩阵进行预处理,也就是矩阵中的每一列的元素除以每一列的均值Xij / X(平均)。

学习打卡7.18

weixin_46382984的博客

07-30

1763

TOPSIS法

模型介绍

处理原始数据

首先,对于我们得到的数据先进行统一指标类型

其中最常用的就是将所有的指标转化为极大型称为指标正向化

然后对数据进行标准化处理

进行标准化处理的理由是因为量纲不同

所以需要标准化处理

标准化处理的计算公式

计算得分

当只有一个指标的时候

然后我们可以通过类比,得到

TOPSIS法的步骤

1.将原始矩阵正向化

我们常见的有4种

极小型

中间型

中间型指标:指标值既不要太大也不要太小,取某特定值最好(如水质量评估PH 值)

区间型

区间型指标:指标值落在某个区

数学建模之综合评价模型(层次分析法+Topsis法+熵权法)

热门推荐

qq_53133234的博客

04-24

6万+

以下内容均听自清风老师的建模教程 (老师讲的很好哦,大家可以去听听,结合实例不枯燥!)

以例题进行分析:

小明同学想出去旅游,在查阅了网上的攻略后,他初步选择了苏杭,北戴河,桂林三个地方

请你确定评价指标,形成评价体系为小明同学选择最佳的方案。

第一步:确定模型

当题中出现“确定评价指标,形成评价体系”这类词眼,这就是一道层次分析题。

第二步:建立递接层次结构模型

我们从三个问题入手:

1.我们评价的目标是什么?

答:为...

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

学习笔记

01-10

6327

本文参考的是司守奎,孙兆亮主编的数学建模算法与应用(第二版)

TOPSIS的基本思路就是从各个特征中各自抽取出最优的特征值构成一个虚拟实际不存在的解,称之为正理想解;再从各个特征中各自抽取出最劣的特征值构成另一个实际不存在的解,称之为负理想解。

最后将原有的每个特征组视作实际的解,通过比较实际解与正理想解的欧式距离和负理想解的欧式距离来评判此解的优劣,即一个实际解距离正理想解最近,距离负理想解最远,可认为此解为实际最优解,同时通过这种方法,能够得出每一个实际解的评判值,通过对这个值大小排序,即可完成对事物优

【2021年数学建模国赛C题第一问】基于TOPSIS法评价类模型

QHBfuture的博客

08-04

8693

能够反映供应商的信誉程度,本文将第i家供应商总供货量与接收到的总预定量的比值定义为第i家供应商的到货率。能够反映供应商供货的稳定性,本文将先求取第i家供应商的总供货量,从而计算得出第i家供应商的供货量方差。能够反映企业对于该供应商的偏好程度,本文将第i家供应商每周的订货量累加,得到第i家供应商的总预定量。能够反映供应商生产能力的强弱,本文将第i家供应商的总供货量取均值,得到第i家供应商的平均供货强度。能够反映供应商的总供货能力,本文将第i家供应商每周的供货量累加,得到第i家供应商的总供货量。...

数学建模二:TOPSIS法(优劣解距离法) 附代码详解

Mamo_Z7的博客

10-14

5261

数学建模二:TOPSIS法(优劣解距离法)及熵权法 附代码详解

TOPSIS法(优劣解距离法)用于评价类问题。

层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案。同时层次分析法也难以处理已经存在评价数据的问题。而TOPSIS法(优劣解距离法)则没有这些问题。

TOPSIS法(优劣解距离法)步骤:

1.原始矩阵正向化。

2.正向化矩阵标准化。

3.计算得分并归一化。

例:评价下表中20条河流的水质情况。

注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐2

数学建模(2)topsis分析法

qq_43596553的博客

07-21

5148

TOPSIS法,译为逼近理想解排序法,简称优劣且解距离法(根据学习会发现优解即距离较大的解),是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。

当我们用层次分析法来解决问题,发现行不通或者得出的结果不太精确的时候,就可以考虑用TOPSIS法。比如当评价的决策层太多时,n也会很大,容易使判断矩阵和一致矩阵差距较大(平均随机一致性指标RI表格中n≤15),此时再使用层次分析法,就有些不妥当了。那么当决策层中指标数据已知时,如何使结果更准确呢?

举个例子,

(这里要求的

如何用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+熵权法

qq_60918851的博客

05-25

1万+

​ 前言

本文大部分是对于数学建模清风老师的课程学习总结归纳而来,我的理解可能有错误,大家发现错误可以在评论区批评指正,课程地址:《数学建模清风》

一、模型定义

二、模型思想

三、模型步骤与实现

四、模型扩展

五、模型总结

......

数学建模学习笔记(二十八)评价类:TOPSIS模型

兴趣使然的创作者

02-04

2921

Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。

引入一个实际例子来理解一下:

例题:下表是5位同学身体相关参数,请用TOPSIS法来对同学身体情况进行一个综合的评价

注意到,上面四个指标方向并不相同

需要对不同指标进行正向化:

1、极小

topsis方法讲解.ppt

04-10

综合评价方法,topsis方法详细讲解,专业PPT格式

基于案例学习的TOPSIS方法研究

02-21

基于案例学习的TOPSIS方法研究,王兵,陈晔,多属性排序问题中研究和应用的难点是如何有效获取指标属性的偏好信息,本文提出了一种通过案例学习获取偏好信息的TOPSIS改进方法。

MATLAB熵权法综合评价+代码

Hk_Mayfly的博客

06-12

3715

熵权法

熵值法的主要目的是对指标体系进行赋权

熵越大说明系统越混乱,携带的信息越少,权重越小;熵越小说明系统越有序,携带的信息越多,权重越大。

熵值法是一种客观赋权方法,,借鉴了信息熵思想,它通过计算指标的信息熵,根据指标的相对变化程度对系统整体的影响来决定指标的权重,即根据各个指标标志值的差异程度来进行赋权,从而得出各个指标相应的权重,相对变化程度大的指标具有较大的权重。

收集与整理

...

熵权法综合评价+代码

Hk_Mayfly的博客

06-12

4881

熵权法

熵值法的主要目的是对指标体系进行赋权

熵越大说明系统越混乱,携带的信息越少,权重越小;熵越小说明系统越有序,携带的信息越多,权重越大。

熵值法是一种客观赋权方法,,借鉴了信息熵思想,它通过计算指标的信息熵,根据指标的相对变化程度对系统整体的影响来决定指标的权重,即根据各个指标标志值的差异程度来进行赋权,从而得出各个指标相应的权重,相对变化程度大的指标具有较大的权重。

收集与整...

数学建模清风topsis代码

最新发布

04-29

清风TOPSIS算法的数学模型可以概括为以下几个步骤: 1. 确定评价指标和权重 2. 确定评价对象 3. 构建决策矩阵 4. 标准化决策矩阵 5. 确定正负理想解 6. 计算距离 7. 计算综合评价指数 8. 排序并得出最佳方案...

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

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

王金泉~

CSDN认证博客专家

CSDN认证企业博客

码龄3年

暂无认证

2

原创

116万+

周排名

165万+

总排名

3673

访问

等级

36

积分

10

粉丝

11

获赞

3

评论

53

收藏

私信

关注

热门文章

清风数学建模学习笔记(一)层次分析法

2157

清风数学建模学习笔记(二)TOPSIS法练习题附代码

1515

最新评论

清风数学建模学习笔记(二)TOPSIS法练习题附代码

东青:

请问为什么我在其他文看到需要设置加权向量,但是这篇文章又没有涉及加权的处理呢?

清风数学建模学习笔记(一)层次分析法

王金泉~:

持续更新,下一章总结代码笔记

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

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

清风数学建模学习笔记(一)层次分析法

2022年2篇

目录

目录

最新文章

清风数学建模学习笔记(一)层次分析法

2022年2篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

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

规则

hope_wisdom 发出的红包

打赏作者

王金泉~

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

数学建模笔记——评价类模型之TOPSIS - 知乎

数学建模笔记——评价类模型之TOPSIS - 知乎首发于数学建模笔记切换模式写文章登录/注册数学建模笔记——评价类模型之TOPSIS小白​好的,今天继续研究评价类模型的相关算法。实不相瞒,虽然我才写到第二个算法,但是已经听了几十节课了,清风老师的课程确实蛮不错的,实用性比较强。相关的模型、算法基本上越往后越难,所以珍惜现在比较容易理解的评价类模型吧hhh。在这里要说明一下,小白本白只是一个即将大三的本科生,目前比较容易理解的模型我还能写得完整一些。之后很多模型会涉及较为复杂的数学推导,我可能很难完整地从原理去描述了,只能着重于实际应用方面。请各位谅解啦。ok,我们继续学习评价类模型算法。(注:以下案例均来自我所听的网课)回顾上一篇文章我们介绍了一个简单又实用的评价打分方法——层次分析法。同时我们也提到了,层次分析法有一些缺陷之处。首先就是主观性较强,层次分析法往往是专家用来打分的方法,但建模比赛中没有专家,判断矩阵只能我们自己填;其次,当指标或者方案层数量较多时,我们两两比较得出的判断矩阵和一致矩阵可能会出现较大的差异(想一想你的心理预期,有多符合那个乘法关系),判断矩阵的填写也会比较麻烦(例如要问C_{20}^2次问题);再者,层次分析法往往用于没有相关数据的问题,我们的打分也是按照判断矩阵给出的,如果已经有了数据,再主观打分就不太合适了。看看这个题目给出A—T二十条河流的水质指标及具体数据,请建立合适的模型,给这些河流的水质从高到低排排序。嗯,现在再用层次分析法,是不是就不太合适了……TOPSIS算法TOPSIS算法是解决上述问题的一个比较合适的算法,其全称是Technique\ for\ Order\ Preference\ by\ Similarity\ to\ an\ Ideal\ Solution,通俗的翻译则是“优劣解距离法”。这个翻译可以说是指向了此算法的本质,我们接下来慢慢谈。我们依然从一个简单的问题入手。小明同学考上南大之后,不知不觉就迎来了第一次高数考试,他及其舍友的分数如下。现在我们要根据他们的成绩,给他们进行打分,要求分数可以合理地表达其成绩的高低。hhh可能会有人觉得这个问题比较奇怪,成绩本身就可以作为所谓的分数了,实在不行我们还有GPA,怎么还要打分?因为这只是一个例子,事实上在许多实际问题中,我们只有数据,例如上面水质问题的含氧量,PH值,并没有这样一个分数。再者,实际问题中有很多的指标,其量纲经常不同,但我们需要通过这些数据得出一个综合的分数。因此我们很有必要对数据进行一定的处理,同时找到一个综合打分的方法。所以我们有一个很直接的想法,就是对分数进行归一化处理,例如清风的最后得分就是\frac {99}{89+60+74+99} = 0.307。嗯,这个想法很合理。即一个人的成绩占总成绩的比重,就可以作为这个人在总体中的得分。但是注意了,这里只有一个指标,所以我们可以直接用这个得分作为排序标准。如果还有一些指标,同样进行类似的操作,实际上就相当于我们对数据进行了处理,消去了量纲的影响罢了。结果就是,一番操作过后,留给我们的仍然是一个得分表格,只不过里面是已经被处理过的数据,但还是没能给出排名。这里提出一个小问题,我们把PH值作为衡量水质的一个标准,其范围是0~14,PH=7时最好,所以PH=7时相关指标得分应该最高。这时候就不能像成绩那样,直接求和算比重了吧,那应该怎么处理呢?ok,我们继续。上述的操作只是对数据进行了处理,我们还是需要一个打分的标准。有同学就会想到,赋权,然后打分。这就回到了我们层次分析法的内容。还是那些问题,主观性比较强,指标太多时操作起来不准确且麻烦,对数据的利用不充分等等。这里就可以引入TOPSIS的想法了。事实上我们的目的是对方案给出一个排序,只要数据有了,我们就可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解(我感觉最劣解和理想不搭,就直接用最劣解称呼吧)。而TOPSIS的想法就是,我们通过一定的计算,评价系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。这么说可能不是很清楚,举个例子。如果我们只有一个指标,例如上图中的成绩,那么理想最优解就是99分,注意,不是满分100分,理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据。不然如果是GDP这种上不封顶的指标,理想最优取值岂不是正无穷了……同理,该系统中的最劣解是60。那如果有两个指标呢?例如我们引入一个“与他人争吵的次数”,用来衡量情商,给出相应的数据表格。按照我们的一般想法,与他人争吵的次数应该是越小越好,所以我们可以用向量表达这个系统中的理想最优解,也就是[99,0],取清风的成绩和小王的争吵次数,最劣解就是[60,3],取小王的成绩和清风的争吵次数。现在我们知道了如何取得理想最优解和最劣解,那如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS用下面一个表达式进行衡量:\frac {某一方案 - 最劣解}{理想最优解 - 最劣解}。可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。相信到这里大家对于TOPSIS的基本思想已经差不多理解了,之后就是实际操作的问题了。我们都知道,“方案 - 最劣解”这种东西只是方便理解,确实也是我编出来的,实际中方案根本不能做差。所以我们只能用数据来求出这么一个距离。对于某一个指标的数据,我们可以用\frac {x-min}{max-min}来衡量综合距离。如果只有成绩这一个指标,其计算很简单,例如清风的得分就是\frac {99-60}{99-60}=1,其余人的成绩可以依次给出。对于“争吵次数”这个指标,清风的得分可以是\frac {3-3}{0-3}=0,虽然也能计算,但其分母是个负值,还是不太习惯。那如果对于PH值,7是最优解,0和14哪一个看成最劣解用于计算呢?亦或者如果某个指标处在10~20之间最佳,那最优解最劣解又如何衡量呢?这便是我们遇到的问题。除此之外,由于数据的量纲不同,在实际的计算过程中也会出现这样或者那样的问题,因此我们也有必要对于原数据进行相关的处理。首先,我们解决第一个问题,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。我们可以把指标分为四类,如下表所示。 所谓的正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。对于极小型指标,例如费用,争吵次数,我们可以用\hat x_i=max-x_i将其转化为极大型,如果所有元素都为正数,也可以使用\hat x_i= \frac {1}{x_i}。示例如下。对于中间型指标,如果其最佳数值是x_{best},我们可以取M=max\{|x_i - x_{best}|\},之后按照\hat x_i = 1 - \frac {x_i - x_{best}}{M},示例如下。对于区间型指标,如果其最佳区间是[a,b],我们取M=max\{a-min\{x_i\},max\{x_i\}-b\},之后按照进行转化,示例如下。至此,我们已经将所有的数据都转化为极大型数据了,可以很好地使用\frac {x-min}{max-min}来进行打分。但是为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是\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,里面的数据全部是极大型数据。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即z^+\ =\ [z_1^+,z_2^+,...,z_m^+]=\\ \ [max\{z_{11},z_{21},...,z_{n1}\},max\{z_{12},z_{22},...,z_{n2}\},...,max\{z_{1m},z_{2m},...,z_{nm}\}]。 同理,取每一列中最小的数计算理想最劣解向量,z^-\ =\ [z_1^-,z_2^-,...,z_m^-]=\\\ [min\{z_{11},z_{21},...,z_{n1}\},min\{z_{12},z_{22},...,z_{n2}\},...,min\{z_{1m},z_{2m},...,z_{nm}\}]。(z^+就是z_{max},z^-就是z_{min})现在我们可以计算得分了,之前我们的计算公式是\frac {z_i-z_{min}}{z_{max}-z_{min}} \ 也就是\ \frac {z_i-z_{min}}{(z_{max}-z_i)+(z_i-z_{min})},嗯,我们变形成了·\frac {z与z_{min}的距离}{z与z_{max}的距离\ +\ z与z_{min}的距离}。为什么要这样变形呢?因为大家都是这么用的……好吧,其实我们接下来是使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的。我个人认为这样变形更有利于说明问题,即我们衡量的得分是考虑到某个方案距离最优解和最劣解的一个综合距离。不然的话,所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。那应该还是采用综合衡量的方式会好一点儿吧,你觉得呢?嗯,我就默认大家都同意这个说法了。我们继续计算得分,对于第i个方案z_i,我们计算它与最优解的距离d_i^+\ =\ \sqrt {\sum_{j=1}^m (z_j^+\ - z_{ij})^2 },与最劣解的距离为d_i^-\ =\ \sqrt {\sum_{j=1}^m (z_j^-\ - z_{ij})^2 }。我们记此方案的得分为S_i,则S_i = \frac {d_i^-}{d_i^+\ +d_i^- },也可以理解为我们上文一直在说的综合距离。很明显,0 \le S_i \le 1,且d_i^+越小,也就是该方案与最优解的距离越小时,S_i越大;d_i^-越小,也就是该方案与最劣解的距离越小时,S_i越小。这种计算方式同时考虑了该方案与最优解和最劣解的距离。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案好一点儿哪个方案次一点儿了。还可以按照这个得分再进行一次归一化,不过我觉得没什么必要了。嗯,基本部分讲完啦。总结总结一下。使用TOPSIS算法的一个先决条件就是要有数据,最好全部是定量数据,如果是定性数据或者定序数据,但能够分别优劣,也可以按照定量数据来处理。之后就开始操作: a.将原始数据矩阵正向化。 也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。b.将正向化后的矩阵标准化。 也就是通过标准化,消除量纲的影响。c.计算得分并排序 。公式就是S_i = \frac {d_i^-}{d_i^+\ +d_i^- }。这次好像还没有给一个完整的解题过程,嗯,我就把PPT里的小案例放在这里供大家参考。 这是原始数据矩阵 我们对其进行正向化 我们再对其进行标准化 最后计算得分给出排名 嗯,这个例子告诉我们,成绩很重要,但是情商更重要hhh。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价hhh。其实我们可以看到TOPSIS的一个特点,即它使用理想最优解和最劣解作为评判方案的依据时,实际上就是在方案的系统内部进行评价,这样的评价手段也可以更好的表达出系统中方案与方案之间的差距,也比较充分地利用了数据所包含的信息。(我随便编的,别信)拓展TOPSIS是不是又简单又实用呢?其实我们还可以进行一点点儿的拓展,不想打字了,看下图。我们可以看到,在计算距离时,我们其实默认每个指标的权重是相同的,但实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。如图。带上了权重之后,不同的指标发挥的影响就不一样了,带权重的评价也往往是实际生活中很常见的一种评价方式。那在建模中如何确定权重呢?如果是日常生活向的评价,我们可以使用层次分析法,结合常识给出。如果是比较专业的评价指标,我们可以查询资料,看看别人怎么研究的。还有一种方法叫熵权法,也是这套课程的内容,不过限于篇幅,就留到之后再提吧。局限性TOPSIS法有什么局限性呢?其实也是有的,例如没有数据你就行不通了吧hhh。不过在实际建模中,倒也不必考虑太多的局限性,知道每个模型的适用条件就好了。到时候见招拆招,增删查改,尽力而为就好了。一个没有参加过比赛的小白说这些是不是有点儿不妥……不管了,反正就是碰到什么题用对应的模型,实在不行就试着综合综合,总能有个结果的hhh嗯,就这样,拜拜~作业我把PPT里的题目也放在这里,应该没问题。哔哩哔哩上有作业讲解的。 (如果文章有什么错误欢迎指出毕竟我就是个沙雕的小白orz)这两天知乎给我推送了一些数学建模相关的问答,其中一个是数学建模相关书籍。我把高赞回答推荐的书的电子版找了一下,如果需要的话,在微信公众号“我是陈小白”后台回复“数学建模书籍”即可。编辑于 2020-07-19 08:08数学建模​赞同 686​​52 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录数学建模笔记一边学习一

TOPSIS法—例题与原理讲解_哔哩哔哩_bilibili

TOPSIS法—例题与原理讲解_哔哩哔哩_bilibili 首页番剧直播游戏中心会员购漫画赛事投稿【全面干货】北海:从零开始学数学建模 | 建模与算法、例题、MATLAB编程(小白数模竞赛国赛美赛必看)

25.8万

982

2022-08-17 11:31:05

未经作者授权,禁止转载508830931.5万3871关注微信公众号:数学建模BOOM,

1、在公众号回复“课程”,查看全套的课程,包含模型与算法精讲+课件+MATLAB求解+代码文件;

2、在公众号回复“群”,获取交流群号,b站公开课部分的pdf课件在群文件。

也可直接复制链接到浏览器查看全套的课程:https://wyp.xet.tech/s/1cOcb0老师来解惑知识校园学习知识课程学习MATLAB考试数模国赛数模美赛数学建模校园学习

数学建模BOOM

发消息

关注微信公众号:数学建模BOOM,回复“群”,获取交流群号。数模资料、视频课件都在交流群的群文件内。

关注 14.7万

实时桌宠互动,其乐无穷!视频选集(6/38)自动连播【胎教级入门数学建模】持续更新!可能是B站大学最良心的数学建模课程了,包含全套数学模型、算法、编程、写作、MATLAB教学视频大师兄的知识库

26.4万

1679

【强烈推荐】北海:数模建模算法+MATLAB入门+论文写作+数学模型与算法(推荐数模美赛国赛小白零基础必看教程)数学建模BOOM

176.7万

1.2万

【教程】MATLAB从入门到秃头古德谓尔

53.1万

2564

巅峰之作!【MATLAB入门到秃头】MATLAB 教程|MATLAB 机器学习|MATLAB 图像处理|MATLAB 绘图|MATLAB 安装|深度学习人工智能前沿技术

26.6万

131

1.1包饺子中的数学是回锅肉呀

8097

5

数学建模之优化模型似水流年Victor

9262

15

《Matlab编程》Taylim考研数学

16.2万

1178

数学建模 - 浙江大学(国家精品课)大学自修室

2.0万

7

数模(数学建模/数学模型)——厦门大学zstar_

6140

4

美赛建模第三天,队友联系不上,谁懂天上的星馨

3.0万

81

数学建模之数据拟合(3):最小二乘法遇见数学

11.4万

634

模拟退火算法原理+例题ow_NPUdahunzi

2.6万

35

【数学建模美赛保奖班教程】基础、模型、编程、论文写作、经验分享和赛题解析等课程数学建模老哥

29.1万

4021

Python 在数学建模中的应用(已完结)Oizys_7553

10.1万

331

【数学建模算法与应用】全书大概讲解小甲鱼oVo

2.8万

28

第1讲 Matlab软件入门数学建模老师

6.1万

82

清华大学(从入门到精通)数学建模视频83讲Leoford

4.2万

142

一周讲完(MATLAB)全套教程,整整300集,允许白嫖,学完即可就业!(学习.入门到精通.绘图.基础.数学建模.系统仿真.程序设计.MATLAB教程)这个老人会Magic

4.1万

54

数学建模例题分析勇勇不放弃

961

0

数学模型(研究生)PHIL2968

6435

2

展开

小窗

客服

顶部

赛事库 课堂 2021

数学建模学习笔记(二十八)评价类:TOPSIS模型-腾讯云开发者社区-腾讯云

学习笔记(二十八)评价类:TOPSIS模型-腾讯云开发者社区-腾讯云zstar数学建模学习笔记(二十八)评价类:TOPSIS模型关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网zstar首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >数学建模学习笔记(二十八)评价类:TOPSIS模型数学建模学习笔记(二十八)评价类:TOPSIS模型zstar关注发布于 2022-06-14 10:05:269870发布于 2022-06-14 10:05:26举报文章被收录于专栏:往期博文往期博文Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。

在这里插入图片描述

引入一个实际例子来理解一下:

例题:下表是5位同学身体相关参数,请用TOPSIS法来对同学身体情况进行一个综合的评价

在这里插入图片描述

注意到,上面四个指标方向并不相同

在这里插入图片描述

需要对不同指标进行正向化:

1、极小型指标

在这里插入图片描述

2、中间型指标

在这里插入图片描述

3、区间型指标

在这里插入图片描述

因为不同特征的量纲不同,之后需要对指标进行标准化最优、最劣方案集的确定:1、一方面看是否该决策因素本身有限定值,要符合现实意义2、如果没有或者难以找到,就在所有评价集中找到MAX与MIN值计算距离:

1、正向距离公式:

在这里插入图片描述

2、负向距离公式:

在这里插入图片描述

3、评价指标值:

在这里插入图片描述

以小明为例计算评价指标值:

在这里插入图片描述在这里插入图片描述

进一步拓展:

上例中的计算,是默认评价因素之间重要程度相同,往往实际中并非如此,各个因素之间有重要程度之别。如何去给每个因素设置重要程度呢?

在这里插入图片描述

权重通过AHP或熵权法确定

(本专栏第三篇介绍过EXCEL的熵权法)matlab:熵权法结合TOPSIS%基于熵权法对于TOPSIS的修正

clear;clc;

load X.mat;

%获取行数列数

r = size(X,1);

c = size(X,2);

%首先,把我们的原始指标矩阵正向化

%第二列中间型--->极大型

middle = input("请输入最佳的中间值:");

M = max(abs(X(:,2)-middle));

for i=1:r

X(i,2) = 1-abs(X(i,2)-middle)/M;

end

%第三列极小型--->极大型

max_value = max(X(:,3));

X(:,3) = abs(X(:,3)-max_value);

%第四列区间型--->极大型

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

b = input("请输入区间的下界:");

M = max(a-min(X(:,4)),max(X(:,4))-b);

for i=1:r

if (X(i,4)

X(i,4) = 1-(a-X(i,4))/M;

elseif (X(i,4)<=b&&X(i,4)>=a)

X(i,4) = 1;

else

X(i,4) = 1-(X(i,4)-b)/M;

end

end

disp("正向化后的矩阵为:");

disp(X);

%然后对正向化后的矩阵进行熵权法赋权重

tempX = X; %代替X进行计算的辅助变量,避免X受到影响而发生改变

%测试:tempX = [1,2,3;-1,0,-6;5,-3,2];

%标准化矩阵,消除负数项,并且把数值控制在0-1区间

min = min(tempX);

max = max(tempX);

min = repmat(min,size(tempX,1),1);

max = repmat(max,size(tempX,1),1);

tempX = (tempX-min)./(max-min);

%求出矩阵的概率矩阵,即能取到该值的概率

sumX = repmat(sum(tempX),size(tempX,1),1);

pX = tempX./sumX;

%求出信息熵矩阵,信息熵越大,能获得的信息就越少

temp = pX.*mylog(pX);

n = size(tempX,1);

sum1 = sum(temp);

eX = sum1.*(-1/log(n));

%求出信息效用值

dX = 1-eX;

%求出每个指标的熵权

wX = dX./(sum(dX));

%打印输出

disp("每个指标依次的熵权为:");

disp(wX);复制熵值法: function [W] = Entropy_Method(Z)

% 计算有n个样本,m个指标的样本所对应的的熵权

% 输入

% Z : n*m的矩阵(要经过正向化和标准化处理,且元素中不存在负数)

% 输出

% W:熵权,m*1的行向量

%% 计算熵权

[n,m] = size(Z);

D = zeros(1,m); % 初始化保存信息效用值的行向量

for i = 1:m

x = Z(:,i); % 取出第i列的指标

p = x / sum(x);

% 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以这里我们自己定义一个函数

e = -sum(p .* mylog(p)) / log(n); % 计算信息熵

D(i) = 1- e; % 计算信息效用值

end

W = D ./ sum(D); % 将信息效用值归一化,得到权重

end复制本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看matlabelmaxminsimilarity本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!matlabelmaxminsimilarity评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

topsis法例题详解 - 百度文库

topsis法例题详解 - 百度文库

新建

上传

最近

收藏

下载

新客立减

登录

TOPSIS法是一种常用的多属性决策分析方法,下面是详细的例子: 

首先,我们假设有4个目标(A、B、C、D)和3个评价指标(指标1、指标2、指标3)。每个目标在各项指标上的表现如下: 

• 目标A:指标1(0.5),指标2(0.6),指标3(0.4) 

• 目标B:指标1(0.4),指标2(0.5),指标3(0.7) • 目标C:指标1(0.6),指标2(0.4),指标3(0.5) • 

目标D:指标1(0.7),指标2(0.3),指标3(0.6) 

接下来,我们按照TOPSIS法的步骤进行分析: 构造初始矩阵A: 

目标 指标1 指标2 指标3 A 0.5 0.6 0.4 B 0.4 0.5 0.7 C 0.6 0.4 0.5 D 

0.7 

0.3 

0.6 

归一化处理:为了消除不同指标量纲的影响,我们需要对初始矩阵进行归一化处理。归一化处理的公式为:aij = xij / sqrt(sum(xij^2)),其中xij表示第i个目标的第j项指标值。归一化后的矩阵如下: 

目标 指标1 指标2 

指标3 

A 0.4767 0.5547 0.4472 B 0.4165 0.4698 0.6794 C 0.5591 0.4124 0.5292 D 

0.6428 0.3299 0.6325 

计算加权标准化矩阵Z:在TOPSIS法中,我们需要考虑不同指标的权重。假设指标1、指标2和指标3的权重分别为w1=0.3、w2=0.4和w3=0.3。加权标准化矩阵Z的计算公式为:zij = wij * aij,其中wij表示第j个指标的权重,aij表示归一化后的矩阵元素。计算得到的加权标准化矩阵如下: 

目标 指标1 指标2 

指标3 

A 0.1430 0.2219 0.1342 B 

0.1249 0.1879 0.2038 

评价类模型之优劣解距离法(TOPSIS) - 知乎

评价类模型之优劣解距离法(TOPSIS) - 知乎首发于数学建模常用模型切换模式写文章登录/注册评价类模型之优劣解距离法(TOPSIS)SPSSPRO​已认证账号当你得知自己这次期末考试的成绩为 96 分,乍一看觉得分数不错,但是问了一圈之后发现这次的题比较简单,大家普遍都得了高分,那你如何知道自己的成绩在班级中到底是好还是不好呢?按照常理我们通常会直接对成绩进行一个排名然后观察自己的分数在班级的哪个水平,但这种评价方法只能给出一个方向的情况,只要保证排名不变,即使随意修改成绩,评分也不会发生改变。而优劣解距离法(TOPSIS)的原理就是找出班上最高分和最低分,然后计算自己的分数和这两个分数之间的差距,从而得到自己分数好坏的一个客观评价。距离最高分越近,那么评价情况越好,距离最低分越近,那么评价情况越糟。1 优劣解距离法(TOPSIS)简介1.1 概念TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行1.2 适用范围评价对象得分,且各个指标值已知。1.3 模型基本步骤1.31 将原始数据矩阵正向化。也就是将那些极小型指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。1.32 将正向化后的矩阵标准化。也就是通过标准化消除量纲的影响。1.33 计算每个方案各自与最优解和最劣解的距离1.34 根据最优解与最劣解计算得分并排序2 案例介绍及操作为了客观地评价各风景地点的性价比,根据风景、人文、拥挤程度、票价等因素对各风景地点进行评估。风景和人文越高越好,这样的指标称为极大型指标(效益型指标)拥挤程度和票价越少越好,这样的指标称为极小型指标(成本型指标)2.1 原始数据同趋势化(一般选择指标正向化)对于极小型指标:\begin{split} & \quad&x'=M-x \end{split}对于中间型指标:x'=\left\{ \begin{split} &2\frac{x-m}{M-m},\qquad &m\le x\le\frac12(M+m)\\ &2\frac{M-x}{M-m},&\frac12(M+m)\le x\le M \end{split} \right.对于区间型指标:x'=\left\{ \begin{split} &1-\frac{a-x}{a-a^*}\qquad &x\lt a \\ &1&a\le x\le b\\ &1-\frac{x-b}{b^*-b}&x\gt b \end{split} \right.将极小型指标拥挤程度和票价正向化后得:2.2 构建标准化矩阵对该元素除以所在列的平方和再开根号:经过标准化后得到:例如A景区的风景该指标,我们使用公式 Z_{11}=\frac{4}{\sqrt{4^{2}+7^{2}+5^{2}+6^{2}+8^{2}}}=0.29 2.3 计算各评价指标与最优及最劣向量之间的差距定义第i个评价对象与最大值的距离:定义第i个评价对象与最小值的距离:其中w_j 为第j个属性的权重(重要程度),指标权重可以使用熵权法或者层次分析法等方法确认。D+和D-值的实际意义:评价对象与最优或最劣解的距离,值越大说明距离越远,研究对象D+值越大,说明与最优解距离越远;D-值越大,说明与最劣解距离越远。最理解的研究对象是D+值越小同时D-值越大。对于上述数据,最大值【0.58,0.68,0.77,0.73】,最小值【0.29,0.14,0,0】,得到如下数据:例如计算A景区的正理想解距离(D+):D_{A}^{+}=\sqrt{(0.58-0.29)^{2}+(0.68-0.34)^{2}+(0.77-0.77)^{2}+(0.73-0.73)^{2}}=0.43 2.4 评价对象与最优方案的接近程度D-值相对越大,则说明该研究对象距离最劣解越远,则研究对象越好;C值越大, 表明评价对象越优由上表可知,景点 A 的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点 A 的性价比较高,距离负理想解相对远,距离正理想解相对近。其次是D、E、C、B。3 案例工具实现3.1 使用工具SPSSPRO—>【综合评价(优劣解距离法(TOPSIS))】3.2 案例操作Step1:新建分析;Step2:上传数据;Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;step4:选择【优劣解距离法(TOPSIS)】;step5:查看对应的数据数据格式,【优劣解距离法(TOPSIS)】要求特征序列为定量变量,分为正向指标变量和负向指标变量,且正向指标变量和负向指标变量的个数之和大于等于两项。step6:设置变量权重(熵权法、不设置权重)。step7:点击【开始分析】,完成全部操作。3.3 分析结果解读以下生成的结果来源于SPSSPRO软件的分析结果导出输出结果 1:指标权重计算 ​熵权法的权重计算结果显示,风景的权重为 25.786%、人文的权重为 22.684%、拥挤程度的权重为 25.737%、票价的权重为 25.793%,其中指标权重最大值为票价(25.793%),最小值为人文(22.684%)。输出结果 2:TOPSIS 评价法计算结果 ​由上表可知,景点 A 的综合评价最高,说明综合评估风景、人文、拥挤程度、票价后,景点 A 的性价比较高,距离负理想解相对远,距离正理想解相对近。输出结果 3:中间值展示 ​正、负理想解(非距离),此两值分别代表评价指标的最大值,或者最小值(即最优解或最劣解),此两值用于计算D+或D-值使用,此两值大小并无太多意义。注:进行 TOPSIS 分析时,各个指标有着权重属性(当然通常情况并没有),那么可对应设置各个指标的权重(输入的权重值可以为相对数字,SPSSPRO 默认都会进行归一化处理让权重加和为 1),在进行 D+和 D-值计算时,SPSSPRO 会对应乘上权重值(如果没有权重则下述公式中权重值为 1),计算公式如下:对比层次分析法:层次分析法的判断矩阵是通过“专家”评分获取的,主观性强,且n不宜过大。优劣解距离法的指标评分则是现成的,且对较大的m与n同样适用。相较于层次分析法两两比较而言,优劣解距离法不易于发生混淆。4 结论Topsis法避免了数据的主观性,不需要目标函数,不用通过检验,而且能够很好的刻画多个影响指标的综合影响力度,并且对于数据分布及样本量、指标多少无严格限制,既适于小样本资料,也适于多评价单元、多指标的大系统,较为灵活、方便。但是该算法需要每个指标的数据,而对应的量化指标选取会有一定难度,同时不确定指标的选取个数为多少适宜,才能够去很好刻画指标的影响力度5 参考文献[1] Scientific Platform Serving for Statistics Professional 2021. SPSSPRO. (Version 1.0.11)[Online Application Software]. Retrieved from https://www.spsspro.com.[2] Shih H S, Shyur H J, Lee E S. An extension of TOPSIS for group decision making[J]. Mathematical & Computer Modelling, 2007, 45(7):801-813.[3] 刘浩然,汤少梁. 基于 TOPSIS 法与秩和比法的江苏省基本医疗服务均等化水平研究[J]. 中国全科医学,2016,19(7):819-823. DOI:10.3969/j.issn.1007-9572.2016.07.017.编辑于 2022-03-11 11:40spss软件数据模型权重​赞同 95​​9 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录数学建模常用模型通过案例分享快速了解数学建

数学建模笔记——评价类模型之TOPSIS - 知乎

数学建模笔记——评价类模型之TOPSIS - 知乎首发于数学建模笔记切换模式写文章登录/注册数学建模笔记——评价类模型之TOPSIS小白​好的,今天继续研究评价类模型的相关算法。实不相瞒,虽然我才写到第二个算法,但是已经听了几十节课了,清风老师的课程确实蛮不错的,实用性比较强。相关的模型、算法基本上越往后越难,所以珍惜现在比较容易理解的评价类模型吧hhh。在这里要说明一下,小白本白只是一个即将大三的本科生,目前比较容易理解的模型我还能写得完整一些。之后很多模型会涉及较为复杂的数学推导,我可能很难完整地从原理去描述了,只能着重于实际应用方面。请各位谅解啦。ok,我们继续学习评价类模型算法。(注:以下案例均来自我所听的网课)回顾上一篇文章我们介绍了一个简单又实用的评价打分方法——层次分析法。同时我们也提到了,层次分析法有一些缺陷之处。首先就是主观性较强,层次分析法往往是专家用来打分的方法,但建模比赛中没有专家,判断矩阵只能我们自己填;其次,当指标或者方案层数量较多时,我们两两比较得出的判断矩阵和一致矩阵可能会出现较大的差异(想一想你的心理预期,有多符合那个乘法关系),判断矩阵的填写也会比较麻烦(例如要问C_{20}^2次问题);再者,层次分析法往往用于没有相关数据的问题,我们的打分也是按照判断矩阵给出的,如果已经有了数据,再主观打分就不太合适了。看看这个题目给出A—T二十条河流的水质指标及具体数据,请建立合适的模型,给这些河流的水质从高到低排排序。嗯,现在再用层次分析法,是不是就不太合适了……TOPSIS算法TOPSIS算法是解决上述问题的一个比较合适的算法,其全称是Technique\ for\ Order\ Preference\ by\ Similarity\ to\ an\ Ideal\ Solution,通俗的翻译则是“优劣解距离法”。这个翻译可以说是指向了此算法的本质,我们接下来慢慢谈。我们依然从一个简单的问题入手。小明同学考上南大之后,不知不觉就迎来了第一次高数考试,他及其舍友的分数如下。现在我们要根据他们的成绩,给他们进行打分,要求分数可以合理地表达其成绩的高低。hhh可能会有人觉得这个问题比较奇怪,成绩本身就可以作为所谓的分数了,实在不行我们还有GPA,怎么还要打分?因为这只是一个例子,事实上在许多实际问题中,我们只有数据,例如上面水质问题的含氧量,PH值,并没有这样一个分数。再者,实际问题中有很多的指标,其量纲经常不同,但我们需要通过这些数据得出一个综合的分数。因此我们很有必要对数据进行一定的处理,同时找到一个综合打分的方法。所以我们有一个很直接的想法,就是对分数进行归一化处理,例如清风的最后得分就是\frac {99}{89+60+74+99} = 0.307。嗯,这个想法很合理。即一个人的成绩占总成绩的比重,就可以作为这个人在总体中的得分。但是注意了,这里只有一个指标,所以我们可以直接用这个得分作为排序标准。如果还有一些指标,同样进行类似的操作,实际上就相当于我们对数据进行了处理,消去了量纲的影响罢了。结果就是,一番操作过后,留给我们的仍然是一个得分表格,只不过里面是已经被处理过的数据,但还是没能给出排名。这里提出一个小问题,我们把PH值作为衡量水质的一个标准,其范围是0~14,PH=7时最好,所以PH=7时相关指标得分应该最高。这时候就不能像成绩那样,直接求和算比重了吧,那应该怎么处理呢?ok,我们继续。上述的操作只是对数据进行了处理,我们还是需要一个打分的标准。有同学就会想到,赋权,然后打分。这就回到了我们层次分析法的内容。还是那些问题,主观性比较强,指标太多时操作起来不准确且麻烦,对数据的利用不充分等等。这里就可以引入TOPSIS的想法了。事实上我们的目的是对方案给出一个排序,只要数据有了,我们就可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解(我感觉最劣解和理想不搭,就直接用最劣解称呼吧)。而TOPSIS的想法就是,我们通过一定的计算,评价系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。这么说可能不是很清楚,举个例子。如果我们只有一个指标,例如上图中的成绩,那么理想最优解就是99分,注意,不是满分100分,理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据。不然如果是GDP这种上不封顶的指标,理想最优取值岂不是正无穷了……同理,该系统中的最劣解是60。那如果有两个指标呢?例如我们引入一个“与他人争吵的次数”,用来衡量情商,给出相应的数据表格。按照我们的一般想法,与他人争吵的次数应该是越小越好,所以我们可以用向量表达这个系统中的理想最优解,也就是[99,0],取清风的成绩和小王的争吵次数,最劣解就是[60,3],取小王的成绩和清风的争吵次数。现在我们知道了如何取得理想最优解和最劣解,那如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS用下面一个表达式进行衡量:\frac {某一方案 - 最劣解}{理想最优解 - 最劣解}。可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。相信到这里大家对于TOPSIS的基本思想已经差不多理解了,之后就是实际操作的问题了。我们都知道,“方案 - 最劣解”这种东西只是方便理解,确实也是我编出来的,实际中方案根本不能做差。所以我们只能用数据来求出这么一个距离。对于某一个指标的数据,我们可以用\frac {x-min}{max-min}来衡量综合距离。如果只有成绩这一个指标,其计算很简单,例如清风的得分就是\frac {99-60}{99-60}=1,其余人的成绩可以依次给出。对于“争吵次数”这个指标,清风的得分可以是\frac {3-3}{0-3}=0,虽然也能计算,但其分母是个负值,还是不太习惯。那如果对于PH值,7是最优解,0和14哪一个看成最劣解用于计算呢?亦或者如果某个指标处在10~20之间最佳,那最优解最劣解又如何衡量呢?这便是我们遇到的问题。除此之外,由于数据的量纲不同,在实际的计算过程中也会出现这样或者那样的问题,因此我们也有必要对于原数据进行相关的处理。首先,我们解决第一个问题,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。我们可以把指标分为四类,如下表所示。 所谓的正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。对于极小型指标,例如费用,争吵次数,我们可以用\hat x_i=max-x_i将其转化为极大型,如果所有元素都为正数,也可以使用\hat x_i= \frac {1}{x_i}。示例如下。对于中间型指标,如果其最佳数值是x_{best},我们可以取M=max\{|x_i - x_{best}|\},之后按照\hat x_i = 1 - \frac {x_i - x_{best}}{M},示例如下。对于区间型指标,如果其最佳区间是[a,b],我们取M=max\{a-min\{x_i\},max\{x_i\}-b\},之后按照进行转化,示例如下。至此,我们已经将所有的数据都转化为极大型数据了,可以很好地使用\frac {x-min}{max-min}来进行打分。但是为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是\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,里面的数据全部是极大型数据。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即z^+\ =\ [z_1^+,z_2^+,...,z_m^+]=\\ \ [max\{z_{11},z_{21},...,z_{n1}\},max\{z_{12},z_{22},...,z_{n2}\},...,max\{z_{1m},z_{2m},...,z_{nm}\}]。 同理,取每一列中最小的数计算理想最劣解向量,z^-\ =\ [z_1^-,z_2^-,...,z_m^-]=\\\ [min\{z_{11},z_{21},...,z_{n1}\},min\{z_{12},z_{22},...,z_{n2}\},...,min\{z_{1m},z_{2m},...,z_{nm}\}]。(z^+就是z_{max},z^-就是z_{min})现在我们可以计算得分了,之前我们的计算公式是\frac {z_i-z_{min}}{z_{max}-z_{min}} \ 也就是\ \frac {z_i-z_{min}}{(z_{max}-z_i)+(z_i-z_{min})},嗯,我们变形成了·\frac {z与z_{min}的距离}{z与z_{max}的距离\ +\ z与z_{min}的距离}。为什么要这样变形呢?因为大家都是这么用的……好吧,其实我们接下来是使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的。我个人认为这样变形更有利于说明问题,即我们衡量的得分是考虑到某个方案距离最优解和最劣解的一个综合距离。不然的话,所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。那应该还是采用综合衡量的方式会好一点儿吧,你觉得呢?嗯,我就默认大家都同意这个说法了。我们继续计算得分,对于第i个方案z_i,我们计算它与最优解的距离d_i^+\ =\ \sqrt {\sum_{j=1}^m (z_j^+\ - z_{ij})^2 },与最劣解的距离为d_i^-\ =\ \sqrt {\sum_{j=1}^m (z_j^-\ - z_{ij})^2 }。我们记此方案的得分为S_i,则S_i = \frac {d_i^-}{d_i^+\ +d_i^- },也可以理解为我们上文一直在说的综合距离。很明显,0 \le S_i \le 1,且d_i^+越小,也就是该方案与最优解的距离越小时,S_i越大;d_i^-越小,也就是该方案与最劣解的距离越小时,S_i越小。这种计算方式同时考虑了该方案与最优解和最劣解的距离。这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案好一点儿哪个方案次一点儿了。还可以按照这个得分再进行一次归一化,不过我觉得没什么必要了。嗯,基本部分讲完啦。总结总结一下。使用TOPSIS算法的一个先决条件就是要有数据,最好全部是定量数据,如果是定性数据或者定序数据,但能够分别优劣,也可以按照定量数据来处理。之后就开始操作: a.将原始数据矩阵正向化。 也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。b.将正向化后的矩阵标准化。 也就是通过标准化,消除量纲的影响。c.计算得分并排序 。公式就是S_i = \frac {d_i^-}{d_i^+\ +d_i^- }。这次好像还没有给一个完整的解题过程,嗯,我就把PPT里的小案例放在这里供大家参考。 这是原始数据矩阵 我们对其进行正向化 我们再对其进行标准化 最后计算得分给出排名 嗯,这个例子告诉我们,成绩很重要,但是情商更重要hhh。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价hhh。其实我们可以看到TOPSIS的一个特点,即它使用理想最优解和最劣解作为评判方案的依据时,实际上就是在方案的系统内部进行评价,这样的评价手段也可以更好的表达出系统中方案与方案之间的差距,也比较充分地利用了数据所包含的信息。(我随便编的,别信)拓展TOPSIS是不是又简单又实用呢?其实我们还可以进行一点点儿的拓展,不想打字了,看下图。我们可以看到,在计算距离时,我们其实默认每个指标的权重是相同的,但实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。如图。带上了权重之后,不同的指标发挥的影响就不一样了,带权重的评价也往往是实际生活中很常见的一种评价方式。那在建模中如何确定权重呢?如果是日常生活向的评价,我们可以使用层次分析法,结合常识给出。如果是比较专业的评价指标,我们可以查询资料,看看别人怎么研究的。还有一种方法叫熵权法,也是这套课程的内容,不过限于篇幅,就留到之后再提吧。局限性TOPSIS法有什么局限性呢?其实也是有的,例如没有数据你就行不通了吧hhh。不过在实际建模中,倒也不必考虑太多的局限性,知道每个模型的适用条件就好了。到时候见招拆招,增删查改,尽力而为就好了。一个没有参加过比赛的小白说这些是不是有点儿不妥……不管了,反正就是碰到什么题用对应的模型,实在不行就试着综合综合,总能有个结果的hhh嗯,就这样,拜拜~作业我把PPT里的题目也放在这里,应该没问题。哔哩哔哩上有作业讲解的。 (如果文章有什么错误欢迎指出毕竟我就是个沙雕的小白orz)这两天知乎给我推送了一些数学建模相关的问答,其中一个是数学建模相关书籍。我把高赞回答推荐的书的电子版找了一下,如果需要的话,在微信公众号“我是陈小白”后台回复“数学建模书籍”即可。编辑于 2020-07-19 08:08数学建模​赞同 686​​52 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录数学建模笔记一边学习一

评价类模型——TOPSIS法(优劣解距离法) - jingsupo - 博客园

评价类模型——TOPSIS法(优劣解距离法) - jingsupo - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

朝闻道,夕死可矣。

python数据分析 数据挖掘 机器学习

博客园

首页

新随笔

联系

订阅

管理

评价类模型——TOPSIS法(优劣解距离法)

一、TOPSIS方法    TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息, 其结果能精确地反映各评价方案之间的差距。    基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。 例题1:请你为以下四名同学进行评分,该评分能合理的描述其高数成绩的高低。

 

 

分析:此评价指标只有一项即“成绩”,评价对象为4个。topsis分析方法如下:解:     1.取指标成绩中,最高成绩max : 99        最低成绩min:60         构造计算评分的公式:

 

 

      2.根据评分公式为每一评价对象进行打分,构建如下评分表格、并归一化

 

 

       3.打分完成,接下来可以由评分确定谁的成绩最好,谁的最差。可见,清风的成绩最好,小王的最差例题2:请你为以下四名同学进行评分,该评分能合理的描述其综合评价。

 

 

分析:例题1考虑的评价指标只有一个,例题2转化为两个评价指标,且评价时指标一(成绩)应该越大越好,指标二(与他人争吵次数)应该越小越好。这就引发矛盾,怎么确定评分使得兼顾两种不同取向的指标?    注:成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)。    与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)。 解:      1.将所有的指标转化为极大型指标,即指标正向化。                极小型指标转换为极大型指标的公式:max-x       正向化后得到的表格如下:

 

 

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

 

 

        即每个元素除以其所在列各元素平方和的开方

 

 

          3. 计算评分首先看一下,两个指标的评分公式怎么推导的

 

 

           类比只有一个指标计算得分  

 

 

     即:取各列元素的最大值,组成一个列向量Z+,取各列元素的最小值,组成一个列向量Z-,计算每列元素与最大值组成的列向量Z+的距离D+,与最小值组成的列向量Z-的距离D-,在根据评分公式:D-/(D+ + D-)为每个对象进行打分。根据上面的评分公式,为各评价对象进行打分

 

 

     4.打分完成,进行数据分析       由综合评分可以看出,小王的评分最高,其成绩和与他人争吵次数的综合评价指标中是最好的;清风最差,即使其成绩是最好的,但是在与他人争吵的评分这项指标中,其与他人差别过大,此项导致其综合评分最低,由此可见指标二的评分在整个评分中作用更关键。二、 其他指标正向化方法    前面介绍了评价指标只有一种、以及评价指标有两种,且一种是极小型指标的例子。在例题二中,极小型指标要转化为极大型指标才能参与运算,常见的还有其他两种非极大型指标:中间型和区间型指标。下面介绍其如何转为极大型,即指标正向化。

 

 

1)、中间型指标 ——>极大型指标  

 

 

例如: 水质量评估 PH 值指标正向化,PH值取7时水质最好

 

 

2)、区间型指标——>极大型指标

 

 

例如: 例如人的体温在36摄氏度~37摄氏度这个区间内最好

 

 

可以看出,在区间内的36.6度评分最高为1,距离其越远的评分越低 三、TOPSIS方法总结1、如果有多个指标且不全是极大型指标,则进行指标正向化。2、之后对正向化矩阵进行标准化,目的是消除不同指标量纲的影响。 正向化方法:

 

 

3. 计算得分

 

 

4.归一化评分   即每个分数除以所有分数和 综合例题4:评价下表中A-T共20条河流的水质情况已知:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10-20之间最佳,超过20或低于10均不好。

 

 

解:1、将各项指标正向化PH值(中间型转极大型)、细菌总数(极小型转极大型)、植物性营养物量(区间型转极大型) 2、正向化后的矩阵进行标准化3、进行打分(20个评价对象,4个评价指标)4、分数归一化5、分析评分,最高得分的河流水质最好原文链接:https://blog.csdn.net/qq_36384657/article/details/98188769

作者:jsp

出处:http://www.cnblogs.com/jingsupo/

-------------------------------------------

个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @

2020-03-01 20:55 

jingsupo 

阅读(32176) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 jingsupo

Powered by .NET 8.0 on Kubernetes

欢迎光临

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