org.cpsolver.studentsct.online.expectations

## Class FractionallyUnbalancedWhenNoExpectations

- java.lang.Object
- - org.cpsolver.studentsct.online.expectations.PercentageOverExpected
  - - org.cpsolver.studentsct.online.expectations.FractionallyOverExpected
    - - org.cpsolver.studentsct.online.expectations.FractionallyUnbalancedWhenNoExpectations

- All Implemented Interfaces:
    OverExpectedCriterion

      public class FractionallyUnbalancedWhenNoExpectations
      extends FractionallyOverExpected

  Avoid unbalanced sections when there are no expectations. When there are expectations, the `FractionallyOverExpected` is used. If there are no expectations, sections that would have more students than given by the balance are marked as over-expected. The target fill ratio is proportional to the section size, a section is considered unbalanced, when the target fill is exceeded by more than OverExpected.Disbalance percentage (defaults to 0.1). Unlimited sections are also balanced, when General.BalanceUnlimited parameter is set to true (defaults to false).
  A class of an offering with no expectations is over-expected when the number of enrolled students (including the student in question) minus the target fill is over the OverExpected.Disbalance portion of the section limit.
  Version:
    StudentSct 1.3 (Student Sectioning)
    Copyright (C) 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.studentsct.online.expectations.PercentageOverExpected

      `PercentageOverExpected.Rounding`

    - ### Nested classes/interfaces inherited from interface org.cpsolver.studentsct.online.expectations.OverExpectedCriterion

      `OverExpectedCriterion.HasContext`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FractionallyUnbalancedWhenNoExpectations()`
    `FractionallyUnbalancedWhenNoExpectations(DataProperties config)`
    `FractionallyUnbalancedWhenNoExpectations(Double percentage)`
    `FractionallyUnbalancedWhenNoExpectations(Double percentage, Double maximum)`
    `FractionallyUnbalancedWhenNoExpectations(Double percentage, Double maximum, Double disbalance)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Double` | `getDisbalance()` Return allowed disbalance, defaults to 0.1 (parameter OverExpected.Disbalance)
    `double` | `getMaximum(Section section, double defaultValue)` Get maximum
    `double` | `getOverExpected(Assignment<Request,Enrollment> assignment, Section section, Request request)` Expectation penalty, to be minimized
    `boolean` | `isBalanceUnlimited()` Is balancing of unlimited sections enabled (parameter General.BalanceUnlimited)
    `String` | `toString()`

    - ### Methods inherited from class org.cpsolver.studentsct.online.expectations.FractionallyOverExpected

      `getMaximum, getMaximum`

    - ### Methods inherited from class org.cpsolver.studentsct.online.expectations.PercentageOverExpected

      `getEnrollment, getEnrollment, getExpected, getLimit, getLimit, getPercentage, hasExpectations, round, setPercentage`

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

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

- - ### Constructor Detail

    - #### FractionallyUnbalancedWhenNoExpectations

          public FractionallyUnbalancedWhenNoExpectations(DataProperties config)

    - #### FractionallyUnbalancedWhenNoExpectations

          public FractionallyUnbalancedWhenNoExpectations(Double percentage,
                                                          Double maximum,
                                                          Double disbalance)

    - #### FractionallyUnbalancedWhenNoExpectations

          public FractionallyUnbalancedWhenNoExpectations(Double percentage,
                                                          Double maximum)

    - #### FractionallyUnbalancedWhenNoExpectations

          public FractionallyUnbalancedWhenNoExpectations(Double percentage)

    - #### FractionallyUnbalancedWhenNoExpectations

          public FractionallyUnbalancedWhenNoExpectations()

  - ### Method Detail

    - #### getDisbalance

          public Double getDisbalance()

      Return allowed disbalance, defaults to 0.1 (parameter OverExpected.Disbalance)
      Returns:
        allowed disbalance

    - #### isBalanceUnlimited

          public boolean isBalanceUnlimited()

      Is balancing of unlimited sections enabled (parameter General.BalanceUnlimited)
      Returns:
        true if balancing of unlimited sections is enabled

    - #### getMaximum

          public double getMaximum(Section section,
                                   double defaultValue)

      Get maximum
      Parameters:
        `section` - given section
        `defaultValue` - default value (if not set)
      Returns:
        maximum

    - #### getOverExpected

          public double getOverExpected(Assignment<Request,Enrollment> assignment,
                                        Section section,
                                        Request request)

      Description copied from interface: `OverExpectedCriterion`
      Expectation penalty, to be minimized
      Specified by:
        `getOverExpected` in interface `OverExpectedCriterion`
      Overrides:
        `getOverExpected` in class `FractionallyOverExpected`
      Parameters:
        `assignment` - current assignment
        `section` - section in question
        `request` - student course request
      Returns:
        expectation penalty (typically 1.0 / number of subparts when over-expected, 0.0 otherwise)

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `FractionallyOverExpected`