In the code you used, two jobs will not be able to be processed on the same machine because the machines that can execute the operations of a job are disjoints. So I assume that you have such a constraint at operation level.
Considering a group of operations, if we want to force them to be executed on the same machine, you have to gather
- the common set of machines that these operations can be processed on, say M
- the set of corresponding modes intervals for each machine say A(m, id), where m is the machine and id the mode id
then for each machine m in M, state the following constraints :
presenceOf(A(m,0)) = presenceOf(A(m, id)) for each id > 0
This will force the operations of a same groupr to be processed on the same machine.
------------------------------
Philippe Refalo
IBM ILOG CP Optimizer
------------------------------