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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装