GAMS [ Home | Support | Sales | Solvers | Documentation | Model Library | Search | Contact Us ]

bchtlbas.gms : Trim Loss Minimization with Heuristic using BCH Facility


The task is to cut out some paper products of different sizes from a
large raw paper roll, in order to meet a customer's order.

References:
Large Model of Type: MINLP    Includes:  bchtlheu.inc
$title Trim Loss Minimization with Heuristic using BCH Facility (BCHTLBAS,SEQ=286) $ONtext The task is to cut out some paper products of different sizes from a large raw paper roll, in order to meet a customer's order. Harjunkoski, I, Application of MINLP Methods on a Scheduling Problem in the Paper Converting Industry. PhD thesis, Abo Akademi University, 1997. Harjunkoski, I, Westerlund, T, Porn, R, and Skrifvars, H, Different Transformations for Solving Non-Convex Trim Loss Problems by MINLP. European Journal of Operational Research 105, 3 (1998), 594-603. $Offtext SET i product roll /1*12/ j pattern number /1*12/; SCALAR Bmax width of entire roll / 2100 / delta maximum loss in pattern / 100 / Nkmax maximum number of knives / 5 /; PARAMETER n(i) number of orders of each product roll / 1 10 2 28 3 48 4 28 5 40 6 30 7 21 8 22 9 8 10 8 11 9 12 8 /; PARAMETER b(i) width of each roll / 1 350.0 2 450.0 3 550.0 4 650.0 5 700.0 6 740.0 7 800.0 8 840.0 9 910.0 10 960.0 11 1010.0 12 1060.0/; PARAMETER mupp(j) upper bound on repeats of pattern j; mupp(j) = smax(i,n(i)); * Unload common data for heuristic execute_unload "trimloss.gdx",i,j,Bmax,delta,Nkmax,n,b,mupp; VARIABLES r(i,j) number of products of type i in pattern j y(j) existence of pattern j m(j) repeats of pattern j objval objective function variable; FREE VARIABLES objval; BINARY VARIABLE y; INTEGER VARIABLE r, m; EQUATIONS f objective function numroll(i) order constraints ensuring sufficient production widthL(j) width lower bound constraint widthU(j) width upper bound constraint rL(j) logical constraint on r sumr(j) logical constraint on r mL(j) logical constraint on m mU(j) logical constraint on m sumbil lower bound on total number of patterns made yy(j) ordering of y variables to reduce degeneracy lmm(j) ordering of m variables to reduce degeneracy ; f.. objval =e= SUM(j, m(j) + ord(j)/10 * y(j)); numroll(i).. SUM(j, m(j) * r(i,j)) =g= n(i); widthL(j).. SUM(i,b(i) * r(i,j)) =g= (Bmax - delta) * y(j); widthU(j).. SUM(i,b(i) * r(i,j)) =l= Bmax * y(j); rL(j).. y(j) =l= SUM(i,r(i,j)); sumr(j).. SUM(i,r(i,j)) =l= Nkmax * y(j); mL(j).. y(j) =l= m(j); mU(j).. m(j) - mupp(j) * y(j) =l= 0; sumbil .. SUM(j, m(j)) =g= max(ceil(sum(i,n(i))/Nkmax), ceil(sum(i,b(i)*n(i))/Bmax))+1; yy(j+1).. y(j+1) =l= y(j); lmm(j+1).. m(j+1) =l= m(j); * Bounds r.UP(i,j) = Nkmax; m.UP(j) = mupp(j); MODEL trimloss /ALL/; $echo userheurcall bchtlheu.inc mip cplex reslim 5> sbb.opt option minlp=sbb; trimloss.optfile=1; SOLVE trimloss USING MINLP MINIMIZING objval;