Originally posted by: Tunemelo
Hello everyone:)
Maybe there is someone dealing with a similar problem..
I want to implement identical parallel machines with the following characteristics:
1. Different products need to be processed through the same sequential production steps
2. At each production step there are identical, parallel machines
3. The processing and transition times depend on the products (not on the machines)
4. Objective: Minimization of processing time
// Allocation of process steps to machines --> I want to allocate one production step to possible several machines (for one product only one should be selected in the solution)
string machine [ps in process_steps] = ...;
// Transition Times
tuple transitiontimes {
key int prod1;
key int prod2;
int time;
};
{transitiontimes} Transitiontimes [machines]=...;
dvar interval products [p in Products] in ReleaseDate [p]..(maxint div 2)-1;
dvar interval itvs [p in Products][ps in process_steps] size Duration [p][ps];
dvar sequence Machines [m in machines] in
all (p in Products, ps in process_steps: machine[ps]==m) itvs[p][ps] types
all (p in Products, ps in process_steps: machine[ps]==m) p;
minimize max (p in Products) endOf (itvs[p]["Last Step"]);
subject to {
forall (m in machines)
noOverlap (Machines[m], Transitiontimes[m],true);
...
};
How can I integrate the optional machine case into the sequence variable?
Thanks a lot :)
#DecisionOptimization#OPLusingCPOptimizer