jit.gms : Design of Just-in-Time Flowshops
This just-in-time flowshop problem involves P products and
S stages. Each stage contains identical equipment performing the
same type of operation on different products. The objective is
to minimize the total equipment related cost.
References:
- Gutierrez, R A, and Sahinidis, N, A Lagrangian Approach to the Pooling Problem. Interantional J Production Research 34 (1996), 797-818.
- Gunasekaran, A, Goyal, S K, Martikainen T, and Yli-Olli, P, Equipment Selection Problems in just-in-time Manufacturing Systems. Journal of the Operational Research Society 44 (1993), 345-353.
Small Model of Type: MINLP
$title Design of Just-in-Time Flowshops (JIT,SEQ=250)
$ontext
This just-in-time flowshop problem involves P products and
S stages. Each stage contains identical equipment performing the
same type of operation on different products. The objective is
to minimize the total equipment related cost.
Gunasekaran, A, Goyal, S K, Martikainen T, and Yli-Olli, P,
Equipment Selection Problems in just-in-time Manufacturing Systems.
Journal of the Operational Research Society 44 (1993), 345-353
Gutierrez, R A, and Sahinidis, N, A
Lagrangian Approach to the Pooling Problem.
Interantional J Production Research 34 (1996), 797-818.
$offtext
sets p products
s stages
parameter alpha(p,s) processing cost
beta(p,s) production inbalance cost
delta(p) demand
mu(s) machine cost
M maximum amount of money for investment
pi(p,s) priority weight
sigma(p,s) product cycles
q(p,s) batch size
tau(p,s) processing time
omega(s) resource requirements
bigomega max resource available for all machines
variables n(s) number of machines
pr(p,s) production rate
dpr(p,s) absolute value differences
obj;
integer variable n;
equations objdef, prdef(p,s), budget, resource, abs1, abs2;
objdef.. obj =e= Sum((p,s), alpha(p,s)*sigma(p,s)/pr(p,s))
+ sum((p,s)$(ord(s) 1e-10) 'weight do not add to 1',pi;
option optcr=0;
loop(c,
q(p,s) = dat('q',p,s) * multq(c);
mu(s) = mubase(s) * multmu(c);
tau(p,s) = q(p,s)*(dat('tau',p,s)-dat('kappa',p,s)*1e-5*mu(s));
sigma(p,s) = delta(p)/q(p,s);
pr.lo(p,s) = pi(p,s)/tau(p,s);
solve jit using minlp min obj;
option limrow=0,limcol=0,solprint=off;
rep(c,s) = n.l(s);
rep(c,'ModelStat') = jit.modelstat;
if (jit.modelstat = %modelstat.Optimal% or
jit.modelstat = %modelstat.IntegerSolution%,
rep(c,'Processing') = Sum((p,s), alpha(p,s)*sigma(p,s)/pr.l(p,s));
rep(c,'Imbalance') = sum((p,s)$(ord(s)