## Uses of Interface
net.sf.cpsolver.ifs.heuristics.NeighbourSelection

- Packages that use NeighbourSelection
  Package | Description
  --- | ---
  net.sf.cpsolver.coursett.heuristics | University Course Timetabling: Heuristics.
  net.sf.cpsolver.coursett.neighbourhoods | University Course Timetabling: Various Neighbourhoods.
  net.sf.cpsolver.exam.heuristics | Examination Timetabling: Solution Heuristics.
  net.sf.cpsolver.exam.neighbours | Examination Timetabling: Various Neighbourhoods.
  net.sf.cpsolver.exam.split | This package contains an an experimental criterion that allows an exam to be split into two if it decreases the number of student conflicts.
  net.sf.cpsolver.ifs.algorithms | IFS Neighbourhood Search Algorithms
  net.sf.cpsolver.ifs.algorithms.neighbourhoods | IFS: Various Problem-Independent Neighbourhoods.
  net.sf.cpsolver.ifs.heuristics | IFS Heuristics (value and variable selection criteria)
  net.sf.cpsolver.ifs.solver | IFS Solver
  net.sf.cpsolver.studentsct.heuristics | Student Sectioning: Heuristics.
  net.sf.cpsolver.studentsct.heuristics.selection | Student Sectioning: Various Neighbour Selection Criteria.

- - ### Uses of NeighbourSelection in net.sf.cpsolver.coursett.heuristics

    Classes in net.sf.cpsolver.coursett.heuristics that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `NeighbourSelectionWithSuggestions` Neighbour selection which does the standard time neighbour selection most of the time, however, the very best neighbour is selected time to time (using backtracking based search).

  - ### Uses of NeighbourSelection in net.sf.cpsolver.coursett.neighbourhoods

    Classes in net.sf.cpsolver.coursett.neighbourhoods that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RoomChange` Try to assign a class with a new room.
    `class` | `RoomSwap` Try to assign a class with a new room.
    `class` | `TimeChange` Try to assign a class with a new time.
    `class` | `TimeSwap` Try to assign a class with a new time.

  - ### Uses of NeighbourSelection in net.sf.cpsolver.exam.heuristics

    Classes in net.sf.cpsolver.exam.heuristics that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamColoringConstruction` Examination timetabling construction heuristics based on graph vertex coloring.
    `class` | `ExamConstruction` Initial solution construction heuristics.
    `class` | `ExamGreatDeluge` Greate deluge.
    `class` | `ExamHillClimbing` Hill climber.
    `class` | `ExamNeighbourSelection` Examination timetabling neighbour selection.
    `class` | `ExamSimulatedAnnealing` Simulated annealing.
    `class` | `ExamTabuSearch` Tabu search algorithm.

  - ### Uses of NeighbourSelection in net.sf.cpsolver.exam.neighbours

    Classes in net.sf.cpsolver.exam.neighbours that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamPeriodSwapMove` Try to swap a period between two exams.
    `class` | `ExamRandomMove` A period is selected randomly for a randomly selected exam.
    `class` | `ExamRoomMove` Try to swap a room between two exams.
    `class` | `ExamTimeMove` A new period is selected for a randomly selected exam.

  - ### Uses of NeighbourSelection in net.sf.cpsolver.exam.split

    Classes in net.sf.cpsolver.exam.split that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamSplitMoves` Experimental neighbor selection that allows an exam to be split into two if it decreases the number of student conflicts.

  - ### Uses of NeighbourSelection in net.sf.cpsolver.ifs.algorithms

    Classes in net.sf.cpsolver.ifs.algorithms that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `GreatDeluge<V extends Variable<V,T>,T extends Value<V,T>>` Great deluge.
    `class` | `HillClimber<V extends Variable<V,T>,T extends Value<V,T>>` Hill climber.
    `class` | `NeighbourSearch<V extends Variable<V,T>,T extends Value<V,T>>` Base class for the search techniques like hill climber, great deluge, or simulated annealing.
    `class` | `NeighbourSelector<V extends Variable<V,T>,T extends Value<V,T>>` A wrapper for `NeighbourSelection` that keeps some stats about the given neighbour selector.
    `class` | `SimpleSearch<V extends Variable<V,T>,T extends Value<V,T>>` Simple search neighbour selection.
    `class` | `SimulatedAnnealing<V extends Variable<V,T>,T extends Value<V,T>>` Simulated annealing.
    `class` | `StepCountingHillClimber<V extends Variable<V,T>,T extends Value<V,T>>` Step counting hill climber.

    Methods in net.sf.cpsolver.ifs.algorithms that return NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `protected NeighbourSelection<V,T>` | NeighbourSearch.`nextNeighbourSelection()` Generate and return next neighbour selection
    `NeighbourSelection<V,T>` | NeighbourSelector.`selection()` Given neighbour selection

    Methods in net.sf.cpsolver.ifs.algorithms that return types with arguments of type NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `protected List<? extends NeighbourSelection<V,T>>` | NeighbourSearch.`getNeighbours()` Return list of neighbour selections

    Methods in net.sf.cpsolver.ifs.algorithms with parameters of type NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | NeighbourSearch.`addNeighbourSelection(NeighbourSelection<V,T> ns, double bonus)` Add neighbour selection

    Constructors in net.sf.cpsolver.ifs.algorithms with parameters of type NeighbourSelection
    Constructor and Description
    `NeighbourSelector(NeighbourSelection<V,T> sel, double bonus, boolean update)` Constructor

  - ### Uses of NeighbourSelection in net.sf.cpsolver.ifs.algorithms.neighbourhoods

    Classes in net.sf.cpsolver.ifs.algorithms.neighbourhoods that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RandomMove<V extends Variable<V,T>,T extends Value<V,T>>` Try to assign a variable with a new value.
    `class` | `RandomSwapMove<V extends Variable<V,T>,T extends Value<V,T>>` Try to assign a variable with a new value.
    `class` | `SuggestionMove<V extends Variable<V,T>,T extends Value<V,T>>` Suggestion move.

  - ### Uses of NeighbourSelection in net.sf.cpsolver.ifs.heuristics

    Classes in net.sf.cpsolver.ifs.heuristics that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BacktrackNeighbourSelection<V extends Variable<V,T>,T extends Value<V,T>>` Backtracking-based neighbour selection.
    `class` | `RoundRobinNeighbourSelection<V extends Variable<V,T>,T extends Value<V,T>>` A round robin neighbour selection.
    `class` | `StandardNeighbourSelection<V extends Variable<V,T>,T extends Value<V,T>>` Standard neighbour selection criterion.

    Methods in net.sf.cpsolver.ifs.heuristics with parameters of type NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `void` | RoundRobinNeighbourSelection.`registerSelection(NeighbourSelection<V,T> selection)` Register a neighbour selection

  - ### Uses of NeighbourSelection in net.sf.cpsolver.ifs.solver

    Methods in net.sf.cpsolver.ifs.solver that return NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `NeighbourSelection<V,T>` | Solver.`getNeighbourSelection()` Returns neighbour selection criterion

    Methods in net.sf.cpsolver.ifs.solver with parameters of type NeighbourSelection
    Modifier and Type | Method and Description
    --- | ---
    `void` | Solver.`setNeighbourSelection(NeighbourSelection<V,T> neighbourSelection)` Sets neighbour selection criterion

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

    Classes in net.sf.cpsolver.studentsct.heuristics that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RandomizedBacktrackNeighbourSelection` Randomized backtracking-based neighbour selection.
    `class` | `StudentSctNeighbourSelection` (Batch) student sectioning neighbour selection.
    `class` | `TwoPhaseStudentSctNeighbourSelection` Two-phase (Batch) student sectioning neighbour selection.
    `protected class` | `TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents` Return all dummy students into the problem, executed as the last phase of the first round

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

    Classes in net.sf.cpsolver.studentsct.heuristics.selection that implement NeighbourSelection
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BacktrackSelection` Use backtrack neighbour selection.
    `class` | `BranchBoundSelection` Section all students using incremental branch & bound (no unassignments).
    `class` | `OnlineSelection` Section given student using branch & bound algorithm with no unassignments allowed.
    `class` | `PriorityConstructionSelection` This selection is very much like `BranchBoundSelection`, but it works in cycles (over all the students) assigning only the first N priority courses.
    `class` | `RandomUnassignmentSelection` Random unassignment of some (randomly selected) students.
    `class` | `ResectionIncompleteStudentsSelection` Resection incomplete studends.
    `class` | `ResectionUnassignedStudentsSelection` Resection studends with empty schedule.
    `class` | `RndUnProblStudSelection` Random unassignment of some problematic students.
    `class` | `StandardSelection` Use the provided variable and value selection for some time.
    `class` | `SwapStudentSelection` Pick a student (one by one) with an incomplete schedule, try to find an improvement, identify problematic students.