@size:
LINGO中的@size()函数用于确定集合中元素的个数。比如你的集合是
注意:在使用size的时候直接在@size()括号里写上集合名就行,不需要写@size(s1(i))中的(i)
s1/a b c d f g /:x;
当调用m=@size(s1)时,它返回的一个数值6,因为s里面有6个元素。
@for:
该函数用来表示线性规划中的约束条件
sets:
r/1..8/:d;
c/1..8/:; !就算没有集合属性也要写":";
link(r,c):x,y; !派生集合;
endsets
@for(r(i):@for(c(j):x(i,j)<=y(i,j))); !可用@for(link:x<=y)代替;
@for(r(i)|i
!"|"表示过滤,即筛选r(i)下标集中i>=2的下标,即/2,3..8/
@sum
该函数用来求和,格式:@sum(setname(i):x(i))
总的例子:
model:
title cutting-stock problem; !给模型起个名字;
sets:
needs/1..4/:length,num;
cuts/1..3/:x;
patterns(needs,cuts):r;
endsets
data:
length = 4 5 6 8;
num = 50 10 20 15;
capacity = 19; !后面用的比较多的常数;
enddata
min = @sum(cuts(i):x(i));
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))<capacity);
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))>capacity-@min(needs:length));
@for(needs(i):@sum(cuts(j):x(j)*r(i,j))>num(i));
@sum(cuts(i):x(i))>26;
@sum(cuts(i):x(i))<31;
@for(cuts(i)|i
@for(cuts:@gin(x)); !每一个x都要是整数;
@for(patterns:@gin(r)); !每一个r都要是整数;
end
如果不足欢迎指正
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)