$title Progressive Party Problem -- Full blown model $ontext This model solves the 6 period model. Erwin Kalvelagen, june 2001 original model Id. , jan 2007 minor edits Note: Older versions of Cplex do better than newer ones. Reference: Erwin Kalvelagen, On solving the progressive party problem as a MIP, Computers and Operations Research, Volume 30, Number 11, September 2003 , pp. 1713-1726 (14) $offtext set i 'boat or crew number' /b1*b42/; parameter capacity(i) 'max number of guests' / b1 6, b2 8, b3 12, b4 12, b5 12, b6 12, b7 12, b8 10, b9 10, b10 10, b11 10, b12 10, b13 8, b14 8, b15 8, b16 12, b17 8, b18 8, b19 8, b20 8, b21 8, b22 8, b23 7, b24 7, b25 7, b26 7, b27 7, b28 7, b29 6, b30 6, b31 6, b32 6, b33 6, b34 6, b35 6, b36 6, b37 6, b38 6, b39 9, b40 0, b41 0, b42 0 /; parameter crew(i) 'crew size' / b1 2, b2 2, b3 2, b4 2, b5 4, b6 4, b7 4, b8 1, b9 2, b10 2, b11 2, b12 3, b13 4, b14 2, b15 3, b16 6, b17 2, b18 2, b19 4, b20 2, b21 4, b22 5, b23 4, b24 4, b25 2, b26 2, b27 4, b28 5, b29 2, b30 4, b31 2, b32 2, b33 2, b34 2, b35 2, b36 2, b37 4, b38 5, b39 7, b40 2, b41 3, b42 4 /; parameter guest_cap(i) 'guest_capacity'; guest_cap(i) = max(capacity(i)-crew(i),0); set t 'time slot' /t1*t6/; alias (i,j,ii,jj); alias (t,tt); set nd(i,j) 'off-diagonal'; nd(i,j)$(ord(i)<>ord(j)) = yes; set lti(i,j) 'less-than'; lti(i,j)$(ord(i) cplex.opt heurfreq -1 mipinterval 1 startalg 1 subalg 1 mipemphasis 4 fraccuts -1 $offecho m.optfile=1; solve m using mip minimizing nh; display nh.l,h.l,x.l; * * sanity check * parameter meetcount(j,jj); meetcount(nd(j,jj)) = sum((i,t), x.l(i,j,t)*x.l(i,jj,t)); abort$sum((j,jj)$(meetcount(j,jj) > 1.5),1) "meeting condition is not met";