数学建模社区-数学中国

标题: 用matlab进行熵值法求解熵权....怎么编程序啊???? [打印本页]

作者: ljyxn    时间: 2011-7-7 19:33
标题: 用matlab进行熵值法求解熵权....怎么编程序啊????
(1)构建m个事物n个评价指标的判R=( )nm(i=1,2,…,n;j=1,2,…,m)。
(2)将判断矩阵归一化处理,得到归一化判断矩阵B
                     
(1)构建m个事物n个评价指标的判R=( )nm(i=1,2,…,n;j=1,2,…,m)。
(2)将判断矩阵归一化处理,得到归一化判断矩阵B
式中: 、 分别为同指标下不同事物中最满意者或最不满意者(越小越满意或越大越满意)。
(3)根据熵的定义,m个评价事物n个评价指标,可以确定评价指标的熵为:
   
为使 有意义,当  =0时,根据风险评价的实际意义,可以理解 为一较大的数值,与 相乘趋于0,故可认为 =0。但当 =1, 也等于0,这显然与熵所反映的信息无序化程度相悖,不切合实际,故需对 加以修正,将其定义为:
(4)计算评价指标的熵权W
,且满足
怎么用matlab程序实现上面的求解W和Hi 啊????
                     

作者: 被爱拥抱    时间: 2011-7-8 10:19
网上看看吧
作者: 光宇准    时间: 2011-7-14 15:37
我也是来找资源的。。。。。。。


作者: 忠武穆    时间: 2011-7-30 09:26
没有看懂!!!
作者: 海豚@心    时间: 2011-7-30 19:45
有难度啊啊啊啊啊
作者: yuanjunjie    时间: 2011-8-1 10:52

作者: zhangjichang    时间: 2011-8-13 00:45
这是我做的,试试行不,不行我再改

熵权法.rar

727 Bytes, 下载次数: 42, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]

matlab 熵值法


作者: vivid3w    时间: 2011-8-15 10:24

作者: jjc616    时间: 2011-8-15 16:14
zhangjichang 发表于 2011-8-13 00:45
这是我做的,试试行不,不行我再改

你中间一个函数没写,就是biaozhun函数
作者: zhangjichang    时间: 2011-8-15 21:57
jjc616 发表于 2011-8-15 16:14
你中间一个函数没写,就是biaozhun函数

哦,果然!发错文件了

熵权法.rar

835 Bytes, 下载次数: 144, 下载积分: 体力 -2 点

熵权法


作者: Kevin_Hsu    时间: 2011-8-17 09:23
bibiibikjkj
作者: wangtarry    时间: 2011-8-20 16:03
m=input('最终确定的指标个数m=')
n=input('物流备选地址的个数n=')
r=rand(n,m) % 随机产生一个评价矩阵
for i=1:m
    R(:,i)=r(:,i)./sum(r(:,i));
end    %  对矩阵进行归一化处理
for j=1:m
    e(j)=-sum(R(:,j).*log(R(:,j)))./(log(n));
end %计算熵值
e
g=1-e % 计算偏差度
   
    w=g./sum(g)% 计算熵权值
作者: crystal9    时间: 2011-8-21 18:05
灰常感谢啦嘿嘿

作者: Megmin    时间: 2011-8-22 22:22
楼主 怎么会是虚数啊!

各国综合得分

s =

   0.0274 - 0.0019i
   0.0793 + 0.0064i
   0.0786 + 0.0061i
   0.0436 + 0.0004i
   0.0491 + 0.0014i
   0.0159 - 0.0032i
  -0.0031 - 0.0060i
   0.0393 + 0.0003i
  -0.0074 - 0.0064i
   0.0223 - 0.0022i
   0.0736 + 0.0063i
   0.0277 - 0.0013i
   0.0132 - 0.0036i
   0.0743 + 0.0070i
   0.0789 + 0.0075i
   0.0184 - 0.0042i
   0.0614 + 0.0001i
   0.0081 - 0.0084i
   0.0713 + 0.0014i
   0.0325 - 0.0053i
   0.0982 + 0.0048i
   0.0973 + 0.0007i
作者: 互惠    时间: 2011-8-23 16:22
太棒了
作者: 互惠    时间: 2011-8-23 16:39
我输入一个矩阵,得出很多NaN的结果
作者: /wx    时间: 2011-8-24 12:59

作者: ouran1    时间: 2011-9-1 10:28

作者: techerw    时间: 2011-9-1 11:43
现在已经有网页显示数学公式图形的技术了呀——
楼主其实不必这样描述的。这样描述起来,看着实在太费劲了。

可以请版主参考一下“数苑网”,人家那里,数学公式可以直接显示和输入的。


作者: XZQNapoleon    时间: 2011-9-1 14:29
顶。。。。。。
作者: noboday    时间: 2011-9-11 10:23
怎么下载下来啊,我体力值也减掉了,但是不能下载,提示没有权限?
作者: sd215    时间: 2011-9-20 08:09
我也是来找资源的
作者: shuxuezaozhuang    时间: 2011-9-23 15:12
找资料修改一下!!
作者: ◇青梅煮酒◇    时间: 2012-2-16 17:19
支持啊
作者: 寒木流水    时间: 2012-2-22 14:21
谢谢了,哈哈哈
作者: jieyu    时间: 2012-3-15 09:52
怎么可以发帖
作者: luhongjuan    时间: 2012-3-18 22:52
怎么购买了,还说没权限下载呢?到底是怎么回事?
作者: 3109008289    时间: 2012-4-7 22:06
这个行了没有?
作者: jool001    时间: 2012-5-8 17:34
没权限啊···
作者: 0xvirtual    时间: 2012-5-15 07:49
来求教         
作者: 谢凌风    时间: 2012-8-12 21:44
好的,有用。
作者: X.w.j.拽.    时间: 2012-8-13 17:41

作者: 沧海浮萍    时间: 2012-9-5 16:56
不过看了大家的评论,怎么觉得代码还是有问题呢
作者: zhenc    时间: 2012-9-6 20:15

作者: 加拿大    时间: 2012-9-7 19:49

作者: hock    时间: 2012-12-8 13:26
也是来找资源的
作者: 1667156702    时间: 2013-2-5 23:15
请问有复数怎么解决?

作者: 0且行    时间: 2013-5-19 13:42
模糊决策方法:function fuzzy4
clear,clc
m=input('请输入目标数:');
n=input('请输入决策方案数:');
a=zeros(m,n);
while 1
b=input('请输入特征量矩阵:');
[s,t]=size(b);
 if s==m&t==n, break, end
  disp('输入错误!请核查!!')
end
r=zeros(m,n);
bmax=zeros(m,1);
bmin=zeros(m,1);
disp('请依次选择目标的类型:1-越大越优;0-越小越优:')
for k=1:m
disp('目标:'),disp(k)
o(k)=input('类型:');
if o(k)==1
   bmax(k)=max(b(k,);  %求特征量矩阵第一行的最大元
   r(k,=b(k,/bmax(k);
else if o(k)==0
   bmin(k)=min(b(k,);   %求特征量矩阵第一行的最小元
   r(k,=(b(k,/bmin(k)).^ (-1);
else
   error('选择错误!')
end
end
end
disp('隶属度矩阵为:'),r
disp('系统的优向量为:')
g=ones(m,1)
disp('系统的次向量为:')
for k=1:m
c(k)=min(r(k,);
end
b=c(
w=input('请输入评价指标的权重向量:')
p=input('请选择距离:1-为海明距离;2-欧氏距离:')
x=zeros(1,n);  %初始化
y=zeros(1,n);
for j=1:n
 for i=1:m
  x(j)=x(j)+(w(i)*abs(r(i,j)-g(i)))^ p;
   y(j)=y(j)+(w(i)*abs(r(i,j)-b(i)))^ p;
end
  z(j)=1+(x(j)/y(j)) (2/p);
v(j)=1/z(j);
end
disp(v(')
u=sort(v)  %将向量v的元素按递增排序
disp('方案的优先顺序为:')
for k=n:-1:1  %将向量u的元素从大到小
for l=1:n  %逐个与向量v的每个元素比较,
  if u(k)==v(l)  %依次找出u中每个元素在V中的位置
   disp(l)  %并输出,即为方案的优先顺序
end
end
end
作者: wangkai2013    时间: 2013-7-14 15:06
%层次分析法的matlab程序
作者: wangkai2013    时间: 2013-7-14 15:09
%层次分析法的matlab程序
作者: 小动车    时间: 2013-8-23 16:08
下载学习一下
作者: 打酱油三人组    时间: 2013-8-25 15:07
回复都是大神啊
作者: wjtcwt99    时间: 2013-9-12 13:07
看不懂!!!!!!!!!!!!!
作者: 刘栋VS    时间: 2013-9-12 16:34
下载来试试
作者: 西电数模爱好者    时间: 2014-2-6 15:07
熵值取权法
作者: zzx6155    时间: 2014-8-26 16:04
昨天刚学了这个东西
作者: 腐姬呀    时间: 2014-8-26 21:09
不懂,自己改下?


function shang(x)
[n,m]=size(x);
k=1/log(n);
X=zeros(n,m);
for j=1:m
    for i=1:n
  c=sort(x(:,j));
  big=x(n,j);
  small=x(1,j);
  X(i,j)=(x(i,j)-small)/(big-small)+1;
    end
end
p=[];
for j=1:m
    th=0;
    for t=(X(:,1))'
       th=th+t;
    end
    Ph=X(:,j)/th;
    p=[p Ph];
end
e=[];
for j=1:m
    eg=0;
    for i=1:n
        eh=-k*p(i,j)*log(p(i,j));
        eg=eg+eh;
    end
    e=[e,eg];
end
E=0;
for j=1:m
    E=E+e(j);
end
g=[];
for j=1:m
    gh=(1-e(j))/(m-E);
    g=[g,gh];
end
Eh=0;
for nh=g
   Eh=Eh+nh;
end
w=[];
for j=1:m
    wh=g(j)/Eh;
    w=[w,wh];
end
s=[];
for i=1:n
    sh=w(i)*p(i,;
    shen=0;
    for she=sh
        shen=shen+she;
    end
        s=[s ,shen];
end
作者: YJ7    时间: 2018-5-1 02:22
好有用啊!!!!!!!!!!!!!!!!





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5