基于熵权法的topsis分析(包含matlab源码以及实例)

            

目录

一、算法简述

         1.topsis分析法

         2.熵权法

         3.两种算法的结合

二、算法步骤

         1.判断指标类型

         2.数据正向化

         3.正向化矩阵标准化

         4.计算概率矩阵P

         5.计算各个指标的信息熵

         6.计算信息效用值

         7.计算熵权

         8.计算最优距离和最劣距离

         9.计算未归一化得分以及归一化得分

三、MATLAB代码实现

        1.主函数topsis.m

        2.正向化函数 Positivization.m

        3.熵权法函数 Entropy_Method.m

        4.ln函数 mylog.m

          写在前面

                 本篇不介绍熵权法以及topsis分析法的详细原理 若想了解请移步其他博客!!!

                恰恰相反,本篇为懒人福利,适用于数学建模等需要快速解决问题的赛事。

一、算法简述

       1.topsis分析法

            topsis算法是一种常见的综合评价办法,适用于有多个指标时的方案选择问题,如下图所示

            ps:以下数据为自行创造 仅用于讲解

方案\指标 可采矿量 基建投资 土地PH值 人员
方案1 5212 5000 5.7 45
方案2 3615 2600 4.0 32
方案3 5011 5412 5.0 43
方案4 4038 3200 4.3 38
方案5 4462 3600 4.8 40

            通过topsis分析法我们可以通过优劣分析,为五个方案分别赋予一个评分,显然评分越高,综合考量下来优势越大。

        2.熵权法

                我们已经知道topsis分析法可以给每个方案一个评分,但这个评分是在各个指标所占权重相同的前提下来算的,但我们遇到的问题大部分肯定有的指标重要,有的不那么重要,我们又不能去主观给他赋权重,这个问题应该怎么解决?没错,熵权法可以!

                熵权法是一种客观赋权方法,通过计算指标的信息熵,根据相对变化程度对整体的影响来决定指标权重。(不懂不要紧 会用就行)

        3.两种算法的结合

                了解了两种算法的基本原理,我们很容易想到,可以通过熵权法算出各指标的权重,进而通过topsis分析法进行评分,就能得到可信度较高的结果

二、算法步骤

        1.判断指标类型

                topsis模型一般是在所有指标均为极大型指标(数据越大越好)的基础上进行运算的,因此要判断各个指标都是什么类型,方便后面进行数据正向化。

                一般的常见类型有

                极大型(数据越大越好) 比如上方表格中的可采矿量

                极小型(数据越小越好)  比如上方表格中的基建投资

                中间型(数据稳定在某个固定的值最好) 比如上方表格里的ph最好保持在4.3

                区间型(数据在某个区间内最好)比如上方表格中的人员最好在[30,40]之间

         2.数据正向化

                极小型数据(PS:当数据不全为正数时 只能使用第二个公式)

                        

                  上面表格的基建投资极小型数据 我们采用第二个公式来正向化

方案\基建投资 正向化前 正向化后
方案1 5000 412
方案2 2600 2812
方案3 5412 0
方案4 3200 2212
方案5 3600 1812

                中间型数据

                首先应该输入一个中间最优值{x_{best}}再进行正向化

                        

                上面表格的土地PH值中间型数据 我们的{x_{best}}是4.3 

方案\土地PH 正向化前 正向化后
方案1 5.7 0
方案2 4.0 0.7857
方案3 5.0 0.5
方案4 4.3 1
方案5 4.8 0.6429

                区间型数据

                首先应该输入区间下限a和区间上限b再进行正向化

                          

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值