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:
- 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 Academic Publishers, 1999.
- 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.
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;