$title LogMIP User's Manual Example 1a - Job Scheduling (LOGMIP1A,SEQ=332)
$onText
Three jobs (A,B,C) must be executed sequentially in three steps, but
not all jobs require all the stages. The objective is to obtain the
sequence of tasks which minimizes the completion time. Once a job has
started it cannot be interrupted. The objective is to obtain the
sequence of task, which minimizes the completion time.
Ref: Raman & Grossmann, Comp. & Chem. Eng., 18, 7, p.563-578, 1994.
Aldo Vecchietti, LogMIP User's Manual, 2007
http://www.logmip.ceride.gov.ar/files/pdfs/logmip_manual.pdf
Keywords: extended mathematical programming, disjunctive programming,
job scheduling, execution sequence
$offText
Set
I / 1*6 /
J / A, B, C /;
Positive Variable X(J), T;
Variable Z;
Equation equat1, equat2, equat3, equat4, equat5, equat6, equat7, equat8, equat9, OBJECTIVE;
equat1.. T =g= X('A') + 8;
equat2.. T =g= X('B') + 5;
equat3.. T =g= X('C') + 6;
equat4.. X('A') - X('C') =l= -5;
equat5.. X('C') - X('A') =l= -2;
equat6.. X('B') - X('C') =l= -1;
equat7.. X('C') - X('B') =l= -6;
equat8.. X('A') - X('B') =l= -5;
equat9.. X('B') - X('A') =l= 0;
OBJECTIVE.. Z =e= T;
Model PEQUE1 / all /;
X.up(J) = 20;
$onEcho > "%LM.INFO%"
disjunction bigm 25 * equat4 else equat5
disjunction bigm 26 * equat6 else equat7
disjunction bigm 25 * equat8 else equat9
* optional, if not set LOGMIP will find the modeltype suitable
modeltype mip
$offEcho
option emp = logmip;
solve PEQUE1 using emp minimizing Z;