Hi Fasco
As setup does not behave only as a integer delay, it has to be associated with an interval variable.
I give you an OPL sketch for one machine and n task of setup given by a transition time TD, n tasks all present
tuple pos = ...;
{pos} POS = ...;
dvar interval opers[p in POS] size p.size efficiency f
dvar interval setups[p in POS] efficiency f
dvar interval tasks [p in POS]:
dvar sequence processing opers types (all p in POS) p.type
forall (p in POS) {
endBeforeStart(setups[p], opers[p]);
span(tasks[p], [setups[p], opers[p]]);
lengthOf(setups[p]) = TD[typeOfPrev(processing, opers[p])][p.type];
}
noOverlap(s, TD);
dvar sequence occupation tasks
noOverlap(occupation);
sameSequence(processing, occupation)
------------------------------
Jerome Rogerie
------------------------------
Original Message:
Sent: Sun May 22, 2022 03:36 PM
From: Vasco Ferreira
Subject: Transition times with an intensity function
Hello,
So in my scenario I have a set of 5 machines and I need to have a transition time from each order that is scheduled for the machine.
However, I also needed to apply an intensity function to it , to make sure the delay is in business hours because the machines only work from 9 to 17 and if an order ends at 17, it should wait x hours from 9 the next day.
I thought about adding a task that represents this delay and apply that intensity function to it, but is there any better way to do it?
Thank you in advance!
------------------------------
Vasco Ferreira
------------------------------
#DecisionOptimization