本文主要是介绍熵权法详解+MATLAB求解评奖学金例题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文为北海的数模课程学习笔记,课程出自微信公众号:数学建模BOOM。
求赞!求收藏!求关注!
目录
模型简介
熵的概念
具体例子
适用赛题
数据全面、缺少文献或主观依据的题目
注意事项
典型例题与原理讲解
典型例题
数据标准化
指标的熵值和变异程度
权重与评分
代码求解
读取excel文件数据
指标标准化
求熵和权重和最终评价排名
模型简介
熵的概念
具体例子
以考试成绩为例。
科目越容易拉开差距,熵越大,权(重)越大。
科目越不容易拉开差距,熵越小,权(重)越小。
如果一门课所有人都是一样的分,熵为1,权为0。
适用赛题
数据全面、缺少文献或主观依据的题目
注意事项
典型例题与原理讲解
典型例题
数据标准化
在代码中,如果有x=0,把x改为一个很小的数,比如0.00001就好。
标准化不是必须的,如果没有数值越小越好的负向指标,不同指标的数量级也相同,变量中无负值,那就可以不标准化。
指标的熵值和变异程度

权重与评分
代码求解
• 使用熵权法时需要数据全面,有的数据是比赛提供的,有的是需要自己找
读取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求解评奖学金例题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!