如何寻找决策最优解?熵权TOPSIS助你科学决策
熵权topsis是一种融合了熵值法与TOPSIS法的综合评价方法。熵值法是一种客观赋值法,可以减少主观赋值带来的偏差;而topsis法是一种常见的多目标决策分析方法,适用于多方案、多对象的对比研究,从中找出最佳方案或竞争力最强的对象。
熵权topsis是先由熵权法计算得到指标的客观权重,再利用TOPSIS法,对各评价对象进行评价。
熵权topsis法分析步骤通常可分为以下三步:
(1)数据标准化
(2)熵值法确定评价指标的权重
(3)topsis法得到评价对象的排名结果
其中第2、3步由SPSSAU自动计算输出。
一、研究背景
当前有一个项目进行招标,共有4个承包商,分别是A,B,C,D厂。由于招标需要考虑多个因素,各个方案指标的优劣程度也并不统一。为了保证评价过程中的客观、公正性。因此,考虑通过熵权TOPSIS法,对各个方案进行综合评价,从而选出最优方案。

二、操作步骤
(1)数据标准化
首先,需要对数据进行标准化处理。指标量纲(单位)不一致会造成不同指标的数据有大有小,这样会影响计算结果。为了消除量纲的影响,分析前需要先对数据进行处理。
正向指标:(X-Min)/(Max-Min) (生成变量-正向化MMS)
逆向指标:(Max-X)/(Max-Min) (生成变量-逆向化NMMS)
具体标准化的处理方式有很多种,具体结合文献和自身数据选择使用即可。不同的处理方式肯定会带来不同的结果,但结论一般不会有太大的偏倚。
本案例中,价格、工程工期、主材用量均为逆向指标;施工经验率、产品质量合格率、服务水平均为正向指标。按上述步骤分别对正向指标、逆向指标进行标准化处理。
(2)熵权TOPSIS法
选择【综合评价】--【熵权TOPSIS】。
将指标项放入【评价指标】框中,点击开始分析。
三、结果分析
(1)熵值法确定权重
上表是通过熵值法计算得出的6个指标权重,可以看出指标权重分布相对较为均匀。
各项指标的权重={0.1415, 0.2366, 0.1415, 0.1415, 0.2366, 0.1433, 0.1004}。
这一步仅仅得到了指标权重,熵值TOPSIS的核心在于TOPSIS法计算出相对接近度。权重值与数据相乘,得到新数据newdata,这一过程是SPSSAU自动完成,利用newdata进行TOPSIS法计算。
(2)topsis法得到每组样本的竞争力排名
从上表可知,利用熵权法后加权生成的数据(由SPSSAU算法自动完成)进行TOPSIS分析,针对6个指标进行TOPSIS评价。最终计算得出各评价对象与最优方案的接近程度(C值),并对C值进行排序,得到最优方案。
根据结果显示,A厂(评价对象1)是最佳的供应商选择,其次为B厂。
四、其他说明
(1)分析之前是否需要进行标准化、归一化、正向化或逆向化处理等?
如果原始数据中有负向指标(数字越大反而越不好的意思),需要针对此类指标先‘逆向化’处理。当确认所有指标均为正向指标(数字越大越好的意思)后,需要接着进标准化处理。
数据进行标准化处理目的在于解决量纲问题,标准化处理的方式有很多,常见是‘归一化’,‘区间化’,‘均值化’,‘求和归一化’,‘平方和归一化’等等非常多。如果指标数据全部都大于0,SPSSAU建议是使用‘均值化’处理,如果指标数据有小于或等于0的数据,SPSSAU建议使用‘区间化’(默认将数据压缩成1~2之间)。
(2)如果分析数据中有负数或者0值如何办?
如果分析数据有负数或者0,这会导致无法进行熵值法计算,SPSSAU算法默认会进行‘非负平移’处理。SPSSAU非负平移功能是指,如果某列(某指标)数据出现小于等于0,则让该列数据同时加上一个‘平移值’【该值为某列数据最小值的绝对值+0.01】,以便让数据全部都大于0,因而满足算法要求。
以上就是本次分享内容,登录SPSSAU官网了解更多内容。
如何寻找决策最优解?熵权TOPSIS助你科学决策的更多相关文章
- 基于topsis和熵权法
% % X 数据矩阵 % % n 数据矩阵行数即评价对象数目 % % m 数据矩阵列数即经济指标数目 % % B 乘以熵权的数据矩阵 % % Dist_max D+ 与最大值的距离向量 % % Dis ...
- BZOJ_4609_[Wf2016]Branch Assignment_决策单调性+带权二分
BZOJ_4609_[Wf2016]Branch Assignment_决策单调性+带权二分 Description 要完成一个由s个子项目组成的项目,给b(b>=s)个部门分配,从而把b个部门 ...
- BZOJ_5311_贞鱼_决策单调性+带权二分
BZOJ_5311_贞鱼_决策单调性+带权二分 Description 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半. 这不?他们遇到了大麻烦! n只贞鱼到陆地上乘车,现在有k辆汽 ...
- 吴裕雄 python 熵权法确定特征权重
一.熵权法介绍 熵最先由申农引入信息论,目前已经在工程技术.社会经济等领域得到了非常广泛的应用. 熵权法的基本思路是根据各个特征和它对应的值的变异性的大小来确定客观权重. 一般来说,若某个特征的信息熵 ...
- 熵权法(the Entropy Weight Method)以及MATLAB实现
按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量:如果指标的信息熵越小,该指标提供的信息量越小,在综合评价中所起作用理当越小,权重就应该越低.因此,可利用信息熵这个工 ...
- 熵权法原理及matlab代码实现
参考原理博客地址https://blog.csdn.net/u013713294/article/details/53407087 一.基本原理 在信息论中,熵是对不确定性的一种度量.信息量越大,不确 ...
- 如何科学衡量广告投放效果?HMS Core分析服务助您科学归因
日益多元化的广告形式以及投放成本的不断攀升,让广告主们更加关注每一次广告投放带来的实际价值. 然而,广告主一般仅能从平台获得展示.点击.下载等前端效果字段,实际的用户注册.激活等后端深度转化指标并无法 ...
- DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)
前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [D ...
- Spring Security入门(3-5)Spring Security 的鉴权 - 决策管理器和投票器
1.决策管理器的运行原理: 2.Spring Security提供的决策管理器实现 3.用户自定义的决策管理器
随机推荐
- Numpy数组排序
import numpy as np x = np.array([1,4,5,2]) # array([1, 4, 5, 2]) # 返回排序后元素的原下标 np.argsort(x) # array ...
- PHP range() 函数
实例 创建一个包含从 "0" 到 "5" 之间的元素的数组: <?php$number = range(0,5);print_r ($number);?& ...
- PDO::prepare
PDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 publi ...
- CF453A Little Pony and Expected Maximum 期望dp
LINK:Little Pony and Expected Maximum 容易设出状态f[i][j]表示前i次最大值为j的概率. 转移很显然 不过复杂度很高. 考虑优化.考虑直接求出最大值为j的概率 ...
- 4.13 省选模拟赛 树 树形dp 卷积 NTT优化dp.
考试的时候 看到概率 看到期望我就怂 推了一波矩阵树推自闭了 发现 边权点权的什么也不是. 想到了树形dp 维护所有边的断开情况 然后发现数联通块的和再k次方过于困难. 这个时候 应该仔细观察一下 和 ...
- 基于Python+Requests+Pytest+YAML+Allure实现接口自动化
本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...
- 当asp.net core偶遇docker一(模型验证和Rabbitmq 二)
上一篇我们说到构建了一个Rabbitmq容器 现在我们说说如何在一个悄悄传输消息到队列 我们现在设计一个Rabbitmq发送消息部分的模块 先设计一个远程发送的接口 public interface ...
- 实验03——java十进制转二、八、十六进制;打印'中'的十六进制;进制转换的api
package cn.tedu.demo; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @version 创建时间:2020年7月16日 上午10:22: ...
- Spring Boot 数据缓存 - EhCache
EhCache 集成 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider. 在 Spring Boot 中集成 E ...
- 朴素贝叶斯分类器基本代码 && n折交叉优化
自己也是刚刚入门.. 没脸把自己的代码放上去,先用别人的. 加上自己的解析,挺全面的,希望有用. import re import pandas as pd import numpy as np fr ...