02【评价类】模型——TOPSIS法(理想解法、优劣解距离法)

这篇具有很好参考价值的文章主要介绍了02【评价类】模型——TOPSIS法(理想解法、优劣解距离法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

02【评价类】模型——TOPSIS法(理想解法、优劣解距离法) 

目录

02【评价类】模型——TOPSIS法(理想解法、优劣解距离法) 

一、引述

二、TOPSIS法的应用

2.1 决策矩阵正向化处理

2.1.1 效益型指标(极大型指标)

2.1.2 成本型指标(极小型指标)

2.1.3 区间型指标

2.1.4 中间型指标

2.1.5 问题解决 

2.2 正向化矩阵规范化处理

2.3 构造指标的权重向量

2.3.1 层次分析法求权重向量

2.3.2 熵权法求权重向量

2.3.3 默认权重向量

2.3.4 问题解决

2.4 求各方案到正、负理想解的距离

2.4.1 求正、负理想解

2.4.2 求各方案与正、负理想解的距离

2.4.3 求综合指标值

三、TOPSIS法程序实现

四、总结


一、引述

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

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

topsis模型,数学建模,算法,矩阵,线性代数,经验分享
图1-1  研究生院试评估的部分数据

由此表格可得到决策矩阵为:

 注:第行第列为。

二、TOPSIS法的应用

2.1 决策矩阵正向化处理

2.1.1 效益型指标(极大型指标)

一个指标越大越好,则称为效益型指标或极大型指标;

比如:一个学生的成绩,国家的GDP,一个公司的利润等;本例中的“人均专著”即为效益型指标。

注:该指标为统一型指标,即下面三种指标需要正向化处理为该类型指标。

2.1.2 成本型指标(极小型指标)

一个指标越小越好,则称为成本型指标或极小型指标;

比如:一个工厂某种产品的成本,一个人的负面评价等;本例中的“科研经费”和“逾期毕业”即为成本型指标。

成本型指标转化成效益型指标的值为:

 

或  

2.1.3 区间型指标

一个指标的值落在某个区间最好,则称为区间型指标;

比如:人体温度(36~37℃);本例中的“生师比”即为区间型指标。

 区间型指标转化成效益型指标的值为:

其中是一组区间型指标序列,且最佳区间为.

公式解释如下,

topsis模型,数学建模,算法,矩阵,线性代数,经验分享
图2-1 区间型指标转化为效益型指标的公式解释图

根据公式以及图2-1可知,其中的值为,即为图2-1中红色段的长度。对于公式的右半部分,以的情况为例(即落在红色段),即表示距离最佳区间的距离,以该值作为分子,以距离最佳区间的距离作为分母。则表示与最佳区间的远近程度(离最佳区间越远该值越大,越近该值越小),显然这是一个成本型指标,所以为了转化成效益型指标,我们用1减去(即,显然是属于的),那么就将区间型指标转化成了效益型指标。下面的和的情况同理可得。

2.1.4 中间型指标

一个指标越靠近某个中间值越好,则称为中间型指标;

比如:河水的PH值(PH=7)。

中间型指标转化为效益型指标的值为: 

公式解释如下, 

topsis模型,数学建模,算法,矩阵,线性代数,经验分享
图2-2 中间型指标转化为效益型指标的公式解释图

 根据公式以及图2-2可知,其中的值为,即图2-2红色段的长度。公式的右半部分即表示与的距离并作为分子,与的最大距离作为分母;用来描述与的远近程度(与距离越远该值越大,越近该值越小),显然这是一个成本型指标,因此我们用1减去(即,显然是属于的)来将其转化为效益型指标

2.1.5 问题解决 

将决策矩阵正向化处理之后得到正向化矩阵:

其中可由(2.1.2,2.1.3和2.1.4)中的公式求得。

2.2 正向化矩阵规范化处理

为了去除量纲的影响,因此我们需要对已得到的正向化矩阵进行规范化处理,得到规范化矩阵:

 

其中.

上面公式可解释为,规范化矩阵的每一个元素即为正向化矩阵的对应元素/topsis模型,数学建模,算法,矩阵,线性代数,经验分享

2.3 构造指标的权重向量

2.3.1 层次分析法求权重向量

求权重向量即为各指标求其所占权重,我们首先根据成对比较阵标度表对指标两两进行比较,从而得到判断矩阵(成对比较矩阵),然后依照层次分析法的步骤流程来得到权重向量,

其中,的具体求法请参照本系列其他文章(01层次分析法)。

2.3.2 熵权法求权重向量

具体求法请参照本系列的其他文章(03熵权法)。

2.3.3 默认权重向量

若不采取上面两种方法构造权重向量,则采取默认权重向量,

其中,n为决策矩阵的列数,即指标的个数。

2.3.4 问题解决

在本引例中,采取默认权重向量,即

.

在求得规范化矩阵和指标的权重向量后可得到加权规范阵:

其中,。

2.4 求各方案到正、负理想解的距离

2.4.1 求正、负理想解

正理想解为:

topsis模型,数学建模,算法,矩阵,线性代数,经验分享

其中,topsis模型,数学建模,算法,矩阵,线性代数,经验分享

 正理想解即位每个指标在各方案之间的最大值。

负理想解为:

其中, 。

负理想解即位每个指标在各方案之间的最小值。

2.4.2 求各方案与正、负理想解的距离

topsis模型,数学建模,算法,矩阵,线性代数,经验分享

其中,topsis模型,数学建模,算法,矩阵,线性代数,经验分享.

其中, 。

这里的与正、负理想解的距离采用的是欧几里得距离(欧氏距离)。

2.4.3 求综合指标值

在求得各方案与正负理想解的距离后,则可以得到各个方案的综合指标值(即各方案得分):

其中 topsis模型,数学建模,算法,矩阵,线性代数,经验分享.

再将综合指标归一化,

其中,.

由数据可知,第5所研究院的综合指标值(0.3035)最高。

归一化:归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或[-1,1]),从而消除奇异样本数据导致的不良影响。奇异样本数据是指相对于其他输入样本特别大或特别小的样本值。(标准化,规范化又是什么呢?)

三、TOPSIS法程序实现

TOPSIS法的代码实现如下:

//FileName:G_TOPSIS.m(主程序)

%% TOPSIS
% 程序的预处理部分
clear;clc;
disp('请输入决策矩阵');
A=input('A=');
disp('请输入各列的指标类型(1.效益型,2.成本型,3.区间型,4.中间型):');
Type=input('Type=');
[n1,n2]=size(A);

%% 决策矩阵正向化处理
% 将成本型、区间型和中间型指标转化为效益型指标
X=zeros(n1,n2);
for i=1:n2
    switch Type(i)
        case 1
            X(:,i)=A(:,i);
        case 2
            X(:,i)=G_Min2Max(A(:,i));
        case 3
            disp('请输入区间的上下界a,b:');
            a=input('a=');
            b=input('b=');
            X(:,i)=Inter2Max(A(:,i),a,b);
        case 4
            disp('请输入最好值value:');
            value=input('value=');
            X(:,i)=Mid2Max(A(:,i),value);
        otherwise
            disp('您输入的Type中的数据包含不属于1~4的数据,请修改!');       
    end
end

%% 正向矩阵规范法处理
% 为了将已正向化的矩阵消除量纲的影响,则需要对其进行规范化处理
sum_X=sqrt(sum(X.*X));
B=X./repmat(sum_X,n1,1);

%% 求加权规范矩阵
% 一个方案的各指标的重要程度不同,则需要对各指标赋予权值
% 构造权重向量主要方法有:层次分析法,熵权法和默认方法
weigh=ones(1,n2)./n2;%默认方法
C=B.* repmat(weigh,n1,1);

%% 计算与正负理想解的距离
C_up=max(C);% C_up(j)表示第j个指标的正理想解
C_down=min(C);
temp1=C-repmat(C_up,n1,1);%temp1为cij-C_up(j)的差值
temp2=C-repmat(C_down,n1,1);
D_up=sum(temp1.^2,2).^0.5;%D_up(i)即为第i个方案与正理想解的距离
D_down=sum(temp2.^2,2).^0.5;
result=D_down./(D_up+D_down);%计算各方案的综合指标
disp('result=');
disp(result);
[sort_result,index]=sort(result,'descend');
disp('sort_result=');
disp(sort_result);
disp('index');
disp(index);

下面三个代码段为正向化处理时所用到的函数: 

 //FileName:G_Min2Max.m(成本型效益型)

function [f1]=G_Min2Max(X)
% X表示需要正向化的决策矩阵的某一列
    [n1,~]=size(X);
    f1=repmat(max(X),n1,1)-X;
end

  //FileName:G_Min2Max.m(区间型效益型) 

function [f2]=G_Inter2Max(X,a,b)
% X表示需要正向化的决策矩阵的某一列
% a,b分别表示最佳区间的上下限
    M=max([a-min(X),max(X)-b]);%向量X中的所有元素与最佳区间[a,b]的最远距离
    f2=ones(size(X),1);
    for i=1:size(X)
        if i<a
            f2(i)=1-(a-X(i))/M;%当X(i)小于a时的公式
        elseif i>b
            f2(i)=1-(X(i)-b)/M;
        else
            f2(i)=1;
        end
    end
end

   //FileName:G_Min2Max.m(中间型效益型) 

function [f3]=G_Mid2Max(X,value)
% X表示需要正向化的决策矩阵的某一列
% value表示处于中间的最好值
    M=max(abs(X-value));
    f3=1-abs(X-value)/M;
end

四、总结

用TOPSIS法解决评价类问题时整体实现的流程:

topsis模型,数学建模,算法,矩阵,线性代数,经验分享
图4 TOPSIS实现流程图

小结: 

  1. TOPSIS法是对于各指标的数据都是已知的,而层析分析法的几乎没有任何数据;
  2. 因为熵权法存在缺陷,所以平时发表论文时一般不使用,而数模比赛时可以用。

疑问:

  1. 归一化、标准化和规范法有什么异同?
  2. 在写论文时,需要对指标正向化的公式进行解释吗? 

  结束语:本文部分内容来自于B站“数学建模学习交流”以及疯学网数学建模系列教程

  文章来源地址https://www.toymoban.com/news/detail-817599.html

到了这里,关于02【评价类】模型——TOPSIS法(理想解法、优劣解距离法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    构造计算评分的公式:    max,min指已知数据中的最大值和最小值而不是理论上的最大值和最小值 三点解释: (1)比较的对象一般要远大于两个。(例如比较一个班级的成绩) (2)比较的指标也往往不只是一个方面的,例如成绩、工时数、课外竞赛得分等。 (3)有很多指

    2024年01月17日
    浏览(33)
  • 2023数学建模国赛常用算法-Topsis优劣解距离法

    1.1 概念 TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。基本过程为基于归一化后的原始数据矩阵,采用余弦法找出有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距

    2024年02月15日
    浏览(25)
  • TOPSIS(优劣解距离法)【附Python实现代码及可视化代码】

    目录 一、指标正向化 1.极小型指标-极大型指标 2.中间型指标-极大型指标 3.区间型指标-极大型指标 二、标准化处理 三、计算得分并归一化(不带权重) 四、计算得分并归一化(带权重) 熵权法 1)判断输入的矩阵是否存在负数 2)计算第j项指标下第i个样本所占的比重,并将其看

    2023年04月20日
    浏览(33)
  • 数学建模学习(4):TOPSIS 综合评价模型及编程实战

            需求:我们需要对各个银行进行评价,A-G为银行的各个指标,下面是银行的数据: 清空代码和变量的指令 层次分析法 每一行代表一个对象的指标评分 A为自己构造的输入判别矩阵 求特征值特征向量,找到最大特征值对应的特征向量  找到最大的特征值  找到最大

    2024年02月16日
    浏览(38)
  • 评价模型(一) 层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题解释

    数学建模系列文章: 以下是个人在准备数模国赛时候的一些模型算法和代码整理,有空会不断更新内容: 评价模型(一)层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题解释 评价模型(二)主成分分析、因子分析、二者对比及其对应 PYTHON 实现代码和例

    2024年02月08日
    浏览(44)
  • 综合评价之熵值法+TOPSIS

    (一)原理 熵指代一种混乱程度,定义事物越混乱,其熵值就越大,事物越整齐,其熵值就越大。熵值法就是采用熵这个概念来对指标进行赋权。熵值法认为一个若一个指标的数据都大差不差,没有什么区别,那么其数据包含的信息量是很少的,几乎不能帮助我们决策,因此

    2024年02月08日
    浏览(30)
  • 综合评价算法 | Matlab实现基于TOPSIS法的综合评价算法

    效果一览 文章概述 综合评价算法 | Matlab实现基于TOPSIS法的综合评价算法 研究内容 C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution)。TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方

    2024年02月12日
    浏览(76)
  • 数学建模--Topsis评价方法的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示  

    2024年02月09日
    浏览(29)
  • 评级模型之Topsis法—基于R

    Step1. 构造初始决策矩阵 (D = (d_{ij})_{m times n}) Step2. 按列(属性)对决策矩阵D归一化 [d_{ij} = frac{d_{ij}}{sumlimits_{k=1}^mx_{kj}}] 记归一化后的矩阵为 (R = (r_{ij})_{m times n}) . Step3. 用信息熵法计算权重 [begin{aligned} E_j = -ksumlimits_{i=1}^mr_{ij}ln{r_{ij}}, quad k = frac{1}{ln m}\\\\ F_j =

    2024年01月20日
    浏览(24)
  • TOPSIS法(熵权法)(模型+MATLAB代码)

    TOPSIS可翻译为逼近理想解排序法,国内简称为优劣解距离法 TOPSIS法是一种常用的 综合评价方法 , 其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的距离 极大型指标(效益型指标)  :越高(大)越好 极小型指标(成本型指标)  :越少(小)越好 中间

    2024年02月21日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包