## Uses of Class
org.cpsolver.exam.model.ExamRoomPlacement

- Packages that use ExamRoomPlacement
  Package | Description
  --- | ---
  org.cpsolver.exam.heuristics | Examination Timetabling: Solution Heuristics.
  org.cpsolver.exam.model | Examination Timetabling: Model.
  org.cpsolver.exam.neighbours | Examination Timetabling: Various Neighbourhoods.
  org.cpsolver.exam.reports | Examination Timetabling: Reports.
  org.cpsolver.exam.split | This package contains an an experimental criterion that allows an exam to be split into two if it decreases the number of student conflicts.

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

    Methods in org.cpsolver.exam.heuristics that return types with arguments of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `Set<ExamRoomPlacement>` | ExamColoringConstruction.`findRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period)`

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

    Methods in org.cpsolver.exam.model that return ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `ExamRoomPlacement` | Exam.`getRoomPlacement(ExamRoom room)` Returns appropriate `ExamRoomPlacement` for the given room, if it is available for this exam, null otherwise.
    `ExamRoomPlacement` | Exam.`getRoomPlacement(long roomId)` Returns appropriate `ExamRoomPlacement` for the given room, if it is available for this exam, null otherwise.

    Methods in org.cpsolver.exam.model that return types with arguments of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `Set<ExamRoomPlacement>` | Exam.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Find best available rooms for the exam in the given period.
    `Set<ExamRoomPlacement>` | Exam.`findRoomsRandom(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Randomly find a set of available rooms for the exam in the given period.
    `Set<ExamRoomPlacement>` | Exam.`findRoomsRandom(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period, boolean checkConflicts)` Randomly find a set of available rooms for the exam in the given period.
    `List<ExamRoomPlacement>` | Exam.`getPreferredRoomPlacements()` Return list of possible room placements that are strongly preferred.
    `List<ExamRoomPlacement>` | Exam.`getRoomPlacements()` Return list of possible room placements.
    `Set<ExamRoomPlacement>` | ExamPlacement.`getRoomPlacements()` Assigned rooms (it is empty when `Exam.getMaxRooms()` is zero)

    Methods in org.cpsolver.exam.model with parameters of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | Exam.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, ExamRoomPlacement room)` Check all distribution constraint that this exam is involved in
    `static boolean` | ExamRoom.`checkParents(Collection<ExamRoomPlacement> roomsSoFar, ExamRoomPlacement room)` Check that the room and its parent are not used at the same time
    `int` | ExamRoomPlacement.`compareTo(ExamRoomPlacement o)` Compare two room placements
    `double` | ExamRoomPlacement.`getDistanceInMeters(ExamRoomPlacement other)` Room distance
    `int` | Exam.`getDistributionConstraintPenalty(Assignment<Exam,ExamPlacement> assignment, ExamRoomPlacement room)` Check all soft distribution constraint that this exam is involved in
    `boolean` | ExamDistributionConstraint.DistributionType.`isSatisfied(ExamPlacement first, ExamRoomPlacement second)`
    `boolean` | ExamDistributionConstraint.RoomCheck.`isSatisfied(ExamPlacement first, ExamRoomPlacement second)`

    Method parameters in org.cpsolver.exam.model with type arguments of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | ExamRoom.`checkParents(Collection<ExamRoomPlacement> roomsSoFar, ExamRoomPlacement room)` Check that the room and its parent are not used at the same time

    Constructor parameters in org.cpsolver.exam.model with type arguments of type ExamRoomPlacement
    Constructor and Description
    `Exam(long id, String name, int length, boolean altSeating, int maxRooms, int minSize, List<ExamPeriodPlacement> periodPlacements, List<ExamRoomPlacement> roomPlacements)` Constructor
    `ExamPlacement(Exam exam, ExamPeriodPlacement periodPlacement, Set<ExamRoomPlacement> roomPlacements)` Constructor

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

    Methods in org.cpsolver.exam.neighbours that return types with arguments of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `Set<ExamRoomPlacement>` | ExamPeriodSwapMove.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`

    Methods in org.cpsolver.exam.neighbours with parameters of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | ExamPeriodSwapMove.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`
    `int` | ExamPeriodSwapMove.`getDistributionConstraintPenalty(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamRoomPlacement room, Set<ExamPlacement> conflictsToIgnore, Map<Exam,ExamPlacement> placements)`

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

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

    Methods in org.cpsolver.exam.reports with parameters of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `int` | ExamRoomComparator.`compare(ExamRoomPlacement r1, ExamRoomPlacement r2)` Compare two rooms based on their normal/alternative seating size

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

    Methods in org.cpsolver.exam.split that return types with arguments of type ExamRoomPlacement
    Modifier and Type | Method and Description
    --- | ---
    `Set<ExamRoomPlacement>` | ExamSplitMoves.`findBestAvailableRooms(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, int examSize)` Find best available rooms for a new exam (that is to be split from the given one), if is is assigned into the given examination period.