ScheduleHorizon = sum(j in Jobs, t in Tasks) duration[j, t];@\Vlabel{line:back:opl:horizon}@ Activity task[j in Jobs, t in Tasks] (duration[j,t]);@\Vlabel{line:back:opl:task}@ Activity makespan;@\Vlabel{line:back:opl:makespan}@ UnaryResource tool[Machines];@\Vlabel{line:back:opl:resources}@ minimize makespan.end@\Vlabel{line:back:opl:goal}@ subject to { forall (j in Jobs)@\Vlabel{line:back:opl:con2}@ forall (t in 1..nbTasks-1) task[j, t] precedes task[j, t+1]; forall (j in Jobs) @\Vlabel{line:back:opl:con1}@ task[j,nbTasks] precedes makespan; forall (j in Jobs)@\Vlabel{line:back:opl:con3}@ forall (t in Tasks) task[j, t] requires tool[resource[j, t]]; };