熵权法详解+MATLAB求解评奖学金例题

2023-10-24 00:40

本文主要是介绍熵权法详解+MATLAB求解评奖学金例题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文为北海的数模课程学习笔记,课程出自微信公众号:数学建模BOOM。

求赞!求收藏!求关注!

目录

模型简介

熵的概念

具体例子

适用赛题

数据全面、缺少文献或主观依据的题目

注意事项

典型例题与原理讲解

典型例题

 数据标准化

指标的熵值和变异程度

权重与评分

代码求解

读取excel文件数据

指标标准化

求熵和权重和最终评价排名

模型简介

熵的概念

信息论中,熵是对 不确定性 的一种度量,可判断一个事件的 随机性 无序 程度
用熵值判断某个指标的 离散程度 ,指标的 离散程度越大,该指标对 综合评 价的影响越大

具体例子

以考试成绩为例。

科目越容易拉开差距,熵越大,权(重)越大。

科目越不容易拉开差距,熵越小,权(重)越小。

如果一门课所有人都是一样的分,熵为1,权为0。

适用赛题

数据全面、缺少文献或主观依据的题目

例如 评价河流水质 ,已知河流的含氧量、 PH 值、细菌密度、生物密度等数据
缺乏评价水质的文献资料 ,或者文献内的 说法不一
即文献很难帮助我们确定影响水质最重要的因素是哪一个
也很难告诉我们其余指标的重要程度如何衡量
此时即可使用熵权法, 根据数据本身建立评价体系

注意事项

熵权法与其他方法(层次分析法、 TOPSIS 法等)最大的区别就是 完全客观
追求 公平公正 的情况,可优先考虑熵权法
但有时 完全客观 也是缺点, 难以将数据之外的因素考虑进去

典型例题与原理讲解

典型例题

 数据标准化

在代码中,如果有x=0,把x改为一个很小的数,比如0.00001就好。 

 标准化不是必须的,如果没有数值越小越好的负向指标,不同指标的数量级也相同,变量中无负值,那就可以不标准化。

指标的熵值和变异程度

 

权重与评分

 

代码求解

使用熵权法时需要数据全面,有的数据是比赛提供的,有的是需要自己找

数据往往以 excel 文件存储,可在 MATLAB 中用 readmatrix 函数调用
注意调用的 excel 文件需要与代码文件在同一文件夹下!!!

读取excel文件数据

注意,excel文件要和代码文件放在同一文件夹下,否则需要绝对路径
只读取数值,用range表明取哪些

clc,clear
score=readmatrix('data3-3.xlsx','range','B2:I11');

指标标准化

本题可以不标准化,不过为了演示,还是标准化一下

注意:后续求对数,自变量不能为0,故为0时取个0.001即可

[n,m]=size(score);
score2=zeros(n,m);
for j=1:mfor i=1:nscore2(i,j)=(score(i,j)-min(score(:,j)))/(max(score(:,j))-min(score(:,j)));if score2(i,j)==0score2(i,j)=0.0001;   % 求对数不能为0,故取个极小的数endend
end

求熵和权重和最终评价排名

套公式即可

p=score2./sum(score2);
e=-sum(p.*log(p))/log(n);       
g=1-e; 
w=g/sum(g) %计算权重
s=w*p'; %计算各个评价对象的综合评价值[ss,rank]=sort(s,'descend') %对评价值从大到小排序;descend表示降序

求得的rank中,第一个元素是9,意味着第一名是序号9同学;第二个元素是1,意味着第二名是序号1同学……

这篇关于熵权法详解+MATLAB求解评奖学金例题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/271537

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1