org.cpsolver.coursett.criteria

## Class SameSubpartBalancingPenalty

- java.lang.Object
- - org.cpsolver.ifs.criteria.AbstractCriterion<Lecture,Placement>
  - - org.cpsolver.coursett.criteria.TimetablingCriterion
    - - org.cpsolver.coursett.criteria.SameSubpartBalancingPenalty

- All Implemented Interfaces:
    CanHoldContext, HasAssignmentContext<Lecture,Placement,AbstractCriterion.ValueContext>, Criterion<Lecture,Placement>, ExtendedInfoProvider<Lecture,Placement>, InfoProvider<Lecture,Placement>, ModelListener<Lecture,Placement>
  Direct Known Subclasses:
    DepartmentBalancingPenalty

      public class SameSubpartBalancingPenalty
      extends TimetablingCriterion

  Same subpart balancing penalty. This criterion tries to spread classes of each scheduling subpart in time. It also includes all other spread in time distribution constraints. This criterion is counted by `SpreadConstraint`.
  Version:
    CourseTT 1.3 (University Course Timetabling)
    Copyright (C) 2006 - 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
    `SameSubpartBalancingPenalty()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `double[]` | `getBounds(Assignment<Lecture,Placement> assignment)` Bounds (minimum and maximum) estimate for the value
    `double[]` | `getBounds(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)` Value bounds (minimum and maximum) of the criterion on a part of the problem
    `String` | `getPlacementSelectionWeightName()`
    `double` | `getValue(Assignment<Lecture,Placement> assignment)` Current value of the criterion (optimization objective)
    `double` | `getValue(Assignment<Lecture,Placement> assignment, Collection<Lecture> variables)` Value of a part of the problem (given by the collection of variables)
    `double` | `getValue(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> 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).

    - ### Methods inherited from class org.cpsolver.coursett.criteria.TimetablingCriterion

      `configure, getPlacementSelectionAdjustmentsName, getPlacementSelectionWeight, getPlacementSelectionWeightDefault`

    - ### 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, getContext, getContext, getExtendedInfo, getInfo, getInfo, getModel, getName, getPerc, getPercentage, getPercRev, getValue, getValue, getValueUpdateType, getWeight, getWeightedBest, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightName, inc, inc, init, setAssignmentContextReference, setModel, setValueUpdateType, toString, variableAdded, variableRemoved`

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

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

- - ### Constructor Detail

    - #### SameSubpartBalancingPenalty

          public SameSubpartBalancingPenalty()

  - ### Method Detail

    - #### 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<Lecture,Placement>`
      Parameters:
        `config` - solver configuration
      Returns:
        default criterion weight value

    - #### getPlacementSelectionWeightName

          public String getPlacementSelectionWeightName()

      Overrides:
        `getPlacementSelectionWeightName` in class `TimetablingCriterion`

    - #### getValue

          public double getValue(Assignment<Lecture,Placement> assignment,
                                 Placement value,
                                 Set<Placement> 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<Lecture,Placement> assignment)

      Description copied from interface: `Criterion`
      Current value of the criterion (optimization objective)
      Specified by:
        `getValue` in interface `Criterion<Lecture,Placement>`
      Overrides:
        `getValue` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `assignment` - current assignment
      Returns:
        value of this criterion

    - #### getValue

          public double getValue(Assignment<Lecture,Placement> assignment,
                                 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>`
      Parameters:
        `assignment` - current assignment
        `variables` - list of problem variables
      Returns:
        value of the given variables

    - #### getBounds

          public double[] getBounds(Assignment<Lecture,Placement> assignment)

      Description copied from interface: `Criterion`
      Bounds (minimum and maximum) estimate for the value
      Specified by:
        `getBounds` in interface `Criterion<Lecture,Placement>`
      Overrides:
        `getBounds` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `assignment` - current assignment
      Returns:
        minimum and maximum of the criterion value

    - #### getBounds

          public double[] getBounds(Assignment<Lecture,Placement> assignment,
                                    Collection<Lecture> 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<Lecture,Placement>`
      Overrides:
        `getBounds` in class `AbstractCriterion<Lecture,Placement>`
      Parameters:
        `assignment` - current assignment
        `variables` - list of problem variables
      Returns:
        minimum and maximum of this criterion for the given sub-problem