# Package org.cpsolver.studentsct.heuristics.selection

Student Sectioning: Various Neighbour Selection Criteria.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  ProblemStudentsProvider | An interface to pass the list problematic students computed by a neighbour selection to the next neighbour selection.

- Class Summary
  Class | Description
  --- | ---
  AssignInitialSelection | Assign initial enrollments.
  BacktrackSelection | Use backtrack neighbour selection.
  BacktrackSelection.RequestComparator |
  BranchBoundSelection | Section all students using incremental branch & bound (no unassignments).
  BranchBoundSelection.BranchBoundNeighbour | Branch & bound neighbour -- a schedule of a student
  CriticalBacktrackSelection | Use backtrack neighbour selection.
  CriticalCoursesBranchAndBoundSelection | This selection is very much like `BranchBoundSelection`, but only critical course requests are assigned (see `Request.isCritical()`.
  CriticalStandardSelection | Use the standard IFS search for the unassigned critical course requests.
  MinCreditBranchAndBoundSelection | This selection is very much like `BranchBoundSelection`, but only enough courses to a student is assigned to reach the min credit (see `Student.getMinCredit()`).
  OnlineSelection | Section given student using branch & bound algorithm with no unassignments allowed.
  PriorityConstructionSelection | This selection is very much like `BranchBoundSelection`, but it works in cycles (over all the students) assigning only the first N priority courses.
  RandomUnassignmentSelection | Random unassignment of some (randomly selected) students.
  RandomUnassignmentSelection.UnassignStudentNeighbour | Unassignment of all requests of a student
  ResectionIncompleteStudentsSelection | Resection incomplete studends.
  ResectionUnassignedStudentsSelection | Resection studends with empty schedule.
  RndUnProblStudSelection | Random unassignment of some problematic students.
  ShuffleStudentsSelection | Shuffle students along request groups.
  ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection | A special version of the `BacktrackNeighbourSelection` that filters the enrollments with the provided section filter.
  StandardSelection | Use the provided variable and value selection for some time.
  StudentEnrollmentSwapSelection | Swap enrollments of different students of a course.
  SwapStudentSelection | Pick a student (one by one) with an incomplete schedule, try to find an improvement, identify problematic students.
  SwapStudentSelection.SwapStudentNeighbour | Neighbour that contains the swap
  UnassignedCriticalCourseRequestSelection |
  UnassignedRequestSelection |

## Package org.cpsolver.studentsct.heuristics.selection Description

Student Sectioning: Various Neighbour Selection Criteria.
These criteria are used by `StudentSctNeighbourSelection`.

Version:
  IFS 1.4 (Instructor Sectioning)
  Copyright (C) 2024 Tomáš Müller
  muller@unitime.org
  http://muller.unitime.org
  This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
  You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses/.
Author:
  Tomáš Müller