I am trying to solve an assignment problem by Constraint Programming (CP). Let us consider a task assignment problem that have $|M|$ tasks and $|N|$ machines, each task has different processing time required on each machine, and each machine has a maximum capacity (number of tasks can be processed). The objective is to assign each task to a single machine with respect to the precedence requirements, such that the overall processing time can be minimized.
To model the assignment decisions, we can use $|M||N|$ binary variables (represent whether a task is assigned to a machine) or $|M|$ integer variables (each has a domain of $[1, |N|]$, represent the machine that each task is assigned to). I am little experienced with CP, but I have read material that says less variable, and more constraints can be beneficial for solving CP. So, I suspect that using integer variables is better.
My questions are:
- How the choice of variable type (binary / integer) impacts the algorithm efficiency?
- Will CP solvers (e.g. OR-Tools) convert integer variables into binary ones automatically, such that there is no difference between binary variables and integer variables?
This question is related to How to choose between high number of binary variables or fewer number of integer (not only 0 and 1) variables in a IP formulation? and Does exchanging integer variables by binary variables strengthen a MIP?, which are in the context of Mathematical Programming, rather than CP.
interval
andsequence
variables in contrast to the $MIP$ formulation. I am not sure if by defining the binary or integer variables directly, the performance may have a considerable difference. $\endgroup$