Using engine extensions
Before a model is solved, the optimizer engine extracts
the modeling objects into engine objects. These engine objects contain
the necessary elements for the optimization.
Overview
Engine extensions provide flexibility for writing custom constraints and custom constructive search.
When to use engine extensions
Engine extensions should be used only after determining that the predefined constraints and search strategies do not fit your needs.
Model extraction
CP Optimizer does not work directly on the objects in the model. Instead it creates engine objects corresponding to the different modeling objects of the model, and performs propagation and search on these engine objects. This can be ignored for a normal use of CP Optimizer, but for a more advanced use, which needs the engine extensions API, a little bit more have to be known.
Engine extension API classes
When using the engine extensions API of CP Optimizer, you will need to use the internal engine object classes instead of only the modeling classes. These internal classes are prefixed with Ilc.