Hello Gams Community,
I am using a MIP model for project scheduling. The model is working
well for small problems but is struggling for bigger ones. Actually I
tested the model with 129 jobs and the computation time is already 120
sek. Since for the full practical problem 2000 jobs have to be
scheduled I am more or less sure that it will exceed time limit. I
tried aggressive probing and cutting as well as MIP emphasis 1-3 +
rinsheur but nothing improved the performance. Can anyone help me?
Thanks in advanced.
The model can be seen below:
$Title (Example)
$Ontext
…
$Offtext
Sets
j jobs /
…
/
f (j) final job / P1_Dummy_2, P2_Dummy_2, P3_Dummy_2 /
g (j) start job / P1_Dummy_1, P2_Dummy_1, P3_Dummy_1 /
Alias (i,j);
Set
m modus / …/
r resources /…/
t time index /… /
Alias (t,b)
Set s Sections / …/
;
Set path (i,j) /
…
/ ;
Parameters
c (r) costs per resource
/…/
d (j,m) duration for job from i executed in mode m
/ …
/
k (j,m,r) /…
/
kk (j,m,s) /… /
DD (f) due date /…/
SD (g) Start date /…/
max (s) Max Resource /… / ;
Variables
x(j,m,t) 1 if task j is done in t and executed in m
UK (r) units of resources required
TC Total Costs
binary Variable x;
Equations
cost define objective function
each_job (j) ens. that j is done only in one t
and m
precedence (i,j) ensures the precendence relationship
resource (t,r) prevents resource overuse
max_R (t,s) Space
due_date (f) ensures due date
Start_date (g) Start date
;
cost … TC =e= sum((r), (c (r)*UK (r))) ;
each_job(j) … sum ((m,t),x(j,m,t))=e= 1 ;
precedence (i,j)$path(i,j)… sum ((t,m),x(i,m,t)(ord (t)+
(d(i,m)))) =l= sum ((t,m),x(j,m,t) ord (t)) ;
resource (t,r)… sum {(j,m), k(j,m,r) * sum ((b)$
{[(ord(b)>=ord(t)) and (ord (b)=(ord (t)- d(j,m)+1))]}, x(j,m,b))} =l=
UK(r) ;
max_R (t,s)… sum {(j,m), kk(j,m,s) * sum ((b)$
{[(ord(b)>=ord(t)) and (ord (b)=(ord (t)- d(j,m)+1))]}, x(j,m,b))} =l=
max (s) ;
due_date (f) … sum ((t,m),x(f,m,t)*(ord(t)+d(f,m))) =l= DD (f) ;
Start_date (g) … sum ((t,m),x(g,m,t)*(ord(t))) =g= SD (g);
Model Example /all/ ;
Solve Example using MIP minimize TC
\