Originally posted by: Filipe Costa
Hi all,
Context: I need to schedule orders with different specifications (e.g., dimensions) and types (raw material) on machines.
##############################################################################################
tuple Order{
string id;
string dimensions;
int volume;
}
{Operations} operations = {<mo,ma>| mo in orders, ma in machines,d in dependencies : d.id==mo.id && d.machine==ma.name};
dvar interval transformation[o in operations] optional size ftoi(ceil(o.order.volume/ o.machine.production_rate));
dvar sequence machines_operations[ma in machines] in all(o in operations: ma.name==o.machine.name) transformation[o] types Types;
##########################################
Different orders can have the same type;
How can I model the following constraint: For each sequence machine, the production of a group of orders with dimension X With Type Y with a total volume of Z (sum of the volume of all consecutive orders with dimension X and Type Y) must be followed by the production of a group of orders with Type Y and dimension W where the total volume is equal or higher than the production of the previous group mentioned;
I know apriori the dimensions where this need to happen;
Ex: if this should happen for dimension small-> big
Here´s a feasible sequence:
O1(volume - 2, Type 1, dimension - large), O2(volume - 5, Type 2, dimension - small), O3(volume - 5, Type 2, dimension - small), O4 (volume - 7, Type 2, dimension - big), O5 (volume - 3, Type 2, dimension - big), O6(volume - 5, Type 3, dimension - small), O7 (volume - 8, Type 3, dimension - big);
#DecisionOptimization#OPLusingCPOptimizer