熵权法详解+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

相关文章

MySQL中的两阶段提交详解(2PC)

《MySQL中的两阶段提交详解(2PC)》:本文主要介绍MySQL中的两阶段提交(2PC),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言两阶段提交过程sync_binlog配置innodb_flush_log_at_trx_commit配置总结引言在Inn

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

MySQL中隔离级别的使用详解

《MySQL中隔离级别的使用详解》:本文主要介绍MySQL中隔离级别的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言undo log的作用MVCC的实现有以下几个重要因素如何根据这些因素判断数据值?可重复读和已提交读区别?串行化隔离级别的实现幻读和可

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

MySQL连接池(Pool)常用方法详解

《MySQL连接池(Pool)常用方法详解》本文详细介绍了MySQL连接池的常用方法,包括创建连接池、核心方法连接对象的方法、连接池管理方法以及事务处理,同时,还提供了最佳实践和性能提示,帮助开发者构... 目录mysql 连接池 (Pool) 常用方法详解1. 创建连接池2. 核心方法2.1 pool.q

9个SpringBoot中的自带实用过滤器使用详解

《9个SpringBoot中的自带实用过滤器使用详解》在SpringBoot应用中,过滤器(Filter)是处理HTTP请求和响应的重要组件,SpringBoot自带了许多实用的过滤器,如字符编码,跨... 目录1. CharacterEncodingFilter - 字符编码过滤器功能和配置手动配置示例2

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I