## Uses of Interface
org.cpsolver.ifs.solver.SolverListener

- Packages that use SolverListener
  Package | Description
  --- | ---
  org.cpsolver.ifs.dbt | Dynamic backtracking extension of IFS solver
  org.cpsolver.ifs.solver | IFS Solver
  org.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  org.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.
  org.cpsolver.studentsct.online.selection | Online Student Sectioning Solver: Selection Weights and Heuristics.

- - ### Uses of SolverListener in org.cpsolver.ifs.dbt

    Classes in org.cpsolver.ifs.dbt that implement SolverListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DbtPropagation<V extends Variable<V,T>,T extends Value<V,T>>` Maintenance of arc consistency in dynamic backtracking.

  - ### Uses of SolverListener in org.cpsolver.ifs.solver

    Fields in org.cpsolver.ifs.solver with type parameters of type SolverListener
    Modifier and Type | Field and Description
    --- | ---
    `protected List<SolverListener<V,T>>` | Solver.`iSolverListeners`

    Methods in org.cpsolver.ifs.solver that return types with arguments of type SolverListener
    Modifier and Type | Method and Description
    --- | ---
    `List<SolverListener<V,T>>` | Solver.`getSolverListeners()` Registered solver listeners

    Methods in org.cpsolver.ifs.solver with parameters of type SolverListener
    Modifier and Type | Method and Description
    --- | ---
    `void` | Solver.`addSolverListener(SolverListener<V,T> listener)` Adds a solver listener
    `void` | Solver.`removeSolverListener(SolverListener<V,T> listener)` Removes a solver listener

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

    Classes in org.cpsolver.studentsct.heuristics that implement SolverListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `StudentSctNeighbourSelection` (Batch) student sectioning neighbour selection.
    `class` | `TwoPhaseStudentSctNeighbourSelection` Two-phase (Batch) student sectioning neighbour selection.

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

    Classes in org.cpsolver.studentsct.heuristics.selection that implement SolverListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AssignInitialSelection` Assign initial enrollments.
    `class` | `BacktrackSelection` Use backtrack neighbour selection.
    `class` | `BranchBoundSelection` Section all students using incremental branch & bound (no unassignments).
    `class` | `CriticalBacktrackSelection` Use backtrack neighbour selection.
    `class` | `CriticalCoursesBranchAndBoundSelection` This selection is very much like `BranchBoundSelection`, but only critical course requests are assigned (see `Request.isCritical()`.
    `class` | `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()`).
    `class` | `OnlineSelection` Section given student using branch & bound algorithm with no unassignments allowed.
    `class` | `ResectionIncompleteStudentsSelection` Resection incomplete studends.
    `class` | `ResectionUnassignedStudentsSelection` Resection studends with empty schedule.
    `class` | `StudentEnrollmentSwapSelection` Swap enrollments of different students of a course.
    `class` | `SwapStudentSelection` Pick a student (one by one) with an incomplete schedule, try to find an improvement, identify problematic students.

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

    Classes in org.cpsolver.studentsct.online.selection that implement SolverListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SuggestionSelection` Online student sectioning algorithm based on the `BranchBoundSelection` of the batch solver.