## Uses of Interface
org.cpsolver.ifs.assignment.context.HasAssignmentContext

- Packages that use HasAssignmentContext
  Package | Description
  --- | ---
  org.cpsolver.coursett.constraint | University Course Timetabling: Constraints.
  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.heuristics | University Course Timetabling: Heuristics.
  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.heuristics | Examination Timetabling: Solution Heuristics.
  org.cpsolver.exam.model | Examination Timetabling: Model.
  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.algorithms | IFS Neighbourhood Search Algorithms
  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.example.rpp | Random Placement Problem.
  org.cpsolver.ifs.example.tt | Simple Timetabling Problem.
  org.cpsolver.ifs.extension | IFS Extensions (conflict-based statistics, maintenance of arc consistency)
  org.cpsolver.ifs.heuristics | IFS Heuristics (value and variable selection criteria)
  org.cpsolver.ifs.model | IFS Model (description of a problem)
  org.cpsolver.instructor.constraints | Instructor Scheduling: Constraints.
  org.cpsolver.instructor.criteria | Instructor Scheduling: Criteria.
  org.cpsolver.instructor.model | Instructor Scheduling: Model.
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.

- - ### Uses of HasAssignmentContext in org.cpsolver.coursett.constraint

    Classes in org.cpsolver.coursett.constraint that implement HasAssignmentContext
    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` | `DepartmentSpreadConstraint` Departmental ballancing constraint.
    `class` | `DiscouragedRoomConstraint` Discouraged room constraint.
    `class` | `FlexibleConstraint` Flexible constraint.
    `class` | `GroupConstraint` Group 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` | `MaxConsecutiveDaysFlexibleConstraint` The MaxConsecutiveDays constraint limits the number of consecutive days of week during which the given set of classes are taught.
    `class` | `MaxDaysFlexibleConstraint` The MaxDays constraint limits the number of days of week during which the given set of classes are taught.
    `class` | `MaxHalfDaysFlexibleConstraint` The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
    `class` | `MaxHolesFlexibleConstraint` The MaxHoles constraint limits the number of free time (holes) for an instructor on a day.
    `class` | `MaxWeeksFlexibleConstraint` The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
    `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` | `SoftInstructorConstraint` Soft version of the instructor constraint.
    `class` | `SpreadConstraint` Spread given set of classes in time as much as possible.

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

    Classes in org.cpsolver.coursett.criteria that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.coursett.criteria.additional

    Classes in org.cpsolver.coursett.criteria.additional that implement HasAssignmentContext
    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` | `StudentOnlineConflict` An experimental criterion that tries to minimize cases where a student has an online and in-person class on the same day.
    `class` | `StudentOverLunchConflict` An experimental criterion that tries to keep student all classes before or after the lunch period.

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

    Classes in org.cpsolver.coursett.criteria.placement that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.coursett.heuristics

    Classes in org.cpsolver.coursett.heuristics that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `FixCompleteSolutionNeighbourSelection` University course timetabling neighbour selection.

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

    Classes in org.cpsolver.coursett.model that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Lecture` Lecture (variable).

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

    Classes in org.cpsolver.exam.criteria that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.exam.criteria.additional

    Classes in org.cpsolver.exam.criteria.additional that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.exam.heuristics

    Classes in org.cpsolver.exam.heuristics that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamConstruction` Initial solution construction heuristics.
    `class` | `ExamGreatDeluge` Deprecated.
    `class` | `ExamHillClimbing` Deprecated.
    `class` | `ExamNeighbourSelection` Examination timetabling neighbour selection.
    `class` | `ExamSimulatedAnnealing` Deprecated.
    `class` | `ExamTabuSearch` Tabu search algorithm.

  - ### Uses of HasAssignmentContext in org.cpsolver.exam.model

    Classes in org.cpsolver.exam.model that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamDistributionConstraint` Distribution binary constraint.
    `class` | `ExamModel` Examination timetabling model.
    `class` | `ExamRoom` A room.

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

    Classes in org.cpsolver.exam.split that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.ifs.algorithms

    Classes in org.cpsolver.ifs.algorithms that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `GreatDeluge<V extends Variable<V,T>,T extends Value<V,T>>` Great deluge.
    `class` | `HillClimber<V extends Variable<V,T>,T extends Value<V,T>>` Hill climber.
    `class` | `MetaHeuristicSearch<V extends Variable<V,T>,T extends Value<V,T>>` Meta-heuristic search neighbor selection.
    `class` | `NeighbourSearch<V extends Variable<V,T>,T extends Value<V,T>>` Base class for the search techniques like hill climber, great deluge, or simulated annealing.
    `class` | `ParallelConstruction<V extends Variable<V,T>,T extends Value<V,T>>` A simple neighbourhood selection extension suitable for the `ParallelSolver` during the construction phase.
    `class` | `SimpleSearch<V extends Variable<V,T>,T extends Value<V,T>>` Simple search neighbour selection.
    `class` | `SimulatedAnnealing<V extends Variable<V,T>,T extends Value<V,T>>` Simulated annealing.
    `class` | `StepCountingHillClimber<V extends Variable<V,T>,T extends Value<V,T>>` Step counting hill climber.

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

    Classes in org.cpsolver.ifs.assignment.context that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractClassWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>` An abstract implementation of an assignment context holding class.
    `class` | `BinaryConstraintWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentConstraintContext<V,T>>` A binary constraint with an assignment context.
    `class` | `ConstraintWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentConstraintContext<V,T>>` A constraint with an assignment context.
    `class` | `ExtensionWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>` An extension with an assignment context.
    `class` | `ModelWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentConstraintContext<V,T>>` A model with an assignment context.
    `class` | `NeighbourSelectionWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>` A neighborhood selection with an assignment context.
    `class` | `VariableWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext>` A variable with an assignment context.

    Methods in org.cpsolver.ifs.assignment.context that return HasAssignmentContext
    Modifier and Type | Method and Description
    --- | ---
    `HasAssignmentContext<V,T,C>` | AssignmentContextReference.`getParent()` Return parent class, i.e., the class implementing the `HasAssignmentContext` interface.

    Methods in org.cpsolver.ifs.assignment.context with parameters of type HasAssignmentContext
    Modifier and Type | Method and Description
    --- | ---
    `static <V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentContext> C` | AssignmentContextHelper.`getContext(HasAssignmentContext<V,T,C> source, Assignment<V,T> assignment)` Returns an assignment context associated with the given object.

    Constructors in org.cpsolver.ifs.assignment.context with parameters of type HasAssignmentContext
    Constructor and Description
    `AssignmentContextReference(HasAssignmentContext<V,T,C> parent, int index)` Create a reference context

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

    Classes in org.cpsolver.ifs.criteria that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.ifs.dbt

    Classes in org.cpsolver.ifs.dbt that implement HasAssignmentContext
    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 HasAssignmentContext in org.cpsolver.ifs.example.rpp

    Classes in org.cpsolver.ifs.example.rpp that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ResourceConstraint` Resource constraint (rectangular area where the rectangles are to be placed).

  - ### Uses of HasAssignmentContext in org.cpsolver.ifs.example.tt

    Classes in org.cpsolver.ifs.example.tt that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Resource` Resource constraint

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

    Classes in org.cpsolver.ifs.extension that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `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.

  - ### Uses of HasAssignmentContext in org.cpsolver.ifs.heuristics

    Classes in org.cpsolver.ifs.heuristics that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `MaxIdleNeighbourSelection<V extends Variable<V,T>,T extends Value<V,T>>` Simple extension of a provided `NeighbourSelection` that halts the construction heuristic or the IFS search when the underlying heuristic is unable to improve the number of assigned variables.

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

    Methods in org.cpsolver.ifs.model with parameters of type HasAssignmentContext
    Modifier and Type | Method and Description
    --- | ---
    `<C extends AssignmentContext> AssignmentContextReference<V,T,C>` | Model.`createReference(HasAssignmentContext<V,T,C> parent)` Create a reference to an assignment context for a class that is in a need of one.
    `<C extends AssignmentContext> AssignmentContextReference<V,T,C>` | Model.`removeReference(HasAssignmentContext<V,T,C> parent)` Remove a reference to an assignment context for the model

  - ### Uses of HasAssignmentContext in org.cpsolver.instructor.constraints

    Classes in org.cpsolver.instructor.constraints that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SameInstructorConstraint` Same Instructor Constraint.
    `class` | `SameLinkConstraint` Same Link Constraint.

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

    Classes in org.cpsolver.instructor.criteria that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AttributePreferences` Attribute Preferences.
    `class` | `BackToBack` Back to Back.
    `class` | `CoursePreferences` Course Preferences.
    `class` | `DifferentLecture` Different Lecture.
    `class` | `Distributions` Distributions criterion.
    `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 HasAssignmentContext in org.cpsolver.instructor.model

    Classes in org.cpsolver.instructor.model that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Instructor` Instructor.

  - ### Uses of HasAssignmentContext in org.cpsolver.studentsct

    Classes in org.cpsolver.studentsct that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `StudentSectioningModel` Student sectioning model.

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

    Classes in org.cpsolver.studentsct.extension that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DistanceConflict` This extension computes student distant conflicts.
    `class` | `StudentQuality` This extension computes student schedule quality using various matrices.
    `class` | `TimeOverlapsCounter` This extension computes time overlaps.

  - ### Uses of HasAssignmentContext in org.cpsolver.studentsct.model

    Classes in org.cpsolver.studentsct.model that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Config` Representation of a configuration of an offering.
    `class` | `Course` Representation of a course offering.
    `class` | `CourseRequest` Representation of a request of a student for one or more course.
    `class` | `FreeTimeRequest` Representation of a request of a student for free time.
    `class` | `Request` Representation of a request of a student for a course(s) or a free time.
    `class` | `RequestGroup` Representation of a group of students requesting the same course that should be scheduled in the same set of sections.
    `class` | `Section` Representation of a class.

  - ### Uses of HasAssignmentContext in org.cpsolver.studentsct.online

    Classes in org.cpsolver.studentsct.online that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `OnlineConfig` An online configuration.
    `class` | `OnlineReservation` An online reservation.
    `class` | `OnlineSection` An online section.
    `class` | `OnlineSectioningModel` An online model.
    `class` | `Test.TestModel`

  - ### Uses of HasAssignmentContext in org.cpsolver.studentsct.reservation

    Classes in org.cpsolver.studentsct.reservation that implement HasAssignmentContext
    Modifier and Type | Class and Description
    --- | ---
    `class` | `CourseReservation` Course reservation.
    `class` | `CurriculumOverride` Curriculum reservation override.
    `class` | `CurriculumReservation` Curriculum reservation.
    `class` | `DummyReservation` Dummy reservation.
    `class` | `GroupReservation` Group reservation.
    `class` | `IndividualReservation` Individual reservation.
    `class` | `LearningCommunityReservation` Learning Community reservation.
    `class` | `Reservation` Abstract reservation.
    `class` | `ReservationOverride` Reservation override.
    `class` | `UniversalOverride` Universal reservation override.