数学建模社区-数学中国

标题: 求解答,我用lingo计算最小交叉熵的解,老是提示错误,怎么解决? [打印本页]

作者: svanscan    时间: 2013-11-6 17:12
标题: 求解答,我用lingo计算最小交叉熵的解,老是提示错误,怎么解决?
本帖最后由 svanscan 于 2013-11-6 17:12 编辑

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
!目标函数:
[obj]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


file:///C:\Users\lenovo\AppData\Roaming\Tencent\Users\605193618\QQ\WinTemp\RichOle\U)R3W8`~KYA$65%A~QPA6G7.jpg[img=0,1]file:///C:\Users\lenovo\AppData\Roaming\Tencent\Users\605193618\QQ\WinTemp\RichOle\L0OIYB[O6@$12DM)ZFW}1MR.jpg[/img][img=0,1]file:///C:\Users\lenovo\AppData\Roaming\Tencent\Users\605193618\QQ\WinTemp\RichOle\L0OIYB[O6@$12DM)ZFW}1MR.jpg[/img]file:///C:\Users\lenovo\AppData\Roaming\Tencent\Users\605193618\QQ\WinTemp\RichOle\U)R3W8`~KYA$65%A~QPA6G7.jpg
提示错误如下
error code  1017
error text
unexpected jacobian overflow. Contact Lingo Systems for patch availability(1).

作者: wujianjack2    时间: 2013-11-6 18:06
程序中有些错误,改正后可以在LINGO 11上运行,如需软件,可以在这个帖子中下载:
http://www.madio.net/thread-190400-1-1.html
你的这个错误信息经常会出现在LINGO 9的版本中,建议尝试LINGO 10或者LINGO 11。
如果使用默认设置,则提示无可行解,但勾选Global Solver后求解时间过长,我简单试了下没有结果,你不妨检查下模型。
修改后的程序代码下:
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
!目标函数;
[obj]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-6 19:49
wujianjack2 发表于 2013-11-6 18:06
程序中有些错误,改正后可以在LINGO 11上运行,如需软件,可以在这个帖子中下载:
http://www.madio.net/t ...

谢谢啊,但我电脑是32位的,装lingo11,会不会运行不畅

作者: svanscan    时间: 2013-11-6 20:14
wujianjack2 发表于 2013-11-6 18:06
程序中有些错误,改正后可以在LINGO 11上运行,如需软件,可以在这个帖子中下载:
http://www.madio.net/t ...

可是,我用的是别人的数据,他运行出来的最有解不是这样子的,高手这又是为什么
作者: wujianjack2    时间: 2013-11-6 20:38
svanscan 发表于 2013-11-6 19:49
谢谢啊,但我电脑是32位的,装lingo11,会不会运行不畅

   没这回事吧??你试下吧。
作者: wujianjack2    时间: 2013-11-6 20:39
svanscan 发表于 2013-11-6 20:14
可是,我用的是别人的数据,他运行出来的最有解不是这样子的,高手这又是为什么

    你的模型和别人的是一样的么?检查下吧。
作者: svanscan    时间: 2013-11-6 21:26
wujianjack2 发表于 2013-11-6 20:39
你的模型和别人的是一样的么?检查下吧。

哦,是有点不一样,我不知道怎么把我的模型写到这上面,就传到附件里了,还请麻烦你帮我看下,应该怎么改?谢谢。 最小交叉熵数学模型.doc (15.5 KB, 下载次数: 3)

作者: svanscan    时间: 2013-11-8 00:13
wujianjack2 发表于 2013-11-6 20:39
你的模型和别人的是一样的么?检查下吧。

我忘记了一个约束条件,如果我的再加上,所有的元素和为1这样的约束条件,又该怎么改呢,
作者: wujianjack2    时间: 2013-11-8 12:52
   匆匆写了几句,仍无解,可能有哪个地方写错了,你自己看看吧。
MODEL:
SETS:
ASET:AI;  !SIXTEEN BANKS;
BSET:BJ;  !SIXTEEN BANKS;
LINKS(ASET,BSET):XZERO,XSTAR,RATIO_LOG_STAR_ZERO;
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
[OBJ] MIN=@SUM(LINKS(I,J):XSTAR(I,J)*RATIO_LOG_STAR_ZERO(I,J));
@FOR(LINKS(I,J):RATIO_LOG_STAR_ZERO(I,J)=@IF(XSTAR(I,J) #NE# 0 #AND# XZERO(I,J) #NE# 0,@LOG(XSTAR(I,J))-@LOG(XZERO(I,J)),0));
@FOR(BSET(J):@SUM(ASET(I):XSTAR(I,J))=BJ(J));
@FOR(ASET(I):@SUM(BSET(J):XSTAR(I,J))=AI(I));
@FOR(LINKS(I,J)|I #NE# J:XZERO(I,J)=AI(I)*BJ(J));
@FOR(LINKS(I,J)|I #EQ# J:XZERO(I,J)=0);
@SUM(LINKS(I,J):XZERO(I,J)+XSTAR(I,J))=1;
END
作者: svanscan    时间: 2013-11-8 13:12
wujianjack2 发表于 2013-11-8 12:52
匆匆写了几句,仍无解,可能有哪个地方写错了,你自己看看吧。
MODEL:
SETS:

万分感谢呐!!!
作者: svanscan    时间: 2013-11-8 17:01
wujianjack2 发表于 2013-11-8 12:52
匆匆写了几句,仍无解,可能有哪个地方写错了,你自己看看吧。
MODEL:
SETS:

   朋友,附件里是我计算的模型,有些急,还请你费心看一下,指点迷津,到底是哪点出来问题

矩阵模型.doc

25 KB, 下载次数: 7, 下载积分: 体力 -2 点

我要计算的模型


作者: 吴恰恰    时间: 2019-3-21 16:09
遇到和楼主一模一样的问题!!求加qq947823327!万分感谢!





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