日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

熵权法求权重的Matlab实现

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熵权法求权重的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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。