## Uses of Interface
org.cpsolver.ifs.assignment.Assignment

- Packages that use Assignment
  Package | Description
  --- | ---
  org.cpsolver.coursett | University Course Timetabling.
  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.custom | University Course Timetabling: Various customizations.
  org.cpsolver.coursett.heuristics | University Course Timetabling: Heuristics.
  org.cpsolver.coursett.model | University Course Timetabling: Model.
  org.cpsolver.coursett.sectioning | Additional Student Sectioning Algorithms.
  org.cpsolver.exam | Examination Timetabling Solver.
  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.neighbours | Examination Timetabling: Various Neighbourhoods.
  org.cpsolver.exam.reports | Examination Timetabling: Reports.
  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.algorithms.neighbourhoods | IFS: Various Problem-Independent Neighbourhoods.
  org.cpsolver.ifs.assignment | An assignment holds current values of all the variables of a model.
  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.constant | Extension of the model with constant variables.
  org.cpsolver.ifs.criteria | IFS Criteria.
  org.cpsolver.ifs.dbt | Dynamic backtracking extension of IFS solver
  org.cpsolver.ifs.example.csp | Random Binary CSP with uniform distribution.
  org.cpsolver.ifs.example.jobshop | JobShop Problem.
  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.ifs.perturbations | Minimal Perturbation Problem: counting of perturbations
  org.cpsolver.ifs.solution | IFS Solution (also contains solution comparator)
  org.cpsolver.ifs.solver | IFS Solver
  org.cpsolver.ifs.util | Utilities
  org.cpsolver.instructor | Instructor Scheduling.
  org.cpsolver.instructor.constraints | Instructor Scheduling: Constraints.
  org.cpsolver.instructor.criteria | Instructor Scheduling: Criteria.
  org.cpsolver.instructor.model | Instructor Scheduling: Model.
  org.cpsolver.instructor.test | Instructor Scheduling: Tests.
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.constraint | Student Sectioning: Constraints.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  org.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.
  org.cpsolver.studentsct.check | Various checks of validity of a student sectioning solution.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.online.expectations | Student Sectioning Solver: Over-Expectation Criteria.
  org.cpsolver.studentsct.online.selection | Online Student Sectioning Solver: Selection Weights and Heuristics.
  org.cpsolver.studentsct.report | Student Sectioning: Various Reports.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.
  org.cpsolver.studentsct.weights | Student Sectioning Weightings: various students weight models

- - ### Uses of Assignment in org.cpsolver.coursett

    Fields in org.cpsolver.coursett declared as Assignment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Lecture,Placement>` | DomainChart.`iAssignment`

    Methods in org.cpsolver.coursett with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `static void` | Test.`printRoomInfo(PrintWriter pw, TimetableModel model, Assignment<Lecture,Placement> assignment)` Print room utilization

    Constructors in org.cpsolver.coursett with parameters of type Assignment
    Constructor and Description
    `TimetableLoader(TimetableModel model, Assignment<Lecture,Placement> assignment)` Constructor
    `TimetableXMLLoader(TimetableModel model, Assignment<Lecture,Placement> assignment)`

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

    Methods in org.cpsolver.coursett.constraint with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClassLimitConstraint.`addParentAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `boolean` | JenrlConstraint.`areStudentConflictsDistance(Assignment<Lecture,Placement> assignment)`
    `boolean` | JenrlConstraint.`areStudentConflictsDistance(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | JenrlConstraint.`areStudentConflictsWorkday(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | RoomConstraint.`assigned(Assignment<Lecture,Placement> assignment, long iteration, Placement placement)`
    `void` | DiscouragedRoomConstraint.DiscouragedRoomConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | FlexibleConstraint.FlexibleConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | GroupConstraint.GroupConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | InstructorConstraint.InstructorConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | JenrlConstraint.JenrlConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxBreaksFlexibleConstraint.MaxBreaksFlexibleConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | RoomConstraint.RoomConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | SoftInstructorConstraint.SoftInstructorConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | SpreadConstraint.SpreadConstraintContext.`assigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | ClassLimitConstraint.`computeAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `void` | BreakFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | DiscouragedRoomConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | IgnoreStudentConflictsConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | InstructorConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | JenrlConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxBlockFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxBreaksFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxDaysFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxHalfDaysFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxHolesFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxWeeksFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | RoomConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | SoftInstructorConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | SpreadConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | GroupConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts, boolean fwdCheck)`
    `void` | GroupConstraint.`computeConflictsNoForwardCheck(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `protected int` | SoftInstructorConstraint.SoftInstructorConstraintContext.`countConflicts(Assignment<Lecture,Placement> assignment)`
    `int` | MaxHolesFlexibleConstraint.`countHoles(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)` Count number of holes (free slots) between the given classes on given day and week.
    `int` | InstructorConstraint.InstructorConstraintContext.`countPreference(Assignment<Lecture,Placement> assignment)`
    `RoomConstraint.RoomConstraintContext` | DiscouragedRoomConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | FlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `GroupConstraint.GroupConstraintContext` | GroupConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `InstructorConstraint.InstructorConstraintContext` | InstructorConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `JenrlConstraint.JenrlConstraintContext` | JenrlConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | MaxBreaksFlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | MaxDaysFlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | MaxHalfDaysFlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | MaxHolesFlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FlexibleConstraint.FlexibleConstraintContext` | MaxWeeksFlexibleConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext` | MinimizeNumberOfUsedGroupsOfTime.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext` | MinimizeNumberOfUsedRoomsConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `RoomConstraint.RoomConstraintContext` | RoomConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `InstructorConstraint.InstructorConstraintContext` | SoftInstructorConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `SpreadConstraint.SpreadConstraintContext` | SpreadConstraint.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `int` | ClassLimitConstraint.`currentClassLimit(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | JenrlConstraint.`decJenrl(Assignment<Lecture,Placement> assignment, Student student)` Decrement the number of joined enrollments (during student final sectioning)
    `boolean` | GroupConstraint.`forwardCheck(Assignment<Lecture,Placement> assignment, Placement value, Set<GroupConstraint> ignore, int depth)`
    `void` | GroupConstraint.`forwardCheck(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts, Set<GroupConstraint> ignore, int depth)`
    `Placement` | SpreadConstraint.`getAdept(Assignment<Lecture,Placement> assignment, Placement placement, int[][] nrCourses, Set<Placement> conflicts)`
    `List<FlexibleConstraint.Block>` | MaxBlockFlexibleConstraint.`getBlocks(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | MaxBreaksFlexibleConstraint.`getBlocks(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | BreakFlexibleConstraint.`getBreakBlocks(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)` Creates a list of consecutive blocks with back-to-back classes.
    `int` | SoftInstructorConstraint.`getConflicts(Assignment<Lecture,Placement> assignment)`
    `int` | SoftInstructorConstraint.`getConflicts(Assignment<Lecture,Placement> assignment, Placement placement)`
    `int` | GroupConstraint.`getCurrentPreference(Assignment<Lecture,Placement> assignment)` Current constraint preference (0 if prohibited or required, depends on current satisfaction of the constraint)
    `int` | GroupConstraint.`getCurrentPreference(Assignment<Lecture,Placement> assignment, Placement placement)` Current constraint preference change (if given placement is assigned)
    `double` | FlexibleConstraint.`getCurrentPreference(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Return the current preference of the flexible constraint, considering conflicts and new assignments.
    `int` | SpreadConstraint.`getMaxPenalty(Assignment<Lecture,Placement> assignment, Placement placement)`
    `double` | BreakFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `abstract double` | FlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Return current number of violations.
    `double` | MaxBlockFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxBreaksFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxDaysFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxHalfDaysFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxHolesFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Count violations, that is weekly average free time that is over the limit in hours.
    `double` | MaxWeeksFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `int` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`getOverLimit(Assignment<Lecture,Placement> assignment, Placement placement)`
    `int` | SpreadConstraint.`getPenalty(Assignment<Lecture,Placement> assignment)` Department balancing penalty for this department
    `int` | SpreadConstraint.`getPenalty(Assignment<Lecture,Placement> assignment, Placement placement)` Department balancing penalty of the given placement
    `int` | SpreadConstraint.`getPenaltyEstimate(Assignment<Lecture,Placement> assignment)`
    `int` | InstructorConstraint.`getPreference(Assignment<Lecture,Placement> assignment)`
    `int` | InstructorConstraint.`getPreference(Assignment<Lecture,Placement> assignment, Placement value)` Back-to-back preference of the given placement
    `int` | InstructorConstraint.`getPreferenceCombination(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected Set<Placement>` | FlexibleConstraint.`getRelevantPlacements(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)` Returns placements of variables assigned to this constraint with assignment which satisfy following conditions: They must be taught in the day included in dayCode.
    `List<Placement>` | RoomConstraint.`getResource(Assignment<Lecture,Placement> assignment, int slot)` Lookup table getResource()[slot] → lecture using this room placed in the given time slot (null if empty)
    `Placement[]` | RoomConstraint.`getResourceOfWeek(Assignment<Lecture,Placement> assignment, int startDay)`
    `void` | JenrlConstraint.`incJenrl(Assignment<Lecture,Placement> assignment, Student student)` Increment the number of joined enrollments (during student final sectioning)
    `boolean` | ClassLimitConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | DiscouragedRoomConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | GroupConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | InstructorConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | JenrlConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MaxDaysFlexibleConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MaxHalfDaysFlexibleConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MaxWeeksFlexibleConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | RoomConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | SoftInstructorConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | SoftInstructorConstraint.SoftInstructorConstraintContext.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | SpreadConstraint.`inConflict(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | GroupConstraint.`isChildrenNotOverlap(Assignment<Lecture,Placement> assignment, Lecture lec1, Placement plc1, Lecture lec2, Placement plc2)`
    `boolean` | JenrlConstraint.`isInConflict(Assignment<Lecture,Placement> assignment)` True if the given two lectures overlap in time
    `boolean` | DiscouragedRoomConstraint.DiscouragedRoomConstraintContext.`isOverLimit(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`isOverLimit(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | GroupConstraint.`isSatisfied(Assignment<Lecture,Placement> assignment)`
    `boolean` | GroupConstraint.AssignmentPairCheck.`isSatisfied(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` Check whether the constraint is satisfied for the given two assignments (required / preferred case)
    `boolean` | GroupConstraint.ParametrizedConstraintType.`isSatisfied(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)`
    `boolean` | GroupConstraint.ConstraintType.`isSatisfied(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` True if a required or preferred constraint is satisfied between a pair of placements
    `boolean` | GroupConstraint.AssignmentParameterPairCheck.`isSatisfied(Assignment<Lecture,Placement> assignment, P parameter, GroupConstraint gc, Placement plc1, Placement plc2)` Check whether the constraint is satisfied for the given two assignments (required / preferred case)
    `boolean` | GroupConstraint.`isSatisfiedPair(Assignment<Lecture,Placement> assignment, Placement plc1, Placement plc2)`
    `boolean` | GroupConstraint.AssignmentPairCheck.`isViolated(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` Check whether the constraint is satisfied for the given two assignments (prohibited / discouraged case)
    `boolean` | GroupConstraint.ParametrizedConstraintType.`isViolated(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)`
    `boolean` | GroupConstraint.ConstraintType.`isViolated(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` True if a prohibited or discouraged constraint is satisfied between a pair of placements
    `boolean` | GroupConstraint.AssignmentParameterPairCheck.`isViolated(Assignment<Lecture,Placement> assignment, P parameter, GroupConstraint gc, Placement plc1, Placement plc2)` Check whether the constraint is satisfied for the given two assignments (prohibited / discouraged case)
    `long` | JenrlConstraint.`jenrl(Assignment<Lecture,Placement> assignment, Lecture variable, Placement value)` Number of joined enrollments if the given value is assigned to the given variable
    `protected int` | GroupConstraint.`nrSlotsADay(Assignment<Lecture,Placement> assignment, int dayCode, BitSet week, HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `void` | DiscouragedRoomConstraint.`unassigned(Assignment<Lecture,Placement> assignment, long iteration, Placement placement)`
    `void` | RoomConstraint.`unassigned(Assignment<Lecture,Placement> assignment, long iteration, Placement placement)`
    `void` | DiscouragedRoomConstraint.DiscouragedRoomConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | FlexibleConstraint.FlexibleConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | GroupConstraint.GroupConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | InstructorConstraint.InstructorConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | JenrlConstraint.JenrlConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | RoomConstraint.RoomConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | SoftInstructorConstraint.SoftInstructorConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `void` | SpreadConstraint.SpreadConstraintContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement placement)`
    `protected void` | FlexibleConstraint.FlexibleConstraintContext.`updateCriterion(Assignment<Lecture,Placement> assignment)` Update value of FlexibleConstraintCriterion and number of violated FlexibleConstraints
    `protected void` | GroupConstraint.GroupConstraintContext.`updateCriterion(Assignment<Lecture,Placement> assignment)`
    `void` | DiscouragedRoomConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | JenrlConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | MaxBreaksFlexibleConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | MaxHolesFlexibleConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | SpreadConstraint.`weaken(Assignment<Lecture,Placement> assignment)`
    `void` | DiscouragedRoomConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | DiscouragedRoomConstraint.DiscouragedRoomConstraintContext.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | JenrlConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | JenrlConstraint.JenrlConstraintContext.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxBreaksFlexibleConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxHolesFlexibleConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MaxHolesFlexibleConstraint.MaxHolesFlexibleConstraintContext.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | SpreadConstraint.`weaken(Assignment<Lecture,Placement> assignment, Placement value)`

    Constructors in org.cpsolver.coursett.constraint with parameters of type Assignment
    Constructor and Description
    `DiscouragedRoomConstraintContext(Assignment<Lecture,Placement> assignment)`
    `GroupConstraintContext(Assignment<Lecture,Placement> assignment)`
    `InstructorConstraintContext(Assignment<Lecture,Placement> assignment)`
    `JenrlConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MaxBreaksFlexibleConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MaxDaysFlexibleConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MaxHalfDaysFlexibleConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MaxHolesFlexibleConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MaxWeeksFlexibleConstraintContext(Assignment<Lecture,Placement> assignment)`
    `MinimizeNumberOfUsedGroupsOfTimeContext(Assignment<Lecture,Placement> assignment)`
    `MinimizeNumberOfUsedRoomsConstraintContext(Assignment<Lecture,Placement> assignment)`
    `RoomConstraintContext(Assignment<Lecture,Placement> assignment)`
    `SoftInstructorConstraintContext(Assignment<Lecture,Placement> assignment)`
    `SpreadConstraintContext(Assignment<Lecture,Placement> assignment)`

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

    Methods in org.cpsolver.coursett.criteria with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentConflict.`bestRestored(Assignment<Lecture,Placement> assignment)`
    `protected double[]` | BackToBackInstructorPreferences.`computeBounds(Assignment<Lecture,Placement> assignment)`
    `protected double[]` | BrokenTimePatterns.`computeBounds(Assignment<Lecture,Placement> assignment)`
    `protected double[]` | DistributionPreferences.`computeBounds(Assignment<Lecture,Placement> assignment)`
    `double[]` | Perturbations.`getBounds(Assignment<Lecture,Placement> assignment)`
    `double[]` | RoomViolations.`getBounds(Assignment<Lecture,Placement> assignment)`
    `double[]` | SameSubpartBalancingPenalty.`getBounds(Assignment<Lecture,Placement> assignment)`
    `double[]` | StudentConflict.`getBounds(Assignment<Lecture,Placement> assignment)`
    `double[]` | BackToBackInstructorPreferences.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | BrokenTimePatterns.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | DistributionPreferences.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | Perturbations.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | RoomPreferences.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | RoomViolations.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | SameSubpartBalancingPenalty.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | StudentCommittedConflict.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | StudentConflict.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | TimePreferences.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | TooBigRooms.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `void` | FlexibleConstraintCriterion.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | StudentWorkdayConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | FlexibleConstraintCriterion.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | StudentWorkdayConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `double` | Perturbations.`getValue(Assignment<Lecture,Placement> assignment)`
    `double` | SameSubpartBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment)`
    `double` | BackToBackInstructorPreferences.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | BrokenTimePatterns.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | DepartmentBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | DistributionPreferences.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | FlexibleConstraintCriterion.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | Perturbations.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | SameSubpartBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | StudentCommittedConflict.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | StudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | BackToBackInstructorPreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | BrokenTimePatterns.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | DepartmentBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | DistributionPreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | FlexibleConstraintCriterion.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | Perturbations.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | RoomPreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | RoomViolations.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | SameSubpartBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | StudentCommittedConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | StudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | TimePreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | TooBigRooms.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | StudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `protected int` | BackToBackInstructorPreferences.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`

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

    Methods in org.cpsolver.coursett.criteria.additional with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | InstructorFairness.InstructorFairnessContext.`allInstructorsAssigned(Assignment<Lecture,Placement> assignment)` Return if complete solution (all variables assigned) was found in this context
    `protected void` | InstructorFairness.InstructorFairnessContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected void` | InstructorLunchBreak.InstructorLunchBreakContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | InstructorFairness.`bestSaved(Assignment<Lecture,Placement> assignment)`
    `protected double[]` | InstructorConflict.`computeBounds(Assignment<Lecture,Placement> assignment)`
    `double` | InstructorLunchBreak.InstructorLunchBreakContext.`computeLunchPenalty(Assignment<Lecture,Placement> assignment, InstructorConstraint constraint)` Method computes number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately.
    `void` | InstructorFairness.InstructorFairnessContext.`countInstructorAssignedFair(Assignment<Lecture,Placement> assignment, Placement value)` Method actualize values of instructors whose lecture was just assigned
    `boolean` | InstructorFairness.InstructorFairnessContext.`countInstructorFair(Assignment<Lecture,Placement> assignment)` This method set fairness values to all instructors
    `void` | InstructorFairness.InstructorFairnessContext.`countInstructorUnassignedFair(Assignment<Lecture,Placement> assignment, Placement value)` Method actualize values of instructors whose lecture will be unassigned
    `AbstractCriterion.ValueContext` | InstructorFairness.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `AbstractCriterion.ValueContext` | InstructorLunchBreak.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `double` | InstructorFairness.InstructorFairnessContext.`fairnessDouble(Assignment<Lecture,Placement> assignment, Placement placement)` Metod count and return time (and room) preferences in placement
    `double[]` | IgnoredCommittedStudentConflict.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double[]` | InstructorConflict.`getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `void` | InstructorFairness.`getExtendedInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | IgnoredStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | ImportantStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | ImportantStudentHardConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | InstructorConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | InstructorFairness.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | InstructorLunchBreak.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | InstructorStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | InstructorStudentHardConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | RoomSizePenalty.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | StudentLuchBreak.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | StudentMinimizeDaysOfWeek.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | StudentMinimizeScheduleHoles.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | StudentOverLunchConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | IgnoredStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | ImportantStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | ImportantStudentHardConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | InstructorConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | InstructorFairness.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | InstructorLunchBreak.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | InstructorStudentConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | InstructorStudentHardConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | StudentLuchBreak.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | StudentMinimizeDaysOfWeek.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | StudentMinimizeScheduleHoles.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `void` | StudentOverLunchConflict.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `double` | InstructorFairness.`getValue(Assignment<Lecture,Placement> assignment)`
    `double` | IgnoredCommittedStudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | InstructorConflict.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | InstructorFairness.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | InstructorLunchBreak.`getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `double` | IgnoredCommittedStudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | InstructorConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | InstructorFairness.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | RoomSizePenalty.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | ImportantStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | InstructorStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | QuadraticStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | StudentMinimizeDaysOfWeek.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | StudentMinimizeScheduleHoles.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `protected int` | InstructorConflict.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `String[]` | InstructorFairness.InstructorFairnessContext.`testFairness(Assignment<Lecture,Placement> assignment)` Method for whole evaluation of fairness criteria
    `protected void` | InstructorFairness.InstructorFairnessContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected void` | InstructorLunchBreak.InstructorLunchBreakContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | InstructorLunchBreak.InstructorLunchBreakContext.`updateCriterion(Assignment<Lecture,Placement> assignment, InstructorConstraint instructorConstraint, Placement placement)` Method checks or sets the CompactInfo of an InstructorConstraint.
    `void` | InstructorLunchBreak.InstructorLunchBreakContext.`updateLunchPenalty(Assignment<Lecture,Placement> assignment, InstructorConstraint constraint, Placement p)` Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately.

    Constructors in org.cpsolver.coursett.criteria.additional with parameters of type Assignment
    Constructor and Description
    `InstructorFairnessContext(Assignment<Lecture,Placement> assignment)`
    `InstructorLunchBreakContext(Assignment<Lecture,Placement> assignment)`

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

    Methods in org.cpsolver.coursett.criteria.placement with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AssignmentCount.AssignmentCountContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `AbstractCriterion.ValueContext` | AssignmentCount.`createAssignmentContext(Assignment<Lecture,Placement> assignment)` Deprecated.
    `AbstractCriterion.ValueContext` | WeightedHardConflicts.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `void` | PlacementSelectionCriterion.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | PlacementSelectionCriterion.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `double` | AssignmentCount.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)` Deprecated.
    `double` | DeltaTimePreference.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | HardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | PotentialHardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | WeightedHardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `protected void` | AssignmentCount.AssignmentCountContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`

    Constructors in org.cpsolver.coursett.criteria.placement with parameters of type Assignment
    Constructor and Description
    `AssignmentCountContext(Assignment<Lecture,Placement> assignment)`
    `IterationContext(Assignment<Lecture,Placement> assignment)`

  - ### Uses of Assignment in org.cpsolver.coursett.custom

    Methods in org.cpsolver.coursett.custom with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DeterministicStudentSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)` No re-sectioning (final sectioning) during deterministic student sectioning.

  - ### Uses of Assignment in org.cpsolver.coursett.heuristics

    Methods in org.cpsolver.coursett.heuristics that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<Lecture,Placement>` | NeighbourSelectionWithSuggestions.NeighbourSelectionWithSuggestionsContext.`getAssignment()`

    Methods in org.cpsolver.coursett.heuristics with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`assign(Assignment<Lecture,Placement> assignment, long iteration)`
    `FixCompleteSolutionNeighbourSelection.FixCompleteSolutionNeighbourContext` | FixCompleteSolutionNeighbourSelection.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `Map<String,Double>` | UniversalPerturbationsCounter.`getCompactInfo(Assignment<Lecture,Placement> assignment, TimetableModel model, boolean includeZero, boolean weighted)`
    `Map<String,Double>` | UniversalPerturbationsCounter.`getCompactInfo(Assignment<Lecture,Placement> assignment, TimetableModel model, Placement assignedPlacement, boolean includeZero, boolean weighted)`
    `void` | UniversalPerturbationsCounter.`getInfo(Assignment<Lecture,Placement> assignment, TimetableModel model, Map<String,String> info)`
    `void` | UniversalPerturbationsCounter.`getInfo(Assignment<Lecture,Placement> assignment, TimetableModel model, Map<String,String> info, List<Lecture> variables)`
    `protected double` | UniversalPerturbationsCounter.`getPenalty(Assignment<Lecture,Placement> assignment, Placement assignedPlacement, Placement initialPlacement)`
    `double` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`value(Assignment<Lecture,Placement> assignment)`

    Constructors in org.cpsolver.coursett.heuristics with parameters of type Assignment
    Constructor and Description
    `FixCompleteSolutionNeighbourContext(Assignment<Lecture,Placement> assignment)`

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

    Methods in org.cpsolver.coursett.model with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Set<JenrlConstraint>` | Lecture.`activeJenrls(Assignment<Lecture,Placement> assignment)` Active jenrl constraints (active mean that there is at least one student between its classes)
    `void` | Lecture.`addActiveJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint constr)` Add active jenrl constraint (active mean that there is at least one student between its classes)
    `void` | Lecture.`addStudent(Assignment<Lecture,Placement> assignment, Student student)` Add an enrolled student
    `void` | OnFlySectioning.`afterAssigned(Assignment<Lecture,Placement> assignment, long iteration, Placement value)` `FinalSectioning.resection(Assignment, Lecture, boolean, boolean)` is called when given iteration number is greater than zero.
    `void` | OnFlySectioning.`afterUnassigned(Assignment<Lecture,Placement> assignment, long iteration, Placement value)`
    `void` | OnFlySectioning.`beforeAssigned(Assignment<Lecture,Placement> assignment, long iteration, Placement value)`
    `void` | OnFlySectioning.`beforeUnassigned(Assignment<Lecture,Placement> assignment, long iteration, Placement value)`
    `int` | Lecture.`classLimit(Assignment<Lecture,Placement> assignment)`
    `int` | Lecture.`classLimit(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `List<Placement>` | Lecture.`computeValues(Assignment<Lecture,Placement> assignment, boolean allowBreakHard)` Domain -- all combinations of room and time locations
    `List<Lecture>` | Lecture.`conflictLectures(Assignment<Lecture,Placement> assignment, Student student)` Lectures different from this one, where it is student conflict of the given student between this and the lecture
    `Set<Student>` | Lecture.`conflictStudents(Assignment<Lecture,Placement> assignment)` List of students of this class which are in conflict with any other assignment
    `Set<Student>` | Lecture.`conflictStudents(Assignment<Lecture,Placement> assignment, Placement value)` List of students of this class in conflict with the given assignment
    `Set<Placement>` | TimetableModel.`conflictValuesSkipWeakeningConstraints(Assignment<Lecture,Placement> assignment, Placement value)` Returns the set of conflicting variables with this value, if it is assigned to its variable.
    `int` | Lecture.`countCommittedStudentConflicts(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countCommittedStudentConflictsOfTheSameProblem(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countDistanceStudentConflicts(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countDistanceStudentConflictsOfTheSameProblem(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countHardStudentConflicts(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countHardStudentConflictsOfTheSameProblem(Assignment<Lecture,Placement> assignment, Placement value)`
    `int` | Lecture.`countStudentConflicts(Assignment<Lecture,Placement> assignment, Placement value)` Number of student conflicts caused by the given assignment of this lecture
    `int` | Lecture.`countStudentConflictsOfTheSameProblem(Assignment<Lecture,Placement> assignment, Placement value)`
    `Lecture.LectureContext` | Lecture.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `FinalSectioning.MoveBetweenCfgs` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Configuration firstConfig, Student firstStudent, Configuration secondConfig, Student secondStudent)`
    `FinalSectioning.Move` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Lecture firstLecture, Student firstStudent, Lecture secondLecture, Student secondStudent)`
    `FinalSectioning.Move` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Lecture firstLecture, Student firstStudent, Lecture secondLecture, Student secondStudent, FinalSectioning.Move parentMove)`
    `protected void` | TimetableModel.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `void` | FinalSectioning.`findAndPerformMoves(Assignment<Lecture,Placement> assignment, Configuration configuration, HashSet<Lecture> lecturesToRecompute)`
    `void` | FinalSectioning.`findAndPerformMoves(Assignment<Lecture,Placement> assignment, Lecture lecture, HashSet<Lecture> lecturesToRecompute)` Swap students between this and the same lectures (lectures which differ only in the section)
    `FinalSectioning.Move` | FinalSectioning.`findAwayMove(Assignment<Lecture,Placement> assignment, Lecture lecture)`
    `FinalSectioning.MoveBetweenCfgs` | FinalSectioning.`findMove(Assignment<Lecture,Placement> assignment, Configuration config, Student student)`
    `FinalSectioning.Move` | FinalSectioning.`findMove(Assignment<Lecture,Placement> assignment, Lecture lecture, Student student)`
    `Map<String,String>` | TimetableModel.`getBounds(Assignment<Lecture,Placement> assignment)`
    `double` | FinalSectioning.Move.`getDelta(Assignment<Lecture,Placement> assignment)`
    `double` | FinalSectioning.MoveBetweenCfgs.`getDelta(Assignment<Lecture,Placement> assignment)`
    `Map<String,String>` | TimetableModel.`getInfo(Assignment<Lecture,Placement> assignment)` Global info
    `Map<String,String>` | TimetableModel.`getInfo(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `void` | DefaultStudentSectioning.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info)`
    `void` | DefaultStudentSectioning.`getInfo(Assignment<Lecture,Placement> assignment, Map<String,String> info, Collection<Lecture> variables)`
    `int` | Placement.`getMaxSpreadPenalty(Assignment<Lecture,Placement> assignment)`
    `String` | Placement.`getNotValidReason(Assignment<Lecture,Placement> assignment)` Deprecated.
    `String` | Placement.`getNotValidReason(Assignment<Lecture,Placement> assignment, boolean useAmPm)`
    `String` | Lecture.`getNotValidReason(Assignment<Lecture,Placement> assignment, Placement placement)` Deprecated.
    `String` | Lecture.`getNotValidReason(Assignment<Lecture,Placement> assignment, Placement placement, boolean useAmPm)`
    `int` | Lecture.`getSpreadPenalty(Assignment<Lecture,Placement> assignment)`
    `int` | Placement.`getSpreadPenalty(Assignment<Lecture,Placement> assignment)`
    `double` | TimetableModel.`getTotalValue(Assignment<Lecture,Placement> assignment)`
    `double` | TimetableModel.`getTotalValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)`
    `boolean` | Configuration.`hasConflict(Assignment<Lecture,Placement> assignment, Student student)`
    `protected void` | TimetableModel.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student
    `void` | DefaultStudentSectioning.`initialSectioning(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Configuration> configurations)` Enroll students into the given offering during the initial data load using `InitialSectioning`.
    `void` | StudentSectioning.`initialSectioning(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Configuration> configurations)` Enroll students into the given offering during the initial data load.
    `static void` | InitialSectioning.`initialSectioningCfg(Assignment<Lecture,Placement> assignment, Progress p, Long offeringId, String courseName, Collection<Student> students, List<Configuration> configurations)`
    `protected void` | DefaultStudentSectioning.`initialSectioningLectures(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Lecture> lectures)` Enroll students into the given classes during the initial data load using `InitialSectioning`.
    `boolean` | Placement.`isHard(Assignment<Lecture,Placement> assignment)`
    `int` | Lecture.`isInConflict(Assignment<Lecture,Placement> assignment, Student student)` True if this lecture is in a student conflict with the given student
    `boolean` | FinalSectioning.Move.`perform(Assignment<Lecture,Placement> assignment)`
    `boolean` | FinalSectioning.MoveBetweenCfgs.`perform(Assignment<Lecture,Placement> assignment)`
    `void` | Lecture.`removeActiveJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint constr)` Remove active jenrl constraint (active mean that there is at least one student between its classes)
    `void` | Lecture.`removeStudent(Assignment<Lecture,Placement> assignment, Student student)` Remove an enrolled student
    `void` | DefaultStudentSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)` Perform sectioning on the given lecture
    `void` | FinalSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)` Perform sectioning on the given lecture
    `void` | StudentSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)` Perform sectioning on the given lecture
    `void` | TimetableModel.`restoreBest(Assignment<Lecture,Placement> assignment)`
    `void` | TimetableModel.`saveBest(Assignment<Lecture,Placement> assignment)`
    `void` | TimetableModel.`switchStudents(Assignment<Lecture,Placement> assignment)` Student final sectioning (switching students between sections of the same class in order to minimize overall number of student conflicts)
    `void` | TimetableModel.`switchStudents(Assignment<Lecture,Placement> assignment, TerminationCondition<Lecture,Placement> termination)` Student final sectioning (switching students between sections of the same class in order to minimize overall number of student conflicts)
    `int` | FinalSectioning.`test(Assignment<Lecture,Placement> assignment, Student student, Lecture lecture)`
    `double` | Placement.`toDouble(Assignment<Lecture,Placement> assignment)`
    `List<Placement>` | Lecture.`values(Assignment<Lecture,Placement> assignment)` All values

  - ### Uses of Assignment in org.cpsolver.coursett.sectioning

    Methods in org.cpsolver.coursett.sectioning that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<Lecture,Placement>` | SctModel.`getAssignment()` Current assignment

    Methods in org.cpsolver.coursett.sectioning with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSwap.`assign(Assignment<Lecture,Placement> assignment, long iteration)`
    `protected void` | SctModel.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `protected void` | StudentSwap.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`generateSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student student, Configuration config)`
    `double` | StudentMove.`group(List<StudentConflict> criteria, Assignment<Lecture,Placement> assignment)` Student group weight change
    `double` | StudentSwap.`group(List<StudentConflict> criteria, Assignment<Lecture,Placement> assignment)`
    `protected double` | StudentSwapSectioning.`group(Neighbour<Lecture,Placement> n, Assignment<Lecture,Placement> assignment)` Student group weight change of a student swap
    `protected void` | SctModel.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student
    `protected void` | StudentSwap.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student
    `protected boolean` | StudentSwap.`initSwap(Assignment<Lecture,Placement> assignment, Long offeringId)` Compute student swap and its validity
    `protected double` | StudentSwapSectioning.`objective(Neighbour<Lecture,Placement> n, Assignment<Lecture,Placement> assignment)` Student conflict weight change of a student swap
    `void` | SctSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)`
    `void` | StudentSwapSectioning.`resection(Assignment<Lecture,Placement> assignment, Lecture lecture, boolean recursive, boolean configAsWell)`
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`selectNeighbour(Assignment<Lecture,Placement> assignment, Lecture lecture)`
    `double` | StudentSwap.`value(Assignment<Lecture,Placement> assignment)`
    `double` | StudentMove.`value(List<StudentConflict> criteria, Assignment<Lecture,Placement> assignment)` Student conflict weight change
    `double` | StudentSwap.`value(List<StudentConflict> criteria, Assignment<Lecture,Placement> assignment)`
    `protected double` | StudentSwapSectioning.`value(Neighbour<Lecture,Placement> n, Assignment<Lecture,Placement> assignment)` Combined weight change of a student swap

    Constructors in org.cpsolver.coursett.sectioning with parameters of type Assignment
    Constructor and Description
    `SctModel(TimetableModel model, Assignment<Lecture,Placement> assignment)` Constructor
    `StudentSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student student, Collection<Lecture> lectures)` Move a student into some other lectures of the offering.
    `StudentSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student firstStudent, Student secondStudent, Long offeringId)` Create a swap of two students of an offering.

  - ### Uses of Assignment in org.cpsolver.exam

    Methods in org.cpsolver.exam with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `static void` | Test.`createReports(ExamModel model, Assignment<Exam,ExamPlacement> assignment, File outDir, String outName)` Generate exam reports

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

    Methods in org.cpsolver.exam.criteria with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ExamRotationPenalty.RotationContext.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `void` | RoomSplitDistancePenalty.RoomSplitContext.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `void` | RoomSplitPenalty.RoomSplitContext.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `double` | ExamRotationPenalty.`averagePeriod(Assignment<Exam,ExamPlacement> assignment)`
    `protected double[]` | DistributionPenalty.`computeBounds(Assignment<Exam,ExamPlacement> assignment)`
    `AbstractCriterion.ValueContext` | ExamRotationPenalty.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `AbstractCriterion.ValueContext` | RoomSplitDistancePenalty.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `AbstractCriterion.ValueContext` | RoomSplitPenalty.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `double[]` | ExamCriterion.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> exams)`
    `double[]` | LargeExamsPenalty.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double[]` | PeriodPenalty.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double[]` | PeriodSizePenalty.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double[]` | RoomPenalty.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `void` | ExamCriterion.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | ExamRotationPenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | InstructorDirectConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | InstructorNotAvailableConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | PeriodIndexPenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | PeriodSizePenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | RoomSizePenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | RoomSplitDistancePenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | RoomSplitPenalty.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentBackToBackConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentDirectConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentDistanceBackToBackConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentMoreThan2ADayConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentNotAvailableConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `double` | DistributionPenalty.`getPeriodValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)` Period related distribution penalty, i.e., sum weights of violated distribution constraints
    `double` | ExamCriterion.`getPeriodValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)` Return impact of this criterion on period assignment (if this criterion is based on period assignment).
    `double` | DistributionPenalty.`getRoomValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)` Room related distribution penalty, i.e., sum weights of violated distribution constraints
    `double` | ExamCriterion.`getRoomValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)` Return impact of this criterion on room assignment (if this criterion is based on room assignment).
    `double` | DistributionPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | InstructorDirectConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | InstructorMoreThan2ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | InstructorNotAvailableConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> exams)`
    `double` | StudentBackToBackConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | StudentDirectConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | StudentMoreThan2ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | StudentNotAvailableConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> exams)`
    `double` | DistributionPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | ExamRotationPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | InstructorBackToBackConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | InstructorDirectConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | InstructorDistanceBackToBackConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | InstructorMoreThan2ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | InstructorNotAvailableConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | LargeExamsPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | PeriodIndexPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | PeriodPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | PeriodSizePenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | PerturbationPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomPerturbationPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomSizePenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomSplitDistancePenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomSplitPenalty.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentBackToBackConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentDirectConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentDistanceBackToBackConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentMoreThan2ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentNotAvailableConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `void` | DistributionPenalty.`inc(Assignment<Exam,ExamPlacement> assignment, double value)`
    `int` | ExamRotationPenalty.`nrAssignedExamsWithAvgPeriod(Assignment<Exam,ExamPlacement> assignment)`
    `int` | RoomSplitDistancePenalty.`nrRoomSplits(Assignment<Exam,ExamPlacement> assignment)`
    `String` | DistributionPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | ExamRotationPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | InstructorBackToBackConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | InstructorDirectConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | InstructorDistanceBackToBackConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | InstructorMoreThan2ADayConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | InstructorNotAvailableConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | LargeExamsPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | PeriodIndexPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | PeriodPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | PeriodSizePenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | PerturbationPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomPerturbationPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomSizePenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomSplitDistancePenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomSplitPenalty.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentBackToBackConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentDirectConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentDistanceBackToBackConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentMoreThan2ADayConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentNotAvailableConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `void` | ExamRotationPenalty.RotationContext.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `void` | RoomSplitDistancePenalty.RoomSplitContext.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `void` | RoomSplitPenalty.RoomSplitContext.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`

    Constructors in org.cpsolver.exam.criteria with parameters of type Assignment
    Constructor and Description
    `RoomSplitContext(Assignment<Exam,ExamPlacement> assignment)`
    `RoomSplitContext(Assignment<Exam,ExamPlacement> assignment)`
    `RotationContext(Assignment<Exam,ExamPlacement> assignment)`

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

    Methods in org.cpsolver.exam.criteria.additional with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected double[]` | DistributionViolation.`computeBounds(Assignment<Exam,ExamPlacement> assignment)`
    `double[]` | DistanceToStronglyPreferredRoom.`getBounds(Assignment<Exam,ExamPlacement> assignment)`
    `double[]` | PeriodViolation.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double[]` | RoomViolation.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `void` | DistanceToStronglyPreferredRoom.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `void` | StudentMoreThan1ADayConflicts.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)`
    `double` | DistributionViolation.`getPeriodValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `double` | DistributionViolation.`getRoomValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value)`
    `double` | DistributionViolation.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | StudentMoreThan1ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)`
    `double` | DistanceToStronglyPreferredRoom.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | DistributionViolation.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | PeriodViolation.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | RoomViolation.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `double` | StudentMoreThan1ADayConflicts.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)`
    `String` | DistanceToStronglyPreferredRoom.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | DistributionViolation.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | PeriodViolation.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | RoomViolation.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `String` | StudentMoreThan1ADayConflicts.`toString(Assignment<Exam,ExamPlacement> assignment)`

  - ### Uses of Assignment in org.cpsolver.exam.heuristics

    Methods in org.cpsolver.exam.heuristics with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | ExamGreatDeluge.`accept(Assignment<Exam,ExamPlacement> assignment, LazyNeighbour<Exam,ExamPlacement> neighbour, double value)` Deprecated. Accept lazy neighbour
    `boolean` | ExamHillClimbing.`accept(Assignment<Exam,ExamPlacement> assignment, LazyNeighbour<Exam,ExamPlacement> neighbour, double value)` Deprecated. Accept lazy neighbour
    `boolean` | ExamSimulatedAnnealing.`accept(Assignment<Exam,ExamPlacement> assignment, LazyNeighbour<Exam,ExamPlacement> neighbour, double value)` Deprecated. Accept lazy neighbour
    `ExamConstruction.Context` | ExamConstruction.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `ExamGreatDeluge.Context` | ExamGreatDeluge.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)` Deprecated.
    `ExamHillClimbing.Context` | ExamHillClimbing.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)` Deprecated.
    `ExamNeighbourSelection.Context` | ExamNeighbourSelection.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `ExamSimulatedAnnealing.Context` | ExamSimulatedAnnealing.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)` Deprecated.
    `ExamTabuSearch.TabuList` | ExamTabuSearch.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `Set<ExamRoomPlacement>` | ExamColoringConstruction.`findRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period)`
    `Neighbour<Exam,ExamPlacement>` | ExamConstruction.`checkLocalOptimality(Assignment<Exam,ExamPlacement> assignment, ExamModel model)` Find a new assignment of one of the assigned exams that improves the time cost `ExamPlacement.getTimeCost(Assignment)` and for which there is a set of available rooms `Exam.findBestAvailableRooms(Assignment, ExamPeriodPlacement)`.

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

    Methods in org.cpsolver.exam.model with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Exam.`allowAllStudentConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Allow all direct student conflict for the given period (see `ExamStudent.canConflict(Exam, Exam)`).
    `void` | ExamContext.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamDistributionConstraint.Context.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamRoom.ExamRoomContext.`assigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamRoom.`assigned(Assignment<Exam,ExamPlacement> assignment, long iteration, ExamPlacement p)` An exam was assigned, update room assignment table
    `void` | ExamDistributionConstraint.`computeConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPlacement givenPlacement, Set<ExamPlacement> conflicts)` Compute conflicts -- there is a conflict if the other variable is assigned and `ExamDistributionConstraint.check(ExamPlacement, ExamPlacement)` is false
    `void` | ExamInstructor.`computeConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p, Set<ExamPlacement> conflicts)` Compute conflicts between the given assignment of an exam and all the current assignments (of this instructor).
    `void` | ExamRoom.`computeConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p, Set<ExamPlacement> conflicts)` Compute conflicts between the given assignment of an exam and all the current assignments (of this room)
    `void` | ExamStudent.`computeConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p, Set<ExamPlacement> conflicts)` Compute conflicts between the given assignment of an exam and all the current assignments (of this student).
    `int` | Exam.`countInstructorConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Number of instructor of this exam (that does not have direct conflicts allowed, see `ExamInstructor.canConflict(Exam, Exam)`) that attend some other exam in the given period.
    `int` | Exam.`countStudentConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Number of students of this exam (that does not have direct conflicts allowed, see `ExamStudent.canConflict(Exam, Exam)`) that attend some other exam in the given period.
    `ExamDistributionConstraint.Context` | ExamDistributionConstraint.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `ExamContext` | ExamModel.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `ExamRoom.ExamRoomContext` | ExamRoom.`createAssignmentContext(Assignment<Exam,ExamPlacement> assignment)`
    `Set<ExamRoomPlacement>` | Exam.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Find best available rooms for the exam in the given period.
    `Set<ExamRoomPlacement>` | Exam.`findRoomsRandom(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Randomly find a set of available rooms for the exam in the given period.
    `Set<ExamRoomPlacement>` | Exam.`findRoomsRandom(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period, boolean checkConflicts)` Randomly find a set of available rooms for the exam in the given period.
    `int` | Exam.`getDistributionConstraintPenalty(Assignment<Exam,ExamPlacement> assignment, ExamRoomPlacement room)` Check all soft distribution constraint that this exam is involved in
    `Set<Exam>` | ExamInstructor.`getExams(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Exam(s) enrolled by the instructor that are scheduled in the given period
    `Set<Exam>` | ExamStudent.`getExams(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Exam(s) enrolled by the student that are scheduled in the given period
    `Set<Exam>` | ExamInstructor.`getExamsADay(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Exam(s) enrolled by the instructor that are scheduled in the given day
    `Set<Exam>` | ExamStudent.`getExamsADay(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Exam(s) enrolled by the student that are scheduled in the given day
    `Set<Exam>` | ExamInstructor.`getExamsADay(Assignment<Exam,ExamPlacement> assignment, int day)` Exam(s) enrolled by the instructor that are scheduled in the given day
    `Set<Exam>` | ExamStudent.`getExamsADay(Assignment<Exam,ExamPlacement> assignment, int day)` Exam(s) enrolled by the student that are scheduled in the given day
    `Map<String,String>` | ExamModel.`getExtendedInfo(Assignment<Exam,ExamPlacement> assignment)` Extended info table
    `Map<ExamInstructor,Set<Exam>>` | ExamModel.`getInstructorsOfDay(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)`
    `Map<ExamInstructor,Set<Exam>>` | ExamModel.`getInstructorsOfDay(Assignment<Exam,ExamPlacement> assignment, int day)`
    `Map<ExamInstructor,Set<Exam>>` | ExamModel.`getInstructorsOfPeriod(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)`
    `List<ExamPlacement>` | ExamRoom.`getPlacements(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` Exams placed at the given period
    `double` | ExamPlacement.`getRoomCost(Assignment<Exam,ExamPlacement> assignment)` Overall cost of using this set or rooms.
    `HashSet<Exam>` | Exam.`getStudentConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` List of exams that are assigned to the given period and share one or more students with this exam (that does not have direct conflicts allowed, see `ExamStudent.canConflict(Exam, Exam)`).
    `Map<ExamStudent,Set<Exam>>` | ExamModel.`getStudentsOfDay(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)`
    `Map<ExamStudent,Set<Exam>>` | ExamModel.`getStudentsOfDay(Assignment<Exam,ExamPlacement> assignment, int day)`
    `Map<ExamStudent,Set<Exam>>` | ExamModel.`getStudentsOfPeriod(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)`
    `double` | ExamPlacement.`getTimeCost(Assignment<Exam,ExamPlacement> assignment)` Overall cost of using this period.
    `double[]` | ExamModel.`getTotalMultiValue(Assignment<Exam,ExamPlacement> assignment)` Return weighted individual objective criteria.
    `double` | ExamModel.`getTotalValue(Assignment<Exam,ExamPlacement> assignment)` Objective function.
    `boolean` | Exam.`hasStudentConflictWithPreAssigned(Assignment<Exam,ExamPlacement> assignment, ExamPeriod period)` True, if there is a student of this exam (that does not have direct conflicts allowed, see `ExamStudent.canConflict(Exam, Exam)`) that attends some other exam in the given period.
    `boolean` | Exam.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Check all distribution constraint that this exam is involved in
    `boolean` | Exam.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, ExamRoomPlacement room)` Check all distribution constraint that this exam is involved in
    `boolean` | ExamDistributionConstraint.`inConflict(Assignment<Exam,ExamPlacement> assignment, ExamPlacement givenPlacement)` Check for conflict -- there is a conflict if the other variable is assigned and `ExamDistributionConstraint.check(ExamPlacement, ExamPlacement)` is false
    `boolean` | ExamInstructor.`inConflict(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p)` Check whether there is a conflict between the given assignment of an exam and all the current assignments (of this instructor).
    `boolean` | ExamRoom.`inConflict(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p)` Checks whether there is a conflict between the given assignment of an exam and all the current assignments (of this room)
    `boolean` | ExamStudent.`inConflict(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p)` Check whether there is a conflict between the given assignment of an exam and all the current assignments (of this student).
    `boolean` | ExamDistributionConstraint.`isSatisfied(Assignment<Exam,ExamPlacement> assignment)` Return true if this is hard constraint or this is a soft constraint without any violation
    `boolean` | ExamDistributionConstraint.`isSatisfied(Assignment<Exam,ExamPlacement> assignment, ExamPlacement p)` Return true if this is hard constraint or this is a soft constraint without any violation
    `boolean` | ExamModel.`load(Document document, Assignment<Exam,ExamPlacement> assignment)` Load model (including its solution) from XML.
    `boolean` | ExamModel.`load(Document document, Assignment<Exam,ExamPlacement> assignment, Callback saveBest)` Load model (including its solution) from XML.
    `Document` | ExamModel.`save(Assignment<Exam,ExamPlacement> assignment)` Save model (including its solution) into XML.
    `double` | ExamPlacement.`toDouble(Assignment<Exam,ExamPlacement> assignment)` Overall cost of using this placement.
    `String` | ExamModel.`toString(Assignment<Exam,ExamPlacement> assignment)` String representation -- returns a list of values of objective criteria
    `String` | ExamPlacement.`toString(Assignment<Exam,ExamPlacement> assignment)` String representation -- returns a list of assignment costs
    `void` | ExamContext.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamDistributionConstraint.Context.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamRoom.ExamRoomContext.`unassigned(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`
    `void` | ExamRoom.`unassigned(Assignment<Exam,ExamPlacement> assignment, long iteration, ExamPlacement p)` An exam was unassigned, update room assignment table
    `List<ExamPlacement>` | Exam.`values(Assignment<Exam,ExamPlacement> assignment)` Values (assignment of a period and a set of rooms)
    `void` | Exam.`variableAssigned(Assignment<Exam,ExamPlacement> assignment, long iteration, ExamPlacement placement)`

    Constructors in org.cpsolver.exam.model with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<Exam,ExamPlacement> assignment)`
    `ExamContext(ExamModel model, Assignment<Exam,ExamPlacement> assignment)`
    `ExamRoomContext(Assignment<Exam,ExamPlacement> assignment)`

  - ### Uses of Assignment in org.cpsolver.exam.neighbours

    Methods in org.cpsolver.exam.neighbours with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ExamRoomSwapNeighbour.`assign(Assignment<Exam,ExamPlacement> assignment, long iteration)`
    `void` | ExamSimpleNeighbour.`assign(Assignment<Exam,ExamPlacement> assignment, long iteration)`
    `Set<ExamRoomPlacement>` | ExamPeriodSwapMove.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`
    `int` | ExamPeriodSwapMove.`getDistributionConstraintPenalty(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`
    `boolean` | ExamPeriodSwapMove.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, Map<Exam,ExamPlacement> placements)`
    `boolean` | ExamPeriodSwapMove.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`
    `double` | ExamRoomSwapNeighbour.`value(Assignment<Exam,ExamPlacement> assignment)`
    `double` | ExamSimpleNeighbour.`value(Assignment<Exam,ExamPlacement> assignment)`

    Constructors in org.cpsolver.exam.neighbours with parameters of type Assignment
    Constructor and Description
    `ExamRoomSwapNeighbour(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement, ExamRoomPlacement current, ExamRoomPlacement swap)`
    `ExamSimpleNeighbour(Assignment<Exam,ExamPlacement> assignment, ExamPlacement placement)`

  - ### Uses of Assignment in org.cpsolver.exam.reports

    Methods in org.cpsolver.exam.reports with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `CSVFile` | ExamAssignments.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamCourseSectionAssignments.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamInstructorConflicts.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamNbrMeetingsPerDay.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamPeriodUsage.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamRoomSchedule.`report(Assignment<Exam,ExamPlacement> assignment)`
    `CSVFile` | ExamRoomSplit.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentBackToBackConflicts.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentConflicts.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentConflictsBySectionCourse.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentConflictsPerExam.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentDirectConflicts.`report(Assignment<Exam,ExamPlacement> assignment)` generate report
    `CSVFile` | ExamStudentMoreTwoADay.`report(Assignment<Exam,ExamPlacement> assignment)` generate report

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

    Methods in org.cpsolver.exam.split with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ExamSplitMoves.ExamSplitNeighbour.`assign(Assignment<Exam,ExamPlacement> assignment, long iteration)` Perform the split.
    `void` | ExamSplitMoves.ExamMergeNeighbour.`assign(Assignment<Exam,ExamPlacement> assignment, long iteration)` Perform the merge.
    `void` | ExamSplitMoves.ExamShuffleNeighbour.`assign(Assignment<Exam,ExamPlacement> assignment, long iteration)` Perform the shuffle.
    `void` | ExamSplitter.`bestRestored(Assignment<Exam,ExamPlacement> assignment)` Best solution was restored, change the splits back to what it was in the best solution
    `void` | ExamSplitter.`bestSaved(Assignment<Exam,ExamPlacement> assignment)` Best solution was saved, remember the current splits
    `ExamSplitMoves.ExamSplitNeighbour` | ExamSplitMoves.`bestSplit(Assignment<Exam,ExamPlacement> assignment, Exam exam)` Find a best split for the given exam.
    `double` | ExamSplitter.`delta(Assignment<Exam,ExamPlacement> assignment, ExamStudent student, ExamPlacement oldPlacement, ExamPlacement newPlacement)` Difference in the total weighted student conflicts (including `StudentDirectConflicts`, `StudentMoreThan2ADayConflicts`, and `StudentBackToBackConflicts`) if a student is moved from an exam with one placement into an exam with another placement.
    `Set<ExamRoomPlacement>` | ExamSplitMoves.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, int examSize)` Find best available rooms for a new exam (that is to be split from the given one), if is is assigned into the given examination period.
    `double[]` | ExamSplitter.`getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> exams)` Not used
    `void` | ExamSplitter.`getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)` Lists the split
    `double` | ExamSplitter.`getValue(Assignment<Exam,ExamPlacement> assignment)`
    `double` | ExamSplitter.`getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)` Not used
    `Exam` | ExamSplitter.`merge(Assignment<Exam,ExamPlacement> assignment, Exam child, long iteration)` Merge an exam
    `void` | ExamSplitter.`shuffle(Assignment<Exam,ExamPlacement> assignment, Exam exam, long iteration)` Shuffle students between the given exam and all the other exams in the split (if there are any).
    `Exam` | ExamSplitter.`split(Assignment<Exam,ExamPlacement> assignment, Exam parent, long iteration, ExamPlacement placement)` Split an exam
    `String` | ExamSplitter.`toString(Assignment<Exam,ExamPlacement> assignment)`
    `double` | ExamSplitMoves.ExamSplitNeighbour.`value(Assignment<Exam,ExamPlacement> assignment)` Value of the split.
    `double` | ExamSplitMoves.ExamMergeNeighbour.`value(Assignment<Exam,ExamPlacement> assignment)` Value of the merge.
    `double` | ExamSplitMoves.ExamShuffleNeighbour.`value(Assignment<Exam,ExamPlacement> assignment)` Value of the shuffle.

    Constructors in org.cpsolver.exam.split with parameters of type Assignment
    Constructor and Description
    `ExamMergeNeighbour(Assignment<Exam,ExamPlacement> assignment, Exam exam)` Child exam to be removed.
    `ExamShuffleNeighbour(Assignment<Exam,ExamPlacement> assignment, Exam exam)` Exam to be shuffled.
    `ExamSplitNeighbour(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPlacement placement)` Split an exam into two, assign the new exam into the given placement.

  - ### Uses of Assignment in org.cpsolver.ifs.algorithms

    Methods in org.cpsolver.ifs.algorithms with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | NeighbourSearch.`accept(Assignment<V,T> assignment, LazyNeighbour<V,T> neighbour, double value)` Accept lazy neighbour -- calling the acceptance criterion with lazy = true.
    `protected boolean` | GreatDeluge.GreatDelugeContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept the given neighbour if it does not worsen the current solution or when the new solution is below the bound
    `protected boolean` | HillClimber.HillClimberContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept any move that does not worsen the solution (value <= 0)
    `protected abstract boolean` | NeighbourSearch.NeighbourSearchContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Acceptance criterion.
    `protected boolean` | SimulatedAnnealing.SimulatedAnnealingContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` True if the given neighbour is to be be accepted
    `protected boolean` | StepCountingHillClimber.StepCountingHillClimberContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept any move that does not worsen the solution (value <= 0) or that is below the bound.
    `NeighbourSearch.NeighbourSearchContext` | GreatDeluge.`createAssignmentContext(Assignment<V,T> assignment)`
    `NeighbourSearch.NeighbourSearchContext` | HillClimber.`createAssignmentContext(Assignment<V,T> assignment)`
    `MetaHeuristicSearch.MetaHeuristicSearchContext` | MetaHeuristicSearch.`createAssignmentContext(Assignment<V,T> assignment)`
    `ParallelConstruction.ConstructionContext` | ParallelConstruction.`createAssignmentContext(Assignment<V,T> assignment)`
    `SimpleSearch.SimpleSearchContext` | SimpleSearch.`createAssignmentContext(Assignment<V,T> assignment)`
    `NeighbourSearch.NeighbourSearchContext` | SimulatedAnnealing.`createAssignmentContext(Assignment<V,T> assignment)`
    `NeighbourSearch.NeighbourSearchContext` | StepCountingHillClimber.`createAssignmentContext(Assignment<V,T> assignment)`
    `void` | NeighbourSelector.`update(Assignment<V,T> a, Neighbour<V,T> n, long time)` Update statistics

    Constructors in org.cpsolver.ifs.algorithms with parameters of type Assignment
    Constructor and Description
    `ConstructionContext(Assignment<V,T> assignment)`

  - ### Uses of Assignment in org.cpsolver.ifs.algorithms.neighbourhoods

    Methods in org.cpsolver.ifs.algorithms.neighbourhoods with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | RandomSwapMove.SwapNeighbour.`assign(Assignment<V,T> assignment, long iteration)`
    `double` | RandomSwapMove.SwapNeighbour.`value(Assignment<V,T> assignment)`

  - ### Uses of Assignment in org.cpsolver.ifs.assignment

    Subinterfaces of Assignment in org.cpsolver.ifs.assignment
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `InheritedAssignment<V extends Variable<V,T>,T extends Value<V,T>>` An assignment inherited from some other assignment with only a few local modifications.

    Classes in org.cpsolver.ifs.assignment that implement Assignment
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AssignmentAbstract<V extends Variable<V,T>,T extends Value<V,T>>` An abstract implementation of an `Assignment` object.
    `class` | `AssignmentArray<V extends Variable<V,T>,T extends Value<V,T>>` An assignment using array to store values of all the variables of the model.
    `class` | `AssignmentMap<V extends Variable<V,T>,T extends Value<V,T>>` An assignment using a `HashMap` to store values of all the variables of the model.
    `class` | `DefaultInheritedAssignment<V extends Variable<V,T>,T extends Value<V,T>>` Default inherited assignment.
    `class` | `DefaultParallelAssignment<V extends Variable<V,T>,T extends Value<V,T>>` An assignment using the `Variable.getAssignments()` to store values of all the variables of the model.
    `class` | `DefaultSingleAssignment<V extends Variable<V,T>,T extends Value<V,T>>` An assignment using the old `Variable.getAssignment()` to store values of all the variables of the model.
    `class` | `EmptyAssignment<V extends Variable<V,T>,T extends Value<V,T>>` An empty assignment.
    `class` | `InheritedAssignmentArray<V extends Variable<V,T>,T extends Value<V,T>>`
    `class` | `OptimisticInheritedAssignment<V extends Variable<V,T>,T extends Value<V,T>>` Optimistic inherited assignment.

    Fields in org.cpsolver.ifs.assignment declared as Assignment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<V,T>` | AssignmentComparator.`iAssignment`

    Methods in org.cpsolver.ifs.assignment that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<V,T>` | DefaultInheritedAssignment.`getParentAssignment()`
    `Assignment<V,T>` | InheritedAssignment.`getParentAssignment()` Return parent assignment.
    `Assignment<V,T>` | InheritedAssignmentArray.`getParentAssignment()`
    `Assignment<V,T>` | OptimisticInheritedAssignment.`getParentAssignment()`

    Methods in org.cpsolver.ifs.assignment with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `int` | AssignmentComparable.`compareTo(Assignment<V,T> assignment, X other)` Compare this object with a given one.

    Constructors in org.cpsolver.ifs.assignment with parameters of type Assignment
    Constructor and Description
    `AssignmentComparator(Assignment<V,T> assignment)` Create comparator with the given assignment.
    `AssignmentMap(Assignment<V,T> assignment)` Creates a copy of an existing assignment
    `DefaultParallelAssignment(int threadIndex, Model<V,T> model, Assignment<V,T> assignment)`
    `ValueComparator(Assignment<V,T> assignment)`

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

    Methods in org.cpsolver.ifs.assignment.context with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ModelWithContext.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | ModelWithContext.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | BinaryConstraintWithContext.`assigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | ConstraintWithContext.`assigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | AssignmentConstraintContext.`assigned(Assignment<V,T> assignment, T value)` Called when `ConstraintWithContext.assigned(Assignment, long, Value)` is called to update the content of the context.
    `void` | ModelWithContext.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | ModelWithContext.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)`
    `C` | HasAssignmentContext.`createAssignmentContext(Assignment<V,T> assignment)` Create a new assignment context for the given assignment.
    `<U extends AssignmentContext> U` | AssignmentContextHolder.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)` Return assignment context for the given assignment and reference.
    `<U extends AssignmentContext> U` | AssignmentContextHolderArray.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)`
    `<U extends AssignmentContext> U` | AssignmentContextHolderMap.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)`
    `<U extends AssignmentContext> U` | DefaultParallelAssignmentContextHolder.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)`
    `<U extends AssignmentContext> U` | DefaultSingleAssignmentContextHolder.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)`
    `<U extends AssignmentContext> U` | InheritedAssignmentContextHolder.`getAssignmentContext(Assignment<V,T> assignment, AssignmentContextReference<V,T,U> reference)` If the `AssignmentContextReference.getParent()` implements the `CanInheritContext` interface, this method will use the `CanInheritContext.inheritAssignmentContext(Assignment, AssignmentContext)` instead of the `HasAssignmentContext.createAssignmentContext(Assignment)` to create a new context.
    `C` | AbstractClassWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this object.
    `C` | BinaryConstraintWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this constraint.
    `C` | ConstraintWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this constraint.
    `C` | ExtensionWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this extension.
    `C` | HasAssignmentContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this object.
    `C` | ModelWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this model.
    `C` | NeighbourSelectionWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this selection.
    `C` | VariableWithContext.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this extension.
    `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.
    `C` | CanInheritContext.`inheritAssignmentContext(Assignment<V,T> assignment, C parentContext)` Create a new assignment context for the given assignment.
    `void` | BinaryConstraintWithContext.`unassigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | ConstraintWithContext.`unassigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | AssignmentConstraintContext.`unassigned(Assignment<V,T> assignment, T value)` Called when `ConstraintWithContext.unassigned(Assignment, long, Value)` is called to update the content of the context.

  - ### Uses of Assignment in org.cpsolver.ifs.constant

    Methods in org.cpsolver.ifs.constant with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ConstantModel.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is assigned to its variable.
    `void` | ConstantModel.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is unassigned from its variable.
    `void` | ConstantModel.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is assigned to its variable.
    `void` | ConstantModel.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is unassigned from its variable.

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

    Methods in org.cpsolver.ifs.criteria with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | AbstractCriterion.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | AbstractCriterion.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)`
    `protected void` | AbstractCriterion.ValueContext.`assigned(Assignment<V,T> assignment, T value)` Update value when assigned
    `void` | AbstractCriterion.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | AbstractCriterion.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | AbstractCriterion.`bestRestored(Assignment<V,T> assignment)`
    `void` | Criterion.`bestRestored(Assignment<V,T> assignment)` Notification that the current solution has been restored from the best.
    `void` | AbstractCriterion.`bestSaved(Assignment<V,T> assignment)`
    `void` | Criterion.`bestSaved(Assignment<V,T> assignment)` Notification that the current solution has been saved to the best.
    `protected double[]` | AbstractCriterion.`computeBounds(Assignment<V,T> assignment)` Compute bounds (bounds are being cached by default).
    `AbstractCriterion.ValueContext` | AbstractCriterion.`createAssignmentContext(Assignment<V,T> assignment)`
    `double[]` | AbstractCriterion.`getBounds(Assignment<V,T> assignment)`
    `protected double[]` | AbstractCriterion.ValueContext.`getBounds(Assignment<V,T> assignment)` Return bounds
    `double[]` | Criterion.`getBounds(Assignment<V,T> assignment)` Bounds (minimum and maximum) estimate for the value
    `double[]` | AbstractCriterion.`getBounds(Assignment<V,T> assignment, Collection<V> variables)`
    `double[]` | Criterion.`getBounds(Assignment<V,T> assignment, Collection<V> variables)` Value bounds (minimum and maximum) of the criterion on a part of the problem
    `AbstractCriterion.ValueContext` | AbstractCriterion.`getContext(Assignment<V,T> assignment)` Returns an assignment context associated with this criterion.
    `void` | AbstractCriterion.`getExtendedInfo(Assignment<V,T> assignment, Map<String,String> info)`
    `void` | AbstractCriterion.`getInfo(Assignment<V,T> assignment, Map<String,String> info)`
    `void` | AbstractCriterion.`getInfo(Assignment<V,T> assignment, Map<String,String> info, Collection<V> variables)`
    `String` | AbstractCriterion.`getPercentage(Assignment<V,T> assignment)` Return formatted value of this criterion, as percentage when possible
    `double` | AbstractCriterion.`getValue(Assignment<V,T> assignment)`
    `double` | Criterion.`getValue(Assignment<V,T> assignment)` Current value of the criterion (optimization objective)
    `double` | AbstractCriterion.`getValue(Assignment<V,T> assignment, Collection<V> variables)`
    `double` | Criterion.`getValue(Assignment<V,T> assignment, Collection<V> variables)` Value of a part of the problem (given by the collection of variables)
    `double` | AssignedValue.`getValue(Assignment<V,T> assignment, T value, Set<T> conflicts)`
    `double` | Criterion.`getValue(Assignment<V,T> assignment, T value, Set<T> conflicts)` Value of a proposed assignment (including hard conflicts)
    `double` | AbstractCriterion.`getWeightedValue(Assignment<V,T> assignment)`
    `double` | Criterion.`getWeightedValue(Assignment<V,T> assignment)` Weighted value of the objectives
    `double` | AbstractCriterion.`getWeightedValue(Assignment<V,T> assignment, Collection<V> variables)`
    `double` | Criterion.`getWeightedValue(Assignment<V,T> assignment, Collection<V> variables)` Weighted value of a part of the problem (given by the collection of variables)
    `double` | AbstractCriterion.`getWeightedValue(Assignment<V,T> assignment, T value, Set<T> conflicts)`
    `double` | Criterion.`getWeightedValue(Assignment<V,T> assignment, T value, Set<T> conflicts)` Weighted value of a proposed assignment (including hard conflicts)
    `void` | AbstractCriterion.`inc(Assignment<V,T> assignment, double value)`
    `void` | Criterion.`inc(Assignment<V,T> assignment, double value)` Outside update of the criterion (usefull when the criterion is driven by a set of constraints).
    `String` | AbstractCriterion.`toString(Assignment<V,T> assignment)` Simple text representation of the criterion and its value.
    `String` | Criterion.`toString(Assignment<V,T> assignment)` Simple text representation of the criterion and its value.
    `protected void` | AbstractCriterion.ValueContext.`unassigned(Assignment<V,T> assignment, T value)` Update value when unassigned

    Constructors in org.cpsolver.ifs.criteria with parameters of type Assignment
    Constructor and Description
    `ValueContext(Assignment<V,T> assignment)` Create from an assignment

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

    Methods in org.cpsolver.ifs.dbt with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DbtPropagation.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` Propagation takes place every time a value is assigned to a variable.
    `void` | DbtPropagation.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` Undo propagation when a value is unassigned.
    `void` | DbtPropagation.`neighbourFailed(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)`
    `boolean` | DbtPropagation.`neighbourSelected(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)`
    `boolean` | DbtPropagation.`valueSelected(Assignment<V,T> assignment, long iteration, V variable, T value)` If no value is selected (because of a dead end), make some unassignments.
    `boolean` | DbtPropagation.`variableSelected(Assignment<V,T> assignment, long iteration, V variable)` If no variable is selected (all variables are assinged), unassign the last assigned variable.

  - ### Uses of Assignment in org.cpsolver.ifs.example.csp

    Methods in org.cpsolver.ifs.example.csp with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | CSPBinaryConstraint.`computeConflicts(Assignment<CSPVariable,CSPValue> assignment, CSPValue aValue, Set<CSPValue> conflicts)` Add the other variable to the set of conflicts, if it is not compatible with the given value.
    `Map<String,String>` | StructuredCSPModel.`getInfo(Assignment<CSPVariable,CSPValue> assignment)` Return information table

  - ### Uses of Assignment in org.cpsolver.ifs.example.jobshop

    Methods in org.cpsolver.ifs.example.jobshop with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Job.`computeConflicts(Assignment<Operation,Location> assignment, Location location, Set<Location> conflicts)` Adds conflicting operations into the set of conflicts.
    `void` | Machine.`computeConflicts(Assignment<Operation,Location> assignment, Location location, Set<Location> conflicts)` Adds conflicting operations into the set of conflicts.
    `int` | JobShopModel.`getFinishingTime(Assignment<Operation,Location> assignment)` Get finishing time of the current (partial) solution
    `Map<String,String>` | JobShopModel.`getInfo(Assignment<Operation,Location> assignment)` Get information table
    `boolean` | Job.`inConflict(Assignment<Operation,Location> assignment, Location location)` True if there is an operation from the same job which violates with the given assignment.
    `boolean` | Machine.`inConflict(Assignment<Operation,Location> assignment, Location location)` True if there is an operation from the machine which violates with the given assignment.
    `void` | JobShopModel.`save(Assignment<Operation,Location> assignment, String file)` Save the solution into the given file

  - ### Uses of Assignment in org.cpsolver.ifs.example.rpp

    Methods in org.cpsolver.ifs.example.rpp with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ResourceConstraint.Context.`assigned(Assignment<Rectangle,Location> assignment, Location placement)` Notification, when a rectangle is placed.
    `void` | ResourceConstraint.`computeConflicts(Assignment<Rectangle,Location> assignment, Location placement, Set<Location> conflicts)` Compute conflicts with the given placement of the rectangle.
    `ResourceConstraint.Context` | ResourceConstraint.`createAssignmentContext(Assignment<Rectangle,Location> assignment)`
    `void` | ResourceConstraint.`check(Assignment<Rectangle,Location> assignment)`
    `boolean` | ResourceConstraint.`inConflict(Assignment<Rectangle,Location> assignment, Location placement)` Returns true if there is a rectangle which overlaps with the given assignment.
    `void` | ResourceConstraint.Context.`unassigned(Assignment<Rectangle,Location> assignment, Location placement)` Notification, when a rectangle is unplaced.

    Constructors in org.cpsolver.ifs.example.rpp with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<Rectangle,Location> assignment)`

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

    Methods in org.cpsolver.ifs.example.tt with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Resource.Context.`assigned(Assignment<Activity,Location> assignment, Location location)`
    `void` | Dependence.`computeConflicts(Assignment<Activity,Location> assignment, Location location, Set<Location> conflicts)`
    `void` | Resource.`computeConflicts(Assignment<Activity,Location> assignment, Location location, Set<Location> conflicts)`
    `Resource.Context` | Resource.`createAssignmentContext(Assignment<Activity,Location> assignment)`
    `static TimetableModel` | TimetableModel.`generate(DataProperties cfg, Assignment<Activity,Location> assignment)`
    `boolean` | Dependence.`inConflict(Assignment<Activity,Location> assignment, Location location)`
    `boolean` | Resource.`inConflict(Assignment<Activity,Location> assignment, Location location)`
    `static TimetableModel` | TimetableModel.`loadFromXML(File inFile, Assignment<Activity,Location> assignment)`
    `void` | TimetableModel.`saveAsXML(DataProperties cfg, boolean gen, Solution<Activity,Location> solution, Assignment<Activity,Location> assignment, File outFile)`
    `void` | Resource.Context.`unassigned(Assignment<Activity,Location> assignment, Location location)`

    Constructors in org.cpsolver.ifs.example.tt with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<Activity,Location> assignment)`

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

    Methods in org.cpsolver.ifs.extension with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Extension.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is assigned to a variable
    `void` | MacPropagation.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` After a value is assigned: explanations of other values of the value's variable are reset (to contain only the assigned value), propagation over the assigned variable takes place.
    `void` | MacRevised.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` After a value is assigned: explanations of other values of the value's variable are reset (to contain only the assigned value), propagation over the assigned variable takes place.
    `void` | SearchIntensification.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | SearchIntensification.Context.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)`
    `void` | Extension.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is unassigned from a variable
    `void` | MacPropagation.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` After a value is unassigned: explanations of all values of unassigned variable are recomputed (`Value.conflicts(Assignment)`), propagation undo over the unassigned variable takes place.
    `void` | MacRevised.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` After a value is unassigned: explanations of all values of unassigned variable are recomputed (`Value.conflicts(Assignment)`), propagation undo over the unassigned variable takes place.
    `void` | Extension.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is assigned to a variable
    `void` | MacPropagation.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Before a value is unassigned: until the value is inconsistent with the current solution, an assignment from its explanation is picked and unassigned.
    `void` | MacRevised.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Before a value is unassigned: until the value is inconsistent with the current solution, an assignment from its explanation is picked and unassigned.
    `void` | Extension.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is unassigned from a variable
    `void` | ConflictStatistics.`constraintAfterAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)` Increments appropriate counters when there is a value unassigned
    `void` | ConflictStatistics.`constraintBeforeAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)`
    `long` | ConflictStatistics.`countPotentialConflicts(Assignment<V,T> assignment, long iteration, T value, int limit)` Counts potential number of unassignments of if the given value is selected.
    `MacPropagation.NoGood` | MacPropagation.`createAssignmentContext(Assignment<V,T> assignment)`
    `MacRevised.NoGood` | MacRevised.`createAssignmentContext(Assignment<V,T> assignment)`
    `SearchIntensification.Context` | SearchIntensification.`createAssignmentContext(Assignment<V,T> assignment)`
    `Set<T>` | MacRevised.NoGood.`explanation(Assignment<V,T> assignment, Constraint<V,T> constraint, T value, V variable)`
    `Set<T>` | MacPropagation.`goodValues(Assignment<V,T> assignment, V variable)` good values of a variable (values not removed from variables domain)
    `boolean` | MacRevised.NoGood.`hasSupport(Assignment<V,T> assignment, Constraint<V,T> constraint, T value, V variable)`
    `boolean` | ViolatedInitials.`init(Assignment<V,T> assignment)` Compute the violations between any value and all other initial values
    `boolean` | MacPropagation.`isGood(Assignment<V,T> assignment, T value)` is variable good
    `Set<T>` | MacPropagation.`noGood(Assignment<V,T> assignment, T value)` variables explanation
    `void` | MacRevised.NoGood.`propagate(Assignment<V,T> assignment, Constraint<V,T> constraint, T noGoodValue, List<T> queue)`
    `void` | MacRevised.NoGood.`propagate(Assignment<V,T> assignment, List<T> queue)`
    `protected void` | MacPropagation.NoGood.`propagate(Assignment<V,T> assignment, Queue<V> queue)` Propagation over the queue of variables.
    `protected void` | MacPropagation.`propagate(Assignment<V,T> assignment, V variable)` Propagation over the given variable.
    `protected void` | MacPropagation.NoGood.`propagate(Assignment<V,T> assignment, V variable)` Propagation over the given variable.
    `protected boolean` | MacPropagation.NoGood.`propagate(Assignment<V,T> assignment, V aVariable, V anotherVariable)`
    `protected boolean` | MacPropagation.NoGood.`propagate(Assignment<V,T> assignment, V aVariable, V anotherVariable, List<T> adepts)`
    `boolean` | MacRevised.NoGood.`revise(Assignment<V,T> assignment, Constraint<V,T> constraint, T value)`
    `boolean` | MacRevised.NoGood.`revise(Assignment<V,T> assignment, T value)`
    `protected void` | MacPropagation.`setGood(Assignment<V,T> assignment, T value)` sets value to be good
    `void` | MacPropagation.`setNoGood(Assignment<V,T> assignment, T value, Set<T> reason)` sets value's explanation
    `void` | MacRevised.NoGood.`setNoGood(Assignment<V,T> assignment, T value, Set<T> reason)` sets value's explanation
    `Set<T>` | MacRevised.NoGood.`supports(Assignment<V,T> assignment, Constraint<V,T> constraint, T value, V variable)`
    `void` | MacPropagation.`undoPropagate(Assignment<V,T> assignment, V variable)` Propagation undo over the given variable.
    `void` | MacPropagation.NoGood.`undoPropagate(Assignment<V,T> assignment, V variable)` Propagation undo over the given variable.

    Constructors in org.cpsolver.ifs.extension with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<V,T> assignment)`
    `NoGood(Assignment<V,T> assignment)` Initialization.
    `NoGood(Assignment<V,T> assignment)`

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

    Methods in org.cpsolver.ifs.heuristics that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<V,T>` | BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext.`getAssignment()`

    Methods in org.cpsolver.ifs.heuristics with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | BacktrackNeighbourSelection.BackTrackNeighbour.`assign(Assignment<V,T> assignment, long iteration)` Assign the neighbour
    `double` | BacktrackNeighbourSelection.BackTrackNeighbour.`value(Assignment<V,T> assignment)` Sum of values of variables from the neighbour that change their values

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

    Methods in org.cpsolver.ifs.model that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<V,T>` | Model.`getDefaultAssignment()` Deprecated.
    `Assignment<V,T>` | Model.`getEmptyAssignment()` Returns an instance of an empty assignment (using `EmptyAssignment`)

    Methods in org.cpsolver.ifs.model with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | LazyNeighbour.LazyNeighbourAcceptanceCriterion.`accept(Assignment<V,T> assignment, LazyNeighbour<V,T> neighbour, double value)` True when the currently assigned neighbour should be accepted (false means that the change will be undone
    `void` | Model.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is assigned to its variable
    `void` | ModelListener.`afterAssigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is assigned to its variable ( `Value.variable()`).
    `void` | Model.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is unassigned from its variable
    `void` | ModelListener.`afterUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called after a value is unassigned from its variable ( `Value.variable()`).
    `void` | LazyNeighbour.`assign(Assignment<V,T> assignment, long iteration)` Assign neighbour, check given acceptance criterion, and undo assignment if the change is not accepted.
    `void` | Neighbour.`assign(Assignment<V,T> assignment, long iteration)` Perform assignment
    `void` | SimpleNeighbour.`assign(Assignment<V,T> assignment, long iteration)` Perform assignment
    `void` | Constraint.`assigned(Assignment<V,T> assignment, long iteration, T value)` Given value is to be assigned to its variable.
    `void` | GlobalConstraint.`assigned(Assignment<V,T> assignment, long iteration, T value)` Given value is to be assigned to its variable.
    `Collection<V>` | Constraint.`assignedVariables(Assignment<V,T> assignment)` The list of variables of this constraint that are assigned
    `Collection<V>` | GlobalConstraint.`assignedVariables(Assignment<V,T> assignment)` The list of variables of this constraint that are assigned
    `Collection<V>` | Model.`assignedVariables(Assignment<V,T> assignment)` The list of assigned variables in the model
    `void` | Model.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is assigned to its variable
    `void` | ModelListener.`beforeAssigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is assigned to its variable ( `Value.variable()`).
    `void` | Model.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is unassigned from its variable
    `void` | ModelListener.`beforeUnassigned(Assignment<V,T> assignment, long iteration, T value)` Called before a value is unassigned from its variable ( `Value.variable()`).
    `Collection<V>` | Model.`bestUnassignedVariables(Assignment<V,T> assignment)` The list of unassigned variables in the best ever found solution
    `void` | Model.`clearAssignmentContexts(Assignment<V,T> assignment)` Clear all assignment contexts for the given assignment
    `int` | Value.`compareTo(Assignment<V,T> assignment, T value)` Compare two values by their value
    `abstract void` | Constraint.`computeConflicts(Assignment<V,T> assignment, T value, Set<T> conflicts)` The only method which has to be implemented by any constraint.
    `protected void` | Constraint.`computeConflictsNoForwardCheck(Assignment<V,T> assignment, T value, Set<T> conflicts)` Compute conflicts method that does not do any forward checking.
    `Map<Constraint<V,T>,Set<T>>` | Model.`conflictConstraints(Assignment<V,T> assignment, T value)` The list of constraints which are in a conflict with the given value if it is assigned to its variable.
    `Set<T>` | Value.`conflicts(Assignment<V,T> assignment)` Returns a set of conflicting values with this value.
    `Set<T>` | Model.`conflictValues(Assignment<V,T> assignment, T value)` Returns the set of conflicting variables with this value, if it is assigned to its variable
    `void` | ConstraintListener.`constraintAfterAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, after a value is assigned to its variable.
    `void` | ConstraintListener.`constraintBeforeAssigned(Assignment<V,T> assignment, long iteration, Constraint<V,T> constraint, T assigned, Set<T> unassigned)` Called by the constraint, before a value is assigned to its variable.
    `int` | Constraint.`countAssignedVariables(Assignment<V,T> assignment)` The number of variables of this constraint that are assigned
    `int` | GlobalConstraint.`countAssignedVariables(Assignment<V,T> assignment)` The number of variables of this constraint that are assigned
    `void` | Model.`createAssignmentContexts(Assignment<V,T> assignment, boolean clear)` Create all assignment contexts for the given assignment
    `protected abstract void` | LazyNeighbour.`doAssign(Assignment<V,T> assignment, long iteration)` Perform assignment
    `protected void` | LazySwap.`doAssign(Assignment<V,T> assignment, long iteration)` Perform swap
    `T` | Variable.`getAssignment(Assignment<V,T> assignment)` Returns current assignment
    `Map<String,String>` | Model.`getExtendedInfo(Assignment<V,T> assignment)` Extended information about current solution.
    `void` | ExtendedInfoProvider.`getExtendedInfo(Assignment<V,T> assignment, Map<String,String> info)` Extended information about current solution.
    `Map<String,String>` | Model.`getInfo(Assignment<V,T> assignment)` Returns information about the current solution.
    `Map<String,String>` | Model.`getInfo(Assignment<V,T> assignment, Collection<V> variables)` Returns information about the current solution.
    `void` | InfoProvider.`getInfo(Assignment<V,T> assignment, Map<String,String> info)` Adds some information into the table with information about the solution
    `void` | InfoProvider.`getInfo(Assignment<V,T> assignment, Map<String,String> info, Collection<V> variables)` Adds some information into the table with information about the solution, only consider variables from the given set
    `double` | Model.`getTotalValue(Assignment<V,T> assignment)` Value of the current solution.
    `double` | Model.`getTotalValue(Assignment<V,T> assignment, Collection<V> variables)` Value of the current solution.
    `boolean` | Variable.`hasAssignment(Assignment<V,T> assignment)` Returns true if the variable is assigned
    `boolean` | Constraint.`inConflict(Assignment<V,T> assignment, T value)` Returns true if the given assignment is inconsistent with the existing assignments respecting this constraint.
    `boolean` | Model.`inConflict(Assignment<V,T> assignment, T value)` Return true if the given value is in conflict with a hard constraint
    `int` | Model.`nrAssignedVariables(Assignment<V,T> assignment)` Number of assigned variables
    `int` | Model.`nrUnassignedVariables(Assignment<V,T> assignment)` Number of unassigned variables
    `Collection<V>` | Model.`perturbVariables(Assignment<V,T> assignment)` The list of perturbation variables in the model, i.e., the variables which has an initial value but which are not assigned with this value.
    `List<V>` | Model.`perturbVariables(Assignment<V,T> assignment, Collection<V> variables)` The list of perturbation variables in the model, i.e., the variables which has an initial value but which are not assigned with this value.
    `void` | Model.`restoreBest(Assignment<V,T> assignment)` Restore the best ever found assignment into the current assignment
    `protected void` | Model.`restoreBest(Assignment<V,T> assignment, Comparator<V> assignmentOrder)` Restore the best ever found assignment into the current assignment
    `void` | Model.`saveBest(Assignment<V,T> assignment)` Save the current assignment as the best ever found assignment
    `void` | Model.`setDefaultAssignment(Assignment<V,T> assignment)` Deprecated.
    `double` | Value.`toDouble(Assignment<V,T> assignment)` Double representation.
    `String` | Model.`toString(Assignment<V,T> assignment)` String representation -- returns a list of values of objective criteria
    `void` | Constraint.`unassigned(Assignment<V,T> assignment, long iteration, T value)` Given value is unassigned from its variable.
    `void` | GlobalConstraint.`unassigned(Assignment<V,T> assignment, long iteration, T value)` Given value is unassigned from its varable.
    `List<Constraint<V,T>>` | Model.`unassignedHardConstraints(Assignment<V,T> assignment)` The list of hard constraints which contain at least one variable that is not assigned.
    `Collection<V>` | Model.`unassignedVariables(Assignment<V,T> assignment)` The list of unassigned variables in the model
    `protected abstract void` | LazyNeighbour.`undoAssign(Assignment<V,T> assignment, long iteration)` Undo assignment
    `protected void` | LazySwap.`undoAssign(Assignment<V,T> assignment, long iteration)` Undo the swap
    `double` | LazyNeighbour.`value(Assignment<V,T> assignment)` Return -1 (neighbour is always accepted).
    `double` | Neighbour.`value(Assignment<V,T> assignment)` Difference in the evaluation function, if this neighnour is assigned.
    `double` | SimpleNeighbour.`value(Assignment<V,T> assignment)` Improvement in the solution value if this neighbour is accepted.
    `boolean` | Value.`valueEquals(Assignment<V,T> assignment, T value)` Comparison of two values which is based only on the value (not appropriate variable etc.).
    `List<T>` | Variable.`values(Assignment<V,T> assignment)` Variable's domain
    `void` | VariableListener.`variableAssigned(Assignment<?,T> assignment, long iteration, T value)` Called by the variable when a value is assigned to it
    `void` | Variable.`variableAssigned(Assignment<V,T> assignment, long iteration, T value)` A value was assigned to this variable
    `void` | VariableListener.`variableUnassigned(Assignment<?,T> assignment, long iteration, T value)` Called by the variable when a value is unassigned from it
    `void` | Variable.`variableUnassigned(Assignment<V,T> assignment, long iteration, T oldValue)` A value was unassigned from this variable
    `void` | WeakeningConstraint.`weaken(Assignment<V,T> assignment)` Weaken the constraint.
    `void` | Model.`weaken(Assignment<V,T> assignment, T value)` Weaken all weakening constraint so that the given value can be assigned without them creating a conflict using `WeakeningConstraint.weaken(Assignment, Value)`.
    `void` | WeakeningConstraint.`weaken(Assignment<V,T> assignment, T value)` Weaken the constraint enough so that it can assign the given value.

  - ### Uses of Assignment in org.cpsolver.ifs.perturbations

    Methods in org.cpsolver.ifs.perturbations with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DefaultPerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info)`
    `void` | PerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info)` Some (perturbation) information about the solution might be returned here.
    `void` | DefaultPerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info, Collection<V> variables)`
    `void` | PerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info, Collection<V> variables)` Some (perturbation) information about the solution might be returned here (only include variables from the given set).
    `protected double` | DefaultPerturbationsCounter.`getPenalty(Assignment<V,T> assignment, T assignedValue, T initialValue)` Computes perturbation penalty between assigned and initial value of the same lecture.
    `protected double` | DefaultPerturbationsCounter.`getPenaltyA(Assignment<V,T> assignment, T selectedValue, T initialValue)` Case A: initial value of a different unassigned variable cannot be assigned (computed by `ViolatedInitials`)
    `protected double` | DefaultPerturbationsCounter.`getPenaltyB(Assignment<V,T> assignment, T selectedValue, T assignedValue, T initialValue)` Case B: initial value is unassigned from a conflicting variable.
    `protected double` | DefaultPerturbationsCounter.`getPenaltyC(Assignment<V,T> assignment, T selectedValue, T assignedValue, T initialValue)` Case C: non-initial value is unassigned from a conflicting variable.
    `protected double` | DefaultPerturbationsCounter.`getPenaltyD(Assignment<V,T> assignment, T selectedValue, T initialValue)` Case D: different than initial value is assigned to the variable
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model)` Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial problem (see `Variable.getInitialAssignment()`).
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, Collection<V> variables)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, Collection<V> variables)` Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial (only include variables from the given set) problem (see `Variable.getInitialAssignment()`).
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, T selectedValue, Collection<T> conflicts)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, T selectedValue, Collection<T> conflicts)` Returns perturbation penalty of the solution which become from the current solution when given conflicting values are unassigned and the selected value is assigned.

  - ### Uses of Assignment in org.cpsolver.ifs.solution

    Methods in org.cpsolver.ifs.solution that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<V,T>` | Solution.`getAssignment()` The assignment associated with this solution

    Methods in org.cpsolver.ifs.solution with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Solution.`setAssignment(Assignment<V,T> assignment)` Set a new assignment

    Constructors in org.cpsolver.ifs.solution with parameters of type Assignment
    Constructor and Description
    `Solution(Model<V,T> model, Assignment<V,T> assignment)` Constructor
    `Solution(Model<V,T> model, Assignment<V,T> assignment, long iteration, double time)` Constructor

  - ### Uses of Assignment in org.cpsolver.ifs.solver

    Methods in org.cpsolver.ifs.solver with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | SolverListener.`neighbourFailed(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)` Called when `ParallelSolver` failed to assign the given neighbour
    `boolean` | SolverListener.`neighbourSelected(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)` A neighbour was selected
    `boolean` | SolverListener.`valueSelected(Assignment<V,T> assignment, long iteration, V variable, T value)` A value was selected
    `boolean` | SolverListener.`variableSelected(Assignment<V,T> assignment, long iteration, V variable)` A variable was selected

  - ### Uses of Assignment in org.cpsolver.ifs.util

    Methods in org.cpsolver.ifs.util that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<V,T>` | ProblemLoader.`getAssignment()` Returns provided assignment
    `Assignment<V,T>` | ProblemSaver.`getAssignment()` Current assignment

    Constructors in org.cpsolver.ifs.util with parameters of type Assignment
    Constructor and Description
    `ProblemLoader(M model, Assignment<V,T> assignment)` Constructor

  - ### Uses of Assignment in org.cpsolver.instructor

    Methods in org.cpsolver.instructor with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | Test.`generateReports(File outputDir, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Generate a few reports
    `protected boolean` | Test.`load(File inputFile, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Load input problem
    `protected void` | Test.`save(File outputDir, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Save the problem and the resulting assignment

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

    Methods in org.cpsolver.instructor.constraints with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | SameInstructorConstraint.Context.`assigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`
    `void` | SameLinkConstraint.Context.`assigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`
    `void` | InstructorConstraint.`computeConflicts(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `void` | SameInstructorConstraint.`computeConflicts(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `void` | SameLinkConstraint.`computeConflicts(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `SameInstructorConstraint.Context` | SameInstructorConstraint.`createAssignmentContext(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `SameLinkConstraint.Context` | SameLinkConstraint.`createAssignmentContext(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `int` | SameInstructorConstraint.`getCurrentPreference(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Current constraint preference (if soft)
    `int` | SameLinkConstraint.`getCurrentPreference(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Current constraint preference (if soft)
    `int` | SameInstructorConstraint.`getCurrentPreference(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)` Current constraint preference (if soft)
    `int` | SameLinkConstraint.`getCurrentPreference(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)` Current constraint preference (if soft)
    `boolean` | SameInstructorConstraint.`isSatisfiedPair(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment a1, TeachingAssignment a2)` Does a pair of teaching assignments satisfy this constraint?
    `void` | SameInstructorConstraint.Context.`unassigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`
    `void` | SameLinkConstraint.Context.`unassigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`

    Constructors in org.cpsolver.instructor.constraints with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `Context(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`

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

    Methods in org.cpsolver.instructor.criteria with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected double[]` | BackToBack.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected double[]` | DifferentLecture.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected double[]` | SameDays.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected double[]` | SameInstructor.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected double[]` | SameLink.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected double[]` | SameRoom.`computeBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `Set<Instructor>` | InstructorSchedulingCriterion.`getAssignedInstructors(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)` Assigned instructors of a sub-problem
    `double[]` | BackToBack.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | DifferentLecture.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameCommon.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameCourse.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameDays.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameInstructor.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameLink.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double[]` | SameRoom.`getBounds(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `void` | DifferentLecture.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info)`
    `void` | InstructorSchedulingCriterion.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info)`
    `void` | OriginalInstructor.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info)`
    `void` | TimeOverlaps.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info)`
    `void` | DifferentLecture.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info, Collection<TeachingRequest.Variable> variables)`
    `void` | InstructorSchedulingCriterion.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info, Collection<TeachingRequest.Variable> variables)`
    `void` | OriginalInstructor.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info, Collection<TeachingRequest.Variable> variables)`
    `void` | TimeOverlaps.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Map<String,String> info, Collection<TeachingRequest.Variable> variables)`
    `Set<Instructor>` | InstructorSchedulingCriterion.`getInstructors(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)` Instructor of a sub-problem
    `double` | BackToBack.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | DifferentLecture.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameCommon.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameCourse.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameDays.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameInstructor.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameLink.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | SameRoom.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | TimeOverlaps.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | UnusedInstructorLoad.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `double` | AttributePreferences.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | BackToBack.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | CoursePreferences.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | DifferentLecture.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | InstructorPreferences.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | OriginalInstructor.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameCommon.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameCourse.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameDays.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameInstructor.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameLink.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | SameRoom.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | TeachingPreferences.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | TimeOverlaps.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | TimePreferences.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`
    `double` | UnusedInstructorLoad.`getValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, Set<TeachingAssignment> conflicts)`

  - ### Uses of Assignment in org.cpsolver.instructor.model

    Methods in org.cpsolver.instructor.model with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Instructor.Context.`assigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`
    `double` | Instructor.`countBackToBacks(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, double diffRoomWeight, double diffTypeWeight)` Compute number of back-to-back assignments (weighted by the preference) of the given teaching assignment and the other assignments of the instructor
    `double` | Instructor.`countSameDays(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, double diffRoomWeight, double diffTypeWeight)` Compute number of same days assignments (weighted by the preference) of the given teaching assignment and the other assignments of the instructor
    `double` | Instructor.`countSameRooms(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value, double diffTypeWeight)` Compute number of same room assignments (weighted by the preference) of the given teaching assignment and the other assignments of the instructor
    `Instructor.Context` | Instructor.`createAssignmentContext(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `double` | Instructor.`differentLectures(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)` Compute different common sections of the given teaching assignment and the other assignments of the instructor
    `Map<String,String>` | InstructorSchedulingModel.`getInfo(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `double` | InstructorSchedulingModel.`getTotalValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `double` | InstructorSchedulingModel.`getTotalValue(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Collection<TeachingRequest.Variable> variables)`
    `Instructor.Context` | Instructor.`inheritAssignmentContext(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Instructor.Context parentContext)`
    `boolean` | InstructorSchedulingModel.`load(Document document, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Load the problem (and its solution) from an XML format
    `Document` | InstructorSchedulingModel.`save(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Store the problem (together with its solution) in an XML format
    `int` | Instructor.`share(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)` Compute time overlaps with instructor availability and other teaching assignments of the instructor
    `double` | TeachingAssignment.`toDouble(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `void` | Instructor.Context.`unassigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, TeachingAssignment value)`
    `List<TeachingAssignment>` | TeachingRequest.Variable.`values(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `void` | TeachingRequest.Variable.`variableAssigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, long iteration, TeachingAssignment ta)`
    `void` | TeachingRequest.Variable.`variableUnassigned(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, long iteration, TeachingAssignment ta)`

    Constructors in org.cpsolver.instructor.model with parameters of type Assignment
    Constructor and Description
    `Context(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)` Constructor
    `Context(Assignment<TeachingRequest.Variable,TeachingAssignment> assignment, Instructor.Context parentContext)` Constructor

  - ### Uses of Assignment in org.cpsolver.instructor.test

    Methods in org.cpsolver.instructor.test with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | ChmTest.`generateReports(File dir, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected void` | MathTest.`generateReports(File dir, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`
    `protected boolean` | MathTest.`load(File dir, Assignment<TeachingRequest.Variable,TeachingAssignment> assignment)`

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

    Methods in org.cpsolver.studentsct with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called after an enrollment was assigned to a request.
    `double` | StudentSectioningModel.`avgUnassignPriority(Assignment<Request,Enrollment> assignment)` Average priority of unassigned requests (see `Request.getPriority()`)
    `void` | StudentSectioningModel.`computeOnlineSectioningInfos(Assignment<Request,Enrollment> assignment)` Compute online student sectioning infos for all sections (see `Section.getSpaceExpected()` and `Section.getSpaceHeld()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `static Document` | StudentRequestXml.`exportModel(Assignment<Request,Enrollment> assignment, StudentSectioningModel model)`
    `Map<String,String>` | StudentSectioningModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)` Model extended info.
    `Map<String,String>` | StudentSectioningModel.`getInfo(Assignment<Request,Enrollment> assignment)` Model info
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimal and maximal available enrollment penalty of a request
    `static double[]` | Test.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimum and maximum available enrollment penalty, i.e., `Enrollment.getPenalty()` of all available enrollments
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, Request request)` Minimal and maximal available enrollment penalty of a request
    `int` | StudentSectioningModel.`getNrAssignedLastLikeRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from projected (`Student.isDummy()` equals true) students that are assigned.
    `int` | StudentSectioningModel.`getNrAssignedRealRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from real (`Student.isDummy()` equals false) students that are assigned.
    `int` | StudentSectioningModel.`getNrCompleteLastLikeStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of last like (`Student.isDummy()` equals true) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `int` | StudentSectioningModel.`getNrCompleteRealStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of real (`Student.isDummy()` equals false) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment)` Overall solution value
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment, boolean precise)` Overall solution value
    `double` | StudentSectioningModel.`getUnassignedRequestWeight(Assignment<Request,Enrollment> assignment)` Sum of weights of all requests that are not assigned (see `Request.getWeight()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentSectioningModel.StudentSectioningModelContext parentContext)`
    `void` | StudentSectioningModel.`recomputeTotalValue(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `void` | StudentSectioningModel.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.StudentSectioningModelContext.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.`restoreBest(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.`saveBest(Assignment<Request,Enrollment> assignment)`
    `String` | StudentSectioningModel.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called before an enrollment was unassigned from a request.

    Constructors in org.cpsolver.studentsct with parameters of type Assignment
    Constructor and Description
    `StudentSectioningLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor
    `StudentSectioningModelContext(Assignment<Request,Enrollment> assignment)`
    `StudentSectioningXMLLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor

  - ### Uses of Assignment in org.cpsolver.studentsct.constraint

    Fields in org.cpsolver.studentsct.constraint declared as Assignment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | LinkedSections.CurrentAssignment.`iAssignment`

    Methods in org.cpsolver.studentsct.constraint with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | StudentConflict.`canAssign(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` True if the given enrollment can be assigned to the student.
    `void` | LinkedSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | CancelledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ConfigLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `void` | DisabledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | FixInitialAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is MPP (method `Request.isMPP()` returns true) and equal to the initial assignment (returned by `Variable.getInitialAssignment()`), the given enrollment is put into the conflicts.
    `void` | FixedAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is fixed (method `CourseRequest.isFixed()` returns true) and equal to the initial assignment (returned by `CourseRequest.getFixedValue()`), the given enrollment is put into the conflicts.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Assignment, Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | RequiredRestrictions.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is restriction that is not met.
    `void` | RequiredSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ReservationLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaining available space (computed by `Reservation.getReservedAvailableSpace(Assignment, Request)`) is below the requests weight `Request.getWeight()`.
    `void` | SectionLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `void` | StudentNotAvailable.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the student is not available.
    `static double` | ConfigLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Config config, Request request)` Enrollment weight of a config if the given request is assigned.
    `static double` | CourseLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Course course, Request request)` Enrollment weight of a course if the given request is assigned.
    `static double` | SectionLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Section section, Request request)` Enrollment weight of a section if the given request is assigned.
    `static double` | ReservationLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Config config, Request request, boolean hasReservation)` Remaining unreserved space in a config if the given request is assigned.
    `static double` | SectionLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Section section, Request request)` Remaining unreserved space in a section if the given request is assigned.
    `boolean` | CancelledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ConfigLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | CourseLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `boolean` | DisabledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `Enrollment` | LinkedSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)` Check for conflict using `LinkedSections.inConflict(Assignment, Enrollment)`
    `boolean` | RequiredReservation.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `boolean` | RequiredRestrictions.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is restriction that is not met.
    `boolean` | RequiredSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ReservationLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | SectionLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section which limit(computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `boolean` | StudentConflict.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `boolean` | StudentNotAvailable.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the student is not available.

    Constructors in org.cpsolver.studentsct.constraint with parameters of type Assignment
    Constructor and Description
    `CurrentAssignment(Assignment<Request,Enrollment> assignment)`

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

    Methods in org.cpsolver.studentsct.extension with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistanceConflict.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | StudentQuality.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | StudentQuality.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`DistanceConflict.Conflict` objects) of the given enrollment and other enrollments that are assignmed to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` All conflicts of the any type for the enrollment (including conflicts with other enrollments of the student)
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`allConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `int` | StudentQuality.StudentQualityContext.`allPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | DistanceConflict.DistanceConflictContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | StudentQuality.StudentQualityContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | DistanceConflict.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | StudentQuality.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`computeAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `int` | DistanceConflict.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all distance conflicts.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all time overlapping conflicts.
    `int` | StudentQuality.StudentQualityContext.`countTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.`getAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` All conflicts of the given type for the given assignment
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `int` | DistanceConflict.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts
    `int` | TimeOverlapsCounter.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all time overlapping conflicts
    `int` | DistanceConflict.`getTotalNrShortConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts of students that need short distances
    `int` | StudentQuality.`getTotalPenalty(Assignment<Request,Enrollment> assignment, StudentQuality.Type... types)` Total penalisation of given types
    `int` | StudentQuality.`getTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Total penalisation of given type
    `void` | DistanceConflict.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | DistanceConflict.DistanceConflictContext.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | TimeOverlapsCounter.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | StudentQuality.`checkTotalPenalty(Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment
    `void` | StudentQuality.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment and conflict type
    `void` | StudentQuality.StudentQualityContext.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, DistanceConflict.DistanceConflictContext parentContext)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentQuality.StudentQualityContext parentContext)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.TimeOverlapsCounterContext parentContext)`
    `int` | DistanceConflict.DistanceConflictContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `String` | StudentQuality.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | DistanceConflict.DistanceConflictContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | StudentQuality.StudentQualityContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.

    Constructors in org.cpsolver.studentsct.extension with parameters of type Assignment
    Constructor and Description
    `DistanceConflictContext(Assignment<Request,Enrollment> assignment)`
    `StudentQualityContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounterContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Assignment in org.cpsolver.studentsct.heuristics

    Methods in org.cpsolver.studentsct.heuristics with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | RandomizedBacktrackNeighbourSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` true, if it is allowed to assign given value
    `void` | StudentSctNeighbourSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentSctNeighbourSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

  - ### Uses of Assignment in org.cpsolver.studentsct.heuristics.selection

    Fields in org.cpsolver.studentsct.heuristics.selection declared as Assignment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | BranchBoundSelection.Selection.`iCurrentAssignment` Current assignment

    Methods in org.cpsolver.studentsct.heuristics.selection with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | BranchBoundSelection.BranchBoundNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Assign the schedule
    `void` | PriorityConstructionSelection.ConstructionNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Only assign given number of assignments (from the first priority down).
    `void` | RandomUnassignmentSelection.UnassignStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` All requests of the given student are unassigned
    `void` | SwapStudentSelection.SwapStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Perform the move.
    `static Enrollment` | SwapStudentSelection.`bestSwap(Assignment<Request,Enrollment> assignment, Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `boolean` | CriticalStandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)`
    `boolean` | StandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `boolean` | SwapStudentSelection.Selection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `BranchBoundSelection.Selection` | BranchBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `BranchBoundSelection.Selection` | CriticalCoursesBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | MinCreditBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | OnlineSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `SwapStudentSelection.Selection` | SwapStudentSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Selection subclass for a student
    `void` | BacktrackSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BranchBoundSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentEnrollmentSwapSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | SwapStudentSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BacktrackSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BranchBoundSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentEnrollmentSwapSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | SwapStudentSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | OnlineSelection.`updateSpace(Assignment<Request,Enrollment> assignment, Student student)` Update online sectioning info after the given student is sectioned
    `double` | BranchBoundSelection.BranchBoundNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | PriorityConstructionSelection.ConstructionNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | RandomUnassignmentSelection.UnassignStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | SwapStudentSelection.SwapStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `boolean` | BacktrackSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BranchBoundSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentEnrollmentSwapSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | SwapStudentSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BacktrackSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | BranchBoundSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | StudentEnrollmentSwapSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | SwapStudentSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

    Constructors in org.cpsolver.studentsct.heuristics.selection with parameters of type Assignment
    Constructor and Description
    `CriticalCoursesSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `EpsilonSelection(Student student, Assignment<Request,Enrollment> assignment, BranchBoundSelection.Selection selection)` Constructor
    `InitialSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `MinCreditSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `UnassignStudentNeighbour(Student student, Assignment<Request,Enrollment> assignment, Request.RequestPriority priority)` Constructor

  - ### Uses of Assignment in org.cpsolver.studentsct.check

    Methods in org.cpsolver.studentsct.check with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | InevitableStudentConflicts.StudentCheck.`backTrack(Assignment<Request,Enrollment> assignment, int idx)` branch & bound search
    `boolean` | InevitableStudentConflicts.`check(Assignment<Request,Enrollment> assignment)` Check model for inevitable student conflicts
    `void` | InevitableStudentConflicts.StudentCheck.`check(Assignment<Request,Enrollment> assignment)` Execute branch & bound, return the best found schedule for the selected student.
    `boolean` | OverlapCheck.`check(Assignment<Request,Enrollment> a)` Check for overlapping sections that are attended by the same student
    `boolean` | SectionLimitCheck.`check(Assignment<Request,Enrollment> assignment)` Check for sections that have more students enrolled than it is allowed, i.e., the sum of requests weights is above the section limit

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

    Methods in org.cpsolver.studentsct.model with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Config.ConfigContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is assigned to a request
    `void` | Course.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is assigned to a request
    `void` | Course.CourseContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | RequestGroup.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | RequestGroup.RequestGroupContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | SctAssignment.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | Section.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Section.SectionContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Unavailability.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `boolean` | Student.`canAssign(Assignment<Request,Enrollment> assignment, Request request)` True if the given request can be assigned to the student.
    `int` | Section.`compareTo(Assignment<Request,Enrollment> assignment, Section s)` Compare two sections, prefer sections with lower penalty and more open space
    `List<Enrollment>` | CourseRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Return all possible enrollments.
    `List<Enrollment>` | FreeTimeRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Create all possible enrollments of this request -- there is only one possible enrollment: `FreeTimeRequest.createEnrollment()`
    `abstract List<Enrollment>` | Request.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Compute available enrollments
    `List<Enrollment>` | CourseRequest.`computeRandomEnrollments(Assignment<Request,Enrollment> assignment, int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `Config.ConfigContext` | Config.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Course.CourseContext` | Course.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | FreeTimeRequest.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | Request.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Section.SectionContext` | Section.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment` | CourseRequest.`createEnrollment(Assignment<Request,Enrollment> assignment, Set<? extends SctAssignment> sections)` Create enrollment for the given list of sections.
    `Set<DistanceConflict.Conflict>` | Enrollment.`distanceConflicts(Assignment<Request,Enrollment> assignment)` Distance conflicts, in which this enrollment is involved.
    `float` | Student.`getAssignedCredit(Assignment<Request,Enrollment> assignment)` Return the number of assigned credits of the student
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollments(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)
    `double` | RequestGroup.`getAverageSpread(Assignment<Request,Enrollment> assignment)` Return average section spread of this group.
    `Set<Enrollment>` | Config.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Course.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | SctAssignment.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Section.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Unavailability.`getEnrollments(Assignment<Request,Enrollment> assignment)` Not used, always null
    `double` | RequestGroup.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment similar to other enrollments of this group.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment (which is not part of the request group) creating an issue for this request group
    `List<Enrollment>` | CourseRequest.`getEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all possible enrollments, but pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used).
    `double` | Config.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.ConfigContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.SectionContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Config.ConfigContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Course.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | Course.CourseContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | RequestGroup.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | Section.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Section.SectionContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Config.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the config
    `double` | Course.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the course
    `double` | Section.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the section
    `double` | Config.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the config
    `double` | Course.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the course
    `double` | Section.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the section
    `double` | Section.`getOnlineSectioningPenalty(Assignment<Request,Enrollment> assignment)` Online sectioning penalty.
    `double` | RequestGroup.`getSectionSpread(Assignment<Request,Enrollment> assignment, Section section)` Return section spread of this group.
    `double` | RequestGroup.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `List<Enrollment>` | CourseRequest.`getSelectedEnrollments(Assignment<Request,Enrollment> assignment, boolean availableOnly)` Return all enrollments of the first course that are selected ( `CourseRequest.isSelected(Section)` is true)
    `TreeSet<Reservation>` | CourseRequest.`getSortedReservations(Assignment<Request,Enrollment> assignment, Course course)` Get reservations for this course requests ordered using `Reservation.compareTo(Assignment, Reservation)`
    `double` | Config.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the configuration that is not reserved by any config reservation
    `double` | Offering.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the offering that is not reserved by any reservation
    `double` | Section.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the section that is not reserved by any section reservation
    `void` | Enrollment.`guessReservation(Assignment<Request,Enrollment> assignment, boolean onlyAvailable)` Guess the reservation based on the enrollment
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment)` Deprecated.
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment, Request.RequestPriority rp)` Has student any unassigned critical course requests?
    `Config.ConfigContext` | Config.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Config.ConfigContext parentContext)`
    `Course.CourseContext` | Course.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Course.CourseContext parentContext)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, RequestGroup.RequestGroupContext parentContext)`
    `Section.SectionContext` | Section.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Section.SectionContext parentContext)`
    `boolean` | CourseRequest.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Request.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Student.`isComplete(Assignment<Request,Enrollment> assignment)` True if the student has assigned the desired number of requests (i.e., number of non-alternative course requests).
    `int` | Student.`nrAssignedRequests(Assignment<Request,Enrollment> assignment)` Number of assigned COURSE requests
    `Set<StudentQuality.Conflict>` | Enrollment.`studentQualityConflicts(Assignment<Request,Enrollment> assignment)`
    `Set<TimeOverlapsCounter.Conflict>` | Enrollment.`timeOverlappingConflicts(Assignment<Request,Enrollment> assignment)` Time overlapping conflicts, in which this enrollment is involved.
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment)` Enrollment value
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment, boolean precise)` Enrollment value
    `String` | Enrollment.`toString(Assignment<Request,Enrollment> a)`
    `void` | Config.ConfigContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is unassigned from a request
    `void` | Course.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is unassigned from a request
    `void` | Course.CourseContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | RequestGroup.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | RequestGroup.RequestGroupContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | SctAssignment.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | Section.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Section.SectionContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Unavailability.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `List<Enrollment>` | Request.`values(Assignment<Request,Enrollment> assignment)` Domain of this variable -- list of available enrollments.
    `void` | CourseRequest.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Assign given enrollment to this request.
    `void` | CourseRequest.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Unassign currently assigned enrollment from this request.

    Constructors in org.cpsolver.studentsct.model with parameters of type Assignment
    Constructor and Description
    `ConfigContext(Assignment<Request,Enrollment> assignment)`
    `CourseContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment(Request request, int priority, Config config, Set<? extends SctAssignment> assignments, Assignment<Request,Enrollment> assignment)` Constructor
    `FreeTimeRequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroupContext(Assignment<Request,Enrollment> assignment)`
    `SectionContext(Assignment<Request,Enrollment> assignment)`

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

    Methods in org.cpsolver.studentsct.online that return Assignment
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<Request,Enrollment>` | Test.`assignment()`

    Methods in org.cpsolver.studentsct.online with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | MaxOverExpectedConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)`
    `Map<String,String>` | Test.TestModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)`
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized (computed using `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`)
    `double` | Test.`getPercDisbalancedSections(Assignment<Request,Enrollment> assignment, double perc)`
    `boolean` | MaxOverExpectedConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `static void` | Test.`updateSpace(Assignment<Request,Enrollment> assignment, Enrollment enrollment, boolean increment)`

  - ### Uses of Assignment in org.cpsolver.studentsct.online.expectations

    Methods in org.cpsolver.studentsct.online.expectations with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Config config, Request request)` Config enrollment (using `OnlineConfig.getEnrollment()` if applicable}, `Config.getEnrollmentWeight(Assignment, Request)` otherwise)
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Section section, Request request)` Section enrollment (using `OnlineSection.getEnrollment()` if applicable}, `Section.getEnrollmentWeight(Assignment, Request)` otherwise)
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | AvoidUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | NeverOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | OverExpectedCriterion.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `double` | PenaltyNotNegative.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | PercentageOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`

  - ### Uses of Assignment in org.cpsolver.studentsct.online.selection

    Fields in org.cpsolver.studentsct.online.selection declared as Assignment
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | MultiCriteriaBranchAndBoundSelection.`iAssignment`

    Methods in org.cpsolver.studentsct.online.selection with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | BestPenaltyCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | EqualWeightCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int idx, Enrollment[] current, Enrollment[] best)` Bound
    `boolean` | OnlineSectioningCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | EqualWeightCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)` Compare two solutions
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionComparator.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)` Compare two enrollments
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `protected int` | MultiCriteriaBranchAndBoundSuggestions.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)`
    `protected int` | SuggestionsBranchAndBound.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)` Compare two suggestions
    `double` | StudentSchedulingAssistantWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentSchedulingAssistantWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Deprecated.
    `double` | BestPenaltyCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)`
    `double` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)` For backward compatibility, return a weighted sum
    `double` | OnlineSectioningCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollemnts)`
    `double` | ResectioningWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> conflicts)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | OnlineSectioningSelection.`select(Assignment<Request,Enrollment> assignment, Student student)` Compute student schedule
    `BranchBoundSelection.BranchBoundNeighbour` | SuggestionSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student, MultiCriteriaBranchAndBoundSelection.SelectionCriterion comparator)`

    Constructors in org.cpsolver.studentsct.online.selection with parameters of type Assignment
    Constructor and Description
    `EqualWeightCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `OnlineSectioningCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)`
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

  - ### Uses of Assignment in org.cpsolver.studentsct.report

    Methods in org.cpsolver.studentsct.report with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `CSVFile` | AccommodationConflictsTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | CourseConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | CriticalCoursesTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | DistanceConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | RequestGroupTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | RequestPriorityTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | SectionConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | StudentSectioningReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TableauReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TimeOverlapConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | UnbalancedSectionsTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | AccommodationConflictsTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | CourseConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | DistanceConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | SectionConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | TimeOverlapConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | UnbalancedSectionsTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report

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

    Methods in org.cpsolver.studentsct.reservation with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.ReservationContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an unassignment
    `boolean` | Reservation.`canEnroll(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` True if the enrollment can be done using this reservation
    `int` | Reservation.`compareTo(Assignment<Request,Enrollment> assignment, Reservation r)` Priority first, than restrictivity (more restrictive first), than availability (more available first), than id
    `Reservation.ReservationContext` | Reservation.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<Enrollment>` | Reservation.`getEnrollments(Assignment<Request,Enrollment> assignment)` Enrollments assigned using this reservation
    `double` | Reservation.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `double` | Reservation.ReservationContext.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `Reservation.ReservationContext` | Reservation.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Reservation.ReservationContext parentContext)`
    `void` | Reservation.ReservationContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an assignment

    Constructors in org.cpsolver.studentsct.reservation with parameters of type Assignment
    Constructor and Description
    `ReservationContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Assignment in org.cpsolver.studentsct.weights

    Methods in org.cpsolver.studentsct.weights with parameters of type Assignment
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PriorityStudentWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | OriginalStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | PriorityStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | StudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Return weight of a distance conflict
    `double` | OriginalStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | PriorityStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)` Return weight of a student quality conflict
    `double` | OriginalStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)`
    `double` | PriorityStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment e, TimeOverlapsCounter.Conflict c)`
    `double` | StudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Return weight of a time overlapping conflict
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Return base weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Return weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)` Return weight of the given enrollment
    `double` | PriorityStudentWeights.`getWeightAdditive(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeightMultiplicative(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`