熵值法是一种客观赋权方法,在评价和决策时具有应用前景,本例分享如何利用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分。所以综合评价排序为奥迪、别克、桑塔纳、本田。