org.optaplanner.core.api.score.buildin.bendable

## Class BendableScoreHolder

- java.lang.Object
- - org.optaplanner.core.api.score.holder.AbstractScoreHolder<BendableScore>
  - - org.optaplanner.core.api.score.buildin.bendable.BendableScoreHolder

- All Implemented Interfaces:
    Serializable, ScoreHolder<BendableScore>

      public class BendableScoreHolder
      extends AbstractScoreHolder<BendableScore>

  See Also:
    `BendableScore`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.optaplanner.core.api.score.holder.AbstractScoreHolder

      `AbstractScoreHolder.ConstraintActivationUnMatchListener`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,Integer>>` | `matchExecutorByNumberMap`
    `protected Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BendableScore>>` | `matchExecutorByScoreMap` Slower than `matchExecutorByNumberMap`

    - ### Fields inherited from class org.optaplanner.core.api.score.holder.AbstractScoreHolder

      `constraintMatchEnabled, constraintMatchTotalMap, indictmentMap, zeroScore`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BendableScoreHolder(boolean constraintMatchEnabled, int hardLevelsSize, int softLevelsSize)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, int hardLevel, int weight)`
    `void` | `addMultiConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, int[] hardWeights, int[] softWeights)`
    `void` | `addSoftConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, int softLevel, int weight)`
    `void` | `configureConstraintWeight(org.kie.api.definition.rule.Rule rule, BendableScore constraintWeight)` Sets up a `ConstraintWeight` from the `ConstraintConfiguration` during initialization.
    `BendableScore` | `extractScore(int initScore)` Extracts the `Score`, calculated by the `KieSession` for `DroolsScoreDirector`.
    `int` | `getHardLevelsSize()`
    `int` | `getHardScore(int hardLevel)`
    `int` | `getSoftLevelsSize()`
    `int` | `getSoftScore(int softLevel)`
    `void` | `impactScore(org.kie.api.runtime.rule.RuleContext kcontext)` For internal use only, use penalize() or reward() instead.
    `void` | `impactScore(org.kie.api.runtime.rule.RuleContext kcontext, int weightMultiplier)` For internal use only, use penalize() or reward() instead.
    `void` | `penalize(org.kie.api.runtime.rule.RuleContext kcontext)` Penalize a match by the `ConstraintWeight` negated.
    `void` | `penalize(org.kie.api.runtime.rule.RuleContext kcontext, int weightMultiplier)` Penalize a match by the `ConstraintWeight` negated and multiplied with the weightMultiplier for all score levels.
    `void` | `penalize(org.kie.api.runtime.rule.RuleContext kcontext, int[] hardWeightsMultiplier, int[] softWeightsMultiplier)` Penalize a match by the `ConstraintWeight` negated and multiplied with the specific weightMultiplier per score level.
    `void` | `reward(org.kie.api.runtime.rule.RuleContext kcontext)` Reward a match by the `ConstraintWeight`.
    `void` | `reward(org.kie.api.runtime.rule.RuleContext kcontext, int weightMultiplier)` Reward a match by the `ConstraintWeight` multiplied with the weightMultiplier for all score levels.
    `void` | `reward(org.kie.api.runtime.rule.RuleContext kcontext, int[] hardWeightsMultiplier, int[] softWeightsMultiplier)` Reward a match by the `ConstraintWeight` multiplied with the specific weightMultiplier per score level.

    - ### Methods inherited from class org.optaplanner.core.api.score.holder.AbstractScoreHolder

      `extractJustificationList, getConstraintMatchTotalMap, getConstraintMatchTotals, getIndictmentMap, impactScore, impactScore, isConstraintMatchEnabled, registerConstraintMatch, setJustificationListConverter`

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

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

- - ### Field Detail

    - #### matchExecutorByNumberMap

          protected final Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,Integer>> matchExecutorByNumberMap

    - #### matchExecutorByScoreMap

          protected final Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BendableScore>> matchExecutorByScoreMap

      Slower than `matchExecutorByNumberMap`

  - ### Constructor Detail

    - #### BendableScoreHolder

          public BendableScoreHolder(boolean constraintMatchEnabled,
                                     int hardLevelsSize,
                                     int softLevelsSize)

  - ### Method Detail

    - #### getHardLevelsSize

          public int getHardLevelsSize()

    - #### getHardScore

          public int getHardScore(int hardLevel)

    - #### getSoftLevelsSize

          public int getSoftLevelsSize()

    - #### getSoftScore

          public int getSoftScore(int softLevel)

    - #### configureConstraintWeight

          public void configureConstraintWeight(org.kie.api.definition.rule.Rule rule,
                                                BendableScore constraintWeight)

      Description copied from interface: `ScoreHolder`
      Sets up a `ConstraintWeight` from the `ConstraintConfiguration` during initialization.
      Specified by:
        `configureConstraintWeight` in interface `ScoreHolder<BendableScore>`
      Overrides:
        `configureConstraintWeight` in class `AbstractScoreHolder<BendableScore>`
      Parameters:
        `rule` - never null
        `constraintWeight` - never null, with `Score.getInitScore()` equal to 0.

    - #### penalize

          public void penalize(org.kie.api.runtime.rule.RuleContext kcontext)

      Penalize a match by the `ConstraintWeight` negated.
      Parameters:
        `kcontext` - never null, the magic variable in DRL

    - #### penalize

          public void penalize(org.kie.api.runtime.rule.RuleContext kcontext,
                               int weightMultiplier)

      Penalize a match by the `ConstraintWeight` negated and multiplied with the weightMultiplier for all score levels.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `weightMultiplier` - at least 0

    - #### penalize

          public void penalize(org.kie.api.runtime.rule.RuleContext kcontext,
                               int[] hardWeightsMultiplier,
                               int[] softWeightsMultiplier)

      Penalize a match by the `ConstraintWeight` negated and multiplied with the specific weightMultiplier per score level. Slower than `penalize(RuleContext, int)`.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardWeightsMultiplier` - elements at least 0
        `softWeightsMultiplier` - elements at least 0

    - #### reward

          public void reward(org.kie.api.runtime.rule.RuleContext kcontext)

      Reward a match by the `ConstraintWeight`.
      Parameters:
        `kcontext` - never null, the magic variable in DRL

    - #### reward

          public void reward(org.kie.api.runtime.rule.RuleContext kcontext,
                             int weightMultiplier)

      Reward a match by the `ConstraintWeight` multiplied with the weightMultiplier for all score levels.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `weightMultiplier` - at least 0

    - #### reward

          public void reward(org.kie.api.runtime.rule.RuleContext kcontext,
                             int[] hardWeightsMultiplier,
                             int[] softWeightsMultiplier)

      Reward a match by the `ConstraintWeight` multiplied with the specific weightMultiplier per score level. Slower than `reward(RuleContext, int)`.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardWeightsMultiplier` - elements at least 0
        `softWeightsMultiplier` - elements at least 0

    - #### impactScore

          public void impactScore(org.kie.api.runtime.rule.RuleContext kcontext)

      Description copied from class: `AbstractScoreHolder`
      For internal use only, use penalize() or reward() instead.
      Overrides:
        `impactScore` in class `AbstractScoreHolder<BendableScore>`
      Parameters:
        `kcontext` - never null

    - #### impactScore

          public void impactScore(org.kie.api.runtime.rule.RuleContext kcontext,
                                  int weightMultiplier)

      Description copied from class: `AbstractScoreHolder`
      For internal use only, use penalize() or reward() instead.
      Overrides:
        `impactScore` in class `AbstractScoreHolder<BendableScore>`
      Parameters:
        `kcontext` - never null
        `weightMultiplier` - any

    - #### addHardConstraintMatch

          public void addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext,
                                             int hardLevel,
                                             int weight)

      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardLevel` - `0 <= hardLevel <` `getHardLevelsSize()`. The `scoreLevel` is `hardLevel` for hard levels and `softLevel + hardLevelSize` for soft levels.
        `weight` - higher is better, negative for a penalty, positive for a reward

    - #### addSoftConstraintMatch

          public void addSoftConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext,
                                             int softLevel,
                                             int weight)

      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `softLevel` - `0 <= softLevel <` `getSoftLevelsSize()`. The `scoreLevel` is `hardLevel` for hard levels and `softLevel + hardLevelSize` for soft levels.
        `weight` - higher is better, negative for a penalty, positive for a reward

    - #### addMultiConstraintMatch

          public void addMultiConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext,
                                              int[] hardWeights,
                                              int[] softWeights)

      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardWeights` - never null, array of length `getHardLevelsSize()`
        `softWeights` - never null, array of length `getSoftLevelsSize()`

    - #### extractScore

          public BendableScore extractScore(int initScore)

      Description copied from interface: `ScoreHolder`
      Extracts the `Score`, calculated by the `KieSession` for `DroolsScoreDirector`.

      Should not be called directly, use `ScoreDirector.calculateScore()` instead.

      Parameters:
        `initScore` - `<= 0`, managed by OptaPlanner, needed as a parameter in the `Score`'s creation method, see `Score.getInitScore()`
      Returns:
        never null, the `Score` of the working `PlanningSolution`

Copyright © 2006–2021 JBoss by Red Hat. All rights reserved.