4.1. Differences from the 2000 report
This section summarises the main differences with the SICS reportΒ [Beldiceanu00] as well as of the corresponding articleΒ [BeldiceanuR00]. The main differences are listed below:
We have both simplified and extended the way to generate the vertices of the initial graph and we have introduced a new way of defining set of vertices. We have also removed the set of vertices generator since it cannot in general be evaluated in polynomial time. Therefore, we have modified the description of the constraints , , , , , ,
We have introduced the new arc generators and , which allow for specifying an -ary constraint for which is not fixed.
are examples of global constraints that use these arc generators in order to generate a set of sliding
In addition to traditional domain variables we have introduced float, set and multiset variables as well as several global constraints mentioning float and set variables (see for instance the Β [LeHuedeGrabischLabreucheSaveant06] and the constraints). This decision was initially motivated by the fact that several constraint systems and articles mention global constraints dealing with these types of variables. Later on, we realised that set variables also greatly simplify the interface of existing global constraints. This was especially true for those global constraints that explicitly deal with a graph, like or . In this context, using a set variable for catching the successors of a vertex is quite natural. This is especially true when a vertex of the final graph can have more than one successor since it allows for avoiding a lot of 0-1 variables.
We have introduced the possibility of using more than one graph constraint for defining a given global constraint (see for instance the or the constraints). Therefore we have removed the notion of dual graph, which was initially introduced in the original report. In this context, we now use two graph constraints (see for instance ).
On the one hand, we have introduced the following new graph parameters:
On the other hand, we have removed the following graph parameters:
,
,
,
,
.
We have introduced an iterator over the items of a collection in order to specify in a generic way a set of similar elementary constraints or a set of similar graph properties. This was required for describing some global constraints such as , or . All these global constraints mention a condition involving some limit depending on the specific values that are actually used. For instance the constraint forces each value to be respectively used at least and at most times. This iterator was also necessary in the context of graph covering constraints where one wants to cover a digraph with some patterns. Each pattern consists of one resource and several tasks. One can now attach specific constraints to the different resources. Both the and the constraints illustrate this point.
We have added some standard existing global constraints that were obviously missing from the previous report. This was for instance the case of the constraint.
In order to make clear the notion of family of global constraints we have computed for each global constraint a signature, which summarises its structure. Each signature was inserted into the index so that one can retrieve all the global constraints sharing the same structure.
We have generalised some existing global constraints. For instance the constraint extends the constraint. Finally we have introduced some novel global constraints like or .
We have defined the rules for specifying arc constraints.