## Uses of Class
org.cpsolver.ifs.model.Model

- Packages that use Model
  Package | Description
  --- | ---
  org.cpsolver.coursett.constraint | University Course Timetabling: Constraints.
  org.cpsolver.exam.criteria | Examination Timetabling: Criteria.
  org.cpsolver.exam.heuristics | Examination Timetabling: Solution Heuristics.
  org.cpsolver.exam.model | Examination Timetabling: Model.
  org.cpsolver.ifs.algorithms | IFS Neighbourhood Search Algorithms
  org.cpsolver.ifs.assignment | An assignment holds current values of all the variables of a model.
  org.cpsolver.ifs.assignment.context | Assignment context can be used by a class (e.g., a constraint, a extension, a neighborhood selection, or a criterion) to contain any assignment dependent data.
  org.cpsolver.ifs.constant | Extension of the model with constant variables.
  org.cpsolver.ifs.criteria | IFS Criteria.
  org.cpsolver.ifs.example.csp | Random Binary CSP with uniform distribution.
  org.cpsolver.ifs.example.jobshop | JobShop Problem.
  org.cpsolver.ifs.example.rpp | Random Placement Problem.
  org.cpsolver.ifs.example.tt | Simple Timetabling Problem.
  org.cpsolver.ifs.extension | IFS Extensions (conflict-based statistics, maintenance of arc consistency)
  org.cpsolver.ifs.heuristics | IFS Heuristics (value and variable selection criteria)
  org.cpsolver.ifs.model | IFS Model (description of a problem)
  org.cpsolver.ifs.perturbations | Minimal Perturbation Problem: counting of perturbations
  org.cpsolver.ifs.solution | IFS Solution (also contains solution comparator)
  org.cpsolver.ifs.solver | IFS Solver
  org.cpsolver.ifs.util | Utilities
  org.cpsolver.instructor | Instructor Scheduling.
  org.cpsolver.instructor.model | Instructor Scheduling: Model.
  org.cpsolver.instructor.test | Instructor Scheduling: Tests.
  org.cpsolver.studentsct | Student Sectioning Solver.
  org.cpsolver.studentsct.model | Student Sectioning: Model.
  org.cpsolver.studentsct.online | Online Student Sectioning Solver.
  org.cpsolver.studentsct.reservation | Student Sectioning: Reservations.

- - ### Uses of Model in org.cpsolver.coursett.constraint

    Methods in org.cpsolver.coursett.constraint with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | ExtendedStudentConflicts.`setModel(Model<Lecture,Placement> model)`
    `void` | GroupConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | JenrlConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | MaxHalfDaysFlexibleConstraint.`setModel(Model<Lecture,Placement> model)`
    `void` | NoStudentOnlineConflicts.`setModel(Model<Lecture,Placement> model)`
    `void` | RoomConstraint.`setModel(Model<Lecture,Placement> model)`

  - ### Uses of Model in org.cpsolver.exam.criteria

    Methods in org.cpsolver.exam.criteria with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | DistributionPenalty.`setModel(Model<Exam,ExamPlacement> model)`
    `void` | RoomSizePenalty.`setModel(Model<Exam,ExamPlacement> model)`

  - ### Uses of Model in org.cpsolver.exam.heuristics

    Methods in org.cpsolver.exam.heuristics with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | ExamGreatDeluge.Context.`bestSaved(Model<Exam,ExamPlacement> model)`
    `protected void` | ExamHillClimbing.Context.`bestSaved(Model<Exam,ExamPlacement> model)`

  - ### Uses of Model in org.cpsolver.exam.model

    Subclasses of Model in org.cpsolver.exam.model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExamModel` Examination timetabling model.

    Constructors in org.cpsolver.exam.model with parameters of type Model
    Constructor and Description
    `ExamRoomSharing(Model<Exam,ExamPlacement> model, DataProperties config)`
    `PredefinedExamRoomSharing(Model<Exam,ExamPlacement> model, DataProperties config)`
    `SimpleExamRoomSharing(Model<Exam,ExamPlacement> model, DataProperties config)`

  - ### Uses of Model in org.cpsolver.ifs.algorithms

    Methods in org.cpsolver.ifs.algorithms with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | GreatDeluge.GreatDelugeContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept the given neighbour if it does not worsen the current solution or when the new solution is below the bound
    `protected boolean` | HillClimber.HillClimberContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept any move that does not worsen the solution (value <= 0)
    `protected abstract boolean` | NeighbourSearch.NeighbourSearchContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Acceptance criterion.
    `protected boolean` | SimulatedAnnealing.SimulatedAnnealingContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` True if the given neighbour is to be be accepted
    `protected boolean` | StepCountingHillClimber.StepCountingHillClimberContext.`accept(Assignment<V,T> assignment, Model<V,T> model, Neighbour<V,T> neighbour, double value, boolean lazy)` Accept any move that does not worsen the solution (value <= 0) or that is below the bound.

  - ### Uses of Model in org.cpsolver.ifs.assignment

    Methods in org.cpsolver.ifs.assignment with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `int` | Assignment.`nrUnassignedVariables(Model<V,T> model)` Number of assigned variables in the assignment.
    `int` | AssignmentAbstract.`nrUnassignedVariables(Model<V,T> model)`
    `Collection<V>` | Assignment.`unassignedVariables(Model<V,T> model)` The list of variables of the model that have no value in this assignment.
    `Collection<V>` | AssignmentAbstract.`unassignedVariables(Model<V,T> model)`

    Constructors in org.cpsolver.ifs.assignment with parameters of type Model
    Constructor and Description
    `DefaultParallelAssignment(int threadIndex, Model<V,T> model, Assignment<V,T> assignment)`

  - ### Uses of Model in org.cpsolver.ifs.assignment.context

    Subclasses of Model in org.cpsolver.ifs.assignment.context
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ModelWithContext<V extends Variable<V,T>,T extends Value<V,T>,C extends AssignmentConstraintContext<V,T>>` A model with an assignment context.

    Methods in org.cpsolver.ifs.assignment.context that return Model
    Modifier and Type | Method and Description
    --- | ---
    `abstract Model<V,T>` | AbstractClassWithContext.`getModel()` Get the model.

    Methods in org.cpsolver.ifs.assignment.context with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | BinaryConstraintWithContext.`setModel(Model<V,T> model)`
    `void` | ConstraintWithContext.`setModel(Model<V,T> model)`
    `void` | VariableWithContext.`setModel(Model<V,T> model)`
    `void` | ExtensionWithContext.`unregister(Model<V,T> model)`

  - ### Uses of Model in org.cpsolver.ifs.constant

    Subclasses of Model in org.cpsolver.ifs.constant
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ConstantModel<V extends Variable<V,T>,T extends Value<V,T>>` Extension of the model with constant variables.

  - ### Uses of Model in org.cpsolver.ifs.criteria

    Methods in org.cpsolver.ifs.criteria that return Model
    Modifier and Type | Method and Description
    --- | ---
    `Model<V,T>` | AbstractCriterion.`getModel()` Returns current model

    Methods in org.cpsolver.ifs.criteria with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | AbstractCriterion.`setModel(Model<V,T> model)`
    `void` | Criterion.`setModel(Model<V,T> model)` called when the criterion is added to a model

  - ### Uses of Model in org.cpsolver.ifs.example.csp

    Subclasses of Model in org.cpsolver.ifs.example.csp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `CSPModel` Random Binary CSP with uniform distribution.
    `class` | `StructuredCSPModel` Random Binary CSP with kernels.

  - ### Uses of Model in org.cpsolver.ifs.example.jobshop

    Subclasses of Model in org.cpsolver.ifs.example.jobshop
    Modifier and Type | Class and Description
    --- | ---
    `class` | `JobShopModel` Job Shop model.

  - ### Uses of Model in org.cpsolver.ifs.example.rpp

    Subclasses of Model in org.cpsolver.ifs.example.rpp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RPPModel` RPP model.

  - ### Uses of Model in org.cpsolver.ifs.example.tt

    Subclasses of Model in org.cpsolver.ifs.example.tt
    Modifier and Type | Class and Description
    --- | ---
    `class` | `TimetableModel` Simple Timetabling Problem.

  - ### Uses of Model in org.cpsolver.ifs.extension

    Methods in org.cpsolver.ifs.extension that return Model
    Modifier and Type | Method and Description
    --- | ---
    `Model<V,T>` | Extension.`getModel()` Returns the model

    Methods in org.cpsolver.ifs.extension with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | ConflictStatistics.`register(Model<V,T> model)`
    `void` | Extension.`register(Model<V,T> model)` Registration of a model.
    `void` | SearchIntensification.`register(Model<V,T> model)`
    `void` | ConflictStatistics.`unregister(Model<V,T> model)`
    `void` | Extension.`unregister(Model<V,T> model)` Unregistration of a model.
    `void` | SearchIntensification.`unregister(Model<V,T> model)`

  - ### Uses of Model in org.cpsolver.ifs.heuristics

    Methods in org.cpsolver.ifs.heuristics that return Model
    Modifier and Type | Method and Description
    --- | ---
    `Model<V,T>` | BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext.`getModel()`

  - ### Uses of Model in org.cpsolver.ifs.model

    Methods in org.cpsolver.ifs.model that return Model
    Modifier and Type | Method and Description
    --- | ---
    `Model<V,T>` | Constraint.`getModel()` The model which the constraint belongs to
    `abstract Model<V,T>` | LazyNeighbour.`getModel()` Return problem model (it is needed in order to be able to get overall solution value before and after the assignment of this neighbour)
    `Model<V,T>` | LazySwap.`getModel()` Return problem model
    `Model<V,T>` | Variable.`getModel()` Model, the variable belong to

    Methods in org.cpsolver.ifs.model with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | Constraint.`setModel(Model<V,T> model)` Sets the model which the constraint belongs to
    `void` | Variable.`setModel(Model<V,T> model)` Set the model to which the variable belongs to

  - ### Uses of Model in org.cpsolver.ifs.perturbations

    Methods in org.cpsolver.ifs.perturbations with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | DefaultPerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info)`
    `void` | PerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info)` Some (perturbation) information about the solution might be returned here.
    `void` | DefaultPerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info, Collection<V> variables)`
    `void` | PerturbationsCounter.`getInfo(Assignment<V,T> assignment, Model<V,T> model, Map<String,String> info, Collection<V> variables)` Some (perturbation) information about the solution might be returned here (only include variables from the given set).
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model)` Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial problem (see `Variable.getInitialAssignment()`).
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, Collection<V> variables)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, Collection<V> variables)` Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial (only include variables from the given set) problem (see `Variable.getInitialAssignment()`).
    `double` | DefaultPerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, T selectedValue, Collection<T> conflicts)`
    `double` | PerturbationsCounter.`getPerturbationPenalty(Assignment<V,T> assignment, Model<V,T> model, T selectedValue, Collection<T> conflicts)` Returns perturbation penalty of the solution which become from the current solution when given conflicting values are unassigned and the selected value is assigned.

  - ### Uses of Model in org.cpsolver.ifs.solution

    Methods in org.cpsolver.ifs.solution that return Model
    Modifier and Type | Method and Description
    --- | ---
    `Model<V,T>` | Solution.`getModel()` The model associated with the solution

    Constructors in org.cpsolver.ifs.solution with parameters of type Model
    Constructor and Description
    `Solution(Model<V,T> model)` Deprecated.
    `Solution(Model<V,T> model, Assignment<V,T> assignment)` Constructor
    `Solution(Model<V,T> model, Assignment<V,T> assignment, long iteration, double time)` Constructor

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

    Methods in org.cpsolver.ifs.solver with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | ParallelSolver.`setInitalSolution(Model<V,T> model)` Sets initial solution
    `void` | Solver.`setInitalSolution(Model<V,T> model)` Sets initial solution

  - ### Uses of Model in org.cpsolver.ifs.util

    Classes in org.cpsolver.ifs.util with type parameters of type Model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ProblemLoader<V extends Variable<V,T>,T extends Value<V,T>,M extends Model<V,T>>` Abstract problem loader class.
    `class` | `ProblemSaver<V extends Variable<V,T>,T extends Value<V,T>,M extends Model<V,T>>` Abstract problem saver class.

  - ### Uses of Model in org.cpsolver.instructor

    Subclasses of Model in org.cpsolver.instructor
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Test` A main class for running of the instructor scheduling solver from command line.

  - ### Uses of Model in org.cpsolver.instructor.model

    Subclasses of Model in org.cpsolver.instructor.model
    Modifier and Type | Class and Description
    --- | ---
    `class` | `InstructorSchedulingModel` Instructor Scheduling Model.

  - ### Uses of Model in org.cpsolver.instructor.test

    Subclasses of Model in org.cpsolver.instructor.test
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ChmTest` General chemistry teaching assistants test.
    `class` | `MathTest` Math teaching assistant assignment problem.

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

    Subclasses of Model in org.cpsolver.studentsct
    Modifier and Type | Class and Description
    --- | ---
    `class` | `StudentSctBBTest` Online student sectioning test (using `BranchBoundSelection` selection).
    `class` | `StudentSectioningModel` Student sectioning model.

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

    Methods in org.cpsolver.studentsct.model that return Model
    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()`

    Methods in org.cpsolver.studentsct.model with parameters of type Model
    Modifier and Type | Method and Description
    --- | ---
    `void` | Offering.`setModel(Model<Request,Enrollment> model)`

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

    Subclasses of Model in org.cpsolver.studentsct.online
    Modifier and Type | Class and Description
    --- | ---
    `class` | `OnlineSectioningModel` An online model.
    `class` | `Test.TestModel`

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

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