net.sf.cpsolver.coursett.criteria.additional

## Class InstructorLunchBreak

- java.lang.Object
- - net.sf.cpsolver.ifs.criteria.AbstractCriterion<Lecture,Placement>
  - - net.sf.cpsolver.coursett.criteria.additional.InstructorLunchBreak

- All Implemented Interfaces:
    Criterion<Lecture,Placement>, InfoProvider<Lecture>, ModelListener<Lecture,Placement>

      public class InstructorLunchBreak
      extends AbstractCriterion<Lecture,Placement>

  The class represents various criteria concerning compact timetables of instructors. The criteria are checked and updated when a variable is (un)assigned.
  implemented criterion: lunch break
  Version:
    CourseTT 1.2 (University Course Timetabling)
    Copyright (C) 2012 Matej Lukac
    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/.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `InstructorLunchBreak.CompactInfo` The class is used as a container of information concerning lunch break of instructors.

    - ### Nested classes/interfaces inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion

      `AbstractCriterion.ValueUpdateType`

  - ### Field Summary

    - ### Fields inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion

      `iBest, iDebug, iValue, iValueUpdateType, iWeight, sDoubleFormat, sPercentFormat`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `InstructorLunchBreak()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterAssigned(long iteration, Placement value)` Update criterion after an assignment.
    `void` | `afterUnassigned(long iteration, Placement value)` Update criterion after an unassignment
    `protected InstructorLunchBreak.CompactInfo` | `getCompactInfo(InstructorConstraint constraint)` Get compact info that is associated with an instructor constraint.
    `void` | `getInfo(Map<String,String> info)` Adds some information into the table with information about the solution
    `void` | `getInfo(Map<String,String> info, Collection<Lecture> variables)` Adds some information into the table with information about the solution, only consider variables from the given set
    `double` | `getValue(Collection<Lecture> variables)` Value of a part of the problem (given by the collection of variables)
    `double` | `getValue(Placement value, Set<Placement> conflicts)` Value of a proposed assignment (including hard conflicts)
    `protected List<BitSet>` | `getWeeks()` The method creates date patterns (bitsets) which represent the weeks of a semester.
    `double` | `getWeightedValue(Placement value, Set<Placement> conflicts)` Weighted value of a proposed assignment (including hard conflicts)
    `boolean` | `init(Solver<Lecture,Placement> solver)` Notification that the model was initialized by the solver.
    `void` | `updateCriterion(InstructorConstraint instructorConstraint, Placement placement)` Method checks or sets the CompactInfo of an InstructorConstraint.
    `void` | `updateLunchPenalty(InstructorConstraint constraint, Placement p)` Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately.

    - ### Methods inherited from class net.sf.cpsolver.ifs.criteria.AbstractCriterion

      `beforeAssigned, beforeUnassigned, bestRestored, bestSaved, clearCache, computeBounds, constraintAdded, constraintRemoved, getBest, getBounds, getBounds, getModel, getName, getPerc, getPercRev, getValue, getWeight, getWeightDefault, getWeightedBest, getWeightedValue, getWeightedValue, getWeightName, inc, variableAdded, variableRemoved`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### InstructorLunchBreak

          public InstructorLunchBreak()

  - ### Method Detail

    - #### init

          public boolean init(Solver<Lecture,Placement> solver)

      Description copied from interface: `ModelListener`
      Notification that the model was initialized by the solver.
      Specified by:
        `init` in interface `ModelListener<Lecture,Placement>`
      Overrides:
        `init` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `solver` - IFS solver

    - #### getCompactInfo

          protected InstructorLunchBreak.CompactInfo getCompactInfo(InstructorConstraint constraint)

      Get compact info that is associated with an instructor constraint. Create a new one if none has been created yet.

    - #### afterAssigned

          public void afterAssigned(long iteration,
                                    Placement value)

      Update criterion after an assignment.
      Specified by:
        `afterAssigned` in interface `ModelListener<Lecture,Placement>`
      Overrides:
        `afterAssigned` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `iteration` - current iteration
        `value` - value to be assigned

    - #### afterUnassigned

          public void afterUnassigned(long iteration,
                                      Placement value)

      Update criterion after an unassignment
      Specified by:
        `afterUnassigned` in interface `ModelListener<Lecture,Placement>`
      Overrides:
        `afterUnassigned` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `iteration` - current iteration
        `value` - value to be unassigned

    - #### getWeeks

          protected List<BitSet> getWeeks()

      The method creates date patterns (bitsets) which represent the weeks of a semester.
      Returns:
        a list of BitSets which represents the weeks of a semester.

    - #### updateLunchPenalty

          public void updateLunchPenalty(InstructorConstraint constraint,
                                         Placement p)

      Method updates number of violations in days (Mo, Tue, Wed,..) considering each week in the semester separately. The current number of violations for a day is stored in the CompactInfo.lunchDayViolations of the constraint, which must be set properly before the calling of the method.
      Parameters:
        `constraint` - the Instructor constraint of an instructor checked for a lunch break
        `p` - placement of a lecture currently (un)assigned

    - #### updateCriterion

          public void updateCriterion(InstructorConstraint instructorConstraint,
                                      Placement placement)

      Method checks or sets the CompactInfo of an InstructorConstraint. It updates the preference of chosen criteria. The update consists of decrementing the criterion value by previous preference, finding the current preference and incrementing the criterion value by the current preference.
      Parameters:
        `instructorConstraint` - the Instructor constraint of an instructor checked for criteria
        `placement` - placement of a lecture currently (un)assigned

    - #### getValue

          public double getValue(Placement value,
                                 Set<Placement> conflicts)

      Description copied from interface: `Criterion`
      Value of a proposed assignment (including hard conflicts)

    - #### getWeightedValue

          public double getWeightedValue(Placement value,
                                         Set<Placement> conflicts)

      Description copied from interface: `Criterion`
      Weighted value of a proposed assignment (including hard conflicts)
      Specified by:
        `getWeightedValue` in interface `Criterion<Lecture,Placement>`
      Overrides:
        `getWeightedValue` in class `AbstractCriterion<Lecture,Placement>`

    - #### getValue

          public double getValue(Collection<Lecture> variables)

      Description copied from interface: `Criterion`
      Value of a part of the problem (given by the collection of variables)
      Specified by:
        `getValue` in interface `Criterion<Lecture,Placement>`
      Overrides:
        `getValue` in class `AbstractCriterion<Lecture,Placement>`

    - #### getInfo

          public void getInfo(Map<String,String> info)

      Description copied from interface: `InfoProvider`
      Adds some information into the table with information about the solution
      Specified by:
        `getInfo` in interface `InfoProvider<Lecture>`
      Overrides:
        `getInfo` in class `AbstractCriterion<Lecture,Placement>`

    - #### getInfo

          public void getInfo(Map<String,String> info,
                              Collection<Lecture> variables)

      Description copied from interface: `InfoProvider`
      Adds some information into the table with information about the solution, only consider variables from the given set
      Specified by:
        `getInfo` in interface `InfoProvider<Lecture>`
      Overrides:
        `getInfo` in class `AbstractCriterion<Lecture,Placement>`