熵权法求权重的Matlab实现
生活随笔
收集整理的這篇文章主要介紹了
熵权法求权重的Matlab实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
理論簡介 “熵權”理論是一種客觀賦權方法,它借用信息論中熵的概念。熵權是在給定評價對象集后各種評價指標值確定的情況下,各指標在競爭意義上的相對激烈程度,從信息角度考慮,它代表該評價指標在該問題中提供有效信息量的多寡程度,作為一種客觀綜合評價方法,它主要是根據各指標傳遞給決策者的信息量大小來確定其權數。Matlab程序實現
根據熵權法理論,編寫Matlab程序如下:(新建一個M-File) ------------------------------------------------------分割線--------------------------------------------------------------- function weights = EntropyWeight(R) %% 熵權法求指標權重,R為輸入矩陣,返回權重向量weights
[rows,cols]=size(R);?% 輸入矩陣的大小,rows為對象個數,cols為指標個數 k=1/log(rows);? ? ? ? % 求k
f=zeros(rows,cols);?? % 初始化fij sumBycols=sum(R,1);?? % 輸入矩陣的每一列之和(結果為一個1*cols的行向量) % 計算fij for i=1:rows ? for j=1:cols ? ? ? f(i,j)=R(i,j)./sumBycols(1,j); ? end end
lnfij=zeros(rows,cols);?% 初始化lnfij % 計算lnfij for i=1:rows ? for j=1:cols ? ? ? if f(i,j)==0 ? ? ? ? ? lnfij(i,j)=0; ? ? ? else ? ? ? ? ? lnfij(i,j)=log(f(i,j)); ? ? ? end ? end end
Hj=-k*(sum(f.*lnfij,1)); % 計算熵值Hj weights=(1-Hj)/(cols-sum(Hj)); end ------------------------------------------------------分割線---------------------------------------------------------------
結果展示
假設某評價問題中涉及100個對象和12個指標,隨機生成一個100×12的評價矩陣(假設已規范化),并命名為testData,調用以上熵權法函數EntropyWeight( ),便可到這12個指標的權重。結果如下:(最終結果分別為第1~第12個指標的權重)
?
總結
以上是生活随笔為你收集整理的熵权法求权重的Matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么用Canoe CAPL发送诊断
- 下一篇: ASP.NET 省市区联级