## Uses of Class
org.cpsolver.studentsct.model.Request

- Packages that use Request
  Package | Description
  --- | ---
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.constraint | Student Sectioning: Constraints.
  org.cpsolver.studentsct.extension | Student Sectioning: Various Extensions.
  org.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  org.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.
  org.cpsolver.studentsct.check | Various checks of validity of a student sectioning solution.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.online.expectations | Student Sectioning Solver: Over-Expectation Criteria.
  org.cpsolver.studentsct.online.selection | Online Student Sectioning Solver: Selection Weights and Heuristics.
  org.cpsolver.studentsct.report | Student Sectioning: Various Reports.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.
  org.cpsolver.studentsct.weights | Student Sectioning Weightings: various students weight models

- - ### Uses of Request in org.cpsolver.studentsct

    Methods in org.cpsolver.studentsct that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | StudentSctBBTest.Message.`getRequest()` Related course / free time request
    `protected Request` | StudentSectioningXMLLoader.`loadRequest(Element requestEl, Student student, Map<Long,Offering> offeringTable, Map<Long,Course> courseTable)` Load request

    Methods in org.cpsolver.studentsct that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `static Solution<Request,Enrollment>` | Test.`batchSectioning(DataProperties cfg)` Batch sectioning test
    `static Solution<Request,Enrollment>` | Test.`combineStudents(DataProperties cfg, File lastLikeStudentData, File realStudentData)` Combine students from the provided two files
    `InheritedAssignment<Request,Enrollment>` | StudentSectioningModel.`createInheritedAssignment(Solution<Request,Enrollment> solution, int index)`
    `Solution<Request,Enrollment>` | StudentSctBBTest.`getSolution()` Compute and return the sectioning solution.
    `static Solution<Request,Enrollment>` | Test.`load(DataProperties cfg)` Load student sectioning model
    `static Solution<Request,Enrollment>` | Test.`onlineSectioning(DataProperties cfg)` Online sectioning test
    `static Solution<Request,Enrollment>` | Test.`solve(Solution<Request,Enrollment> solution, DataProperties cfg)` Solve the student sectioning problem using IFS solver

    Methods in org.cpsolver.studentsct with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.`addVariable(Request request)`
    `double` | StudentPreferencePenalties.`getMaxPenalty(Request request)` Maximal penalty of a course request
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, Request request)` Minimal and maximal available enrollment penalty of a request
    `double[]` | StudentPreferencePenalties.`getMinMaxEnrollmentPenalty(Request request)` Minimal and maximal available enrollment penalty of a request
    `double` | StudentPreferencePenalties.`getMinPenalty(Request request)` Minimal penalty of a course request
    `protected Enrollment` | StudentSectioningXMLLoader.`loadEnrollment(Element enrollmentEl, Request request)` Load enrollment
    `void` | StudentSectioningModel.`removeVariable(Request request)`
    `protected void` | StudentSectioningXMLSaver.`saveRequest(Element studentEl, Request request)` Save request

    Method parameters in org.cpsolver.studentsct with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`add(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called after an enrollment was assigned to a request.
    `double` | StudentSectioningModel.`avgUnassignPriority(Assignment<Request,Enrollment> assignment)` Average priority of unassigned requests (see `getPriority()`)
    `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` | StudentSectioningModel.`computeOnlineSectioningInfos(Assignment<Request,Enrollment> assignment)` Compute online student sectioning infos for all sections (see `Section.getSpaceExpected()` and `Section.getSpaceHeld()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `InheritedAssignment<Request,Enrollment>` | StudentSectioningModel.`createInheritedAssignment(Solution<Request,Enrollment> solution, int index)`
    `static Document` | StudentRequestXml.`exportModel(Assignment<Request,Enrollment> assignment, StudentSectioningModel model)`
    `Map<String,String>` | StudentSectioningModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)` Model extended info.
    `Map<String,String>` | StudentSectioningModel.`getInfo(Assignment<Request,Enrollment> assignment)` Model info
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `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)`
    `void` | Test.TestSolutionListener.`getInfo(Solution<Request,Enrollment> solution, Map<String,String> info, Collection<Request> variables)`
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimal and maximal available enrollment penalty of a request
    `static double[]` | Test.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, CourseRequest request)` Minimum and maximum available enrollment penalty, i.e., `Enrollment.getPenalty()` of all available enrollments
    `double[]` | StudentPreferencePenalties.`getMinMaxAvailableEnrollmentPenalty(Assignment<Request,Enrollment> assignment, Request request)` Minimal and maximal available enrollment penalty of a request
    `int` | StudentSectioningModel.`getNrAssignedLastLikeRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from projected (`Student.isDummy()` equals true) students that are assigned.
    `int` | StudentSectioningModel.`getNrAssignedRealRequests(Assignment<Request,Enrollment> assignment, boolean precise)` Number of requests from real (`Student.isDummy()` equals false) students that are assigned.
    `int` | StudentSectioningModel.`getNrCompleteLastLikeStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of last like (`Student.isDummy()` equals true) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `int` | StudentSectioningModel.`getNrCompleteRealStudents(Assignment<Request,Enrollment> assignment, boolean precise)` Number of real (`Student.isDummy()` equals false) students with a complete schedule (`Student.isComplete(Assignment)` equals true).
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment)` Overall solution value
    `double` | StudentSectioningModel.`getTotalValue(Assignment<Request,Enrollment> assignment, boolean precise)` Overall solution value
    `double` | StudentSectioningModel.`getUnassignedRequestWeight(Assignment<Request,Enrollment> assignment)` Sum of weights of all requests that are not assigned (see `getWeight()`).
    `StudentSectioningModel.StudentSectioningModelContext` | StudentSectioningModel.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentSectioningModel.StudentSectioningModelContext parentContext)`
    `static void` | Test.`printInfo(Solution<Request,Enrollment> solution, boolean computeTables, boolean computeSectInfos, boolean runChecks)` Print some information about the solution
    `void` | StudentSectioningModel.`recomputeTotalValue(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, StudentQuality.Conflict c)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`remove(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.Conflict c)`
    `void` | StudentSectioningModel.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.StudentSectioningModelContext.`requestWeightsChanged(Assignment<Request,Enrollment> assignment)` Recompute cached request weights
    `void` | StudentSectioningModel.`restoreBest(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.`saveBest(Assignment<Request,Enrollment> assignment)`
    `static void` | Test.`saveInfoToXML(Solution<Request,Enrollment> solution, Map<String,String> extra, File file)` Save solution info as XML
    `void` | Test.TestSolutionListener.`solutionUpdated(Solution<Request,Enrollment> solution)`
    `static Solution<Request,Enrollment>` | Test.`solve(Solution<Request,Enrollment> solution, DataProperties cfg)` Solve the student sectioning problem using IFS solver
    `String` | StudentSectioningModel.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | StudentSectioningModel.StudentSectioningModelContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called before an enrollment was unassigned from a request.

    Constructors in org.cpsolver.studentsct with parameters of type Request
    Constructor and Description
    `Message(int level, Request request, String message)` Constructor

    Constructor parameters in org.cpsolver.studentsct with type arguments of type Request
    Constructor and Description
    `StudentSectioningLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor
    `StudentSectioningModelContext(Assignment<Request,Enrollment> assignment)`
    `StudentSectioningSaver(Solver<Request,Enrollment> solver)` Constructor
    `StudentSectioningXMLLoader(StudentSectioningModel model, Assignment<Request,Enrollment> assignment)` Constructor
    `StudentSectioningXMLSaver(Solver<Request,Enrollment> solver)` Constructor

  - ### Uses of Request in org.cpsolver.studentsct.constraint

    Fields in org.cpsolver.studentsct.constraint with type parameters of type Request
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | LinkedSections.CurrentAssignment.`iAssignment`

    Methods in org.cpsolver.studentsct.constraint with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | LinkedSections.EnrollmentAssignment.`getEnrollment(Request request, int index)` Return enrollment of the given request
    `Enrollment` | LinkedSections.CurrentAssignment.`getEnrollment(Request request, int index)` Return `Variable.getAssignment(Assignment)`
    `static double` | ConfigLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Config config, Request request)` Enrollment weight of a config if the given request is assigned.
    `static double` | CourseLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Course course, Request request)` Enrollment weight of a course if the given request is assigned.
    `static double` | SectionLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Section section, Request request)` Enrollment weight of a section if the given request is assigned.
    `static double` | ReservationLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Config config, Request request, boolean hasReservation)` Remaining unreserved space in a config if the given request is assigned.
    `static double` | SectionLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Section section, Request request)` Remaining unreserved space in a section if the given request is assigned.

    Method parameters in org.cpsolver.studentsct.constraint with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | StudentConflict.`canAssign(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` True if the given enrollment can be assigned to the student.
    `void` | LinkedSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, LinkedSections.ConflictHandler conflicts)` Compute conflicting enrollments.
    `void` | CancelledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ConfigLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `void` | CourseLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `void` | DisabledSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `void` | FixInitialAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is MPP (method `isMPP()` returns true) and equal to the initial assignment (returned by `Variable.getInitialAssignment()`), the given enrollment is put into the conflicts.
    `void` | FixedAssignments.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` If there is a conflict that is fixed (method `CourseRequest.isFixed()` returns true) and equal to the initial assignment (returned by `CourseRequest.getFixedValue()`), the given enrollment is put into the conflicts.
    `void` | LinkedSections.LinkedSectionsConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` Compute conflicts using `LinkedSections.computeConflicts(Assignment, Enrollment, ConflictHandler)`
    `void` | RequiredReservation.`computeConflicts(Assignment<Request,Enrollment> assignment, 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` | RequiredRestrictions.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is restriction that is not met.
    `void` | RequiredSections.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section that is cancelled.
    `void` | ReservationLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the reservation's remaining available space (computed by `Reservation.getReservedAvailableSpace(Assignment, Request)`) is below the requests weight `getWeight()`.
    `void` | SectionLimit.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if there is a section which limit (computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `void` | StudentConflict.`computeConflicts(Assignment<Request,Enrollment> assignment, 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.
    `void` | StudentNotAvailable.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<Enrollment> conflicts)` A given enrollment is conflicting, if the student is not available.
    `static double` | ConfigLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Config config, Request request)` Enrollment weight of a config if the given request is assigned.
    `static double` | CourseLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Course course, Request request)` Enrollment weight of a course if the given request is assigned.
    `static double` | SectionLimit.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Section section, Request request)` Enrollment weight of a section if the given request is assigned.
    `static double` | ReservationLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Config config, Request request, boolean hasReservation)` Remaining unreserved space in a config if the given request is assigned.
    `static double` | SectionLimit.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Section section, Request request)` Remaining unreserved space in a section if the given request is assigned.
    `boolean` | CancelledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ConfigLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | CourseLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the course's enrollment (computed by `CourseLimit.getEnrollmentWeight(Assignment, Course, Request)`) exceeds the limit.
    `boolean` | DisabledSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is disabled and there is not a matching reservation that would allow for that.
    `Enrollment` | LinkedSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Check for conflicts.
    `boolean` | LinkedSections.LinkedSectionsConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)` Check for conflict using `LinkedSections.inConflict(Assignment, Enrollment)`
    `boolean` | RequiredReservation.`inConflict(Assignment<Request,Enrollment> assignment, 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` | RequiredRestrictions.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is restriction that is not met.
    `boolean` | RequiredSections.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section that is cancelled.
    `boolean` | ReservationLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the config's enrollment (computed by `ConfigLimit.getEnrollmentWeight(Assignment, Config, Request)`) exceeds the limit.
    `boolean` | SectionLimit.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if there is a section which limit(computed by `SectionLimit.getEnrollmentWeight(Assignment, Section, Request)`) exceeds the section limit.
    `boolean` | StudentConflict.`inConflict(Assignment<Request,Enrollment> assignment, 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.
    `boolean` | StudentNotAvailable.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` A given enrollment is conflicting, if the student is not available.

    Constructor parameters in org.cpsolver.studentsct.constraint with type arguments of type Request
    Constructor and Description
    `CurrentAssignment(Assignment<Request,Enrollment> assignment)`
    `LinkedSectionsConstraint(Student student, Collection<Request> requests)` Constructor

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

    Methods in org.cpsolver.studentsct.extension that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | DistanceConflict.Conflict.`getR1()` First request
    `Request` | StudentQuality.Conflict.`getR1()` First request
    `Request` | TimeOverlapsCounter.Conflict.`getR1()` First request
    `Request` | DistanceConflict.Conflict.`getR2()` Second request
    `Request` | StudentQuality.Conflict.`getR2()` Second request
    `Request` | TimeOverlapsCounter.Conflict.`getR2()` Second request

    Methods in org.cpsolver.studentsct.extension with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | StudentQuality.Type.`isApplicable(StudentQuality.Context cx, Student student, Request r1, Request r2)`
    `boolean` | StudentQuality.Quality.`isApplicable(StudentQuality.Context cx, Student student, Request r1, Request r2)` Check if the metric is applicable for the given student, between the given two requests
    `boolean` | StudentQuality.`isApplicable(StudentQuality.Type type, Student student, Request r1, Request r2)` Check whether the given type is applicable for the student and the two requests.

    Method parameters in org.cpsolver.studentsct.extension with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistanceConflict.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | StudentQuality.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is assigned to a variable.
    `void` | DistanceConflict.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | DistanceConflict.DistanceConflictContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | StudentQuality.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called after a value is unassigned from a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`allConflicts(Assignment<Request,Enrollment> assignment, 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<StudentQuality.Conflict>` | StudentQuality.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` All conflicts of the any type for the enrollment (including conflicts with other enrollments of the student)
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` The set of all conflicts (`TimeOverlapsCounter.Conflict` objects) of the given enrollment and other enrollments that are assigned to the same student.
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`allConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `int` | StudentQuality.StudentQualityContext.`allPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | DistanceConflict.DistanceConflictContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | StudentQuality.StudentQualityContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is assigned to a variable.
    `void` | DistanceConflict.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | DistanceConflict.DistanceConflictContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | StudentQuality.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)`
    `void` | StudentQuality.StudentQualityContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)` Called before a value is assigned to a variable.
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.TimeOverlapsCounterContext.`computeAllConflicts(Assignment<Request,Enrollment> assignment)` Compute a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.StudentQualityContext.`computeAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `int` | DistanceConflict.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all distance conflicts.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`countTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Compute the actual number of all time overlapping conflicts.
    `int` | StudentQuality.StudentQualityContext.`countTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<DistanceConflict.Conflict>` | DistanceConflict.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all distance conflicts (`DistanceConflict.Conflict` objects).
    `Set<TimeOverlapsCounter.Conflict>` | TimeOverlapsCounter.`getAllConflicts(Assignment<Request,Enrollment> assignment)` Return a set of all time overlapping conflicts (`TimeOverlapsCounter.Conflict` objects).
    `Set<StudentQuality.Conflict>` | StudentQuality.`getAllConflicts(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` All conflicts of the given type for the given assignment
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentQuality.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `int` | DistanceConflict.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts
    `int` | TimeOverlapsCounter.`getTotalNrConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all time overlapping conflicts
    `int` | DistanceConflict.`getTotalNrShortConflicts(Assignment<Request,Enrollment> assignment)` Actual number of all distance conflicts of students that need short distances
    `int` | StudentQuality.`getTotalPenalty(Assignment<Request,Enrollment> assignment, StudentQuality.Type... types)` Total penalisation of given types
    `int` | StudentQuality.`getTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Total penalisation of given type
    `void` | DistanceConflict.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | DistanceConflict.DistanceConflictContext.`checkAllConflicts(Assignment<Request,Enrollment> assignment)` Checks the counter counting all conflicts
    `void` | TimeOverlapsCounter.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)`
    `void` | StudentQuality.`checkTotalPenalty(Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment
    `void` | StudentQuality.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)` Re-check total penalization for the given assignment and conflict type
    `void` | StudentQuality.StudentQualityContext.`checkTotalPenalty(StudentQuality.Type type, Assignment<Request,Enrollment> assignment)`
    `DistanceConflict.DistanceConflictContext` | DistanceConflict.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, DistanceConflict.DistanceConflictContext parentContext)`
    `StudentQuality.StudentQualityContext` | StudentQuality.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentQuality.StudentQualityContext parentContext)`
    `TimeOverlapsCounter.TimeOverlapsCounterContext` | TimeOverlapsCounter.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.TimeOverlapsCounterContext parentContext)`
    `int` | DistanceConflict.DistanceConflictContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `int` | TimeOverlapsCounter.TimeOverlapsCounterContext.`nrAllConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Total sum of all conflict of the given enrollment and other enrollments that are assigned to the same student.
    `String` | StudentQuality.`toString(Assignment<Request,Enrollment> assignment)`
    `void` | DistanceConflict.DistanceConflictContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | StudentQuality.StudentQualityContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.
    `void` | TimeOverlapsCounter.TimeOverlapsCounterContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment value)` Called when a value is unassigned from a variable.

    Constructor parameters in org.cpsolver.studentsct.extension with type arguments of type Request
    Constructor and Description
    `DistanceConflict(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.
    `DistanceConflictContext(Assignment<Request,Enrollment> assignment)`
    `StudentConflictStatistics(Solver<Request,Enrollment> solver, DataProperties properties)`
    `StudentQuality(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor
    `StudentQualityContext(Assignment<Request,Enrollment> assignment)`
    `TimeOverlapsCounter(Solver<Request,Enrollment> solver, DataProperties properties)` Constructor.
    `TimeOverlapsCounterContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Request in org.cpsolver.studentsct.heuristics

    Methods in org.cpsolver.studentsct.heuristics that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | RouletteWheelRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)` Variable selection.

    Methods in org.cpsolver.studentsct.heuristics that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected RouletteWheelSelection<Request>` | RouletteWheelRequestSelection.`getRoulette(Solution<Request,Enrollment> solution)` Populate roulette wheel selection, if null or empty.
    `Neighbour<Request,Enrollment>` | RestoreBestSolution.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem

    Methods in org.cpsolver.studentsct.heuristics with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Enrollment` | EnrollmentSelection.`selectValue(Solution<Request,Enrollment> solution, Request selectedVariable)` Value selection
    `protected Iterator<Enrollment>` | RandomizedBacktrackNeighbourSelection.`values(BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext context, Request variable)` List of values of a variable.
    `boolean` | StudentSctNeighbourSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentSctNeighbourSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

    Method parameters in org.cpsolver.studentsct.heuristics with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | RandomizedBacktrackNeighbourSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `protected RouletteWheelSelection<Request>` | RouletteWheelRequestSelection.`getRoulette(Solution<Request,Enrollment> solution)` Populate roulette wheel selection, if null or empty.
    `protected boolean` | RandomizedBacktrackNeighbourSelection.`checkBound(List<Request> variables2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)`
    `void` | EnrollmentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | RestoreBestSolution.`init(Solver<Request,Enrollment> solver)`
    `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(Assignment<Request,Enrollment> assignment, Enrollment value)` true, if it is allowed to assign given value
    `boolean` | EnrollmentSelection.`isAllowed(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)` true, if it is allowed to assign given value
    `void` | StudentSctNeighbourSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentSctNeighbourSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentSctNeighbourSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `Neighbour<Request,Enrollment>` | RestoreBestSolution.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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)`
    `boolean` | StudentSctNeighbourSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentSctNeighbourSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

  - ### Uses of Request in org.cpsolver.studentsct.heuristics.selection

    Fields in org.cpsolver.studentsct.heuristics.selection with type parameters of type Request
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | BranchBoundSelection.Selection.`iCurrentAssignment` Current assignment
    `protected LinkedList<Request>` | BacktrackSelection.`iRequests`
    `protected LinkedList<Request>` | StudentEnrollmentSwapSelection.`iRequests`
    `protected Queue<Request>` | UnassignedCriticalCourseRequestSelection.`iRequests`
    `protected Queue<Request>` | UnassignedRequestSelection.`iRequests`
    `protected ValueSelection<Request,Enrollment>` | StandardSelection.`iValueSelection`
    `protected VariableSelection<Request,Enrollment>` | StandardSelection.`iVariableSelection`

    Methods in org.cpsolver.studentsct.heuristics.selection that return Request
    Modifier and Type | Method and Description
    --- | ---
    `protected Request` | BacktrackSelection.`nextRequest()`
    `protected Request` | StudentEnrollmentSwapSelection.`nextRequest()`
    `protected Request` | UnassignedCriticalCourseRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `protected Request` | UnassignedRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `Request` | UnassignedCriticalCourseRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`
    `Request` | UnassignedRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`

    Methods in org.cpsolver.studentsct.heuristics.selection that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Map<Request,Enrollment>` | BranchBoundSelection.BranchBoundNeighbour.`assignments()`
    `Map<Request,Enrollment>` | PriorityConstructionSelection.ConstructionNeighbour.`assignments()`
    `Map<Request,Enrollment>` | RandomUnassignmentSelection.UnassignStudentNeighbour.`assignments()`
    `Map<Request,Enrollment>` | SwapStudentSelection.SwapStudentNeighbour.`assignments()`
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `Neighbour<Request,Enrollment>` | AssignInitialSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | CriticalCoursesBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | MinCreditBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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>` | ShuffleStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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>` | StudentEnrollmentSwapSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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 Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`selectNeighbour(Solution<Request,Enrollment> solution, org.cpsolver.studentsct.heuristics.selection.ShuffleStudentsSelection.Shuffle shuffle)`

    Methods in org.cpsolver.studentsct.heuristics.selection with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | BacktrackSelection.`addRequest(Request request)`
    `void` | StudentEnrollmentSwapSelection.`addRequest(Request request)`
    `boolean` | BranchBoundSelection.Selection.`canAssign(Request request, int idx)` True if the given request can be assigned
    `protected boolean` | BranchBoundSelection.Selection.`canLeaveUnassigned(Request request)` Returns true if the given request can be left unassigned
    `int` | BacktrackSelection.RequestComparator.`compare(Request r1, Request r2)`
    `protected double` | BranchBoundSelection.Selection.`getBound(Request r)` Return bound of a request
    `protected Iterator<Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`values(BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext context, Request variable)` List of values of the given variable that will be considered (filtered using `ShuffleStudentsSelection.Shuffle.matchFilter(Enrollment)` if applicable).
    `boolean` | BacktrackSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BranchBoundSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentEnrollmentSwapSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | SwapStudentSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BacktrackSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | BranchBoundSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | StudentEnrollmentSwapSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | SwapStudentSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

    Method parameters in org.cpsolver.studentsct.heuristics.selection with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | BranchBoundSelection.BranchBoundNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Assign the schedule
    `void` | PriorityConstructionSelection.ConstructionNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Only assign given number of assignments (from the first priority down).
    `void` | RandomUnassignmentSelection.UnassignStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` All requests of the given student are unassigned
    `void` | SwapStudentSelection.SwapStudentNeighbour.`assign(Assignment<Request,Enrollment> assignment, long iteration)` Perform the move.
    `static Enrollment` | SwapStudentSelection.`bestSwap(Assignment<Request,Enrollment> assignment, Enrollment conflict, Enrollment enrl, Set<Student> problematicStudents)` Identify the best swap for the given student
    `Neighbour<Request,Enrollment>` | PriorityConstructionSelection.`branchAndBound(Solution<Request,Enrollment> solution)` Find best solution for the next student using `BranchBoundSelection`.
    `boolean` | CriticalStandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)`
    `boolean` | StandardSelection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `boolean` | SwapStudentSelection.Selection.`canUnassign(Enrollment enrollment, Enrollment conflict, Assignment<Request,Enrollment> assignment)` Check if the given conflicting enrollment can be unassigned
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info)`
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | BacktrackSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | BranchBoundSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | StudentEnrollmentSwapSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `void` | SwapStudentSelection.`getInfo(Assignment<Request,Enrollment> assignment, Map<String,String> info, Collection<Request> variables)`
    `BranchBoundSelection.Selection` | BranchBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `BranchBoundSelection.Selection` | CriticalCoursesBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | MinCreditBranchAndBoundSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.Selection` | OnlineSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Branch & bound selection for a student
    `SwapStudentSelection.Selection` | SwapStudentSelection.`getSelection(Assignment<Request,Enrollment> assignment, Student student)` Selection subclass for a student
    `void` | AssignInitialSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | CriticalCoursesBranchAndBoundSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | CriticalStandardSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | MinCreditBranchAndBoundSelection.`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` | ShuffleStudentsSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | StandardSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | StudentEnrollmentSwapSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | SwapStudentSelection.`init(Solver<Request,Enrollment> solver)` Initialization
    `void` | UnassignedCriticalCourseRequestSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | UnassignedRequestSelection.`init(Solver<Request,Enrollment> solver)`
    `void` | BacktrackSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | BranchBoundSelection.`init(Solver<Request,Enrollment> solver, String name)` Initialize
    `void` | CriticalBacktrackSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `protected void` | StandardSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | StudentEnrollmentSwapSelection.`init(Solver<Request,Enrollment> solver, String name)`
    `void` | BacktrackSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BacktrackSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BranchBoundSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | BranchBoundSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentEnrollmentSwapSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | StudentEnrollmentSwapSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | SwapStudentSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `void` | SwapStudentSelection.`neighbourFailed(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BacktrackSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BacktrackSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BranchBoundSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | BranchBoundSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentEnrollmentSwapSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | StudentEnrollmentSwapSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | SwapStudentSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `boolean` | SwapStudentSelection.`neighbourSelected(Assignment<Request,Enrollment> assignment, long iteration, Neighbour<Request,Enrollment> neighbour)`
    `protected void` | PriorityConstructionSelection.`nextCycle(Solution<Request,Enrollment> solution)` Increment cycle
    `protected Request` | UnassignedCriticalCourseRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `protected Request` | UnassignedRequestSelection.`nextRequest(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | AssignInitialSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BacktrackSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | BranchBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)` Select neighbour.
    `Neighbour<Request,Enrollment>` | CriticalCoursesBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `Neighbour<Request,Enrollment>` | MinCreditBranchAndBoundSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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>` | ShuffleStudentsSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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>` | StudentEnrollmentSwapSelection.`selectNeighbour(Solution<Request,Enrollment> solution)`
    `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 Neighbour<Request,Enrollment>` | ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.`selectNeighbour(Solution<Request,Enrollment> solution, org.cpsolver.studentsct.heuristics.selection.ShuffleStudentsSelection.Shuffle shuffle)`
    `Request` | UnassignedCriticalCourseRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`
    `Request` | UnassignedRequestSelection.`selectVariable(Solution<Request,Enrollment> solution)`
    `void` | OnlineSelection.`updateSpace(Assignment<Request,Enrollment> assignment, Student student)` Update online sectioning info after the given student is sectioned
    `double` | BranchBoundSelection.BranchBoundNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | PriorityConstructionSelection.ConstructionNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | RandomUnassignmentSelection.UnassignStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `double` | SwapStudentSelection.SwapStudentNeighbour.`value(Assignment<Request,Enrollment> assignment)`
    `boolean` | BacktrackSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BranchBoundSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | StudentEnrollmentSwapSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | SwapStudentSelection.`valueSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable, Enrollment value)`
    `boolean` | BacktrackSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | BranchBoundSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | StudentEnrollmentSwapSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`
    `boolean` | SwapStudentSelection.`variableSelected(Assignment<Request,Enrollment> assignment, long iteration, Request variable)`

    Constructor parameters in org.cpsolver.studentsct.heuristics.selection with type arguments of type Request
    Constructor and Description
    `CriticalCoursesSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `CriticalStandardSelection(DataProperties properties, ValueSelection<Request,Enrollment> valueSelection)`
    `CriticalStandardSelection(DataProperties properties, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `CriticalStandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `CriticalStandardSelection(DataProperties properties, VariableSelection<Request,Enrollment> variableSelection, ValueSelection<Request,Enrollment> valueSelection, Request.RequestPriority priority)`
    `EpsilonSelection(Student student, Assignment<Request,Enrollment> assignment, BranchBoundSelection.Selection selection)` Constructor
    `InitialSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `MinCreditSelection(Student student, Assignment<Request,Enrollment> assignment)`
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)` Constructor
    `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).
    `UnassignStudentNeighbour(Student student, Assignment<Request,Enrollment> assignment, Request.RequestPriority priority)` Constructor

  - ### Uses of Request in org.cpsolver.studentsct.check

    Methods in org.cpsolver.studentsct.check with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | InevitableStudentConflicts.StudentCheck.`canAssign(Request request, int idx)` True if the given request can be assigned

    Method parameters in org.cpsolver.studentsct.check with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | InevitableStudentConflicts.StudentCheck.`backTrack(Assignment<Request,Enrollment> assignment, int idx)` branch & bound search
    `boolean` | InevitableStudentConflicts.`check(Assignment<Request,Enrollment> assignment)` Check model for inevitable student conflicts
    `void` | InevitableStudentConflicts.StudentCheck.`check(Assignment<Request,Enrollment> assignment)` Execute branch & bound, return the best found schedule for the selected student.
    `boolean` | OverlapCheck.`check(Assignment<Request,Enrollment> a)` Check for overlapping sections that are attended by the same student
    `boolean` | SectionLimitCheck.`check(Assignment<Request,Enrollment> assignment)` Check for sections that have more students enrolled than it is allowed, i.e., the sum of requests weights is above the section limit

    Constructor parameters in org.cpsolver.studentsct.check with type arguments of type Request
    Constructor and Description
    `StudentCheck(List<Request> requests)` Constructor

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

    Subclasses of Request in org.cpsolver.studentsct.model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `CourseRequest` Representation of a request of a student for one or more course.
    `class` | `FreeTimeRequest` Representation of a request of a student for free time.

    Methods in org.cpsolver.studentsct.model that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | Enrollment.`getRequest()` Request

    Methods in org.cpsolver.studentsct.model that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Model<Request,Enrollment>` | Config.`getModel()`
    `Model<Request,Enrollment>` | Course.`getModel()`
    `Model<Request,Enrollment>` | Offering.`getModel()`
    `Model<Request,Enrollment>` | RequestGroup.`getModel()`
    `Model<Request,Enrollment>` | Section.`getModel()`
    `List<Request>` | Student.`getRequests()` Student's course and free time requests

    Methods in org.cpsolver.studentsct.model with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | Student.`canAssign(Assignment<Request,Enrollment> assignment, Request request)` True if the given request can be assigned to the student.
    `int` | Request.`compareTo(Request r)` Compare to requests, non-alternative requests go first, otherwise use priority (a request with lower priority goes first)
    `double` | Config.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.ConfigContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.SectionContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Config.ConfigContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Course.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | Course.CourseContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | RequestGroup.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | Section.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Section.SectionContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | RequestGroup.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | Config.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the configuration that is not reserved by any config reservation
    `double` | Offering.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the offering that is not reserved by any reservation
    `double` | Section.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the section that is not reserved by any section reservation
    `boolean` | Request.RequestPriority.`isCritical(Request r)`
    `boolean` | Request.RequestPriority.`isHigher(Request r)`
    `boolean` | Request.RequestPriority.`isSame(Request r)`

    Method parameters in org.cpsolver.studentsct.model with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | Config.ConfigContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is assigned to a request
    `void` | Course.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is assigned to a request
    `void` | Course.CourseContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | RequestGroup.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | RequestGroup.RequestGroupContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is assigned to a request of this request group
    `void` | SctAssignment.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was assigned to a `Request`.
    `void` | Section.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Section.SectionContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is assigned to a request
    `void` | Unavailability.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `boolean` | Student.`canAssign(Assignment<Request,Enrollment> assignment, Request request)` True if the given request can be assigned to the student.
    `int` | Section.`compareTo(Assignment<Request,Enrollment> assignment, Section s)` Compare two sections, prefer sections with lower penalty and more open space
    `List<Enrollment>` | CourseRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Return all possible enrollments.
    `List<Enrollment>` | FreeTimeRequest.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Create all possible enrollments of this request -- there is only one possible enrollment: `FreeTimeRequest.createEnrollment()`
    `abstract List<Enrollment>` | Request.`computeEnrollments(Assignment<Request,Enrollment> assignment)` Compute available enrollments
    `List<Enrollment>` | CourseRequest.`computeRandomEnrollments(Assignment<Request,Enrollment> assignment, int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `Config.ConfigContext` | Config.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Course.CourseContext` | Course.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | FreeTimeRequest.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Request.RequestContext` | Request.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Section.SectionContext` | Section.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment` | CourseRequest.`createEnrollment(Assignment<Request,Enrollment> assignment, Set<? extends SctAssignment> sections)` Create enrollment for the given list of sections.
    `Set<DistanceConflict.Conflict>` | Enrollment.`distanceConflicts(Assignment<Request,Enrollment> assignment)` Distance conflicts, in which this enrollment is involved.
    `float` | Student.`getAssignedCredit(Assignment<Request,Enrollment> assignment)` Return the number of assigned credits of the student
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollments(Assignment<Request,Enrollment> assignment)` Return all enrollments that are available
    `List<Enrollment>` | CourseRequest.`getAvaiableEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` 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)
    `double` | RequestGroup.`getAverageSpread(Assignment<Request,Enrollment> assignment)` Return average section spread of this group.
    `Set<Enrollment>` | Config.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Course.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | FreeTimeRequest.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | SctAssignment.`getEnrollments(Assignment<Request,Enrollment> assignment)` Return the list of assigned enrollments that contains this assignment.
    `Set<Enrollment>` | Section.`getEnrollments(Assignment<Request,Enrollment> assignment)` Set of assigned enrollments
    `Set<Enrollment>` | Unavailability.`getEnrollments(Assignment<Request,Enrollment> assignment)` Not used, always null
    `double` | RequestGroup.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment similar to other enrollments of this group.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentSpread(Assignment<Request,Enrollment> assignment, Enrollment enrollment, double bestRatio, double fillRatio)` Return how much is the given enrollment (which is not part of the request group) creating an issue for this request group
    `List<Enrollment>` | CourseRequest.`getEnrollmentsSkipSameTime(Assignment<Request,Enrollment> assignment)` Return all possible enrollments, but pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used).
    `double` | Config.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.ConfigContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Section.SectionContext.`getEnrollmentTotalWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight including over the limit enrollments.
    `double` | Config.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Config.ConfigContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Course.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | Course.CourseContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | RequestGroup.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that is of this request group, excluding the given one.
    `double` | Section.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Section.SectionContext.`getEnrollmentWeight(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Config.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the config
    `double` | Course.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the course
    `double` | Section.`getMaxEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Maximal weight of a single enrollment in the section
    `double` | Config.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the config
    `double` | Course.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the course
    `double` | Section.`getMinEnrollmentWeight(Assignment<Request,Enrollment> assignment)` Minimal weight of a single enrollment in the section
    `double` | Section.`getOnlineSectioningPenalty(Assignment<Request,Enrollment> assignment)` Online sectioning penalty.
    `double` | RequestGroup.`getSectionSpread(Assignment<Request,Enrollment> assignment, Section section)` Return section spread of this group.
    `double` | RequestGroup.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `double` | RequestGroup.RequestGroupContext.`getSectionWeight(Assignment<Request,Enrollment> assignment, Section section, Request excludeRequest)` Section weight -- weight of all requests which have an enrollment that is of this request group and that includes the given section, excluding the given one.
    `List<Enrollment>` | CourseRequest.`getSelectedEnrollments(Assignment<Request,Enrollment> assignment, boolean availableOnly)` Return all enrollments of the first course that are selected ( `CourseRequest.isSelected(Section)` is true)
    `TreeSet<Reservation>` | CourseRequest.`getSortedReservations(Assignment<Request,Enrollment> assignment, Course course)` Get reservations for this course requests ordered using `Reservation.compareTo(Assignment, Reservation)`
    `double` | Config.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the configuration that is not reserved by any config reservation
    `double` | Offering.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the offering that is not reserved by any reservation
    `double` | Section.`getUnreservedSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available space in the section that is not reserved by any section reservation
    `void` | Enrollment.`guessReservation(Assignment<Request,Enrollment> assignment, boolean onlyAvailable)` Guess the reservation based on the enrollment
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment)` Deprecated.
    `boolean` | Student.`hasUnassignedCritical(Assignment<Request,Enrollment> assignment, Request.RequestPriority rp)` Has student any unassigned critical course requests?
    `Config.ConfigContext` | Config.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Config.ConfigContext parentContext)`
    `Course.CourseContext` | Course.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Course.CourseContext parentContext)`
    `RequestGroup.RequestGroupContext` | RequestGroup.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, RequestGroup.RequestGroupContext parentContext)`
    `Section.SectionContext` | Section.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Section.SectionContext parentContext)`
    `boolean` | CourseRequest.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Request.`isAssigned(Assignment<Request,Enrollment> assignment)` Return true if request is assigned.
    `boolean` | Student.`isComplete(Assignment<Request,Enrollment> assignment)` True if the student has assigned the desired number of requests (i.e., number of non-alternative course requests).
    `int` | Student.`nrAssignedRequests(Assignment<Request,Enrollment> assignment)` Number of assigned COURSE requests
    `void` | Offering.`setModel(Model<Request,Enrollment> model)`
    `Set<StudentQuality.Conflict>` | Enrollment.`studentQualityConflicts(Assignment<Request,Enrollment> assignment)`
    `Set<TimeOverlapsCounter.Conflict>` | Enrollment.`timeOverlappingConflicts(Assignment<Request,Enrollment> assignment)` Time overlapping conflicts, in which this enrollment is involved.
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment)` Enrollment value
    `double` | Enrollment.`toDouble(Assignment<Request,Enrollment> assignment, boolean precise)` Enrollment value
    `String` | Enrollment.`toString(Assignment<Request,Enrollment> a)`
    `void` | Config.ConfigContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this config is unassigned from a request
    `void` | Course.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this course is unassigned from a request
    `void` | Course.CourseContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `void` | FreeTimeRequest.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | FreeTimeRequest.FreeTimeRequestContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | RequestGroup.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | RequestGroup.RequestGroupContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment is unassigned from a request of this request group
    `void` | SctAssignment.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Enrollment with this assignment was unassigned from a `Request`.
    `void` | Section.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Section.SectionContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Called when an enrollment with this section is unassigned from a request
    `void` | Unavailability.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `List<Enrollment>` | Request.`values(Assignment<Request,Enrollment> assignment)` Domain of this variable -- list of available enrollments.
    `void` | CourseRequest.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Assign given enrollment to this request.
    `void` | CourseRequest.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)`
    `void` | Request.`variableUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment enrollment)` Unassign currently assigned enrollment from this request.

    Constructors in org.cpsolver.studentsct.model with parameters of type Request
    Constructor and Description
    `Enrollment(Request request, int priority, boolean noReservationPenalty, Course course, Config config, Set<? extends SctAssignment> assignments, Reservation reservation)` Constructor
    `Enrollment(Request request, int priority, Config config, Set<? extends SctAssignment> assignments, Assignment<Request,Enrollment> assignment)` Constructor
    `Enrollment(Request request, int priority, Course course, Config config, Set<? extends SctAssignment> assignments, Reservation reservation)` Constructor

    Constructor parameters in org.cpsolver.studentsct.model with type arguments of type Request
    Constructor and Description
    `ConfigContext(Assignment<Request,Enrollment> assignment)`
    `CourseContext(Assignment<Request,Enrollment> assignment)`
    `Enrollment(Request request, int priority, Config config, Set<? extends SctAssignment> assignments, Assignment<Request,Enrollment> assignment)` Constructor
    `FreeTimeRequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestContext(Assignment<Request,Enrollment> assignment)`
    `RequestGroupContext(Assignment<Request,Enrollment> assignment)`
    `SectionContext(Assignment<Request,Enrollment> assignment)`

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

    Methods in org.cpsolver.studentsct.online that return Request
    Modifier and Type | Method and Description
    --- | ---
    `protected Request` | Test.`addRequest(Student student, Student original, Request request, Map<Long,Section> classTable, StudentSectioningModel model)`

    Methods in org.cpsolver.studentsct.online that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Assignment<Request,Enrollment>` | Test.`assignment()`

    Methods in org.cpsolver.studentsct.online with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected Request` | Test.`addRequest(Student student, Student original, Request request, Map<Long,Section> classTable, StudentSectioningModel model)`
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized (computed using `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`)

    Method parameters in org.cpsolver.studentsct.online with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | MaxOverExpectedConstraint.`computeConflicts(Assignment<Request,Enrollment> assignment, Enrollment value, Set<Enrollment> conflicts)`
    `Map<String,String>` | Test.TestModel.`getExtendedInfo(Assignment<Request,Enrollment> assignment)`
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | OnlineSectioningModel.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized (computed using `OverExpectedCriterion.getOverExpected(Assignment, Section, Request)`)
    `double` | Test.`getPercDisbalancedSections(Assignment<Request,Enrollment> assignment, double perc)`
    `boolean` | MaxOverExpectedConstraint.`inConflict(Assignment<Request,Enrollment> assignment, Enrollment value)`
    `static void` | Test.`updateSpace(Assignment<Request,Enrollment> assignment, Enrollment enrollment, boolean increment)`

  - ### Uses of Request in org.cpsolver.studentsct.online.expectations

    Methods in org.cpsolver.studentsct.online.expectations with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Config config, Request request)` Config enrollment (using `OnlineConfig.getEnrollment()` if applicable}, `Config.getEnrollmentWeight(Assignment, Request)` otherwise)
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Section section, Request request)` Section enrollment (using `OnlineSection.getEnrollment()` if applicable}, `Section.getEnrollmentWeight(Assignment, Request)` otherwise)
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | AvoidUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | NeverOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | OverExpectedCriterion.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `double` | PenaltyNotNegative.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | PercentageOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`

    Method parameters in org.cpsolver.studentsct.online.expectations with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Config config, Request request)` Config enrollment (using `OnlineConfig.getEnrollment()` if applicable}, `Config.getEnrollmentWeight(Assignment, Request)` otherwise)
    `protected double` | PercentageOverExpected.`getEnrollment(Assignment<Request,Enrollment> assignment, Section section, Request request)` Section enrollment (using `OnlineSection.getEnrollment()` if applicable}, `Section.getEnrollmentWeight(Assignment, Request)` otherwise)
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment[] enrollment, int index, Section section, Request request)` Expectation penalty, to be minimized
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)`
    `double` | OverExpectedCriterion.HasContext.`getOverExpected(Assignment<Request,Enrollment> assignment, Enrollment selection, Enrollment value, Set<Enrollment> conflicts)` Expectation penalty, to be minimized.
    `double` | AvoidUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | FractionallyUnbalancedWhenNoExpectations.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | MinimizeConflicts.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | NeverOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | OverExpectedCriterion.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `double` | PenaltyNotNegative.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`
    `double` | PercentageOverExpected.`getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)`

  - ### Uses of Request in org.cpsolver.studentsct.online.selection

    Fields in org.cpsolver.studentsct.online.selection with type parameters of type Request
    Modifier and Type | Field and Description
    --- | ---
    `protected Assignment<Request,Enrollment>` | MultiCriteriaBranchAndBoundSelection.`iAssignment`

    Methods in org.cpsolver.studentsct.online.selection that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | OnlineSectioningCriterion.`getRequest(int index)`

    Methods in org.cpsolver.studentsct.online.selection with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | MultiCriteriaBranchAndBoundSelection.`canAssign(Request request, int idx)` True if the given request can be assigned
    `protected boolean` | MultiCriteriaBranchAndBoundSelection.`canLeaveUnassigned(Request request)` Returns true if the given request can be left unassigned
    `protected boolean` | SuggestionSelection.Selection.`canLeaveUnassigned(Request request)`
    `boolean` | SuggestionsBranchAndBound.`canLeaveUnassigned(Request request)` Can this request be left unassigned
    `double` | StudentSchedulingAssistantWeights.`getBound(Request request)`
    `protected double` | SuggestionSelection.Selection.`getBound(Request r)`
    `protected Set<Section>` | OnlineSectioningCriterion.`getPreferredSections(Request request)`
    `protected List<Enrollment>` | SuggestionsBranchAndBound.`values(Request request)` Domain of a request

    Method parameters in org.cpsolver.studentsct.online.selection with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | SuggestionsBranchAndBound.`backtrack(ArrayList<Request> requests2resolve, TreeSet<Request> altRequests2resolve, int idx, int depth, boolean alt)` Main branch and bound rutine
    `protected void` | SuggestionsBranchAndBound.`backtrack(ArrayList<Request> requests2resolve, TreeSet<Request> altRequests2resolve, int idx, int depth, boolean alt)` Main branch and bound rutine
    `protected boolean` | SuggestionsBranchAndBound.`canContinue(ArrayList<Request> requests2resolve, int idx, int depth)` Termination criterion
    `boolean` | BestPenaltyCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | EqualWeightCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `boolean` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int idx, Enrollment[] current, Enrollment[] best)` Bound
    `boolean` | OnlineSectioningCriterion.`canImprove(Assignment<Request,Enrollment> assignment, int maxIdx, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | EqualWeightCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)` Compare two solutions
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment[] current, Enrollment[] best)`
    `int` | BestPenaltyCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `int` | MultiCriteriaBranchAndBoundSelection.SelectionComparator.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)` Compare two enrollments
    `int` | OnlineSectioningCriterion.`compare(Assignment<Request,Enrollment> assignment, Enrollment e1, Enrollment e2)`
    `protected int` | MultiCriteriaBranchAndBoundSuggestions.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)`
    `protected int` | SuggestionsBranchAndBound.`compare(Assignment<Request,Enrollment> assignment, SuggestionsBranchAndBound.Suggestion s1, SuggestionsBranchAndBound.Suggestion s2)` Compare two suggestions
    `double` | StudentSchedulingAssistantWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentSchedulingAssistantWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Deprecated.
    `double` | BestPenaltyCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)`
    `double` | MultiCriteriaBranchAndBoundSelection.SelectionCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollments)` For backward compatibility, return a weighted sum
    `double` | OnlineSectioningCriterion.`getTotalWeight(Assignment<Request,Enrollment> assignment, Enrollment[] enrollemnts)`
    `double` | ResectioningWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Deprecated.
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `protected double` | OnlineSectioningCriterion.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> conflicts)`
    `double` | StudentSchedulingAssistantWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `protected boolean` | SuggestionsBranchAndBound.`checkBound(ArrayList<Request> requests2resolve, int idx, int depth, Enrollment value, Set<Enrollment> conflicts)` Check bound
    `boolean` | StudentSchedulingAssistantWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | OnlineSectioningSelection.`select(Assignment<Request,Enrollment> assignment, Student student)` Compute student schedule
    `BranchBoundSelection.BranchBoundNeighbour` | SuggestionSelection.`select(Assignment<Request,Enrollment> assignment, Student student)`
    `BranchBoundSelection.BranchBoundNeighbour` | MultiCriteriaBranchAndBoundSelection.`select(Assignment<Request,Enrollment> assignment, Student student, MultiCriteriaBranchAndBoundSelection.SelectionCriterion comparator)`

    Constructors in org.cpsolver.studentsct.online.selection with parameters of type Request
    Constructor and Description
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

    Constructor parameters in org.cpsolver.studentsct.online.selection with type arguments of type Request
    Constructor and Description
    `EqualWeightCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)`
    `MultiCriteriaBranchAndBoundSuggestions(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty, boolean priorityWeighting)` Constructor
    `OnlineSectioningCriterion(Student student, OnlineSectioningModel model, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> preferredSections)` Constructor
    `Selection(Student student, Assignment<Request,Enrollment> assignment)`
    `Suggestion(ArrayList<Request> resolvedRequests)` Create suggestion
    `SuggestionsBranchAndBound(DataProperties properties, Student student, Assignment<Request,Enrollment> assignment, Hashtable<CourseRequest,Set<Section>> requiredSections, Set<FreeTimeRequest> requiredFreeTimes, Hashtable<CourseRequest,Set<Section>> preferredSections, Request selectedRequest, Section selectedSection, SuggestionsBranchAndBound.SuggestionFilter filter, double maxSectionsWithPenalty)` Constructor

  - ### Uses of Request in org.cpsolver.studentsct.report

    Method parameters in org.cpsolver.studentsct.report with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `CSVFile` | AccommodationConflictsTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | CourseConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | CriticalCoursesTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | DistanceConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | RequestGroupTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | RequestPriorityTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | SectionConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | StudentSectioningReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TableauReport.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | TimeOverlapConflictTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | UnbalancedSectionsTable.`create(Assignment<Request,Enrollment> assignment, DataProperties properties)`
    `CSVFile` | AccommodationConflictsTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | CourseConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | DistanceConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | SectionConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | TimeOverlapConflictTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report
    `CSVFile` | UnbalancedSectionsTable.`createTable(Assignment<Request,Enrollment> assignment, boolean includeLastLikeStudents, boolean includeRealStudents, boolean useAmPm)` Create report

  - ### Uses of Request in org.cpsolver.studentsct.reservation

    Methods in org.cpsolver.studentsct.reservation that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `Model<Request,Enrollment>` | Reservation.`getModel()`

    Methods in org.cpsolver.studentsct.reservation with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `double` | Reservation.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `double` | Reservation.ReservationContext.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space

    Method parameters in org.cpsolver.studentsct.reservation with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `void` | Reservation.ReservationContext.`assigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an unassignment
    `boolean` | Reservation.`canEnroll(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` True if the enrollment can be done using this reservation
    `int` | Reservation.`compareTo(Assignment<Request,Enrollment> assignment, Reservation r)` Priority first, than restrictivity (more restrictive first), than availability (more available first), than id
    `Reservation.ReservationContext` | Reservation.`createAssignmentContext(Assignment<Request,Enrollment> assignment)`
    `Set<Enrollment>` | Reservation.`getEnrollments(Assignment<Request,Enrollment> assignment)` Enrollments assigned using this reservation
    `double` | Reservation.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `double` | Reservation.ReservationContext.`getReservedAvailableSpace(Assignment<Request,Enrollment> assignment, Request excludeRequest)` Available reserved space
    `Reservation.ReservationContext` | Reservation.`inheritAssignmentContext(Assignment<Request,Enrollment> assignment, Reservation.ReservationContext parentContext)`
    `void` | Reservation.ReservationContext.`unassigned(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Notify reservation about an assignment

    Constructor parameters in org.cpsolver.studentsct.reservation with type arguments of type Request
    Constructor and Description
    `ReservationContext(Assignment<Request,Enrollment> assignment)`

  - ### Uses of Request in org.cpsolver.studentsct.weights

    Methods in org.cpsolver.studentsct.weights with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PriorityStudentWeights.`computeBound(double base, Request request)`
    `double` | PriorityStudentWeights.`getBoostedWeight(Request request)`
    `double` | OriginalStudentWeights.`getBound(Request request)`
    `double` | PriorityStudentWeights.`getBound(Request request)`
    `double` | StudentWeights.`getBound(Request request)` Return lower bound for the given request
    `double` | PriorityStudentWeights.`getCachedWeight(Request request)`
    `double` | EqualStudentWeights.`getWeight(Request request)`
    `double` | OriginalStudentWeights.`getWeight(Request request)`
    `double` | PriorityStudentWeights.`getWeight(Request request)`

    Method parameters in org.cpsolver.studentsct.weights with type arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | PriorityStudentWeights.`getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | OriginalStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | PriorityStudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict c)`
    `double` | StudentWeights.`getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)` Return weight of a distance conflict
    `double` | OriginalStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | PriorityStudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)`
    `double` | StudentWeights.`getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)` Return weight of a student quality conflict
    `double` | OriginalStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)`
    `double` | PriorityStudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment e, TimeOverlapsCounter.Conflict c)`
    `double` | StudentWeights.`getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)` Return weight of a time overlapping conflict
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)` Return base weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)` Return weight of the given enrollment
    `double` | OriginalStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | PriorityStudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)`
    `double` | StudentWeights.`getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)` Return weight of the given enrollment
    `double` | PriorityStudentWeights.`getWeightAdditive(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `double` | PriorityStudentWeights.`getWeightMultiplicative(Assignment<Request,Enrollment> assignment, Enrollment enrollment)`
    `boolean` | EqualStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | OriginalStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`
    `boolean` | PriorityStudentWeights.`isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)`