## Uses of Class
net.sf.cpsolver.coursett.model.Placement

- Packages that use Placement
  Package | Description
  --- | ---
  net.sf.cpsolver.coursett | University Course Timetabling.
  net.sf.cpsolver.coursett.constraint | University Course Timetabling: Constraints.
  net.sf.cpsolver.coursett.criteria | University Course Timetabling: Criteria.
  net.sf.cpsolver.coursett.criteria.additional | University Course Timetabling: Additional (Experimental) Criteria.
  net.sf.cpsolver.coursett.criteria.placement | University Course Timetabling: Placement Selection Criteria.
  net.sf.cpsolver.coursett.heuristics | University Course Timetabling: Heuristics.
  net.sf.cpsolver.coursett.model | University Course Timetabling: Model.
  net.sf.cpsolver.coursett.neighbourhoods | University Course Timetabling: Various Neighbourhoods.
  net.sf.cpsolver.studentsct | Student Sectioning Solver.
  net.sf.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  net.sf.cpsolver.studentsct.model | Student Sectioning: Model.

- - ### Uses of Placement in net.sf.cpsolver.coursett

    Methods in net.sf.cpsolver.coursett that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected Solution<Lecture,Placement>` | TimetableSaver.`getSolution()` Solution to be saved
    `Solver<Lecture,Placement>` | TimetableSaver.`getSolver()` Solver
    `Solver<Lecture,Placement>` | TimetableXMLLoader.`getSolver()`

    Method parameters in net.sf.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)`
    `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` | Test.`notify(Solution<Lecture,Placement> solution)` Add a line into the output CSV file when a enw best solution is found.
    `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 net.sf.cpsolver.coursett with type arguments of type Placement
    Constructor and Description
    `TimetableSaver(Solver<Lecture,Placement> solver)` Constructor
    `TimetableXMLSaver(Solver<Lecture,Placement> solver)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.constraint

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

    Methods in net.sf.cpsolver.coursett.constraint that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `protected Criterion<Lecture,Placement>` | DepartmentSpreadConstraint.`getCriterion()`
    `protected Criterion<Lecture,Placement>` | SpreadConstraint.`getCriterion()`
    `List<Placement>` | FlexibleConstraint.Block.`getPlacements()`
    `List<Placement>` | InstructorConstraint.`getPlacements(int slot, BitSet weekCode)`
    `List<Placement>` | InstructorConstraint.`getPlacements(int slot, Placement placement)`
    `protected Set<Placement>` | FlexibleConstraint.`getRelevantPlacements(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>` | InstructorConstraint.`getResource(int slot)` Lookup table getResource()[slot] -> lecture using this resource placed in the given time slot (null if empty)
    `List<Placement>` | RoomConstraint.`getResource(int slot)` Lookup table getResource()[slot] -> lecture using this room placed in the given time slot (null if empty)
    `List<Placement>` | InstructorConstraint.`getUnavailabilities()`

    Methods in net.sf.cpsolver.coursett.constraint with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClassLimitConstraint.`addParentAdepts(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(Placement value)`
    `void` | DiscouragedRoomConstraint.`assigned(long iteration, Placement value)`
    `void` | FlexibleConstraint.`assigned(long iteration, Placement value)`
    `void` | GroupConstraint.`assigned(long iteration, Placement value)`
    `void` | InstructorConstraint.`assigned(long iteration, Placement placement)`
    `void` | JenrlConstraint.`assigned(long iteration, Placement value)`
    `void` | MaxBreaksFlexibleConstraint.`assigned(long iteration, Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`assigned(long iteration, Placement placement)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`assigned(long iteration, Placement placement)`
    `void` | RoomConstraint.`assigned(long iteration, Placement placement)`
    `void` | SpreadConstraint.`assigned(long iteration, Placement placement)`
    `int` | FlexibleConstraint.PlacementTimeComparator.`compare(Placement p1, Placement p2)`
    `void` | ClassLimitConstraint.`computeAdepts(Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `void` | BreakFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | DiscouragedRoomConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `abstract void` | FlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | IgnoreStudentConflictsConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | InstructorConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | JenrlConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MaxBlockFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MaxBreaksFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | RoomConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | SpreadConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `int` | ClassLimitConstraint.`currentClassLimit(Placement value, Set<Placement> conflicts)`
    `boolean` | GroupConstraint.`forwardCheck(Placement value, Set<GroupConstraint> ignore, int depth)`
    `void` | GroupConstraint.`forwardCheck(Placement value, Set<Placement> conflicts, Set<GroupConstraint> ignore, int depth)`
    `Placement` | SpreadConstraint.`getAdept(Placement placement, int[][] nrCourses, Set<Placement> conflicts)`
    `List<FlexibleConstraint.Block>` | MaxBlockFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | MaxBreaksFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | BreakFlexibleConstraint.`getBreakBlocks(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` | GroupConstraint.`getCurrentPreference(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(Placement placement)`
    `int` | MinimizeNumberOfUsedGroupsOfTime.`getOverLimit(Placement placement)`
    `int` | MinimizeNumberOfUsedRoomsConstraint.`getOverLimit(Placement placement)`
    `int` | SpreadConstraint.`getPenalty(Placement placement)` Department balancing penalty of the given placement
    `List<Placement>` | InstructorConstraint.`getPlacements(int slot, Placement placement)`
    `int` | InstructorConstraint.`getPreference(Placement value)` Back-to-back preference of the given placement
    `int` | InstructorConstraint.`getPreferenceCombination(Placement value)`
    `protected Set<Placement>` | FlexibleConstraint.`getRelevantPlacements(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` | ClassLimitConstraint.`inConflict(Placement value)`
    `boolean` | DiscouragedRoomConstraint.`inConflict(Placement value)`
    `boolean` | GroupConstraint.`inConflict(Placement value)`
    `boolean` | InstructorConstraint.`inConflict(Placement placement)`
    `boolean` | JenrlConstraint.`inConflict(Placement value)`
    `boolean` | MinimizeNumberOfUsedGroupsOfTime.`inConflict(Placement placement)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.`inConflict(Placement placeement)`
    `boolean` | RoomConstraint.`inConflict(Placement placement)`
    `boolean` | SpreadConstraint.`inConflict(Placement placement)`
    `boolean` | InstructorConstraint.`isAvailable(Lecture lecture, Placement placement)`
    `boolean` | GroupConstraint.`isChildrenNotOverlap(Lecture lec1, Placement plc1, Lecture lec2, Placement plc2)`
    `boolean` | DiscouragedRoomConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | FlexibleConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | GroupConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | InstructorConstraint.`isConsistent(Placement p1, Placement p2)`
    `boolean` | JenrlConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | MinimizeNumberOfUsedGroupsOfTime.`isConsistent(Placement value1, Placement value2)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.`isConsistent(Placement value1, Placement value2)`
    `boolean` | RoomConstraint.`isConsistent(Placement p1, Placement p2)`
    `boolean` | SpreadConstraint.`isConsistent(Placement p1, Placement p2)`
    `static boolean` | JenrlConstraint.`isInConflict(Placement p1, Placement p2, DistanceMetric m)` Returns true if the given placements are overlapping or they are back-to-back and too far for students.
    `boolean` | DiscouragedRoomConstraint.`isOverLimit(Placement value)`
    `boolean` | MinimizeNumberOfUsedGroupsOfTime.`isOverLimit(Placement placement)`
    `boolean` | MinimizeNumberOfUsedRoomsConstraint.`isOverLimit(Placement placement)`
    `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.ConstraintType.`isSatisfied(GroupConstraint gc, Placement plc1, Placement plc2)` True if a required or preferred constraint is satisfied between a pair of placements
    `boolean` | GroupConstraint.`isSatisfiedPair(Placement plc1, Placement plc2)`
    `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` | GroupConstraint.ConstraintType.`isViolated(GroupConstraint gc, Placement plc1, Placement plc2)` True if a prohibited or discouraged constraint is satisfied between a pair of placements
    `long` | JenrlConstraint.`jenrl(Lecture variable, Placement value)` Number of joined enrollments if the given value is assigned to the given variable
    `void` | InstructorConstraint.`setNotAvailable(Placement placement)`
    `void` | RoomConstraint.`setNotAvailable(Placement placement)`
    `void` | DiscouragedRoomConstraint.`unassigned(long iteration, Placement value)`
    `void` | FlexibleConstraint.`unassigned(long iteration, Placement value)`
    `void` | GroupConstraint.`unassigned(long iteration, Placement value)`
    `void` | InstructorConstraint.`unassigned(long iteration, Placement placement)`
    `void` | JenrlConstraint.`unassigned(long iteration, Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`unassigned(long iteration, Placement placement)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`unassigned(long iteration, Placement placement)`
    `void` | RoomConstraint.`unassigned(long iteration, Placement placement)`
    `void` | SpreadConstraint.`unassigned(long iteration, Placement placement)`
    `void` | DiscouragedRoomConstraint.`weaken(Placement value)`
    `void` | JenrlConstraint.`weaken(Placement value)`
    `void` | MaxBreaksFlexibleConstraint.`weaken(Placement value)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`weaken(Placement value)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`weaken(Placement value)`
    `void` | SpreadConstraint.`weaken(Placement value)`

    Method parameters in net.sf.cpsolver.coursett.constraint with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClassLimitConstraint.`addParentAdepts(Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`addParentAdepts(Collection<Placement> adepts, Lecture parent, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeAdepts(Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeAdepts(Collection<Placement> adepts, List<Lecture> variables, Placement value, Set<Placement> conflicts)`
    `void` | BreakFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | ClassLimitConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | DiscouragedRoomConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `abstract void` | FlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | IgnoreStudentConflictsConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | InstructorConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | JenrlConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MaxBlockFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MaxBreaksFlexibleConstraint.`computeConflicts(Placement value, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedGroupsOfTime.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | MinimizeNumberOfUsedRoomsConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | RoomConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `void` | SpreadConstraint.`computeConflicts(Placement placement, Set<Placement> conflicts)`
    `int` | ClassLimitConstraint.`currentClassLimit(Placement value, Set<Placement> conflicts)`
    `void` | GroupConstraint.`forwardCheck(Placement value, Set<Placement> conflicts, Set<GroupConstraint> ignore, int depth)`
    `Placement` | SpreadConstraint.`getAdept(Placement placement, int[][] nrCourses, Set<Placement> conflicts)`
    `List<FlexibleConstraint.Block>` | MaxBlockFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | MaxBlockFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | MaxBreaksFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | MaxBreaksFlexibleConstraint.`getBlocks(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)`
    `List<FlexibleConstraint.Block>` | BreakFlexibleConstraint.`getBreakBlocks(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(int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)` Creates a list of consecutive blocks with back-to-back classes.
    `double` | FlexibleConstraint.`getCurrentPreference(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Return the current preference of the flexible constraint, considering conflicts and new assignments.
    `double` | FlexibleConstraint.`getCurrentPreference(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)` Return the current preference of the flexible constraint, considering conflicts and new assignments.
    `double` | BreakFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | BreakFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `abstract double` | FlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `abstract double` | FlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxBlockFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxBlockFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxBreaksFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `double` | MaxBreaksFlexibleConstraint.`getNrViolations(Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)`
    `protected Set<Placement>` | FlexibleConstraint.`getRelevantPlacements(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(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 List<FlexibleConstraint.Block>` | FlexibleConstraint.`mergeToBlocks(List<Placement> sorted, int maxBreakBetweenBTB)` Creates a list of blocks from a placements sorted by startSlot
    `void` | GroupConstraint.`setModel(Model<Lecture,Placement> model)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.criteria

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

    Methods in net.sf.cpsolver.coursett.criteria with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | StudentConflict.`applicable(Placement p1, Placement p2)`
    `static boolean` | StudentConflict.`committed(Placement p1, Placement p2)`
    `protected static int` | BrokenTimePatterns.`countUselessSlotsBrokenTimePatterns(RoomConstraint rc, Placement placement)` Number of broken time patterns for this room
    `protected static int` | UselessHalfHours.`countUselessSlotsHalfHours(RoomConstraint rc, Placement placement)` Number of useless half hours for this room
    `static boolean` | StudentConflict.`distance(DistanceMetric m, Placement p1, Placement p2)`
    `static long` | TooBigRooms.`getDiscouragedRoomSize(Placement value)`
    `static long` | TooBigRooms.`getStronglyDiscouragedRoomSize(Placement value)`
    `static int` | TooBigRooms.`getTooBigRoomPreference(Placement value)`
    `double` | BackToBackInstructorPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | BrokenTimePatterns.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | DepartmentBalancingPenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | DistributionPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | FlexibleConstraintCriterion.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | Perturbations.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomViolations.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | SameSubpartBalancingPenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | StudentCommittedConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | StudentConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | TimePreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | TooBigRooms.`getValue(Placement value, Set<Placement> conflicts)`
    `static boolean` | StudentConflict.`hard(Placement p1, Placement p2)`
    `static boolean` | StudentConflict.`ignore(Placement p1, Placement p2)`
    `boolean` | StudentCommittedConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentDistanceConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentOverlapConflict.`inConflict(Placement p1, Placement p2)`
    `static boolean` | StudentConflict.`overlaps(Placement p1, Placement p2)`
    `protected int` | BackToBackInstructorPreferences.`penalty(Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(Placement value)`
    `protected double` | BrokenTimePatterns.`penalty(RoomConstraint rc, Placement value)`
    `protected double` | UselessHalfHours.`penalty(RoomConstraint rc, Placement value)`
    `protected boolean` | RoomViolations.`violation(Placement value)`
    `protected boolean` | TimeViolations.`violation(Placement value)`

    Method parameters in net.sf.cpsolver.coursett.criteria with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `double` | BackToBackInstructorPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | BrokenTimePatterns.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | DepartmentBalancingPenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | DistributionPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | FlexibleConstraintCriterion.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | Perturbations.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomPreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomViolations.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | SameSubpartBalancingPenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | StudentCommittedConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | StudentConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | TimePreferences.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | TooBigRooms.`getValue(Placement value, Set<Placement> conflicts)`
    `boolean` | FlexibleConstraintCriterion.`init(Solver<Lecture,Placement> solver)`
    `boolean` | Perturbations.`init(Solver<Lecture,Placement> solver)`
    `boolean` | StudentConflict.`init(Solver<Lecture,Placement> solver)`
    `boolean` | TimetablingCriterion.`init(Solver<Lecture,Placement> solver)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.criteria.additional

    Methods in net.sf.cpsolver.coursett.criteria.additional with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | InstructorLunchBreak.`afterAssigned(long iteration, Placement value)` Update criterion after an assignment.
    `void` | InstructorLunchBreak.`afterUnassigned(long iteration, Placement value)` Update criterion after an unassignment
    `double` | IgnoredCommittedStudentConflict.`countCommittedConflicts(Placement placement)`
    `int` | IgnoredCommittedStudentConflict.`countCommittedConflicts(Student student, Placement placement)`
    `double` | IgnoredCommittedStudentConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomSizePenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`getWeightedValue(Placement value, Set<Placement> conflicts)`
    `boolean` | ImportantStudentConflict.`important(Placement p1, Placement p2)`
    `boolean` | IgnoredCommittedStudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | IgnoredStudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | ImportantStudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | InstructorStudentConflict.`inConflict(Placement p1, Placement p2)`
    `boolean` | StudentLuchBreak.`inConflict(Placement p1, Placement p2)`
    `boolean` | InstructorStudentConflict.`instructor(Placement p1, Placement p2)` True if there is at least one student teaching one of the two placements and enrolled in the other.
    `boolean` | StudentLuchBreak.`nolunch(Placement p1, Placement p2)`
    `void` | InstructorLunchBreak.`updateCriterion(InstructorConstraint instructorConstraint, Placement placement)` Method checks or sets the CompactInfo of an InstructorConstraint.
    `void` | InstructorLunchBreak.`updateLunchPenalty(InstructorConstraint constraint, Placement p)` Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately.

    Method parameters in net.sf.cpsolver.coursett.criteria.additional with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `double` | IgnoredCommittedStudentConflict.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | RoomSizePenalty.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | InstructorLunchBreak.`getWeightedValue(Placement value, Set<Placement> conflicts)`
    `boolean` | InstructorLunchBreak.`init(Solver<Lecture,Placement> solver)`
    `boolean` | RoomSizePenalty.`init(Solver<Lecture,Placement> solver)`
    `boolean` | StudentLuchBreak.`init(Solver<Lecture,Placement> solver)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.criteria.placement

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

    Methods in net.sf.cpsolver.coursett.criteria.placement with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `double` | AssignmentCount.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | DeltaTimePreference.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | HardConflicts.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | PotentialHardConflicts.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | WeightedHardConflicts.`getValue(Placement value, Set<Placement> conflicts)`

    Method parameters in net.sf.cpsolver.coursett.criteria.placement with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | WeightedHardConflicts.`bestCleared(Solution<Lecture,Placement> solution)`
    `void` | WeightedHardConflicts.`bestRestored(Solution<Lecture,Placement> solution)`
    `void` | WeightedHardConflicts.`bestSaved(Solution<Lecture,Placement> solution)`
    `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(Placement value, Set<Placement> conflicts)`
    `double` | DeltaTimePreference.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | HardConflicts.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | PotentialHardConflicts.`getValue(Placement value, Set<Placement> conflicts)`
    `double` | WeightedHardConflicts.`getValue(Placement value, Set<Placement> conflicts)`
    `boolean` | DeltaTimePreference.`init(Solver<Lecture,Placement> solver)`
    `boolean` | WeightedHardConflicts.`init(Solver<Lecture,Placement> solver)`
    `void` | WeightedHardConflicts.`solutionUpdated(Solution<Lecture,Placement> solution)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.heuristics

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

    Methods in net.sf.cpsolver.coursett.heuristics that return types with arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbour(Solution<Lecture,Placement> solution)`
    `Neighbour<Lecture,Placement>` | NeighbourSelectionWithSuggestions.`selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution, Lecture lecture, int depth)`

    Methods in net.sf.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(TimetableModel model, Placement assignedPlacement, boolean includeZero, boolean weighted)`
    `protected double` | UniversalPerturbationsCounter.`getPenalty(Placement assignedPlacement, Placement initialPlacement)`

    Method parameters in net.sf.cpsolver.coursett.heuristics with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `int` | NeighbourSelectionWithSuggestions.SuggestionNeighbour.`compareTo(Solution<Lecture,Placement> solution)`
    `boolean` | PlacementSelection.`containsItselfSingletonOrCommited(TimetableModel model, Set<Placement> values, Placement selectedValue)`
    `double` | TimetableComparator.`currentValue(Solution<Lecture,Placement> currentSolution)` Deprecated.
    `double` | TimetableComparator.`getBest(Solution<Lecture,Placement> currentSolution)` Deprecated.
    `void` | LectureSelection.`init(Solver<Lecture,Placement> solver)`
    `void` | NeighbourSelectionWithSuggestions.`init(Solver<Lecture,Placement> solver)`
    `void` | PlacementSelection.`init(Solver<Lecture,Placement> solver)`
    `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)`

    Constructor parameters in net.sf.cpsolver.coursett.heuristics with type arguments of type Placement
    Constructor and Description
    `NeighbourSelectionWithSuggestions(Solver<Lecture,Placement> solver)`
    `SuggestionNeighbour(Map<Lecture,Placement> resolvedLectures)`

  - ### Uses of Placement in net.sf.cpsolver.coursett.model

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

    Methods in net.sf.cpsolver.coursett.model with parameters of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | Student.`addCommitedPlacement(Placement placement)`
    `void` | OnFlySectioning.`afterAssigned(long iteration, Placement value)` `FinalSectioning.resection(Lecture, boolean, boolean)` is called when given iteration number is greater than zero.
    `void` | OnFlySectioning.`afterUnassigned(long iteration, Placement value)`
    `void` | OnFlySectioning.`beforeAssigned(long iteration, Placement value)`
    `void` | OnFlySectioning.`beforeUnassigned(long iteration, Placement value)`
    `boolean` | Placement.`canShareRooms(Placement other)`
    `int` | Lecture.`classLimit(Placement assignment, Set<Placement> conflicts)`
    `Set<Placement>` | Student.`conflictPlacements(Placement placement)`
    `Set<Student>` | Lecture.`conflictStudents(Placement value)` List of students of this class in conflict with the given assignment
    `Set<Placement>` | TimetableModel.`conflictValuesSkipWeakeningConstraints(Placement value)` Returns the set of conflicting variables with this value, if it is assigned to its variable.
    `int` | Lecture.`countCommittedStudentConflicts(Placement value)`
    `int` | Lecture.`countCommittedStudentConflictsOfTheSameProblem(Placement value)`
    `int` | Student.`countConflictPlacements(Placement placement)`
    `int` | Lecture.`countDistanceStudentConflicts(Placement value)`
    `int` | Lecture.`countDistanceStudentConflictsOfTheSameProblem(Placement value)`
    `int` | Lecture.`countHardStudentConflicts(Placement value)`
    `int` | Lecture.`countHardStudentConflictsOfTheSameProblem(Placement value)`
    `int` | Lecture.`countStudentConflicts(Placement value)` Number of student conflicts caused by the given assignment of this lecture
    `int` | Lecture.`countStudentConflictsOfTheSameProblem(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(Placement placement)`
    `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)`
    `boolean` | Placement.`shareRooms(Placement placement)`

    Method parameters in net.sf.cpsolver.coursett.model with type arguments of type Placement
    Modifier and Type | Method and Description
    --- | ---
    `void` | TimetableModel.`addConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`addContstraint(Constraint<Lecture,Placement> constraint)`
    `int` | Lecture.`classLimit(Placement assignment, Set<Placement> conflicts)`
    `void` | OnFlySectioning.`constraintAdded(Constraint<Lecture,Placement> constraint)`
    `void` | OnFlySectioning.`constraintRemoved(Constraint<Lecture,Placement> constraint)`
    `boolean` | OnFlySectioning.`init(Solver<Lecture,Placement> solver)` Initialization
    `void` | TimetableModel.`removeConstraint(Constraint<Lecture,Placement> constraint)`
    `void` | Lecture.`removeContstraint(Constraint<Lecture,Placement> constraint)`

    Constructors in net.sf.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 net.sf.cpsolver.coursett.neighbourhoods

    Methods in net.sf.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 net.sf.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 net.sf.cpsolver.studentsct

    Methods in net.sf.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 net.sf.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 net.sf.cpsolver.studentsct.extension

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

  - ### Uses of Placement in net.sf.cpsolver.studentsct.model

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

    Methods in net.sf.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 net.sf.cpsolver.studentsct.model with parameters of type Placement
    Constructor and Description
    `Section(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent)` Constructor