lingo程序:
Model:
Sets:dy/1,2,3,4/;
yb/1,2,3/;
xb(dy,yb):t,x;
xz(dy,dy):y;
endsetsdata:t=13,15,20,
10,20,18,
20,16,10,
8,10,15;
enddata
r=@smax(t(1,3)+x(1,3),t(2,3)+x(2,3),t(3,3)+x(3,3),t(4,3)+x(4,3));
min=r;
@for(dy(i):x(i,1)+t(i,1)<x(i,2));
@for(dy(i):x(i,2)+t(i,2)<x(i,3));
@for(dy(i):x(i,1)+t(i,1)<x(i,3));
@for(dy(i):@for(yb(j):@for(yb(k)|i#gt#k:x(i,j)>(x(k,j)+t(k,j))*y(i,k))));
@for(dy(i):@for(yb(j):x(i,j)>(x(4,j)+t(4,j))*y(i,4)));!补充上面k=4的情况;
@for(dy(i):@for(yb(j):@for(yb(k)|i#gt#k:x(k,j)>(x(i,j)+t(i,j))*(1-y(i,k)))));
@for(xz(i,j):@bin(y(i,j)));
!@for(dy(i):@sum(yb(j):y(i,j))=6);!@for(yb(i):y(i,i)=0);
end