## Uses of Class
net.sf.cpsolver.ifs.model.Constraint

- Packages that use Constraint
  Package | Description
  --- | ---
  net.sf.cpsolver.coursett.constraint | University Course Timetabling: Constraints.
  net.sf.cpsolver.coursett.model | University Course Timetabling: Model.
  net.sf.cpsolver.exam.model | Examination Timetabling: Model.
  net.sf.cpsolver.ifs.criteria | IFS Criteria.
  net.sf.cpsolver.ifs.example.csp | Random Binary CSP with uniform distribution.
  net.sf.cpsolver.ifs.example.jobshop | JobShop Problem.
  net.sf.cpsolver.ifs.example.rpp | Random Placement Problem.
  net.sf.cpsolver.ifs.example.tt | Simple Timetabling Problem.
  net.sf.cpsolver.ifs.extension | IFS Extensions (conflict-based statistics, maintenance of arc consistency)
  net.sf.cpsolver.ifs.model | IFS Model (description of a problem)
  net.sf.cpsolver.studentsct.constraint | Student Sectioning: Constraints.

- - ### Uses of Constraint in net.sf.cpsolver.coursett.constraint

    Subclasses of Constraint in net.sf.cpsolver.coursett.constraint
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BreakFlexibleConstraint` The Break constraint checks for instructor lunch break or a break in general in between the given classes.
    `class` | `ClassLimitConstraint` Class limit constraint.
    `class` | `DepartmentSpreadConstraint` Departmental ballancing constraint.
    `class` | `DiscouragedRoomConstraint` Discouraged room constraint.
    `class` | `FlexibleConstraint` Flexible constraint.
    `class` | `GroupConstraint` Group constraint.
    `class` | `IgnoreStudentConflictsConstraint` Ignore student conflicts constraint.
    `class` | `InstructorConstraint` Instructor constraint.
    `class` | `JenrlConstraint` Join student enrollment constraint.
    `class` | `MaxBlockFlexibleConstraint` The MaxBlock constraint checks for too big blocks of back-to-back classes of an instructor.
    `class` | `MaxBreaksFlexibleConstraint` The MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
    `class` | `MinimizeNumberOfUsedGroupsOfTime` Minimize number of used groups of time within a set of classes.
    `class` | `MinimizeNumberOfUsedRoomsConstraint` Minimize number of used rooms within the set of classes.
    `class` | `RoomConstraint` Room constraint.
    `class` | `SpreadConstraint` Spread given set of classes in time as much as possible.

  - ### Uses of Constraint in net.sf.cpsolver.coursett.model

    Methods in net.sf.cpsolver.coursett.model that return types with arguments of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `Set<Constraint<Lecture,Placement>>` | Lecture.`getWeakeningConstraints()`

    Methods in net.sf.cpsolver.coursett.model with parameters of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `void` | TimetableModel.`addConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`addContstraint(Constraint<Lecture,Placement> constraint)`
    `void` | OnFlySectioning.`constraintAdded(Constraint<Lecture,Placement> constraint)`
    `void` | OnFlySectioning.`constraintRemoved(Constraint<Lecture,Placement> constraint)`
    `void` | TimetableModel.`removeConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`removeContstraint(Constraint<Lecture,Placement> constraint)`

  - ### Uses of Constraint in net.sf.cpsolver.exam.model

    Subclasses of Constraint in net.sf.cpsolver.exam.model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamDistributionConstraint` Distribution binary constraint.
    `class` | `ExamInstructor` An instructor.
    `class` | `ExamRoom` A room.
    `class` | `ExamStudent` A student.

    Methods in net.sf.cpsolver.exam.model with parameters of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `void` | Exam.`addContstraint(Constraint<Exam,ExamPlacement> constraint)` Adds a constraint.
    `int` | ExamRoom.`compareTo(Constraint<Exam,ExamPlacement> o)` Compare two rooms (by unique id)
    `int` | ExamStudent.`compareTo(Constraint<Exam,ExamPlacement> o)` Compare two students (by student ids)
    `void` | Exam.`removeContstraint(Constraint<Exam,ExamPlacement> constraint)` Removes a constraint.

  - ### Uses of Constraint in net.sf.cpsolver.ifs.criteria

    Methods in net.sf.cpsolver.ifs.criteria with parameters of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `void` | AbstractCriterion.`constraintAdded(Constraint<V,T> constraint)`
    `void` | AbstractCriterion.`constraintRemoved(Constraint<V,T> constraint)`

  - ### Uses of Constraint in net.sf.cpsolver.ifs.example.csp

    Subclasses of Constraint in net.sf.cpsolver.ifs.example.csp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `CSPBinaryConstraint` CSP binary constraint.

  - ### Uses of Constraint in net.sf.cpsolver.ifs.example.jobshop

    Subclasses of Constraint in net.sf.cpsolver.ifs.example.jobshop
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Job` Job constraint.
    `class` | `Machine` Machine constraint.

  - ### Uses of Constraint in net.sf.cpsolver.ifs.example.rpp

    Subclasses of Constraint in net.sf.cpsolver.ifs.example.rpp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ResourceConstraint` Resource constraint (rectangular area where the rectangles are to be placed).

  - ### Uses of Constraint in net.sf.cpsolver.ifs.example.tt

    Subclasses of Constraint in net.sf.cpsolver.ifs.example.tt
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Dependence` Binary dependence between two activities.
    `class` | `Resource` Resource constraint

  - ### Uses of Constraint in net.sf.cpsolver.ifs.extension

    Fields in net.sf.cpsolver.ifs.extension with type parameters of type Constraint
    Modifier and Type | Field and Description
    --- | ---
    `protected List<Constraint<V,T>>` | MacPropagation.`iConstraints` List of constraints on which arc-consistency is to be maintained
    `protected List<Constraint<V,T>>` | MacRevised.`iConstraints` List of constraints on which arc-consistency is to be maintained

    Methods in net.sf.cpsolver.ifs.extension that return Constraint
    Modifier and Type | Method and Description
    --- | ---
    `Constraint<?,T>` | Assignment.`getConstraint()` Returns constraint
    `Constraint<?,T>` | AssignmentSet.`getConstraint()` Returns constraint

    Methods in net.sf.cpsolver.ifs.extension with parameters of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `void` | MacPropagation.`addConstraint(Constraint<V,T> constraint)` Adds a constraint on which arc-consistency is to be maintained
    `void` | MacRevised.`addConstraint(Constraint<V,T> constraint)` Adds a constraint on which arc-consistency is to be maintained
    `void` | ConflictStatistics.`constraintAdded(Constraint<V,T> constraint)`
    `void` | Extension.`constraintAdded(Constraint<V,T> constraint)` Called when a constraint is added to the model
    `void` | ConflictStatistics.`constraintAfterAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)` Increments appropriate counters when there is a value unassigned
    `void` | ConflictStatistics.`constraintBeforeAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)`
    `void` | ConflictStatistics.`constraintRemoved(Constraint<V,T> constraint)`
    `void` | Extension.`constraintRemoved(Constraint<V,T> constraint)` Called when a constraint is removed from the model
    `boolean` | MacPropagation.`contains(Constraint<V,T> constraint)` Returns true, if arc-consistency is to be maintained on the given constraint
    `boolean` | MacRevised.`contains(Constraint<V,T> constraint)` Returns true, if arc-consistency is to be maintained on the given constraint
    `Set<T>` | MacRevised.`explanation(Constraint<V,T> constraint, T value, V variable)`
    `boolean` | MacRevised.`hasSupport(Constraint<V,T> constraint, T value, V variable)`
    `void` | MacRevised.`propagate(Constraint<V,T> constraint, T noGoodValue, List<T> queue)`
    `boolean` | MacRevised.`revise(Constraint<V,T> constraint, T value)`
    `void` | Assignment.`setConstraint(Constraint<?,T> constraint)` Sets constraint
    `void` | AssignmentSet.`setConstraint(Constraint<?,T> constraint)` Sets constraint
    `Set<T>` | MacRevised.`supports(Constraint<V,T> constraint, T value, V variable)`

  - ### Uses of Constraint in net.sf.cpsolver.ifs.model

    Subclasses of Constraint in net.sf.cpsolver.ifs.model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BinaryConstraint<V extends Variable<V,T>,T extends Value<V,T>>` Binary constraint.
    `class` | `GlobalConstraint<V extends Variable<V,T>,T extends Value<V,T>>` Generic global constraint.

    Methods in net.sf.cpsolver.ifs.model that return types with arguments of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `Map<Constraint<V,T>,Set<T>>` | Model.`conflictConstraints(T value)` The list of constraints which are in a conflict with the given value if it is assigned to its variable.
    `List<Constraint<V,T>>` | Model.`constraints()` The list of constraints in the model
    `List<Constraint<V,T>>` | Variable.`constraints()` Return the list of constraints associated with this variable
    `Map<V,List<Constraint<V,T>>>` | Variable.`constraintVariables()` Returns a table of all variables linked with this variable by a constraint.
    `List<Constraint<V,T>>` | Variable.`hardConstraints()` Return the list of hard constraints associated with this variable
    `List<Constraint<V,T>>` | Variable.`softConstraints()` Return the list of soft constraints associated with this variable
    `List<Constraint<V,T>>` | Model.`unassignedHardConstraints()` The list of hard constraints which contain at least one variable that is not assigned.

    Methods in net.sf.cpsolver.ifs.model with parameters of type Constraint
    Modifier and Type | Method and Description
    --- | ---
    `void` | Model.`addConstraint(Constraint<V,T> constraint)` Adds a constraint to the model
    `void` | Variable.`addContstraint(Constraint<V,T> constraint)` Adds a constraint.
    `int` | Constraint.`compareTo(Constraint<V,T> c)`
    `void` | ModelListener.`constraintAdded(Constraint<V,T> constraint)` Constraint is added to the model
    `void` | ConstraintListener.`constraintAfterAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, after a value is assigned to its variable.
    `void` | ConstraintListener.`constraintBeforeAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, before a value is assigned to its variable.
    `void` | ModelListener.`constraintRemoved(Constraint<V,T> constraint)` Constraint is removed from the model
    `void` | Model.`removeConstraint(Constraint<V,T> constraint)` Removes a constraint from the model
    `void` | Variable.`removeContstraint(Constraint<V,T> constraint)` Removes a constraint.

  - ### Uses of Constraint in net.sf.cpsolver.studentsct.constraint

    Subclasses of Constraint in net.sf.cpsolver.studentsct.constraint
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ConfigLimit` Configuration limit constraint.
    `class` | `CourseLimit` Course limit constraint.
    `class` | `LinkedSections.LinkedSectionsConstraint` Linked sections constraint -- to be created for each student that requests two or more offerings of this link
    `class` | `RequiredReservation` Required reservation constraint.
    `class` | `ReservationLimit` Reservation limit constraint.
    `class` | `SectionLimit` Section limit constraint.
    `class` | `StudentConflict` This constraints ensures that a student is not enrolled into sections that are overlapping in time.