多目标决策问题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:n
            x(:,i)=(x(:,i)-min(x(:,i)))/(max(x(:,i))-min(x(:,i)))+1;
            %对原始数据进行非负数化、归一化处理,值介于1-2之间
    end
    for i=1:m
        for j=1:n
            p(i,j)=x(i,j)/sum(x(:,j));
        end 
    end
    k=1/log(m);
    for i=1:m
    for j=1:n
        if p(i,j)~=0
            e(i,j)=p(i,j)*log(p(i,j));
        else
            e(i,j)=0;
        end
    end 
    end
    for j=1:n
        E(j)=-k*sum(e(:,j));
    end
    d=1-E;
    for j=1:n
    w(j)=d(j)/sum(d);%指标权重计算
    end
    for j=1:n
        w(j)=w(j)*lamda(j)/sum(w.*lamda);% 修改指标权重
    end
    for i=1:m
        score(i,1)=sum(x(i,:).*w);%计算综合分数
    end
    disp('各指标权重为:')
    disp(w)
    disp('各品牌综合分数为:')
    disp(score)

你可能感兴趣的:(多目标决策问题1.1.1:线性加权法——熵权法确定权重)