org.cpsolver.studentsct.online.expectations

## Class AvoidUnbalancedWhenNoExpectations

- java.lang.Object
- - org.cpsolver.studentsct.online.expectations.PercentageOverExpected
  - - org.cpsolver.studentsct.online.expectations.AvoidUnbalancedWhenNoExpectations

- All Implemented Interfaces:
    OverExpectedCriterion

      public class AvoidUnbalancedWhenNoExpectations
      extends PercentageOverExpected

  Avoid unbalanced sections when there are no expectations. When there are expectations, the `PercentageOverExpected` 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
    `AvoidUnbalancedWhenNoExpectations()`
    `AvoidUnbalancedWhenNoExpectations(DataProperties config)`
    `AvoidUnbalancedWhenNoExpectations(Double percentage)`
    `AvoidUnbalancedWhenNoExpectations(Double percentage, 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` | `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.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

    - #### AvoidUnbalancedWhenNoExpectations

          public AvoidUnbalancedWhenNoExpectations(DataProperties config)

    - #### AvoidUnbalancedWhenNoExpectations

          public AvoidUnbalancedWhenNoExpectations(Double percentage,
                                                   Double disbalance)

    - #### AvoidUnbalancedWhenNoExpectations

          public AvoidUnbalancedWhenNoExpectations(Double percentage)

    - #### AvoidUnbalancedWhenNoExpectations

          public AvoidUnbalancedWhenNoExpectations()

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

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