Package org.optaplanner.core.api.domain.solution

## Annotation Type PlanningScore

-     @Target({METHOD,FIELD})
      @Retention(RUNTIME)
      public @interface PlanningScore

  Specifies that a property (or a field) on a `PlanningSolution` class holds the `Score` of that solution.

  This property can be null if the `PlanningSolution` is uninitialized.

  This property is modified by the `Solver`, every time when the `Score` of this `PlanningSolution` has been calculated.

- - ### Field Summary

    Fields
    Modifier and Type | Fields | Description
    --- | --- | ---
    `static int` | `NO_LEVEL_SIZE` | Workaround for annotation limitation in `bendableHardLevelsSize()` and `bendableSoftLevelsSize()`.

  - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element | Description
    --- | --- | ---
    `int` | `bendableHardLevelsSize` | Required for bendable scores.
    `int` | `bendableSoftLevelsSize` | Required for bendable scores.
    `Class<? extends ScoreDefinition>` | `scoreDefinitionClass` | Overrides the default determined `ScoreDefinition` to implement a custom one.

- - ### Field Detail

    - #### NO_LEVEL_SIZE

          static final int NO_LEVEL_SIZE

      Workaround for annotation limitation in `bendableHardLevelsSize()` and `bendableSoftLevelsSize()`.

  - ### Element Detail

    - #### bendableHardLevelsSize

          int bendableHardLevelsSize

      Required for bendable scores.

      For example with 3 hard levels, hard level 0 always outweighs hard level 1 which always outweighs hard level 2, which outweighs all the soft levels.

      Returns:
        0 or higher if the `Score` is a `AbstractBendableScore`, not used otherwise
      Default:
        -1

  - - #### bendableSoftLevelsSize

          int bendableSoftLevelsSize

      Required for bendable scores.

      For example with 3 soft levels, soft level 0 always outweighs soft level 1 which always outweighs soft level 2.

      Returns:
        0 or higher if the `Score` is a `AbstractBendableScore`, not used otherwise
      Default:
        -1

  - - #### scoreDefinitionClass

          Class<? extends ScoreDefinition> scoreDefinitionClass

      Overrides the default determined `ScoreDefinition` to implement a custom one.

      If this is not specified, the `ScoreDefinition` is automatically determined based on the return type of the annotated property (or field) on a `PlanningSolution` .

      Returns:
        `PlanningScore.NullScoreDefinition` when it is null (workaround for annotation limitation)
      Default:
        org.optaplanner.core.api.domain.solution.PlanningScore.NullScoreDefinition.class