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

本文介绍了TOPSIS(Technique for Order Preference by Similarity to an Ideal Solution)方法,一种多指标综合评价法。通过正向化处理、标准化、计算得分并归一化等步骤,对给定的数据集进行处理,以评估和排序。文中提供了一个MATLAB程序示例,用于处理水质评价问题,展示了如何处理不同类型的评价指标,并给出了计算流程和代码实现。
摘要由CSDN通过智能技术生成

title: TOPSIS算法

date: 2020-02-24 11:18:06

categories: 数学建模

tags: [评价模型, MATLAB]

mathjax: true

定义

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

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

? 基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指 标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分 别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对 象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

例子

评价下表中20条河流的水质情况。 注:含氧量越高越好;PH值越接近7越好;细菌总数越少越好;植物性营养物量介于10‐20之间最佳,超 过20或低于10均不好。

91336f7f5c39d710ad0520f498ea11d6.png

步骤

第一步:将原始矩阵正向化

最常见的四种指标:

指标名称

指标特点

例子

极大型(效益型)指标

越大(多)越好

成绩、GDP增速、企业利润

极小型(成本型)指标

越小(少)越好

费用、坏品率、污染程度

中间型指标

越接近某个值越好

水质量评估时的PH值

区间型指标

落在某个区间最好

体温、水中植物性营养物量

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

极小型指标->极大型指标

极小型指标转换为极大型指标的公式:

[

max-x

]

如果所有的元素均为正数,那么也可以使用 1/x

中间型指标->极大型指标

{(x_{i})}是一组中间型指标序列,且最佳的数值为(x_{best}),那么正向化的公式如下:

[

M=max left{left|x_{i}-x_{ext {best}}ight|ight}, quad ilde{x}_{i}=1-frac{left|x_{i}-x_{ext {best}}ight|}{M}

]

举个例子:

a982b37d21d8b5608086d17fdcf8fbc7.png

区间型指标->极大型指标

{(x_{i})}是一组中间型指标序列,且最佳的区间为[a,b],那么正向化的公式如下:

[

M=max left{a-min left{x_{i}ight}, max left{x_{i}ight}-bight}, quad ilde{x}_{i}=left{egin{array}{ll}

{1-frac{a-x}{M}} & {, xb}

end{array}ight.

]

89736ebb1f6be6c012ca072054bfbd6f.png

第二步:正向化矩阵标准化

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

假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化矩阵如下:

[

A=egin{bmatrix}a_{11}& a_{12}& cdots & a_{1n}a_{21}& a_{22}& cdots & a_{2n}vdots & vdots & ddots & vdots a_{m1}& a_{m2}& cdots & a_{mn}end{bmatrix}

]

那么,对其标准化的矩阵记为Z,Z中的每一个元素:

[

z_{ij}=a_{ij}/ sqrt{sum_{i=1}^{n}a_{ij}^{2} }

]

[

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
熵权TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) 方是一种多准则决策分析工具,它结合了模糊集理论和熵权的概念来确定最优解。在MATLAB中,编写这种算法代码通常包括以下几个步骤: 1. 导入所需库: ```Matlab % 加载MATLAB的优化和数据处理工具箱 addpath('toolbox\optim') ``` 2. 定义权重矩阵和性能矩阵: ```Matlab weights = [0.5 0.3 0.2]; % 权重向量(这里假设有三个评价指标) criteria = [criteria_matrix]; % 表示每个决策对象在各个标准下的得分矩阵 ``` 3. 计算熵值和标准化矩阵: ```Matlab entropy = -sum(weights .* log(weights)); normalized_matrix = criteria ./ (sqrt(sum(criteria.^2, 2)) * ones(size(criteria, 1), 1)); ``` 4. 计算理想最大值矩阵(Best)和理想最小值矩阵(Worst): ```Matlab best = max(normalized_matrix, [], 2); worst = min(normalized_matrix, [], 2); ``` 5. 计算距离到最佳(Positive Distance, PD)和最差(Negative Distance, ND): ```Matlab pd = best - normalized_matrix; nd = normalized_matrix - worst; ``` 6. 根据熵权重计算综合评分: ```Matlab total_score = pd ./ (pd + nd); ``` 7. 找出总分最高的决策方案作为最终优选: ```Matlab [~, idx] = max(total_score, [], 1); winner = idx; ``` 请注意,上述代码仅为基本框架,实际使用时可能需要根据具体的数据和需求进行调整。另外,由于MATLAB不是开源环境,所以代码可能会涉及到特定版本的函数调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值