Sub-problem pre-solving in MiniZinc


Constraint models often describe complicated problems that contain sub-problems that could be solved in sub-models. Although pre-solving these sub-models might improve the performance of the model, manually splitting the model to accommodate the occurrences of these sub-models can be a great inconvenience for the modeler. This thesis introduces an approach to automate the process of solving sub-models and replacing them by constraints that provide more inference, based on the solutions found. An implementation of this approach is provided for the MiniZinc language, and using various examples we show how the strain of the implementation of pre-solving is moved from the modeler to the modeling toolchain.