## Uses of Interface
org.cpsolver.ifs.model.ModelListener

- Packages that use ModelListener
  Package | Description
  --- | ---
  org.cpsolver.coursett.criteria | University Course Timetabling: Criteria.
  org.cpsolver.coursett.criteria.additional | University Course Timetabling: Additional (Experimental) Criteria.
  org.cpsolver.coursett.criteria.placement | University Course Timetabling: Placement Selection Criteria.
  org.cpsolver.coursett.model | University Course Timetabling: Model.
  org.cpsolver.exam.criteria | Examination Timetabling: Criteria.
  org.cpsolver.exam.criteria.additional | Examination Timetabling: Additional (Experimental) Criteria.
  org.cpsolver.exam.split | This package contains an an experimental criterion that allows an exam to be split into two if it decreases the number of student conflicts.
  org.cpsolver.ifs.assignment.context | Assignment context can be used by a class (e.g., a constraint, a extension, a neighborhood selection, or a criterion) to contain any assignment dependent data.
  org.cpsolver.ifs.criteria | IFS Criteria.
  org.cpsolver.ifs.dbt | Dynamic backtracking extension of IFS solver
  org.cpsolver.ifs.extension | IFS Extensions (conflict-based statistics, maintenance of arc consistency)
  org.cpsolver.ifs.model | IFS Model (description of a problem)
  org.cpsolver.instructor.criteria | Instructor Scheduling: Criteria.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.

- - ### Uses of ModelListener in org.cpsolver.coursett.criteria

    Classes in org.cpsolver.coursett.criteria that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BackToBackInstructorPreferences` Bact-to-back instructor preferences.
    `class` | `BrokenTimePatterns` Broken time patterns.
    `class` | `DepartmentBalancingPenalty` Department balancing penalty.
    `class` | `DistributionPreferences` Distribution preferences.
    `class` | `FlexibleConstraintCriterion` The class encapsulates various flexible constraints concerning compact timetables of instructors.
    `class` | `Perturbations` Perturbations.
    `class` | `RoomPreferences` Room preferences.
    `class` | `RoomViolations` Room violations.
    `class` | `SameSubpartBalancingPenalty` Same subpart balancing penalty.
    `class` | `StudentCommittedConflict` Student committed conflicts.
    `class` | `StudentConflict` Student conflicts.
    `class` | `StudentDistanceConflict` Student distance conflicts.
    `class` | `StudentHardConflict` Student hard conflicts.
    `class` | `StudentOverlapConflict` Student overlapping conflicts.
    `class` | `StudentWorkdayConflict` Student work-day conflicts.
    `class` | `TimePreferences` Time preferences.
    `class` | `TimetablingCriterion` Abstract class for all timetabling criteria.
    `class` | `TimeViolations` Time violations.
    `class` | `TooBigRooms` Too big rooms.
    `class` | `UselessHalfHours` Useless half-hours.

  - ### Uses of ModelListener in org.cpsolver.coursett.criteria.additional

    Classes in org.cpsolver.coursett.criteria.additional that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `IgnoredCommittedStudentConflict` Ignored committed student conflicts.
    `class` | `IgnoredStudentConflict` Ignored student conflicts.
    `class` | `ImportantStudentConflict` Important student conflicts.
    `class` | `ImportantStudentHardConflict` Important student hard conflicts.
    `class` | `InstructorConflict` Instructor conflict counting criterion.
    `class` | `InstructorFairness` This class represent fairness criterion for instructors.
    `class` | `InstructorLunchBreak` The class represents various criteria concerning compact timetables of instructors.
    `class` | `InstructorStudentConflict` Instructor student conflicts.
    `class` | `InstructorStudentHardConflict` Instructor student conflicts.
    `class` | `QuadraticStudentConflict` Quadratic student conflicts.
    `class` | `QuadraticStudentHardConflict` Quadratic student conflicts.
    `class` | `RoomSizePenalty` Cost for using room(s) that are too big.
    `class` | `StudentLuchBreak` Naive, yet effective approach for modeling student lunch breaks.
    `class` | `StudentMinimizeDaysOfWeek` Naive, yet effective approach for minimizing number of days in student schedule.
    `class` | `StudentMinimizeScheduleHoles` Naive, yet effective approach for minimizing holes in student schedule.
    `class` | `StudentOverLunchConflict` An experimental criterion that tries to keep student all classes before or after the lunch period.

  - ### Uses of ModelListener in org.cpsolver.coursett.criteria.placement

    Classes in org.cpsolver.coursett.criteria.placement that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AssignmentCount` Deprecated.
    `class` | `DeltaTimePreference` Difference between proposed and best time assignment.
    `class` | `HardConflicts` Number of values (of other variables) that have to be unassigned in order before this value can be assigned.
    `class` | `PlacementSelectionCriterion` Abstract class for all criteria that are to be used only in the placement selection (do not have any impact on the overall solution value).
    `class` | `PotentialHardConflicts` Use conflict-based statistics to compute potential hard conflicts.
    `class` | `WeightedHardConflicts` Hard conflicts weighted by the conflict-based statistics (past occurrences).

  - ### Uses of ModelListener in org.cpsolver.coursett.model

    Classes in org.cpsolver.coursett.model that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `OnFlySectioning` On fly student sectioning.

  - ### Uses of ModelListener in org.cpsolver.exam.criteria

    Classes in org.cpsolver.exam.criteria that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DistributionPenalty` Distribution penalty.
    `class` | `ExamCriterion` Abstract examination criterion.
    `class` | `ExamRotationPenalty` Rotation penalty.
    `class` | `InstructorBackToBackConflicts` Number of back-to-back instructor conflicts.
    `class` | `InstructorDirectConflicts` Number of direct instructor conflicts.
    `class` | `InstructorDistanceBackToBackConflicts` Number of back-to-back distance instructor conflicts.
    `class` | `InstructorMoreThan2ADayConflicts` Number of more than two exams a day instructor conflicts.
    `class` | `InstructorNotAvailableConflicts` Number of direct instructor conflicts caused by the fact that an instructor is not available.
    `class` | `LargeExamsPenalty` Front load penalty.
    `class` | `PeriodIndexPenalty` Average index of the assigned period.
    `class` | `PeriodPenalty` Cost for using a period.
    `class` | `PeriodSizePenalty` A weight for period penalty (used in `ExamPeriodPlacement.getPenalty()` multiplied by examination size `Exam.getSize()`.
    `class` | `PerturbationPenalty` Perturbation penalty.
    `class` | `RoomPenalty` Room penalty (penalty for using given rooms).
    `class` | `RoomPerturbationPenalty` Room perturbation penalty.
    `class` | `RoomSplitDistancePenalty` Room split distance penalty.
    `class` | `RoomSplitPenalty` Cost for using more than one room (nrSplits^2).
    `class` | `StudentBackToBackConflicts` Number of back-to-back student conflicts.
    `class` | `StudentDirectConflicts` Number of direct student conflicts.
    `class` | `StudentDistanceBackToBackConflicts` Number of back-to-back distance student conflicts.
    `class` | `StudentMoreThan2ADayConflicts` Number of more than two exams a day student conflicts.
    `class` | `StudentNotAvailableConflicts` Number of direct student conflicts caused by the fact that a student is not available.

  - ### Uses of ModelListener in org.cpsolver.exam.criteria.additional

    Classes in org.cpsolver.exam.criteria.additional that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DistanceToStronglyPreferredRoom` Experimental criterion measuring average distance (in meters) to the strongly preferred room (or rooms) of the examination.
    `class` | `DistributionViolation` Experimental criterion counting violations of hard distribution constraints.
    `class` | `PeriodViolation` Experimental criterion counting violations of periods assignments.
    `class` | `RoomViolation` Experimental criterion counting violations of room assignments.
    `class` | `StudentMoreThan1ADayConflicts` Number of more than One exam a day student conflicts.

  - ### Uses of ModelListener in org.cpsolver.exam.split

    Classes in org.cpsolver.exam.split that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamSplitter` Experimental criterion that allows an exam to be split into two if it decreases the number of student conflicts.

  - ### Uses of ModelListener in org.cpsolver.ifs.assignment.context

    Classes in org.cpsolver.ifs.assignment.context that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExtensionWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>` An extension with an assignment context.

  - ### Uses of ModelListener in org.cpsolver.ifs.criteria

    Subinterfaces of ModelListener in org.cpsolver.ifs.criteria
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `Criterion<V extends Variable<V,T>,T extends Value<V,T>>` Criterion.

    Classes in org.cpsolver.ifs.criteria that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractCriterion<V extends Variable<V,T>,T extends Value<V,T>>` Abstract Criterion.
    `class` | `AssignedValue<V extends Variable<V,T>,T extends Value<V,T>>` Simple Criterion: Sum of `Value.toDouble(Assignment)`.

  - ### Uses of ModelListener in org.cpsolver.ifs.dbt

    Classes in org.cpsolver.ifs.dbt that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DbtPropagation<V extends Variable<V,T>,T extends Value<V,T>>` Maintenance of arc consistency in dynamic backtracking.

  - ### Uses of ModelListener in org.cpsolver.ifs.extension

    Classes in org.cpsolver.ifs.extension that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ConflictStatistics<V extends Variable<V,T>,T extends Value<V,T>>` Conflict-based statistics.
    `class` | `Extension<V extends Variable<V,T>,T extends Value<V,T>>` Generic extension of IFS solver.
    `class` | `MacPropagation<V extends Variable<V,T>,T extends Value<V,T>>` MAC propagation.
    `class` | `MacRevised<V extends Variable<V,T>,T extends Value<V,T>>` Another implementation of MAC propagation.
    `class` | `SearchIntensification<V extends Variable<V,T>,T extends Value<V,T>>` Go back to the best known solution when no better solution is found within the given amount of iterations.
    `class` | `ViolatedInitials<V extends Variable<V,T>,T extends Value<V,T>>` Computation of violated initial values (minimal perturbation problem).

  - ### Uses of ModelListener in org.cpsolver.ifs.model

    Methods in org.cpsolver.ifs.model that return ModelListener
    Modifier and Type | Method and Description
    --- | ---
    `ModelListener<V,T>` | Model.`modelListenerOfType(Class<ModelListener<V,T>> type)` The list of model listeners that are of the given class

    Methods in org.cpsolver.ifs.model that return types with arguments of type ModelListener
    Modifier and Type | Method and Description
    --- | ---
    `List<ModelListener<V,T>>` | Model.`getModelListeners()` The list of model listeners

    Methods in org.cpsolver.ifs.model with parameters of type ModelListener
    Modifier and Type | Method and Description
    --- | ---
    `void` | Model.`addModelListener(ModelListener<V,T> listener)` Adds a model listener
    `void` | Model.`removeModelListener(ModelListener<V,T> listener)` Removes a model listener

    Method parameters in org.cpsolver.ifs.model with type arguments of type ModelListener
    Modifier and Type | Method and Description
    --- | ---
    `ModelListener<V,T>` | Model.`modelListenerOfType(Class<ModelListener<V,T>> type)` The list of model listeners that are of the given class

  - ### Uses of ModelListener in org.cpsolver.instructor.criteria

    Classes in org.cpsolver.instructor.criteria that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AttributePreferences` Attribute Preferences.
    `class` | `BackToBack` Back to Back.
    `class` | `CoursePreferences` Course Preferences.
    `class` | `DifferentLecture` Different Lecture.
    `class` | `InstructorPreferences` Instructor Preferences.
    `class` | `InstructorSchedulingCriterion` Abstract instructor scheduling criterion.
    `class` | `OriginalInstructor` Original Instructor.
    `class` | `SameCommon` Same Common Preferences.
    `class` | `SameCourse` Same Course Preferences.
    `class` | `SameDays` Same Days.
    `class` | `SameInstructor` Same Instructor.
    `class` | `SameLink` Same Link.
    `class` | `SameRoom` Same Room.
    `class` | `TeachingPreferences` Teaching Preferences.
    `class` | `TimeOverlaps` Time overlaps.
    `class` | `UnusedInstructorLoad` Unused Instructor Load.

  - ### Uses of ModelListener in org.cpsolver.studentsct.extension

    Classes in org.cpsolver.studentsct.extension that implement ModelListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DistanceConflict` This extension computes student distant conflicts.
    `class` | `StudentConflictStatistics` Same as `ConflictStatistics`, however, conflict with real students can be weighted differently than with last-like students.
    `class` | `StudentQuality` This extension computes student schedule quality using various matrices.
    `class` | `TimeOverlapsCounter` This extension computes time overlaps.