数学建模社区-数学中国

标题: 求大神指点代码错误。。。在线等。。。 [打印本页]

作者: waslalal    时间: 2013-7-3 08:59
标题: 求大神指点代码错误。。。在线等。。。
本帖最后由 waslalal 于 2013-7-3 13:21 编辑

sets:
C/1..1000/:x,A,B,D,E;



endsets

data:
A=@OLE('C:\shuju.xls',A);
B=@OLE('C:\shuju.xls',B);
D=@OLE('C:\shuju.xls',D);
E=@OLE('C:\shuju.xls',E);



enddata

max=@sum(C(I):A(I)*x(I));
@for(C(I) : @sum(C(I):B(I)*x(I))=10000);
@for(C(I) : @sum(C(I) : (E(I)-0.498*D(I))*X(I))=0);
@for(C : @bin(x));
end

shuju.xls

1.01 MB, 下载次数: 3, 下载积分: 体力 -2 点

数据文件


作者: waslalal    时间: 2013-7-3 09:01
enddata后面应该是这样的

max=@sum(C(I) : A(I)*x(I));
@for(C(I) : @sum(C(I):B(I)*x(I))=10000);
@for(C(I) : @sum(C(I) : (E(I)-0.498*D(I))*X(I))=0);
@for(C : @bin(x));
end

作者: madio    时间: 2013-7-3 10:58
提示了什么错误,没有你的数据文件可用
作者: waslalal    时间: 2013-7-3 13:23
madio 发表于 2013-7-3 10:58
提示了什么错误,没有你的数据文件可用

数据文件我放上去了,里面数据引用的设置已经弄好了的。。。大神你再看看呗~~
作者: wujianjack2    时间: 2013-7-3 23:32
楼主你好!我是一名LINGO初学者,刚看了您的问题,尝试计算了下。
如果不去掉对X为整数的限制,则提示说B(I)*X(I)=10000的约束太强,请放松约束;
如果去掉对X为整数的限制,则提示无可行解。
所以,我想您是不是可以考虑修改下模型,再试试吧!我对这个问题也想了解了解,新手不太懂,请您指点下。

作者: waslalal    时间: 2013-7-4 09:43
wujianjack2 发表于 2013-7-3 23:32
楼主你好!我是一名LINGO初学者,刚看了您的问题,尝试计算了下。
如果不去掉对X为整数的限制,则提示说B( ...

我也是初学者。。正在尝试修改模型,昨天改了一晚上,也尝试用matlab去解,还是一无所获。。。。
o(︶︿︶)o 唉。。。。继续改吧。。。
作者: wujianjack2    时间: 2013-7-4 12:08
我再看了下您问题,发现两个疑惑,一是男粉丝数不是整数,二是用户影响力这一栏似乎有数据缺失。您再看看吧!您的这个问题很好,可我目前解决不了,抱歉。
作者: waslalal    时间: 2013-7-4 20:02
wujianjack2 发表于 2013-7-4 12:08
我再看了下您问题,发现两个疑惑,一是男粉丝数不是整数,二是用户影响力这一栏似乎有数据缺失。您再看看吧 ...

谢谢指出,由于给出的男粉丝比例是经过四舍五入的,所以计算得到的男粉丝数也不是整数,然后用户影响力没有缺失啊,有些确实是0...
作者: madio    时间: 2013-7-5 06:04
这里注意一下,并不是Lingo不行,而是你的问题太复杂了,尤其是等式约束对于优化求解上更是困难,一般的软件很难求解,你把@for(C(I) : @sum(C(I):B(I)*x(I))=10000)中的=号改为<=就可以顺利求解出来,而且得到的就是你所要的解,这是一个建模的要求,一定要能求解才行。
作者: qlb061    时间: 2013-7-5 12:28
显然你的集合有1000个成员,所以:
第一个@for约束生产了1000个等式约束;
同样,第二个@for约束也生产了1000个约束;
即使不考虑变量类型约束,你的方程个数已经达到2000个。
而求解1000个自由变量的线性方程组只需要1000个独立的方程即可。
显然,你提供了太多的等式约束,原问题无解!
作者: qlb061    时间: 2013-7-5 12:32
显然,你的集合成员个数为1000;但是,第一个@for约束生成了1000个等式约束,同样,第二个@for也生成了1000个等式约束。而求解有1000个自由变量的线性方程组只需要1000个线性不相关的方程组即可。
显然,你的模型提供了太多的等式约束,原问题不可能有解!
作者: waslalal    时间: 2013-7-6 11:28
madio 发表于 2013-7-5 06:04
这里注意一下,并不是Lingo不行,而是你的问题太复杂了,尤其是等式约束对于优化求解上更是困难,一般的软件 ...

谢谢指出。。。昨天已经通过matlab解出了
作者: waslalal    时间: 2013-7-6 11:31
qlb061 发表于 2013-7-5 12:28
显然你的集合有1000个成员,所以:
第一个@for约束生产了1000个等式约束;
同样,第二个@for约束也生产了 ...

嗯。谢谢指出。。。已求出结果




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