天舒 发表于 2007-8-25 11:08:22

熟悉lingo的高手请帮个忙

05年B题,DVD在线租赁问题,我已编好程序
model:
sets:
x/1..1000/:hyh;
y/1..100/:dvd;
s(x,y):d,A;
endsets

data:
A=@ole('pianaidu.xls','myd');
dvd=@ole('pianaidu.xls','dvdsl');
@ole('pianaidu.xls','jieguo')=d;
enddata



max=@sum(s:d*A) ;

@for(s(i,j):◎bin(d(i,j)));
@for(x(i):
@sum(y(j):d(i,j))<=3;
      @sum(y(j):d(i,j))>=2;
);
@for(y(j):◎sum(x(i):d(i,j))<=dvd(j));

end
程序很简单,但总是出错,由于其中用到的excel表格无法上传,所以恳请哪位高手能留一个E-MAIL信箱,我把文件一起发给您调试一下,谢了!!

qingquan1 发表于 2007-8-25 12:38:17

你把哪个excel表打开没有

天舒 发表于 2007-8-26 11:14:43

打开了,还是出错:'(

qingquan1 发表于 2007-8-26 13:05:10

出错的提示是什么啊:D

天舒 发表于 2007-8-26 13:21:26

lingo里面出错好像都是一个提示,代码1017,unexpected Jacobianover flow.

深蓝世界 发表于 2007-8-26 13:24:08

model:
sets:
x/1..1000/:hyh;
y/1..100/:dvd;
s(x,y):d,A;
endsets
data:
A=@ole('pianaidu.xls','myd');
dvd=@ole('pianaidu.xls','dvdsl');
!@ole('pianaidu.xls','jieguo')=d;不懂你这句是何用意
enddata

max=@sum(s:d*A);
@for(s(i,j):@bin(d(i,j)));
@for(x(i):
@sum(y(j):d(i,j))<=3;
      @sum(y(j):d(i,j))>=2;
);
@for(y(j):@sum(x(i):d(i,j))<=dvd(j));
end
我用10万个0,1区间的随机数模拟了你的结果,现在能运行了你大部分的错误为书写格式上的问题

深蓝世界 发表于 2007-8-26 13:26:28

这个问题和EXCEL数据是否打开没有多大关系,你的题示是假克比行列式跃界,你用的不是有序列号的LINGO8.0吧

天舒 发表于 2007-8-26 13:40:56

我用的是lingo9.0啊
中间的那个就是lingo和excel之间的调用啊

天舒 发表于 2007-8-26 13:45:32

楼上的朋友,能不能再说清楚一点,数据的输入和输出怎么实现呢,我是新手,实在不明白,谢谢了:handshake

深蓝世界 发表于 2007-8-26 14:17:39

你的LINGO9.0是没有序列号的,是不能解如此规模问题的,见意你用LINGO8.0(网上有序列号),你的这句话是何意@ole('pianaidu.xls','jieguo')=d;?d是决策0-1变量,你的用意是否想将数据重新写入EXCEL?至于数据的输入与输出的实现在万保成老师的教程上有说明,教程网上也有得下
页: [1] 2
查看完整版本: 熟悉lingo的高手请帮个忙