org.cpsolver.exam.criteria

## Class LargeExamsPenalty

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

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

      public class LargeExamsPenalty
      extends ExamCriterion

  Front load penalty. I.e., large exam is discouraged to be placed on or after a certain period.
  largeSize: An exam is considered large, if its size is greater or equal to this number. Value -1 means all exams are small. It can be set by problem property Exams.LargeSize, or in the input xml file, property largeSize.
  largePeriod: Period index (number of periods multiplied by this number) for front load criteria for large exams. Can be set by problem property Exams.LargePeriod, or in the input xml file, property largePeriod.
  Weight of the front load criterion, i.e., a weight for assigning a large exam after large period can be set by problem property Exams.LargeWeight, or in the input xml file, property largeWeight.
  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
    `LargeExamsPenalty()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `configure(DataProperties properties)` Configure the criterion if needed
    `double[]` | `getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> variables)` Value bounds (minimum and maximum) of the criterion on a part of the problem
    `double` | `getLargePeriod()` Period index (number of periods multiplied by this number) for front load criteria for large exams.
    `int` | `getLargePeriodIndex()`
    `int` | `getLargeSize()` An exam is considered large, if its size is greater or equal to this large size.
    `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.
    `void` | `setLargePeriod(double largePeriod)` Period index (number of periods multiplied by this number) for front load criteria for large exams.
    `void` | `setLargeSize(int largeSize)` An exam is considered large, if its size is greater or equal to this large size.
    `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

      `getInfo, 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, getName, getPerc, getPercentage, getPercRev, getValue, 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

    - #### LargeExamsPenalty

          public LargeExamsPenalty()

  - ### Method Detail

    - #### 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

    - #### 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

    - #### 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

    - #### 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

    - #### getLargeSize

          public int getLargeSize()

      An exam is considered large, if its size is greater or equal to this large size. Value -1 means all exams are small. Can be set by problem property Exams.LargeSize, or in the input xml file, property largeSize)
      Returns:
        large size

    - #### setLargeSize

          public void setLargeSize(int largeSize)

      An exam is considered large, if its size is greater or equal to this large size. Value -1 means all exams are small. Can be set by problem property Exams.LargeSize, or in the input xml file, property largeSize)
      Parameters:
        `largeSize` - large size

    - #### getLargePeriod

          public double getLargePeriod()

      Period index (number of periods multiplied by this number) for front load criteria for large exams. Can be set by problem property Exams.LargePeriod, or in the input xml file, property largePeriod)
      Returns:
        large period

    - #### setLargePeriod

          public void setLargePeriod(double largePeriod)

      Period index (number of periods multiplied by this number) for front load criteria for large exams. Can be set by problem property Exams.LargePeriod, or in the input xml file, property largePeriod)
      Parameters:
        `largePeriod` - large period

    - #### getLargePeriodIndex

          public int getLargePeriodIndex()

    - #### 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

    - #### getBounds

          public double[] getBounds(Assignment<Exam,ExamPlacement> assignment,
                                    Collection<Exam> variables)

      Description copied from interface: `Criterion`
      Value bounds (minimum and maximum) of the criterion on a part of the problem
      Specified by:
        `getBounds` in interface `Criterion<Exam,ExamPlacement>`
      Overrides:
        `getBounds` in class `ExamCriterion`
      Parameters:
        `assignment` - current assignment
        `variables` - list of problem variables
      Returns:
        minimum and maximum of this criterion for the given sub-problem

    - #### 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)