Getting Started with Constraint Patterns

In the following, we will give instructions on how to get started with using constraint patterns. In the scheduling setting, each problem domain has a so-called machine environment which describes the layout of the machines (or operations if no machines exist). A pattern exists corresponding to this machine environment.

Further, several so-called processing characteristics may occur in a problem, which describe other constraints on the processing. A pattern exists for each common processing characteristic. Once machine environment and processing characteristics and their corresponding constraint patterns occuring in the problem have been identified, the constraint model can be assembled.

To assemble the model, one needs to decide which constraint language to use. Currently, pattern implementations are given for MiniZinc, which connects to a variety of different solvers, and OPL for the IBM CPLEX CP solver. For each pattern, a file containing constraints and potentially a file containing variables exists. The implementation of the machine environment patterns depends solely on the modelling language, while the implementation of the processing characteristic patterns also depend on the machine environment occuring in the problem.

Once the correct files containing the variables and constraints for the patterns occuring in the problem have been identified, they can easily be assembled by copying them into one of the following model templates:
Model Template for MiniZinc IDE
Model Template for OPL IBM CPLEX CP

Once this is done, one simply has to add an objective function to complete the model.