这是一本lingo教材里给出的经典面试问题的的lingo程序,我试过了可以运行,但是理解不了其中的 [order]x(i,j)+t(i,j)<x(i,j+1)) 和[sort1] x(i,j)+t(i,j)- x(k,j)<max*Y(i,k)) ?请高人指点下,谢谢!程序如下:
model: Title 面试问题; sets: person/@file(paperfile2.ldt)/;!被面试者集合; stage/@file(paperfile2.ldt)/;!面试阶段集合; pxs(person,stage):T,x;!面试所需要的时间、面试开始时间; pxp(person,person)|&1#lt# &2:Y;!Y(i,k)=1:k在i前,0:否则; endsets data: T=@file(paperfile2.ldt); enddata [obj]min=maxT; Max>=@max(pxs(i,j)| j #eq# @size(stage):x(i,j)+t(i,j)); !面试的最后结束时间; @for(pxs(i,j) | j #lt# @size(stage):[order]x(i,j)+t(i,j)<x(i,j+1));!只有参加完前一阶段的面试才能进入下一个阶段; !同一时间只能面试一个同学; @for(stage(j): @for(pxp(i,k):[sort1] x(i,j)+t(i,j)- x(k,j)<max*Y(i,k)); @for(pxp(i,k):[sort2] x(k,j)+t(k,j)- x(i,j)<max*(1-Y(i,k))); ); @for(pxp: @bin(y)); End
|