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

Description

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

  • Harjunkoski, I, Application of MINLP Methods on a Scheduling Problem in the Paper Converting Industry. PhD thesis, Abo Akademi University, 1997.
  • Floudas, C A, Pardalos, P M, Adjiman, C S, Esposito, W R, Gumus, Z H, Harding, S T, Klepeis, J L, Meyer, C A, and Schweiger, C A, Handbook of Test Problems in Local and Global Optimization. Kluwer, Nonconvex Optimization and Its Applications, 1999.
  • Harjunkoski, I, Westerlund, T, Pörn, 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.

Large Model of Type : MINLP


Category : GAMS Model library


Main file : bchtlbas.gms   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;