org.cpsolver.exam.criteria

## Class StudentBackToBackConflicts

- java.lang.Object
- - org.cpsolver.ifs.criteria.AbstractCriterion<Exam,ExamPlacement>
  - - org.cpsolver.exam.criteria.ExamCriterion
    - - org.cpsolver.exam.criteria.StudentBackToBackConflicts

- All Implemented Interfaces:
    CanHoldContext, HasAssignmentContext<Exam,ExamPlacement,AbstractCriterion.ValueContext>, Criterion<Exam,ExamPlacement>, ExtendedInfoProvider<Exam,ExamPlacement>, InfoProvider<Exam,ExamPlacement>, ModelListener<Exam,ExamPlacement>
  Direct Known Subclasses:
    InstructorBackToBackConflicts

      public class StudentBackToBackConflicts
      extends ExamCriterion

  Number of back-to-back student conflicts. I.e., number of cases when an exam is attended by a student that attends some other exam at the previous `ExamPeriod.prev()` or following `ExamPeriod.next()` period. If `isDayBreakBackToBack()` is false, back-to-back conflicts are only considered between consecutive periods that are of the same day.
  Back-to-back student conflict weight can be set by problem property Exams.BackToBackConflictWeight, or in the input xml file, property backToBackConflictWeight.
  Version:
    ExamTT 1.3 (Examination Timetabling)
    Copyright (C) 2008 - 2014 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

- - ### Nested Class Summary

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

      `AbstractCriterion.ValueContext, AbstractCriterion.ValueUpdateType`

  - ### Field Summary

    - ### Fields inherited from class org.cpsolver.ifs.criteria.AbstractCriterion

      `iBest, iDebug, iWeight, sDoubleFormat, sPercentFormat`

    - ### Fields inherited from interface org.cpsolver.ifs.assignment.context.CanHoldContext

      `sMaxSize`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StudentBackToBackConflicts()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `configure(DataProperties properties)` Configure the criterion if needed
    `void` | `getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)` Adds some information into the table with information about the solution
    `String` | `getName()` Criterion name
    `double` | `getValue(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)` Value of a part of the problem (given by the collection of variables)
    `double` | `getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)` Value of a proposed assignment (including hard conflicts)
    `double` | `getWeightDefault(DataProperties config)` Defines default weight (when `AbstractCriterion.getWeightName()` parameter is not present in the criterion).
    `String` | `getWeightName()` Defines weight name (to be used to get the criterion weight from the configuration).
    `void` | `getXmlParameters(Map<String,String> params)` Put all the parameters of this criterion into a map that is used to write parameters section of the examination XML file.
    `String` | `getXmlWeightName()` Name of the weight parameter in the parameters section of the examination XML file.
    `boolean` | `isDayBreakBackToBack()` True when back-to-back student conflict is to be encountered when a student is enrolled into an exam that is on the last period of one day and another exam that is on the first period of the consecutive day.
    `void` | `setDayBreakBackToBack(boolean dayBreakBackToBack)` True when back-to-back student conflict is to be encountered when a student is enrolled into an exam that is on the last period of one day and another exam that is on the first period of the consecutive day.
    `void` | `setXmlParameters(Map<String,String> params)` Set all the parameters of this criterion from a map that is read from the parameters section the examination XML file.
    `String` | `toString(Assignment<Exam,ExamPlacement> assignment)` Simple text representation of the criterion and its value.

    - ### Methods inherited from class org.cpsolver.exam.criteria.ExamCriterion

      `getBounds, getPeriodValue, getRoomValue, isPeriodCriterion, isRoomCriterion, setWeight`

    - ### Methods inherited from class org.cpsolver.ifs.criteria.AbstractCriterion

      `afterAssigned, afterUnassigned, beforeAssigned, beforeUnassigned, bestRestored, bestSaved, clearCache, computeBounds, constraintAdded, constraintRemoved, createAssignmentContext, getAbbreviation, getAssignmentContextReference, getBest, getBounds, getBounds, getBounds, getContext, getContext, getExtendedInfo, getInfo, getModel, getPerc, getPercentage, getPercRev, getValue, getValue, getValue, getValueUpdateType, getWeight, getWeightedBest, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, inc, inc, init, setAssignmentContextReference, setModel, setValueUpdateType, variableAdded, variableRemoved`

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

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

- - ### Constructor Detail

    - #### StudentBackToBackConflicts

          public StudentBackToBackConflicts()

  - ### Method Detail

    - #### configure

          public void configure(DataProperties properties)

      Description copied from interface: `Criterion`
      Configure the criterion if needed
      Specified by:
        `configure` in interface `Criterion<Exam,ExamPlacement>`
      Overrides:
        `configure` in class `AbstractCriterion<Exam,ExamPlacement>`
      Parameters:
        `properties` - configuration

    - #### getWeightName

          public String getWeightName()

      Description copied from class: `AbstractCriterion`
      Defines weight name (to be used to get the criterion weight from the configuration).
      Overrides:
        `getWeightName` in class `ExamCriterion`
      Returns:
        name of the weight associated with this criterion

    - #### getXmlWeightName

          public String getXmlWeightName()

      Description copied from class: `ExamCriterion`
      Name of the weight parameter in the parameters section of the examination XML file.
      Overrides:
        `getXmlWeightName` in class `ExamCriterion`
      Returns:
        name of the weight parameter in the XML

    - #### getWeightDefault

          public double getWeightDefault(DataProperties config)

      Description copied from class: `AbstractCriterion`
      Defines default weight (when `AbstractCriterion.getWeightName()` parameter is not present in the criterion).
      Overrides:
        `getWeightDefault` in class `AbstractCriterion<Exam,ExamPlacement>`
      Parameters:
        `config` - solver configuration
      Returns:
        default criterion weight value

    - #### isDayBreakBackToBack

          public boolean isDayBreakBackToBack()

      True when back-to-back student conflict is to be encountered when a student is enrolled into an exam that is on the last period of one day and another exam that is on the first period of the consecutive day. It can be set by problem property Exams.IsDayBreakBackToBack, or in the input xml file, property isDayBreakBackToBack)
      Returns:
        true if last exam on one day is back-to-back to the first exam of the following day

    - #### setDayBreakBackToBack

          public void setDayBreakBackToBack(boolean dayBreakBackToBack)

      True when back-to-back student conflict is to be encountered when a student is enrolled into an exam that is on the last period of one day and another exam that is on the first period of the consecutive day. It can be set by problem property Exams.IsDayBreakBackToBack, or in the input xml file, property isDayBreakBackToBack)
      Parameters:
        `dayBreakBackToBack` - true if last exam on one day is back-to-back to the first exam of the following day

    - #### getXmlParameters

          public void getXmlParameters(Map<String,String> params)

      Description copied from class: `ExamCriterion`
      Put all the parameters of this criterion into a map that is used to write parameters section of the examination XML file.
      Overrides:
        `getXmlParameters` in class `ExamCriterion`
      Parameters:
        `params` - map of parameters (parameter = value) to be populated

    - #### setXmlParameters

          public void setXmlParameters(Map<String,String> params)

      Description copied from class: `ExamCriterion`
      Set all the parameters of this criterion from a map that is read from the parameters section the examination XML file.
      Overrides:
        `setXmlParameters` in class `ExamCriterion`
      Parameters:
        `params` - map of parameters (parameter = value) loaded from XML

    - #### getValue

          public double getValue(Assignment<Exam,ExamPlacement> assignment,
                                 ExamPlacement value,
                                 Set<ExamPlacement> conflicts)

      Description copied from interface: `Criterion`
      Value of a proposed assignment (including hard conflicts)
      Parameters:
        `assignment` - current assignment
        `value` - given value
        `conflicts` - values conflicting with the given value
      Returns:
        change in this criterion value when assigned

    - #### getValue

          public double getValue(Assignment<Exam,ExamPlacement> assignment,
                                 Collection<Exam> 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<Exam,ExamPlacement>`
      Overrides:
        `getValue` in class `AbstractCriterion<Exam,ExamPlacement>`
      Parameters:
        `assignment` - current assignment
        `variables` - list of problem variables
      Returns:
        value of the given variables

    - #### getName

          public String getName()

      Description copied from interface: `Criterion`
      Criterion name
      Specified by:
        `getName` in interface `Criterion<Exam,ExamPlacement>`
      Overrides:
        `getName` in class `AbstractCriterion<Exam,ExamPlacement>`
      Returns:
        name

    - #### getInfo

          public void getInfo(Assignment<Exam,ExamPlacement> assignment,
                              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<Exam,ExamPlacement>`
      Overrides:
        `getInfo` in class `ExamCriterion`
      Parameters:
        `assignment` - current assignment
        `info` - info table

    - #### toString

          public String toString(Assignment<Exam,ExamPlacement> assignment)

      Description copied from class: `AbstractCriterion`
      Simple text representation of the criterion and its value. E.g., X:x where X is the `AbstractCriterion.getAbbreviation()` and x is the current value `AbstractCriterion.getValue(Assignment)`.
      Specified by:
        `toString` in interface `Criterion<Exam,ExamPlacement>`
      Overrides:
        `toString` in class `AbstractCriterion<Exam,ExamPlacement>`
      Parameters:
        `assignment` - current assignment
      Returns:
        short string representation (e.g., PP:95% for period preference)