本文主要是介绍多目标决策问题1.1.1:线性加权法——熵权法确定权重,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
多目标决策问题是目前数学建模中比较普遍的一类问题,
此类问题要求我们满足多个目标函数最优与决策变量的线性约束条件或非线性约束条件下进行求解,
多目标决策问题主要有主要目标法、线性加权法、分层序列法、步骤法(Stem法),
本篇主要着重讲线性加权法。
线性加权法的特点主要是实现了将多个目标函数通过线性加权的方式集成到了单个目标函数,
那么问题就转化为了一般性的线性规划类问题。线性加权法中也可以将指标定性与定量结合,
一定程度上增加了主观性因素。
但笔者认为最关键的还是确定各个指标的权重,
而熵权法与基于三角模糊数的层次分析法,模糊层次分析法FAHP,主成分分析法(PVC),
主观赋权法(不提倡)是笔者看来比较好的确定权重的方法。
此处先讲熵权法来确定权重,熵权法可用于任何评价类问题的指标权重确定,
可以剔除贡献率较低的指标,可以说有且仅有此优点。
(1)通过max-min极差标准化,z-score零均方差标准化处理将多个指标实现归一化处理
(2)求解信息熵值
(3)根据信息熵求解各个指标对应权重
笔者写了一个比较通用的代码
clc;clear;load data%或者使用data=xlsread('.xls'),使用txt文件导入也是可以的x=[];%此处可以将data处的数据进行导入lamda=[1,1,1,1,1,1];%---人为修权,1代表不修改计算后的指标权重[m,n]=size(x);for i=1:nx(:,i)=(x(:,i)-min(x(:,i)))/(max(x(:,i))-min(x(:,i)))+1;%对原始数据进行非负数化、归一化处理,值介于1-2之间endfor i=1:mfor j=1:np(i,j)=x(i,j)/sum(x(:,j));end endk=1/log(m);for i=1:mfor j=1:nif p(i,j)~=0e(i,j)=p(i,j)*log(p(i,j));elsee(i,j)=0;endend endfor j=1:nE(j)=-k*sum(e(:,j));endd=1-E;for j=1:nw(j)=d(j)/sum(d);%指标权重计算endfor j=1:nw(j)=w(j)*lamda(j)/sum(w.*lamda);% 修改指标权重endfor i=1:mscore(i,1)=sum(x(i,:).*w);%计算综合分数enddisp('各指标权重为:')disp(w)disp('各品牌综合分数为:')disp(score)
</div><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-d7a94ec6ab.css" rel="stylesheet"><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-ba784fbaf8.css" rel="stylesheet">
这篇关于多目标决策问题1.1.1:线性加权法——熵权法确定权重的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!