我的lingo代码哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/05/17 16:12:22
model:
sets:
i/1,2,3,4,5,6/:costprice;
t/1,2,3,4,5,6,7,8/:numberoftrucks;
links(i,t):use,inventory,deliver;
endsets
data:
costprice=2.03 1.11 1.88 2.52 2.16 2.54;
use=3275 80 1988 4152 1332 2150 1395 869
1154 1091 2855 706 556 2768 2735 1459
50 623 1388 375 313 756 313 0
4265 1669 1864 1785 2027 3065 1625 0
1401 275 275 1650 1650 1948 1113 1938
550 0 0 0 1100 550 0 1100;
enddata
@for (links(m,k): @sum(k:deliver(m,k))>=@sum(k:use(m,k));
@for (links(m,k): @sum(m:deliver(m,k))=numberoftrucks(k)*15000);
@for (links(m,k): @sum(k:deliver(m,k))-@sum(k:use(m,k))=inventory(m,k));
@for (k: numberoftrucks(k)>=0);
@for (k: @gin(numberoftrucks));
@for (links(m,k): deliver(m,k)>=0);
@for (links(m,k): inventory(m,k)>=0);
min = 0.08*@sum(m:@sum(k:0.5*costprice(m)*inventory(m,k-1)+inventory(m,k)));
end
请问我这段建模的代码哪里错了?为什么要是运行错误呢?请高手指点!我献上所有分值!我很急,请好心人帮忙!

你的约束条件和目标函数中的角标和你定义的不一样(m,k和i,t),这给会给软件系统造成混淆,他不知道怎么读你的数。因为我不太明白你的函数,所以不能一点一点跟你改。你可以尝试:
1. 把角标改为一致的。
2.k-1你在数组中没有定义,系统不会读这个数的,我明白你的意思,你是想说由一个循环,但是LINGO不懂,你必须用一个for 循环来表示。对不起,如果不是很直接得回答你的问题。

似乎很明显,你的约束条件肯定有问题。比如说@sum()中集合名字不是你所用的M或者K。i一般用来表示变量,不要犯这个忌讳,可能会被系统识别错误。集合名字你可以改一下嘛。
现在期末考试了,我得复习,你先修改一下,实在不行,再问我。联系方式百度HI