svanscan 发表于 2013-11-8 16:54

使用交叉熵最小化方法求解矩阵,求哪位lingo高手或matlab高手帮忙

各位大神,我想要计算一个16*16的矩阵,本来想用lingo计算,在网上找了一个类似的程序但是运行出来,结过出错,希望给位走过路过的朋友,给予指点,用lingo 或者是matlab都可以,谢谢了,有些急。有关模型描述包括目标函数和约束条件都在附件里面。lingo的运算程序如下:
model:!16家银行;sets:
A/1..16/:ai;
B/1..16/:bj;
links(A,B):X,X0;
!X1=X_*;
endsets
data:
ai=0.049105298,0.19706518,0.079929381,0.040404067,0.00307861,0.029535259,0.030970463,0.081245849,0.053001907,0.122173474,0.000229636,0.067807575,0.359324615,0.051351782,0.004097295,0.008038271;
bj=0.06029401,0.017726814,0.034382538,0.041643595,0.006514545,0.075761924,0.011835925,0.017374484,0.11483671,0.17727039,0.029125245,0.127436517,0.242528843,0.025613802,0.002559618,0.015095039;
enddata
!目标函数:
min=@sum(links(i,j)/i#ne#j:X(i,j)*(@log(X(i,j))-@log(X0(i,j))));
aa=@sum(A(i):ai(i));
bb=@sum(b(j):bj(j));
!约束条件;
@for(A(i):@sum(B(j):X(i,j))=X(i,i)+ai(i););
@for(B(j):@sum(A(i):X(i,j))=X(j,j)+bj(j););
@for(links(i,j):X0(i,j)=@if(i#EQ#j,0,ai(i)*bj(j)));
end



svanscan 发表于 2013-11-8 16:58

lingo运行程序中的约束条件应该为:
!约束条件;
@for(A(i):@sum(B(j):X(i,j))=X(i,i)+ai(i););
@for(B(j):@sum(A(i):X(i,j))=X(j,j)+bj(j););
@for(links(i,j):X0(i,j)=@if(i#EQ#j,0,ai(i)*bj(j)));
end

那个愤怒的表情是: @

yankeke 发表于 2013-11-9 17:37


什么事 啊不懂。。。。。。。。。。。。。。。

hellowen 发表于 2013-11-9 18:59

~\(≧▽≦)/~

dingxuemeiwang 发表于 2013-11-15 20:27

看看。。。

PL6160082 发表于 2013-12-9 15:48

谢谢楼主  不明觉厉

lxfdjt158 发表于 2015-1-25 15:24

希望给个联系方式,本人论文有涉及到,可是不懂,都快抓狂了。希望前辈指导一下,联系方式2385676071.电话18382425941希望尽快能联系到前辈

lxfdjt158 发表于 2015-1-25 15:37

求指导。本人也想学习

lxfdjt158 发表于 2015-1-25 15:40

我现在也在做这个研究,能否指导一下
我还是没能用lingo
页: [1]
查看完整版本: 使用交叉熵最小化方法求解矩阵,求哪位lingo高手或matlab高手帮忙