熵值法在matlab上的实现

      熵值法是一种客观赋权方法,在评价和决策时具有应用前景,本例分享如何利用matlab进行熵值法的应用。

熵值法原理: 

      熵的概念源于热力学,是对系统状态不确定性的一种度量。在信息论中,信息是系统有序程度的一种度量。而熵是系统无序程度的一种度量,两者绝对值相等,但符号相反。根据此性质,可以利用评价中各方案的固有信息,通过熵值法得到各个指标的信息熵,信息熵越小,信息的无序度越低,其信息的效用值越大,指标的权重越大。

计算步骤:




案例:

      下表是购买教车的一个决策矩阵,给出了四个方案供我们进行选择,每个方案中均有相同的六个属性,我们需要利用熵值法求出各属性的权重,以及在方案中的贡献度。

  油耗 功率 费用 安全性 维护性 操作性
本田 5 1.4 6 3 5 7
奥迪 9 2 30 7 5 9
桑塔纳 8 1.8 11 5 7 5
别克 12 2.5 18 7 5 5

matlab代码:

%%熵值法
clc;clear;
x=[5 1.4 6 3 5 7
    9 2 30 7 5 9
    8 1.8 11 5 7 5
    12 2.5 18 7 5 5];
lamda=[1,1,1,1,1,1];%---人为加权,默认各指标等权,可修改
[m,n]=size(x);
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)

运行结果:


扫描二维码关注公众号,回复: 1565846 查看本文章

      所以在购买汽车时,据所提供信息,利用熵值法计算得出的权重为油耗占14.29%,功率占6.8%,费用占49.19%,安全性占15.77%,维护性占3.77%,操作性占10.17%。故我们在进行购买决策时,更多是考虑车型的价格和安全性等重要因素。这是从权重角度考虑的。

     就本例而言,每个车型每个指标的得分与其权重的乘积之和为其综合评价值,这样求得本田5.135分,奥迪18.388分,桑塔纳8.238分,别克12.541分。所以综合评价排序为奥迪、别克、桑塔纳、本田。

猜你喜欢

转载自blog.csdn.net/qq_23860475/article/details/80649863