## Uses of Class
net.sf.cpsolver.studentsct.model.Enrollment

- Packages that use Enrollment
  Package | Description
  --- | ---
  net.sf.cpsolver.studentsct | Student Sectioning Solver.
  net.sf.cpsolver.studentsct.check | Various checks of validity of a student sectioning solution.
  net.sf.cpsolver.studentsct.constraint | Student Sectioning: Constraints.
  net.sf.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  net.sf.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  net.sf.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.
  net.sf.cpsolver.studentsct.model | Student Sectioning: Model.
  net.sf.cpsolver.studentsct.reservation | Student Sectioning: Reservations.
  net.sf.cpsolver.studentsct.weights | Student Sectioning Weightings: various students weight models

- - ### Uses of Enrollment in net.sf.cpsolver.studentsct

    Methods in net.sf.cpsolver.studentsct that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `protected Enrollment` | StudentSectioningXMLLoader.`loadEnrollment(Element enrollmentEl, Request request)` Load enrollment

    Methods in net.sf.cpsolver.studentsct that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Solution<Request,Enrollment>` | Test.`batchSectioning(DataProperties cfg)` Batch sectioning test
    `Solution<Request,Enrollment>` | StudentSctBBTest.`getSolution()` Compute and return the sectioning solution.
    `protected Solution<Request,Enrollment>` | StudentSectioningSaver.`getSolution()` Solution to be saved
    `Solver<Request,Enrollment>` | StudentSectioningSaver.`getSolver()` Solver
    `static Solution<Request,Enrollment>` | Test.`onlineSectioning(DataProperties cfg)` Online sectioning test
    `static Solution<Request,Enrollment>` | Test.`solveModel(StudentSectioningModel model, DataProperties cfg)` Solve the student sectioning problem using IFS solver

    Methods in net.sf.cpsolver.studentsct with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.`afterAssigned(long iteration, Enrollment enrollment)` Called after an enrollment was assigned to a request.
    `void` | StudentSectioningModel.`afterUnassigned(long iteration, Enrollment enrollment)` Called before an enrollment was unassigned from a request.
    `double` | StudentPreferencePenalties.`getPenalty(Enrollment enrollment)` Return penalty of an enrollment.
    `protected void` | StudentSectioningXMLSaver.`saveEnrollment(Element assignmentEl, Enrollment enrollment)` Save enrollment

    Method parameters in net.sf.cpsolver.studentsct with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Test.TestSolutionListener.`bestCleared(Solution<Request,Enrollment> solution)`
    `void` | Test.TestSolutionListener.`bestRestored(Solution<Request,Enrollment> solution)`
    `void` | Test.TestSolutionListener.`bestSaved(Solution<Request,Enrollment> solution)`
    `void` | Test.TestSolutionListener.`getInfo(Solution<Request,Enrollment> solution, Map<String,String> info)`
    `void` | Test.TestSolutionListener.`getInfo(Solution<Request,Enrollment> solution, Map<String,String> info, Collection<Request> variables)`
    `static void` | Test.`printInfo(Solution<Request,Enrollment> solution, boolean computeTables, boolean computeSectInfos, boolean runChecks)` Print some information about the solution
    `static void` | Test.`saveInfoToXML(Solution<Request,Enrollment> solution, HashMap<String,String> extra, File file)` Save solution info as XML
    `void` | Test.TestSolutionListener.`solutionUpdated(Solution<Request,Enrollment> solution)`

    Constructor parameters in net.sf.cpsolver.studentsct with type arguments of type Enrollment
    Constructor and Description
    `StudentSectioningSaver(Solver<Request,Enrollment> solver)` Constructor
    `StudentSectioningXMLSaver(Solver<Request,Enrollment> solver)` Constructor

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.check

    Methods in net.sf.cpsolver.studentsct.check that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | InevitableStudentConflicts.StudentCheck.`firstConflict(Enrollment enrollment)` First conflicting enrollment
    `Enrollment[]` | InevitableStudentConflicts.StudentCheck.`getBestAssignment()` Best schedule

    Methods in net.sf.cpsolver.studentsct.check with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | InevitableStudentConflicts.StudentCheck.`firstConflict(Enrollment enrollment)` First conflicting enrollment

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.constraint

    Methods in net.sf.cpsolver.studentsct.constraint that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | LinkedSections.Assignment.`getEnrollment(Request request, int index)` Return enrollment of the given request
    `Enrollment` | LinkedSections.CurrentAssignment.`getEnrollment(Request request, int index)` Return `Variable.getAssignment()`
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment)` Check for conflicts.
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment, LinkedSections.Assignment assignment)` Check for conflicts.

    Methods in net.sf.cpsolver.studentsct.constraint with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | LinkedSections.`computeConflicts(Enrollment enrollment, LinkedSections.Assignment assignment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | LinkedSections.`computeConflicts(Enrollment enrollment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | ConfigLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Course, Request)`) exceeds the limit.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | ReservationLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaning available space (computed by `Reservation.getReservedAvailableSpace(Request)`) is below the requests weight `Request.getWeight()`.
    `void` | SectionLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `boolean` | ConfigLimit.`inConflict(Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Config, Request)`) exceeds the limit.
    `boolean` | CourseLimit.`inConflict(Enrollment enrollment)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Course, Request)`) exceeds the limit.
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`inConflict(Enrollment value)` Check for conflict using `LinkedSections.inConflict(Enrollment)`
    `boolean` | RequiredReservation.`inConflict(Enrollment enrollment)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `boolean` | ReservationLimit.`inConflict(Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Config, Request)`) exceeds the limit.
    `boolean` | SectionLimit.`inConflict(Enrollment enrollment)` A given enrollment is conflicting, if there is a section which limit(computed by `SectionLimit.getEnrollmentWeight(Section, Request)`) exceeds the section limit.
    `boolean` | StudentConflict.`inConflict(Enrollment enrollment)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.
    `Enrollment` | LinkedSections.`inConflict(Enrollment enrollment, LinkedSections.Assignment assignment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`isConsistent(Enrollment enrollment, Enrollment other)` Check consistency using `LinkedSections.inConflict(Enrollment, Assignment)`
    `boolean` | StudentConflict.`isConsistent(Enrollment e1, Enrollment e2)` Two enrollments are consistent if they are not overlapping in time
    `boolean` | LinkedSections.ConflictHandler.`onConflict(Enrollment conflict)` Called when there is a conflict, if false the computation of other conflicts is stopped.

    Method parameters in net.sf.cpsolver.studentsct.constraint with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | ConfigLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Course, Request)`) exceeds the limit.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a reservation that the student must use, but the given enrollment does not use it.
    `void` | ReservationLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaning available space (computed by `Reservation.getReservedAvailableSpace(Request)`) is below the requests weight `Request.getWeight()`.
    `void` | SectionLimit.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting when the student is enrolled into another course / free time request that has an assignment that is overlapping with one or more assignments of the given section.

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.extension

    Methods in net.sf.cpsolver.studentsct.extension that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | DistanceConflict.Conflict.`getE1()` First enrollment
    `Enrollment` | TimeOverlapsCounter.Conflict.`getE1()` First enrollment
    `Enrollment` | DistanceConflict.Conflict.`getE2()` Second enrollment
    `Enrollment` | TimeOverlapsCounter.Conflict.`getE2()` Second enrollment

    Methods in net.sf.cpsolver.studentsct.extension with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistanceConflict.`afterAssigned(long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`afterAssigned(long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.`afterUnassigned(long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`afterUnassigned(long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`allConflicts(Enrollment enrollment)` The set of all conflicts (`DistanceConflict.Conflict` objects) of the given enrollment and other enrollments that are assignmed to the same student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`allConflicts(Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `void` | DistanceConflict.`assigned(long iteration, Enrollment value)` Called when a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`assigned(long iteration, Enrollment value)` Called when a value is assigned to a variable.
    `void` | DistanceConflict.`beforeAssigned(long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`beforeAssigned(long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`conflicts(Enrollment e1)` Return a set of distance conflicts (`DistanceConflict.Conflict` objects) of a (course) enrollment.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`conflicts(Enrollment e1, Enrollment e2)` Return a set of distance conflicts (`DistanceConflict.Conflict` objects) between given (course) enrollments.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`conflicts(Enrollment e1, Enrollment e2)` Return a set of time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects) between given (course) enrollments.
    `double` | StudentConflictStatistics.`countRemovals(long iteration, Enrollment conflictValue, Enrollment value)`
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`freeTimeConflicts(Enrollment enrollment)` Return a set of free time conflict of the given enrollment.
    `int` | DistanceConflict.`nrAllConflicts(Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assignmed to the same student.
    `int` | TimeOverlapsCounter.`nrAllConflicts(Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | DistanceConflict.`nrConflicts(Enrollment e1)` Return number of distance conflict of a (course) enrollment.
    `int` | DistanceConflict.`nrConflicts(Enrollment e1, Enrollment e2)` Return number of distance conflicts that are between two enrollments.
    `int` | TimeOverlapsCounter.`nrConflicts(Enrollment e1, Enrollment e2)` Return number of time overlapping conflicts that are between two enrollments.
    `int` | TimeOverlapsCounter.`nrFreeTimeConflicts(Enrollment enrollment)` Total sum of all free time conflict of the given enrollment.
    `void` | DistanceConflict.`unassigned(long iteration, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`unassigned(long iteration, Enrollment value)` Called when a value is unassigned from a variable.

    Method parameters in net.sf.cpsolver.studentsct.extension with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | DistanceConflict.`init(Solver<Request,Enrollment> solver)` Initialize extension
    `boolean` | TimeOverlapsCounter.`init(Solver<Request,Enrollment> solver)` Initialize extension

    Constructors in net.sf.cpsolver.studentsct.extension with parameters of type Enrollment
    Constructor and Description
    `Conflict(Student student, Enrollment e1, Section s1, Enrollment e2, Section s2)` Constructor
    `Conflict(Student student, int share, Enrollment e1, Assignment a1, Enrollment e2, Assignment a2)` Constructor

    Constructor parameters in net.sf.cpsolver.studentsct.extension with type arguments of type Enrollment
    Constructor and Description
    `DistanceConflict(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.
    `StudentConflictStatistics(Solver<Request,Enrollment> solver, DataProperties properties)`
    `TimeOverlapsCounter(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.heuristics

    Fields in net.sf.cpsolver.studentsct.heuristics with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected List<Enrollment>` | EnrollmentSelection.`iTabu`

    Methods in net.sf.cpsolver.studentsct.heuristics that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable)` Value selection

    Methods in net.sf.cpsolver.studentsct.heuristics that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Request,Enrollment>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem
    `protected Iterator<Enrollment>` | RandomizedBacktrackNeighbourSelection.`values(Request variable)` List of values of a variable.

    Methods in net.sf.cpsolver.studentsct.heuristics with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | EnrollmentSelection.`isAllowed(Enrollment value)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Enrollment value, Set<Enrollment> conflicts)` true, if it is allowed to assign given value

    Method parameters in net.sf.cpsolver.studentsct.heuristics with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSctNeighbourSelection.`changeSelection(Solution<Request,Enrollment> solution)`
    `protected RouletteWheelSelection<Request>` | RouletteWheelRequestSelection.`getRoulette(Solution<Request,Enrollment> solution)` Populate roulette wheel selection, if null or empty.
    `void` | EnrollmentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | RouletteWheelRequestSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | StudentSctNeighbourSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | TwoPhaseStudentSctNeighbourSelection.`init(Solver<Request,Enrollment> solver)` Initialization -- also remove all the dummy students from the problem
    `void` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`init(Solver<Request,Enrollment> solver)`
    `boolean` | EnrollmentSelection.`isAllowed(Enrollment value, Set<Enrollment> conflicts)` true, if it is allowed to assign given value
    `Neighbour<Request,Enrollment>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable)` Value selection
    `Request` | RouletteWheelRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)` Variable selection.
    `void` | StudentSctNeighbourSelection.`setup(Solver<Request,Enrollment> solver)`

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.heuristics.selection

    Fields in net.sf.cpsolver.studentsct.heuristics.selection declared as Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected Enrollment[]` | BranchBoundSelection.Selection.`iAssignment` Current assignment
    `protected Enrollment[]` | BranchBoundSelection.Selection.`iBestAssignment` Best assignment

    Fields in net.sf.cpsolver.studentsct.heuristics.selection with type parameters of type Enrollment
    Modifier and Type | Field and Description
    --- | ---
    `protected HashMap<CourseRequest,List<Enrollment>>` | BranchBoundSelection.Selection.`iValues` Value cache

    Methods in net.sf.cpsolver.studentsct.heuristics.selection that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Enrollment` | SwapStudentSelection.`bestSwap(Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `Enrollment` | BranchBoundSelection.Selection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment` | OnlineSelection.EpsilonSelection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment[]` | BranchBoundSelection.BranchBoundNeighbour.`getAssignment()` Assignment
    `Enrollment[]` | BranchBoundSelection.Selection.`getBestAssignment()` Best schedule
    `Enrollment` | SwapStudentSelection.Selection.`getBestEnrollment()` The best enrollment found.

    Methods in net.sf.cpsolver.studentsct.heuristics.selection that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbor.
    `Neighbour<Request,Enrollment>` | RandomUnassignmentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ResectionIncompleteStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | ResectionUnassignedStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | RndUnProblStudSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a problematic student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | StandardSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Employ the provided `VariableSelection` and `ValueSelection` and return the selected value as `SimpleNeighbour`.
    `Neighbour<Request,Enrollment>` | SwapStudentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` For each student that does not have a complete schedule, try to find a request and a student that can be moved out of an enrollment so that the selected student can be assigned to the selected request.
    `protected List<Enrollment>` | BranchBoundSelection.Selection.`values(CourseRequest request)` Returns list of available enrollments for a course request

    Methods in net.sf.cpsolver.studentsct.heuristics.selection with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `static Enrollment` | SwapStudentSelection.`bestSwap(Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `Enrollment` | BranchBoundSelection.Selection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `Enrollment` | OnlineSelection.EpsilonSelection.`firstConflict(int idx, Enrollment enrollment)` First conflicting enrollment
    `protected double` | BranchBoundSelection.Selection.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Weight of an assignment.
    `boolean` | BranchBoundSelection.Selection.`inConflict(int idx, Enrollment enrollment)` True if the enrollment is conflicting
    `boolean` | OnlineSelection.EpsilonSelection.`isAllowed(int idx, Enrollment enrollment)`

    Method parameters in net.sf.cpsolver.studentsct.heuristics.selection with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | OnlineSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | PriorityConstructionSelection.`init(Solver<Request,Enrollment> solver)` Initialize
    `void` | RandomUnassignmentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | ResectionIncompleteStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | ResectionUnassignedStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | RndUnProblStudSelection.`init(Solver<Request,Enrollment> solver)` Initialization -- `ProblemStudentsProvider.getProblemStudents()` is called
    `void` | StandardSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | SwapStudentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver, String name)` Initialize
    `protected void` | PriorityConstructionSelection.`nextCycle(Solution<Request,Enrollment> solution)` Increment cycle
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbor.
    `Neighbour<Request,Enrollment>` | RandomUnassignmentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | ResectionIncompleteStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | ResectionUnassignedStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | RndUnProblStudSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` With the given probabilty, a problematic student is randomly selected to be unassigned.
    `Neighbour<Request,Enrollment>` | StandardSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Employ the provided `VariableSelection` and `ValueSelection` and return the selected value as `SimpleNeighbour`.
    `Neighbour<Request,Enrollment>` | SwapStudentSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` For each student that does not have a complete schedule, try to find a request and a student that can be moved out of an enrollment so that the selected student can be assigned to the selected request.

    Constructors in net.sf.cpsolver.studentsct.heuristics.selection with parameters of type Enrollment
    Constructor and Description
    `BranchBoundNeighbour(Student student, double value, Enrollment[] assignment)` Constructor
    `SwapStudentNeighbour(double value, Enrollment enrollment, List<Enrollment> swaps)` Constructor

    Constructor parameters in net.sf.cpsolver.studentsct.heuristics.selection with type arguments of type Enrollment
    Constructor and Description
    `StandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection)` Constructor (variable and value selection are expected to be already initialized).
    `StandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection)` Constructor (variable and value selection are expected to be already initialized).
    `SwapStudentNeighbour(double value, Enrollment enrollment, List<Enrollment> swaps)` Constructor

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

    Methods in net.sf.cpsolver.studentsct.model that return Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | FreeTimeRequest.`createEnrollment()` Create enrollment of this request
    `Enrollment` | CourseRequest.`createEnrollment(Set<? extends Assignment> sections)` Create enrollment for the given list of sections.
    `Enrollment` | CourseRequest.`createEnrollment(Set<? extends Assignment> sections, Reservation reservation)` Create enrollment for the given list of sections.

    Methods in net.sf.cpsolver.studentsct.model that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `List<Enrollment>` | CourseRequest.`computeEnrollments()` Return all possible enrollments.
    `List<Enrollment>` | FreeTimeRequest.`computeEnrollments()` Create all possible enrollments of this request -- there is only one possible enrollment: `FreeTimeRequest.createEnrollment()`
    `abstract List<Enrollment>` | Request.`computeEnrollments()` Compute available enrollments
    `List<Enrollment>` | CourseRequest.`computeRandomEnrollments(int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollments()` Return all enrollments that are available
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollmentsSkipSameTime()` Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)
    `Set<Enrollment>` | Assignment.`getEnrollments()` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Config.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | Course.`getEnrollments()` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.`getEnrollments()` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Section.`getEnrollments()` Set of assigned enrollments
    `List<Enrollment>` | CourseRequest.`getEnrollmentsSkipSameTime()` Return all possible enrollments.
    `List<Enrollment>` | CourseRequest.`getSelectedEnrollments(boolean availableOnly)` Return all enrollments that are selected ( `CourseRequest.isSelected(Section)` is true)
    `List<Enrollment>` | Request.`values()` Domain of this variable -- list of available enrollments.

    Methods in net.sf.cpsolver.studentsct.model with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Request.`assign(long iteration, Enrollment enrollment)` Assign given enrollment to this request.
    `void` | Assignment.`assigned(Enrollment enrollment)` Enrollment with this assignmnet was assigned to a `Request`.
    `void` | Config.`assigned(Enrollment enrollment)` Called when an enrollment with this config is assigned to a request
    `void` | Course.`assigned(Enrollment enrollment)` Called when an enrollment with this course is assigned to a request
    `void` | FreeTimeRequest.`assigned(Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | Section.`assigned(Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `int` | Student.`countFreeTimeOverlaps(Enrollment enrollment)` Count number of free time slots overlapping with the given enrollment
    `boolean` | Enrollment.`isOverlapping(Enrollment enrl)` True when this enrollment is overlapping with the given enrollment
    `void` | Assignment.`unassigned(Enrollment enrollment)` Enrollment with this assignmnet was unassigned from a `Request`.
    `void` | Config.`unassigned(Enrollment enrollment)` Called when an enrollment with this config is unassigned from a request
    `void` | Course.`unassigned(Enrollment enrollment)` Called when an enrollment with this course is unassigned from a request
    `void` | FreeTimeRequest.`unassigned(Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | Section.`unassigned(Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.reservation

    Methods in net.sf.cpsolver.studentsct.reservation that return types with arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `Set<Enrollment>` | Reservation.`getEnrollments()` Enrollments assigned using this reservation

    Methods in net.sf.cpsolver.studentsct.reservation with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.`assigned(Enrollment enrollment)` Notify reservation about an unassignment
    `boolean` | Reservation.`canEnroll(Enrollment enrollment)` True if the enrollment can be done using this configuration
    `boolean` | Reservation.`isIncluded(Enrollment enrollment)` Return true if the given enrollment meets the reservation.
    `void` | Reservation.`unassigned(Enrollment enrollment)` Notify reservation about an assignment

  - ### Uses of Enrollment in net.sf.cpsolver.studentsct.weights

    Methods in net.sf.cpsolver.studentsct.weights with parameters of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `double` | OriginalStudentWeights.`getTimeOverlapConflictWeight(Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)`
    `double` | PriorityStudentWeights.`getTimeOverlapConflictWeight(Enrollment e, TimeOverlapsCounter.Conflict c)`
    `double` | StudentWeights.`getTimeOverlapConflictWeight(Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Return weight of a time overlapping conflict
    `double` | OriginalStudentWeights.`getWeight(Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeight(Enrollment enrollment)`
    `double` | StudentWeights.`getWeight(Enrollment enrollment)` Return base weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | StudentWeights.`getWeight(Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Return weight of the given enrollment

    Method parameters in net.sf.cpsolver.studentsct.weights with type arguments of type Enrollment
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | EqualStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | OriginalStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | PriorityStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`