org.cpsolver.ifs.assignment.context

## Interface AssignmentContext

- All Known Subinterfaces:
    AssignmentConstraintContext<V,T>
  All Known Implementing Classes:
    AbstractCriterion.ValueContext, AssignmentCount.AssignmentCountContext, BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext, Config.ConfigContext, Course.CourseContext, DiscouragedRoomConstraint.DiscouragedRoomConstraintContext, DistanceConflict.DistanceConflictContext, ExamConstruction.Context, ExamContext, ExamDistributionConstraint.Context, ExamGreatDeluge.Context, ExamHillClimbing.Context, ExamNeighbourSelection.Context, ExamRoom.ExamRoomContext, ExamRotationPenalty.RotationContext, ExamSimulatedAnnealing.Context, ExamTabuSearch.TabuList, FixCompleteSolutionNeighbourSelection.FixCompleteSolutionNeighbourContext, FlexibleConstraint.FlexibleConstraintContext, FreeTimeRequest.FreeTimeRequestContext, GreatDeluge.GreatDelugeContext, GroupConstraint.GroupConstraintContext, HillClimber.HillClimberContext, InheritedAssignmentContextHolder.VersionedContext, Instructor.Context, InstructorConstraint.InstructorConstraintContext, InstructorFairness.InstructorFairnessContext, InstructorLunchBreak.InstructorLunchBreakContext, JenrlConstraint.JenrlConstraintContext, Lecture.LectureContext, MacPropagation.NoGood, MacRevised.NoGood, MaxBreaksFlexibleConstraint.MaxBreaksFlexibleConstraintContext, MaxConsecutiveDaysFlexibleConstraint.MaxConsecutiveDaysFlexibleConstraintContext, MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext, MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext, MaxHolesFlexibleConstraint.MaxHolesFlexibleConstraintContext, MaxIdleNeighbourSelection.MaxIdleContext, MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext, MetaHeuristicSearch.MetaHeuristicSearchContext, MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext, MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext, NeighbourSearch.NeighbourSearchContext, ParallelConstruction.ConstructionContext, Request.RequestContext, RequestGroup.RequestGroupContext, Reservation.ReservationContext, Resource.Context, ResourceConstraint.Context, RoomConstraint.RoomConstraintContext, RoomSplitDistancePenalty.RoomSplitContext, RoomSplitPenalty.RoomSplitContext, SameInstructorConstraint.Context, SameLinkConstraint.Context, SearchIntensification.Context, Section.SectionContext, SimpleSearch.SimpleSearchContext, SimulatedAnnealing.SimulatedAnnealingContext, SoftInstructorConstraint.SoftInstructorConstraintContext, SpreadConstraint.SpreadConstraintContext, StepCountingHillClimber.StepCountingHillClimberContext, StudentQuality.StudentQualityContext, StudentSectioningModel.StudentSectioningModelContext, TimeOverlapsCounter.TimeOverlapsCounterContext, WeightedHardConflicts.IterationContext

      public interface AssignmentContext

  An interface marking an assignment context. The idea is that each class that needs to keep some assignment dependent data will implements `HasAssignmentContext` interface and the data will be wrapped by this class. The `HasAssignmentContext` will only contain a reference to this assignment context, created by calling `Model.createReference(HasAssignmentContext)` during its initialization. The assignment context can be than accessed by calling `Assignment.getAssignmentContext(AssignmentContextReference)`.
  These assignment contexts are being held in memory by a class implementing the `AssignmentContextHolder` interface. For constraints, criteria, extensions, and neighborhood selections an existing class implementing the context can be used, see `ConstraintWithContext`, `AbstractCriterion`, `ExtensionWithContext`, and `NeighbourSelectionWithContext` respectively.
  For instance, when implementing `ConstraintWithContext`, only the method `HasAssignmentContext.createAssignmentContext(Assignment)` needs to be implemented and the assignment context can be accessed within the constraint using the method `ConstraintWithContext.getContext(Assignment)`.
  Version:
    IFS 1.3 (Iterative Forward Search)
    Copyright (C) 2014 Tomáš Müller
    muller@unitime.org
    http://muller.unitime.org
    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses.
  Author:
    Tomáš Müller
  See Also:
    `AssignmentContextHolder`, `HasAssignmentContext`