KGlobalCardinalityConstraint¶
-
class KGlobalCardinalityConstraint : public KConstraint¶
This class implements a Global Cardinality Constraint.
A GCC (Global Cardinality Constraint) over a set of variables is defined by three arrays called values, lowerBound, and upperBound. The constraint is satisfied if and only if the number of variables of the given set which are assigned to values[i] is greater or equal to lowerBound[i], and lower or equal to upperBound[i] for all i, and if no variable of the given set is assigned to a value which does not belong to values.
Posting a KGlobalCardinalityConstraint to a problem is equivalent, from a modelisation point of view, to posting two instances of KOccurence for each value. But this is absolutely not equivalent from a propagation point of view : GCC acquires a far better propagation, using the Regin algorithm.
Example. A group of tourists have to be transported from a point to another one, using a fleet of buses. The objective is to find the assignment which maximize a satisfaction of tourists, depending of their affinities. The bus capacity constraint can me modelized by the following code :
Bus [] fleet = // something ; Tourist [] tourists = // something ; KIntVarArray assignment = new KIntVarArray (problem, tourists.length, 0, fleet.length-1, "TouristBusesAssignment"); int [] capacity = new int [fleet.length]; // Capacities of the buses for (int i=0; i < fleet.length; i++) capacity[i] = fleet[i].capacity; KGlobalCardinalityConstraint gcc = new KGlobalCardinalityConstraint ("Buses Capacity constraint", assignment.getVars(), capacity);
- See
KCompleteAllDifferent KOccurence
Public Functions
-
KGlobalCardinalityConstraint(const char *name, KIntVarArray &vars, const KIntArray &vals, const KIntArray &low, const KIntArray &upp, int k)¶
Builds a GCC
- Parameters
name – The name of the constraint
vars – The set of variables involved by the GCC
vals – The set of values involved by the GCC
low – The minimum number of variables assigned to each value
upp – The maximum number of variables assigned to each value
k – The number of values. Arrays vals, low, upp, must be of length k.
-
KGlobalCardinalityConstraint(const KGlobalCardinalityConstraint &toCopy)¶
Copy constructor
-
~KGlobalCardinalityConstraint()¶
Destructor.