Originally posted by: John Cui
Your program should be:
using CP;
int nbJobs = ...;
int nbMchs = ...;
range Jobs = 0..nbJobs;
range Mchs = 0..nbMchs-1;
int arrivalTime[0..nbJobs]=...;
int OpDurations[j in Jobs][m in Mchs] = ...;
dvar int s [j in Jobs][m in Mchs];
dvar int c[j in Jobs][m in Mchs];
dexpr float g[j in Jobs][k in Jobs][m in Mchs]= s[j][m]> s[k][m]?1:0;
execute {
cp.param.FailLimit = 100000;
}
minimize max(j in Jobs, m in Mchs) c[j][m];
subject to {
forall (j in Jobs,m in Mchs)
s[j][m]>=arrivalTime[j];
forall (j,k in Jobs:j!=k,m in Mchs)
s[j][m]>=(s[k][m]+OpDurations[k][m])*g[j][k][m];
forall (j,k in Jobs:j!=k,m in Mchs)
s[k][m]>=(s[j][m]+OpDurations[j][m])*g[j][k][m];
forall (j in Jobs,m in Mchs)
c[j][m]==s[j][m]+OpDurations[j][m];
}
You can not use "j in Jobs", etc in s[j][m]>=(s[k][m]+OpDurations[k][m])*g[j][k][m];
John Cui
#CPLEXOptimizers#DecisionOptimization