Hi,
I'm currently working on an assignment problem with CP-SAT and I would like to know if there is a way of doing some sort of soft-conditioned assignment of tasks to workers. For instance, if we have a worker w1 and tasks t1, t2, t3, t4 and t5, if the worker is assigned task t1, then it's better to assign w1 the task t2 xor t4, but it's not mandatory for him to perform only those tasks, he could end up doing t3 xor t5 if there is no other option -maybe because they are already assigned to other workers-. In this case, all the variables are booleans just to know if w1 performs t1 (or not), t2 (or not), and so on.
I was thinking about using AddBoolOr combined with OnlyEnforceIf since it's not possible to use it with AddBoolXOr, but then it will restrict the possible assignment to t2 or t4 if he's been assigned t1, right? Looking into the docs, I don't know if AddAssumptions could work as I expect.
Do you know a way to model this kind of behavior?
Thanks in advance,
Borja.