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

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

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

    Methods in net.sf.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 net.sf.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
    `Solution<Request,Enrollment>` | StudentSctBBTest.`getSolution()` Compute and return the sectioning solution.
    `protected Solution<Request,Enrollment>` | StudentSectioningSaver.`getSolution()` Solution to be saved
    `Solver<Request,Enrollment>` | StudentSectioningSaver.`getSolver()` Solver
    `static Solution<Request,Enrollment>` | Test.`onlineSectioning(DataProperties cfg)` Online sectioning test
    `static Solution<Request,Enrollment>` | Test.`solveModel(StudentSectioningModel model, DataProperties cfg)` Solve the student sectioning problem using IFS solver

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

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

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

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

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

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

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

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

    Constructor parameters in net.sf.cpsolver.studentsct.constraint with type arguments of type Request
    Constructor and Description
    `LinkedSectionsConstraint(Student student, Collection<Request> requests)` Constructor

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

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

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

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

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

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

    Methods in net.sf.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>` | TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.`selectNeighbour(Solution<Request,Enrollment> solution)` Return all (removed) dummy students into the problem

    Methods in net.sf.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(Request variable)` List of values of a variable.

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

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

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

    Methods in net.sf.cpsolver.studentsct.heuristics.selection with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `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
    `protected double` | BranchBoundSelection.Selection.`getBound(Request r)` Return bound of a request

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

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

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

    Subclasses of Request in net.sf.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 net.sf.cpsolver.studentsct.model that return Request
    Modifier and Type | Method and Description
    --- | ---
    `Request` | Enrollment.`getRequest()` Request

    Methods in net.sf.cpsolver.studentsct.model that return types with arguments of type Request
    Modifier and Type | Method and Description
    --- | ---
    `List<Request>` | Student.`getRequests()` Student's course and free time requests

    Methods in net.sf.cpsolver.studentsct.model with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | Student.`canAssign(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.`getEnrollmentWeight(Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this config, excluding the given one.
    `double` | Course.`getEnrollmentWeight(Request excludeRequest)` Enrollment weight -- weight of all requests that are enrolled into this course, excluding the given one.
    `double` | Section.`getEnrollmentWeight(Request excludeRequest)` Enrollment weight -- weight of all requests which have an enrollment that contains this section, excluding the given one.
    `double` | Config.`getUnreservedSpace(Request excludeRequest)` Available space in the configuration that is not reserved by any config reservation
    `double` | Offering.`getUnreservedSpace(Request excludeRequest)` Available space in the offering that is not reserved by any reservation
    `double` | Section.`getUnreservedSpace(Request excludeRequest)` Available space in the section that is not reserved by any section reservation

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

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

    Methods in net.sf.cpsolver.studentsct.reservation with parameters of type Request
    Modifier and Type | Method and Description
    --- | ---
    `double` | Reservation.`getReservedAvailableSpace(Request excludeRequest)` Available reserved space

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

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