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

- Packages that use ExamPeriodPlacement
  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.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 ExamPeriodPlacement in org.cpsolver.exam.heuristics

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

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

    Methods in org.cpsolver.exam.model that return ExamPeriodPlacement
    Modifier and Type | Method and Description
    --- | ---
    `ExamPeriodPlacement` | ExamPlacement.`getPeriodPlacement()` Assigned period placement
    `ExamPeriodPlacement` | Exam.`getPeriodPlacement(ExamPeriod period)` Returns appropriate `ExamPeriodPlacement` for the given period, if it is available for this exam, null otherwise.
    `ExamPeriodPlacement` | Exam.`getPeriodPlacement(Long periodId)` Returns appropriate `ExamPeriodPlacement` for the given period, if it is available for this exam, null otherwise.

    Methods in org.cpsolver.exam.model that return types with arguments of type ExamPeriodPlacement
    Modifier and Type | Method and Description
    --- | ---
    `List<ExamPeriodPlacement>` | Exam.`getPeriodPlacements()` Return list of possible period placements.

    Methods in org.cpsolver.exam.model with parameters of type ExamPeriodPlacement
    Modifier and Type | Method and Description
    --- | ---
    `int` | ExamPeriodPlacement.`compareTo(ExamPeriodPlacement o)` Compare two period placements
    `int` | Exam.`countInstructorConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Number of instructor of this exam (that does not have direct conflicts allowed, see `ExamInstructor.canConflict(Exam, Exam)`) that attend some other exam in the given period.
    `int` | Exam.`countStudentConflicts(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Number of students of this exam (that does not have direct conflicts allowed, see `ExamStudent.canConflict(Exam, Exam)`) that attend some other exam in the given period.
    `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.
    `boolean` | Exam.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, ExamPeriodPlacement period)` Check all distribution constraint that this exam is involved in

    Constructors in org.cpsolver.exam.model with parameters of type ExamPeriodPlacement
    Constructor and Description
    `ExamPlacement(Exam exam, ExamPeriodPlacement periodPlacement, Set<ExamRoomPlacement> roomPlacements)` Constructor

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

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

    Methods in org.cpsolver.exam.neighbours with parameters of type ExamPeriodPlacement
    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)`
    `boolean` | ExamPeriodSwapMove.`checkDistributionConstraints(Assignment<Exam,ExamPlacement> assignment, Exam exam, ExamPeriodPlacement period, Map<Exam,ExamPlacement> placements)`

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

    Methods in org.cpsolver.exam.split with parameters of type ExamPeriodPlacement
    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.