## Uses of Class
org.cpsolver.coursett.model.Placement

- Packages that use Placement
  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.neighbourhoods | University Course Timetabling: Various Neighbourhoods.
  org.cpsolver.coursett.sectioning | Additional Student Sectioning Algorithms.
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.

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

    Fields in org.cpsolver.coursett with type parameters of type Placement
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Lecture,Placement>` | DomainChart.`iAssignment`

    Methods in org.cpsolver.coursett that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Solver<Lecture,Placement>` | TimetableXMLLoader.`getSolver()`

    Method parameters in org.cpsolver.coursett with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | Test.`bestCleared(Solution<Lecture,Placement> solution)`
    `void` | Test.`bestRestored(Solution<Lecture,Placement> solution)`
    `void` | Test.`bestSaved(Solution<Lecture,Placement> solution)`
    `protected void` | TimetableXMLLoader.`doLoad(Solution<Lecture,Placement> currentSolution, Element root)`
    `protected void` | TimetableSolver.`fixCompleteSolution(Solution<Lecture,Placement> solution, double startTime)` Deprecated. Try to improve existing solution by backtracking search of very limited depth.
    `void` | Test.`getInfo(Solution<Lecture,Placement> solution, Map<String,String> info)`
    `void` | Test.`getInfo(Solution<Lecture,Placement> solution, Map<String,String> info, Collection<Lecture> variables)`
    `void` | Test.`init(Solver<Lecture,Placement> solver)` Solver initialization
    `void` | TimetableXMLLoader.`load(Solution<Lecture,Placement> currentSolution)`
    `void` | TimetableXMLLoader.`load(Solution<Lecture,Placement> currentSolution, Document document)`
    `void` | Test.`notify(Solution<Lecture,Placement> solution)` Add a line into the output CSV file when a enw best solution is found.
    `protected void` | TimetableSolver.`onAssigned(double startTime, Solution<Lecture,Placement> solution)` Deprecated.
    `static void` | Test.`printRoomInfo(PrintWriter pw, TimetableModel model, Assignment<Lecture,Placement> assignment)` Print room utilization
    `static void` | Test.`printSomeStuff(Solution<Lecture,Placement> solution)` Create info.txt with some more information about the problem
    `static void` | Test.`saveOutputCSV(Solution<Lecture,Placement> s, File file)`
    `void` | TimetableXMLLoader.`setSolver(Solver<Lecture,Placement> solver)`
    `void` | Test.`solutionUpdated(Solution<Lecture,Placement> solution)`

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

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

    Methods in org.cpsolver.coursett.constraint that return Placement
    Modifier and Type | Method and Description
    --- | ---
    `Placement` | SpreadConstraint.`getAdept(Assignment<Lecture,Placement> assignment, Placement placement, int[][] nrCourses, Set<Placement> conflicts)`
    `Placement` | InstructorConstraint.InstructorConstraintContext.`getPlacement(int slot, int day)`
    `Placement` | RoomConstraint.RoomConstraintContext.`getPlacement(int slot, int day)`
    `Placement[]` | RoomConstraint.`getResourceOfWeek(Assignment<Lecture,Placement> assignment, int startDay)`
    `Placement[]` | InstructorConstraint.InstructorConstraintContext.`getResourceOfWeek(int startDay)`
    `Placement[]` | RoomConstraint.RoomConstraintContext.`getResourceOfWeek(int startDay)`

    Methods in org.cpsolver.coursett.constraint that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Set<Placement>` | SpreadConstraint.SpreadConstraintContext.`getCourses(int time, int day)`
    `protected Criterion<Lecture,Placement>` | DepartmentSpreadConstraint.`getCriterion()`
    `protected Criterion<Lecture,Placement>` | SpreadConstraint.`getCriterion()`
    `List<Placement>` | FlexibleConstraint.Block.`getPlacements()`
    `List<Placement>` | InstructorConstraint.InstructorConstraintContext.`getPlacements(int slot)`
    `List<Placement>` | RoomConstraint.RoomConstraintContext.`getPlacements(int slot)`
    `List<Placement>` | InstructorConstraint.InstructorConstraintContext.`getPlacements(int slot, BitSet weekCode)`
    `List<Placement>` | InstructorConstraint.InstructorConstraintContext.`getPlacements(int slot, Placement placement)`
    `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)
    `List<Placement>` | InstructorConstraint.`getUnavailabilities()`
    `Set<Placement>` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`getUsage(int slot)`

    Methods in org.cpsolver.coursett.constraint with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClassLimitConstraint.`addParentAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `boolean` | FlexibleConstraint.Block.`addPlacement(Placement placement)` Adds placement to the block and updates block's attributes.
    `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)`
    `Set<Lecture>` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `Set<Lecture>` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `Set<Lecture>` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `int` | FlexibleConstraint.PlacementTimeComparator.`compare(Placement p1, Placement p2)`
    `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)`
    `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` | ClassLimitConstraint.`currentClassLimit(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `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, Placement placement)`
    `int` | GroupConstraint.`getCurrentPreference(Assignment<Lecture,Placement> assignment, Placement placement)` Current constraint preference change (if given placement is assigned)
    `int` | InstructorConstraint.`getDistancePreference(Placement p1, Placement p2)` Back-to-back preference of two placements (3 means prohibited)
    `int` | SpreadConstraint.`getMaxPenalty(Assignment<Lecture,Placement> assignment, Placement placement)`
    `int` | SpreadConstraint.SpreadConstraintContext.`getNrCourses(int time, int day, Placement placement)`
    `int` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`getOverLimit(Assignment<Lecture,Placement> assignment, Placement placement)`
    `int` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`getOverLimit(Placement placement)`
    `int` | SpreadConstraint.`getPenalty(Assignment<Lecture,Placement> assignment, Placement placement)` Department balancing penalty of the given placement
    `List<Placement>` | InstructorConstraint.InstructorConstraintContext.`getPlacements(int slot, Placement placement)`
    `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.
    `boolean` | RoomConstraint.`checkRoomSize(Placement placement, Collection<Placement> other)`
    `boolean` | RoomConstraint.`checkRoomSize(Placement placement, Collection<Placement> other, Placement extra)`
    `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` | InstructorConstraint.`isAvailable(Lecture lecture, Placement placement)`
    `boolean` | FlexibleConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | GroupConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | InstructorConstraint.`isConsistent(Placement p1, Placement p2)`
    `boolean` | MaxHolesFlexibleConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | RoomConstraint.`isConsistent(Placement p1, Placement p2)`
    `boolean` | SoftInstructorConstraint.`isConsistent(Placement p1, Placement p2)`
    `boolean` | MaxWeeksFlexibleConstraint.`isCorectDayOfWeek(Placement value)`
    `boolean` | GroupConstraint.`isChildrenNotOverlap(Assignment<Lecture,Placement> assignment, Lecture lec1, Placement plc1, Lecture lec2, Placement plc2)`
    `static boolean` | JenrlConstraint.`isInConflict(Placement p1, Placement p2, DistanceMetric m, int workDayLimit)` Returns true if the given placements are overlapping or they are back-to-back and too far for students.
    `boolean` | DiscouragedRoomConstraint.DiscouragedRoomConstraintContext.`isOverLimit(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.MinimizeNumberOfUsedRoomsConstraintContext.`isOverLimit(Assignment<Lecture,Placement> assignment, Placement placement)`
    `boolean` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`isOverLimit(Placement placement)`
    `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.PairCheck.`isSatisfied(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)
    `boolean` | GroupConstraint.PairCheck.`isViolated(GroupConstraint gc, Placement plc1, Placement plc2)` Check whether the constraint is satisfied for the given two assignments (prohibited / discouraged case)
    `boolean` | MaxBreaksFlexibleConstraint.MaxBreaksFlexibleConstraintContext.`isWeak(Placement value)`
    `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
    `int` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`nrDays(Placement value, Set<Placement> conflicts)`
    `int` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`nrHalfDays(Placement value, Set<Placement> conflicts)`
    `int` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`nrWeeks(Placement value, Set<Placement> conflicts)`
    `void` | InstructorConstraint.`setNotAvailable(Placement placement)`
    `void` | RoomConstraint.`setNotAvailable(Placement placement)`
    `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)`
    `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)`
    `void` | MaxBreaksFlexibleConstraint.MaxBreaksFlexibleConstraintContext.`weaken(Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.MinimizeNumberOfUsedGroupsOfTimeContext.`weaken(Placement value)`

    Method parameters in org.cpsolver.coursett.constraint with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClassLimitConstraint.`addParentAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`addParentAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `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)`
    `Set<Lecture>` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `Set<Lecture>` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `Set<Lecture>` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`candidates(Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeAdepts(Assignment<Lecture,Placement> assignment, Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `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` | BreakFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`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` | DiscouragedRoomConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`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` | IgnoreStudentConflictsConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | InstructorConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, 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` | JenrlConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxBlockFlexibleConstraint.`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` | MaxBreaksFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxDaysFlexibleConstraint.`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` | MaxHalfDaysFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MaxHolesFlexibleConstraint.`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` | MaxWeeksFlexibleConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, 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` | MinimizeNumberOfUsedRoomsConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | RoomConstraint.`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` | SoftInstructorConstraint.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)`
    `void` | SpreadConstraint.`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.`computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts, boolean fwdCheck)`
    `void` | GroupConstraint.`computeConflictsNoForwardCheck(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `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` | 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` | 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)`
    `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)`
    `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)`
    `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>` | MaxBlockFlexibleConstraint.`getBlocks(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `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>` | MaxBreaksFlexibleConstraint.`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.
    `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.
    `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.
    `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.
    `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)`
    `double` | BreakFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `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.
    `abstract double` | FlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Return current number of violations.
    `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` | MaxBlockFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `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` | MaxBreaksFlexibleConstraint.`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` | MaxDaysFlexibleConstraint.`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` | MaxHalfDaysFlexibleConstraint.`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` | 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` | 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)`
    `double` | MaxWeeksFlexibleConstraint.`getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `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.
    `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.
    `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)`
    `boolean` | RoomConstraint.`checkRoomSize(Placement placement, Collection<Placement> other)`
    `boolean` | RoomConstraint.`checkRoomSize(Placement placement, Collection<Placement> other, Placement extra)`
    `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 List<FlexibleConstraint.Block>` | FlexibleConstraint.`mergeToBlocks(List<Placement> sorted, int maxBreakBetweenBTB)` Creates a list of blocks from a placements sorted by startSlot
    `int` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`nrDays(Placement value, Set<Placement> conflicts)`
    `int` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`nrHalfDays(Placement value, Set<Placement> conflicts)`
    `protected int` | GroupConstraint.`nrSlotsADay(Assignment<Lecture,Placement> assignment, int dayCode, BitSet week, HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `protected int` | GroupConstraint.`nrSlotsADay(Assignment<Lecture,Placement> assignment, int dayCode, BitSet week, HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `protected int` | GroupConstraint.`nrSlotsADay(Assignment<Lecture,Placement> assignment, int dayCode, BitSet week, HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxDaysFlexibleConstraint.MaxDaysFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxHalfDaysFlexibleConstraint.MaxHalfDaysFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`nrViolations(HashMap<Lecture,Placement> assignments, Set<Placement> conflicts)`
    `int` | MaxWeeksFlexibleConstraint.MaxWeeksFlexibleConstraintContext.`nrWeeks(Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | JenrlConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | MaxHalfDaysFlexibleConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | RoomConstraint.`setModel(Model<Lecture,Placement> model)`
    `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)`

    Constructor parameters in org.cpsolver.coursett.constraint with type arguments of type Placement
    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 Placement in org.cpsolver.coursett.criteria

    Methods in org.cpsolver.coursett.criteria that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `PerturbationsCounter<Lecture,Placement>` | Perturbations.`getPerturbationsCounter()`

    Methods in org.cpsolver.coursett.criteria with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected static int` | BrokenTimePatterns.`countUselessSlotsBrokenTimePatterns(RoomConstraint.RoomConstraintContext rc, Placement placement)` Number of broken time patterns for this room
    `protected static int` | UselessHalfHours.`countUselessSlotsHalfHours(RoomConstraint.RoomConstraintContext rc, Placement placement)` Number of useless half hours for this room
    `static boolean` | StudentConflict.`distance(DistanceMetric m, Placement p1, Placement p2)`
    `int` | TooBigRooms.`getPreference(Placement value)`
    `static int` | TooBigRooms.`getTooBigRoomPreference(Placement value)` Deprecated.
    `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)`
    `boolean` | StudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentDistanceConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentOverlapConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentWorkdayConflict.`inConflict(Placement p1, Placement p2)`
    `protected double` | StudentConflict.`jointEnrollment(JenrlConstraint jenrl, Placement p1, Placement p2)`
    `static boolean` | StudentConflict.`overlaps(Placement p1, Placement p2)`
    `protected int` | BackToBackInstructorPreferences.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(RoomConstraint.RoomConstraintContext rc, Placement value)`
    `protected double` | UselessHalfHours.`penalty(RoomConstraint.RoomConstraintContext rc, Placement value)`
    `static int` | StudentConflict.`slots(Placement p1, Placement p2)`
    `protected boolean` | RoomViolations.`violation(Placement value)`
    `protected boolean` | TimeViolations.`violation(Placement value)`
    `static boolean` | StudentConflict.`workday(int slotsLimit, Placement p1, Placement p2)`

    Method parameters in org.cpsolver.coursett.criteria with type arguments of type Placement
    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` | BackToBackInstructorPreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | BrokenTimePatterns.`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` | DepartmentBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | DistributionPreferences.`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` | FlexibleConstraintCriterion.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | Perturbations.`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` | RoomPreferences.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | RoomViolations.`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` | SameSubpartBalancingPenalty.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | StudentCommittedConflict.`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` | StudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | TimePreferences.`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)`
    `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)`
    `boolean` | Perturbations.`init(Solver<Lecture,Placement> solver)`
    `protected int` | BackToBackInstructorPreferences.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`

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

    Methods in org.cpsolver.coursett.criteria.additional with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | InstructorFairness.InstructorFairnessContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `protected void` | InstructorLunchBreak.InstructorLunchBreakContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `static double` | StudentMinimizeScheduleHoles.`btbDistance(Placement p1, Placement p2)` Time distance between two placements in hours.
    `double` | IgnoredCommittedStudentConflict.`countCommittedConflicts(Placement placement)`
    `int` | IgnoredCommittedStudentConflict.`countCommittedConflicts(Student student, Placement placement)`
    `void` | InstructorFairness.InstructorFairnessContext.`countInstructorAssignedFair(Assignment<Lecture,Placement> assignment, Placement value)` Method actualize values of instructors whose lecture was just assigned
    `void` | InstructorFairness.InstructorFairnessContext.`countInstructorUnassignedFair(Assignment<Lecture,Placement> assignment, Placement value)` Method actualize values of instructors whose lecture will be unassigned
    `static double` | StudentMinimizeDaysOfWeek.`dayDistance(Placement p1, Placement p2)` Time distance between two placements in the number of days.
    `double` | InstructorFairness.InstructorFairnessContext.`fairnessDouble(Assignment<Lecture,Placement> assignment, Placement placement)` Metod count and return time (and room) preferences in placement
    `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)`
    `boolean` | StudentLuchBreak.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentMinimizeDaysOfWeek.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentMinimizeScheduleHoles.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentOverLunchConflict.`inConflict(Placement p1, Placement p2)` There is a conflict when `StudentOverLunchConflict.isMorning(Placement)` differs for the two placements.
    `boolean` | StudentOverLunchConflict.`isMorning(Placement placement)` Is the given placement in the morning or in the afternoon?
    `protected double` | StudentMinimizeDaysOfWeek.`jointEnrollment(JenrlConstraint jenrl, Placement p1, Placement p2)`
    `protected double` | StudentMinimizeScheduleHoles.`jointEnrollment(JenrlConstraint jenrl, Placement p1, Placement p2)`
    `boolean` | StudentLuchBreak.`nolunch(Placement p1, Placement p2)`
    `protected int` | InstructorConflict.`penalty(Assignment<Lecture,Placement> assignment, Placement value)`
    `boolean` | StudentOverLunchConflict.`shareDays(Placement p1, Placement p2)` Are the two placements at the same day?
    `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.

    Method parameters in org.cpsolver.coursett.criteria.additional with type arguments of type Placement
    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` | IgnoredCommittedStudentConflict.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | InstructorConflict.`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` | InstructorFairness.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`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)`
    `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)`
    `boolean` | StudentLuchBreak.`init(Solver<Lecture,Placement> solver)`
    `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.

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

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

    Fields in org.cpsolver.coursett.criteria.placement with type parameters of type Placement
    Modifier and Type | Field and Description
    --- | ---
    `protected ConflictStatistics<Lecture,Placement>` | WeightedHardConflicts.`iStat`

    Methods in org.cpsolver.coursett.criteria.placement with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AssignmentCount.AssignmentCountContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `long` | AssignmentCount.AssignmentCountContext.`countAssignments(Placement value)`
    `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)`

    Method parameters in org.cpsolver.coursett.criteria.placement with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AssignmentCount.AssignmentCountContext.`assigned(Assignment<Lecture,Placement> assignment, Placement value)`
    `void` | WeightedHardConflicts.`bestCleared(Solution<Lecture,Placement> solution)`
    `void` | WeightedHardConflicts.`bestRestored(Solution<Lecture,Placement> solution)`
    `void` | WeightedHardConflicts.`bestSaved(Solution<Lecture,Placement> solution)`
    `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)`
    `void` | WeightedHardConflicts.`getInfo(Solution<Lecture,Placement> solution, Map<String,String> info)`
    `void` | WeightedHardConflicts.`getInfo(Solution<Lecture,Placement> solution, Map<String,String> info, Collection<Lecture> variables)`
    `double` | AssignmentCount.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)` Deprecated.
    `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` | DeltaTimePreference.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | HardConflicts.`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` | PotentialHardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | WeightedHardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `double` | WeightedHardConflicts.`getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `boolean` | WeightedHardConflicts.`init(Solver<Lecture,Placement> solver)`
    `void` | WeightedHardConflicts.`solutionUpdated(Solution<Lecture,Placement> solution)`
    `protected void` | AssignmentCount.AssignmentCountContext.`unassigned(Assignment<Lecture,Placement> assignment, Placement value)`

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

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

    Method parameters in org.cpsolver.coursett.custom with type arguments of type Placement
    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.
    `void` | DeterministicStudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` No re-sectioning (final sectioning) during deterministic student sectioning.
    `void` | DeterministicStudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` No re-sectioning (final sectioning) during deterministic student sectioning.

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

    Methods in org.cpsolver.coursett.heuristics that return Placement
    Modifier and Type | Method and Description
    --- | ---
    `Placement` | PlacementSelection.`selectValue(Solution<Lecture,Placement> solution, Lecture var)`

    Methods in org.cpsolver.coursett.heuristics that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Map<Lecture,Placement>` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`assignments()`
    `Assignment<Lecture,Placement>` | NeighbourSelectionWithSuggestions.NeighbourSelectionWithSuggestionsContext.`getAssignment()`
    `Solution<Lecture,Placement>` | NeighbourSelectionWithSuggestions.NeighbourSelectionWithSuggestionsContext.`getSolution()`
    `Neighbour<Lecture,Placement>` | FixCompleteSolutionNeighbourSelection.`selectNeighbour(Solution<Lecture,Placement> solution)` Try to improve existing solution by backtracking search of very limited depth.
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution, Lecture lecture, int depth)`

    Methods in org.cpsolver.coursett.heuristics with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | PlacementSelection.`containsItselfSingletonOrCommited(TimetableModel model, Set<Placement> values, Placement selectedValue)`
    `Map<String,Double>` | UniversalPerturbationsCounter.`getCompactInfo(Assignment<Lecture,Placement> assignment, TimetableModel model, Placement assignedPlacement, boolean includeZero, boolean weighted)`
    `protected double` | UniversalPerturbationsCounter.`getPenalty(Assignment<Lecture,Placement> assignment, Placement assignedPlacement, Placement initialPlacement)`

    Method parameters in org.cpsolver.coursett.heuristics with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`assign(Assignment<Lecture,Placement> assignment, long iteration)`
    `int` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`compareTo(Solution<Lecture,Placement> solution)`
    `boolean` | PlacementSelection.`containsItselfSingletonOrCommited(TimetableModel model, Set<Placement> values, Placement selectedValue)`
    `FixCompleteSolutionNeighbourSelection.FixCompleteSolutionNeighbourContext` | FixCompleteSolutionNeighbourSelection.`createAssignmentContext(Assignment<Lecture,Placement> assignment)`
    `double` | TimetableComparator.`currentValue(Solution<Lecture,Placement> currentSolution)` Deprecated.
    `double` | TimetableComparator.`getBest(Solution<Lecture,Placement> currentSolution)` Deprecated.
    `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)`
    `void` | FixCompleteSolutionNeighbourSelection.FixCompleteSolutionNeighbourContext.`incPhase(Solution<Lecture,Placement> solution)`
    `void` | FixCompleteSolutionNeighbourSelection.`init(Solver<Lecture,Placement> solver)`
    `void` | LectureSelection.`init(Solver<Lecture,Placement> solver)`
    `void` | NeighbourSelectionWithSuggestions.`init(Solver<Lecture,Placement> solver)`
    `void` | PlacementSelection.`init(Solver<Lecture,Placement> solver)`
    `Neighbour<Lecture,Placement>` | FixCompleteSolutionNeighbourSelection.`selectNeighbour(Solution<Lecture,Placement> solution)` Try to improve existing solution by backtracking search of very limited depth.
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution, Lecture lecture, int depth)`
    `Placement` | PlacementSelection.`selectValue(Solution<Lecture,Placement> solution, Lecture var)`
    `Lecture` | LectureSelection.`selectVariable(Solution<Lecture,Placement> solution)`
    `boolean` | NeighbourSelectionWithSuggestions.NeighbourSelectionWithSuggestionsContext.`setSuggestionNeighbourIfImproving(Map<Lecture,Placement> assignment)`
    `double` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`value(Assignment<Lecture,Placement> assignment)`

    Constructor parameters in org.cpsolver.coursett.heuristics with type arguments of type Placement
    Constructor and Description
    `FixCompleteSolutionNeighbourContext(Assignment<Lecture,Placement> assignment)`
    `FixCompleteSolutionNeighbourSelection(DataProperties config, NeighbourSelection<Lecture,Placement> parent)`
    `NeighbourSelectionWithSuggestions(Solver<Lecture,Placement> solver)`
    `NeighbourSelectionWithSuggestionsContext(Solution<Lecture,Placement> solution)`
    `SuggestionNeighbour(Map<Lecture,Placement> resolvedLectures, double value)`

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

    Methods in org.cpsolver.coursett.model that return Placement
    Modifier and Type | Method and Description
    --- | ---
    `Placement` | Lecture.`getConstantValue()`

    Methods in org.cpsolver.coursett.model that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `List<Placement>` | Lecture.`computeValues(Assignment<Lecture,Placement> assignment, boolean allowBreakHard)` Domain -- all combinations of room and time locations
    `Set<Placement>` | Student.`conflictPlacements(Placement placement)`
    `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.
    `Set<Placement>` | Student.`getCommitedPlacements()`
    `Set<Constraint<Lecture,Placement>>` | Lecture.`getWeakeningConstraints()`
    `List<Placement>` | Lecture.`values(Assignment<Lecture,Placement> assignment)` All values

    Methods in org.cpsolver.coursett.model with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | Student.`addCommitedPlacement(Placement placement)`
    `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)`
    `boolean` | Placement.`canShareRooms(Placement other)`
    `int` | Lecture.`classLimit(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)`
    `Set<Placement>` | Student.`conflictPlacements(Placement placement)`
    `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` | Student.`countConflictPlacements(Placement placement)`
    `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)`
    `int` | Lecture.`getCommitedConflicts(Placement placement)`
    `static double` | Placement.`getDistanceInMeters(DistanceMetric m, Placement p1, Placement p2)` Distance between two placements
    `static int` | Placement.`getDistanceInMinutes(DistanceMetric m, Placement p1, Placement p2)` Distance between two placements
    `String` | Lecture.`getNotValidReason(Assignment<Lecture,Placement> assignment, Placement placement)` Deprecated.
    `String` | Lecture.`getNotValidReason(Assignment<Lecture,Placement> assignment, Placement placement, boolean useAmPm)`
    `boolean` | Lecture.`isValid(Placement placement)`
    `int` | Placement.`nrDifferentBuildings(Placement placement)`
    `int` | Placement.`nrDifferentRooms(Placement placement)`
    `boolean` | Placement.`sameRooms(Placement placement)`
    `boolean` | Placement.`sameTime(Placement placement)`
    `void` | Lecture.`setConstantValue(Placement value)`
    `boolean` | Placement.`shareRooms(Placement placement)`

    Method parameters in org.cpsolver.coursett.model with type arguments of type Placement
    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` | TimetableModel.`addConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`addContstraint(Constraint<Lecture,Placement> constraint)`
    `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)`
    `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.
    `void` | OnFlySectioning.`constraintAdded(Constraint<Lecture,Placement> constraint)`
    `void` | OnFlySectioning.`constraintRemoved(Constraint<Lecture,Placement> constraint)`
    `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.`execute(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `void` | FinalSectioning.`execute(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `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
    `boolean` | OnFlySectioning.`init(Solver<Lecture,Placement> solver)` Initialization
    `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` | TimetableModel.`removeConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`removeContstraint(Constraint<Lecture,Placement> constraint)`
    `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)
    `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)
    `void` | DefaultStudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` Run student final sectioning (switching students between sections of the same class in order to minimize overall number of student conflicts).
    `void` | DefaultStudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` Run student final sectioning (switching students between sections of the same class in order to minimize overall number of student conflicts).
    `void` | StudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` Run student final sectioning (switching students between sections of the same class in order to minimize overall number of student conflicts).
    `void` | StudentSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)` Run 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

    Constructors in org.cpsolver.coursett.model with parameters of type Placement
    Constructor and Description
    `Lecture(Long id, Long solverGroupId, Long schedulingSubpartId, String name, List<TimeLocation> timeLocations, List<RoomLocation> roomLocations, int nrRooms, Placement initialPlacement, int minClassLimit, int maxClassLimit, double room2limitRatio)` Constructor

  - ### Uses of Placement in org.cpsolver.coursett.neighbourhoods

    Methods in org.cpsolver.coursett.neighbourhoods that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Lecture,Placement>` | RoomChange.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | RoomSwap.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | TimeChange.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | TimeSwap.`selectNeighbour(Solution<Lecture,Placement> solution)`

    Method parameters in org.cpsolver.coursett.neighbourhoods with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | RoomSwap.`init(Solver<Lecture,Placement> solver)`
    `void` | TimeSwap.`init(Solver<Lecture,Placement> solver)`
    `Double` | RoomSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Double` | RoomSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Double` | RoomSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Double` | TimeSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Double` | TimeSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Double` | TimeSwap.`resolve(Solution<Lecture,Placement> solution, double total, long startTime, Map<Lecture,Placement> assignments, List<Placement> conflicts, int index)`
    `Neighbour<Lecture,Placement>` | RoomChange.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | RoomSwap.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | TimeChange.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | TimeSwap.`selectNeighbour(Solution<Lecture,Placement> solution)`

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

    Methods in org.cpsolver.coursett.sectioning that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Map<Lecture,Placement>` | StudentSwap.`assignments()`
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`generateSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student student, Configuration config)`
    `Assignment<Lecture,Placement>` | SctModel.`getAssignment()` Current assignment
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`selectNeighbour(Assignment<Lecture,Placement> assignment, Lecture lecture)`
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`selectNeighbour(Solution<Lecture,Placement> solution)`

    Methods in org.cpsolver.coursett.sectioning with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `double` | StudentSwap.`getJenrConflictWeight(List<StudentConflict> criteria, Student student, Placement p1, Placement p2)` Compute student conflict weigth between two classes.

    Method parameters in org.cpsolver.coursett.sectioning with type arguments of type Placement
    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)`
    `static double` | StudentSwapSectioning.`gp(Solution<Lecture,Placement> solution)` Student group percentage of a solution
    `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 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
    `void` | StudentSwapGenerator.`init(Solver<Lecture,Placement> solver)`
    `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
    `protected double` | StudentSwapSectioning.`objective(Neighbour<Lecture,Placement> n, Assignment<Lecture,Placement> assignment)` Student conflict weight change of a student swap
    `protected double` | StudentSwapSectioning.`objective(Solution<Lecture,Placement> solution)` Student conflict weight of a solution
    `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)`
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `void` | SctSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `void` | SctSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `void` | StudentSwapSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `void` | StudentSwapSectioning.`switchStudents(Solution<Lecture,Placement> solution, TerminationCondition<Lecture,Placement> termination)`
    `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
    `protected double` | StudentSwapSectioning.`value(Neighbour<Lecture,Placement> n, Assignment<Lecture,Placement> assignment)` Combined weight change of a student swap
    `protected double` | SctSectioning.`value(Solution<Lecture,Placement> solution)` Student conflict weight for the given solution
    `protected double` | StudentSwapSectioning.`value(Solution<Lecture,Placement> solution)` Combined weight of a solution

    Constructor parameters in org.cpsolver.coursett.sectioning with type arguments of type Placement
    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 Placement in org.cpsolver.studentsct

    Methods in org.cpsolver.studentsct that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected Map<Long,Placement>` | StudentSectioningXMLLoader.`loadTimetable(Element timetableRoot)` Load given timetable

    Method parameters in org.cpsolver.studentsct with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected Config` | StudentSectioningXMLLoader.`loadConfig(Element configEl, Offering offering, Map<Long,Subpart> subpartTable, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load config
    `protected void` | StudentSectioningXMLLoader.`loadOfferings(Element offeringsEl, Map<Long,Offering> offeringTable, Map<Long,Course> courseTable, Map<Long,Placement> timetable)` Load offerings
    `protected Section` | StudentSectioningXMLLoader.`loadSection(Element sectionEl, Subpart subpart, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load section
    `protected Subpart` | StudentSectioningXMLLoader.`loadSubpart(Element subpartEl, Config config, Map<Long,Subpart> subpartTable, Map<Long,Section> sectionTable, Map<Long,Placement> timetable)` Load subpart

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

    Methods in org.cpsolver.studentsct.extension with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | DistanceConflict.`getDistanceInMinutes(Placement p1, Placement p2)`
    `int` | StudentQuality.Context.`getDistanceInMinutes(Placement p1, Placement p2)`

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

    Methods in org.cpsolver.studentsct.model that return Placement
    Modifier and Type | Method and Description
    --- | ---
    `Placement` | Section.`getPlacement()` Time/room placement of the section.

    Methods in org.cpsolver.studentsct.model with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | Section.`setPlacement(Placement placement)` Set time/room placement of the section.

    Constructors in org.cpsolver.studentsct.model with parameters of type Placement
    Constructor and Description
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, List<Instructor> instructors, Section parent)` Constructor
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, Section parent, Instructor... instructors)` Constructor
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent)` Deprecated.

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

    Constructors in org.cpsolver.studentsct.online with parameters of type Placement
    Constructor and Description
    `OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, List<Instructor> instructors, Section parent)`
    `OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent)` Deprecated.