Je suis en train d'ajouter un Endbeforestartconstraint à mon contrained problème de programmation. Cependant, j'ai un message d'erreur disant que ma fin beforestart n'est pas de type tableau. Je ne comprends pas ce que j'ai presque copié la contrainte et les données de la sched_seq exemple dans CPLEX, j'ai seulement changé les nombres entiers.
Ce que j'essaie de le faire avec la contrainte, c'est que les tâches 3 et de la tâche 1 sera effectuée avant que la tâche 2 va commencer.
Comment je peux résoudre le tableau d'erreur pour que cette contrainte?
Veuillez trouver ci-dessous les parties pertinentes de mon code
tuple Precedence {int pre;int post;};
{Precedence} Precedences = {<3,2>,<1,2>};
dvar interval task[j in Jobs] in release..due;
dvar interval opttask[j in Jobs][m in Machines] optional size duration[j][m];
dvar sequence tool[m in Machines] in all(j in Jobs) opttask[j][m]
dexpr int makespan = max(j in Jobs, m in Machines)(endOf(opttask[j][m]));
minimize makespan;
subject to {
// Each job needs one unary resource of the alternative set s (28)
forall(j in Jobs){
alternative(task[j], all(m in Machines) opttask[j][m]);
}
// No overlap on machines
forall(j in Jobs)
forall(p in Precedences)
endBeforeStart(opttask[j][p.pre],opttask[j][p.post]);
forall(m in Machines){
noOverlap(tool[m],transitionTimes);
}
};
execute {
writeln(task);
dat.
nbMachines = 2;
nbJobs = 3;
duration = [
[5,6],
[4,4],
[5,8]
];
release = 1;
due = 30;