数学建模社区-数学中国

标题: lingo如何定义单个变量? [打印本页]

作者: WonderForYou    时间: 2009-8-18 16:08
标题: lingo如何定义单个变量?
lingo如何定义单个变量?在
sets:

endsets
中应该如何定义?
作者: firstboy0513    时间: 2009-8-18 16:38
lingo如何定义单个变量不在sets段里设置,只要在约束条件中写就可以了。
作者: WonderForYou    时间: 2009-8-18 17:31
sets:
week/1..4/:x,s,s1,c,t,r;
endsets
data:
x=15 40 75 100;
s1=30 40 45 20;
c=5.0 5.1 5.4 5.5;
enddata
min=@sum(week(i):t(i)*c(i))+@sum(week(i):r(i)*0.2);
p<=4;
p>=1;
@gin(p);
s(p)=s1(p)-15;
@for(week(i)|i#gt#p:s(i)=s1(i)+5);
@for(week(i):t(i)<=s(i));
@for(week(i)|i#gt#1:r(i)=t(i)+r(i-1)-(x(i)-x(i-1)));
r(1)=t(1)-x(1);
end

上面那个程序我把p改成一个常数就可以运行了,为什么不对?
作者: minedoc    时间: 2009-8-18 18:35
学习..........
作者: lyg1234    时间: 2009-8-21 23:42
本帖最后由 lyg1234 于 2009-8-21 23:43 编辑

(1)单个变量无需在集中定义。
(2)你所补上的那个程序中p不是索引变量,从而
s(p)=s1(p)-15;
@for(week(i)|i#gt#p:s(i)=s1(i)+5);
这两句都是错误的。
可将你整个程序改正如下:
model:
sets:
week/1..4/:x,s,s1,c,t,r,w;
endsets
data:
x=15 40 75 100;
s1=30 40 45 20;
c=5.0 5.1 5.4 5.5;
enddata
min=@sum(week(i):t(i)*c(i))+@sum(week(i):r(i)*0.2);
s(1)=S1(1)-15*w(1);
@for(week(i)|i#GT#1:s(i)=s1(i)-15*w(i)+5*@sum(week(j)|j#LT#i:w(j)));
@sum(week:w)<1;
@for(week:bin(w));

@for(week(i):t(i)<=s(i));
@for(week(i)|i#gt#1:r(i)=t(i)+r(i-1)-(x(i)-x(i-1)));
r(1)=t(1)-x(1);
end




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