Package org.optaplanner.core.api.score.buildin.hardsoftdouble

## Class HardSoftDoubleScoreHolder

- java.lang.Object
- - org.optaplanner.core.api.score.holder.AbstractScoreHolder<HardSoftDoubleScore>
  - - org.optaplanner.core.api.score.buildin.hardsoftdouble.HardSoftDoubleScoreHolder

- All Implemented Interfaces:
    `Serializable`, `ScoreHolder<HardSoftDoubleScore>`

      @Deprecated
      public class HardSoftDoubleScoreHolder
      extends AbstractScoreHolder<HardSoftDoubleScore>

  Deprecated.
  Double-based scores are deprecated as floating point numbers are not associative (A + B + C == C + B + A) and therefore they are not compatible with incremental score calculation. Use `HardSoftBigDecimalScoreHolder` or a scaled `HardSoftLongScoreHolder` instead.
  WARNING: NOT RECOMMENDED TO USE DUE TO ROUNDING ERRORS THAT CAUSE SCORE CORRUPTION. Use `HardSoftBigDecimalScoreHolder` instead.
  See Also:
    `HardSoftDoubleScore`, 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 | Description
    --- | --- | ---
    `protected double` | `hardScore` | Deprecated.
    `protected Map<org.kie.api.definition.rule.Rule,​BiConsumer<org.kie.api.runtime.rule.RuleContext,​Double>>` | `matchExecutorByNumberMap` | Deprecated.
    `protected Map<org.kie.api.definition.rule.Rule,​BiConsumer<org.kie.api.runtime.rule.RuleContext,​HardSoftDoubleScore>>` | `matchExecutorByScoreMap` | Deprecated. Slower than `matchExecutorByNumberMap`
    `protected double` | `softScore` | Deprecated.

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

      `constraintMatchEnabled, constraintMatchTotalMap, indictmentMap, zeroScore`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `HardSoftDoubleScoreHolder​(boolean constraintMatchEnabled)` | Deprecated.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addHardConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext, double hardWeight)` | Deprecated.
    `void` | `addMultiConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext, double hardWeight, double softWeight)` | Deprecated.
    `void` | `addSoftConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext, double softWeight)` | Deprecated.
    `void` | `configureConstraintWeight​(org.kie.api.definition.rule.Rule rule, HardSoftDoubleScore constraintWeight)` | Deprecated. Sets up a `ConstraintWeight` from the `ConstraintConfiguration` during initialization.
    `HardSoftDoubleScore` | `extractScore​(int initScore)` | Deprecated. Extracts the `Score`, calculated by the `KieSession` for `DroolsScoreDirector`.
    `double` | `getHardScore()` | Deprecated.
    `double` | `getSoftScore()` | Deprecated.
    `void` | `impactScore​(org.kie.api.runtime.rule.RuleContext kcontext)` | Deprecated. For internal use only, use penalize() or reward() instead.
    `void` | `penalize​(org.kie.api.runtime.rule.RuleContext kcontext)` | Deprecated. Penalize a match by the `ConstraintWeight` negated.
    `void` | `penalize​(org.kie.api.runtime.rule.RuleContext kcontext, double weightMultiplier)` | Deprecated. 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, double hardWeightMultiplier, double softWeightMultiplier)` | Deprecated. 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)` | Deprecated. Reward a match by the `ConstraintWeight`.
    `void` | `reward​(org.kie.api.runtime.rule.RuleContext kcontext, double weightMultiplier)` | Deprecated. Reward a match by the `ConstraintWeight` multiplied with the weightMultiplier for all score levels.
    `void` | `reward​(org.kie.api.runtime.rule.RuleContext kcontext, double hardWeightMultiplier, double softWeightMultiplier)` | Deprecated. 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, 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,​Double>> matchExecutorByNumberMap

      Deprecated.

    - #### matchExecutorByScoreMap

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

      Deprecated.
      Slower than `matchExecutorByNumberMap`

    - #### hardScore

          protected double hardScore

      Deprecated.

    - #### softScore

          protected double softScore

      Deprecated.

  - ### Constructor Detail

    - #### HardSoftDoubleScoreHolder

          public HardSoftDoubleScoreHolder​(boolean constraintMatchEnabled)

      Deprecated.

  - ### Method Detail

    - #### getHardScore

          public double getHardScore()

      Deprecated.

    - #### getSoftScore

          public double getSoftScore()

      Deprecated.

    - #### configureConstraintWeight

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

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

    - #### penalize

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

      Deprecated.
      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,
                               double weightMultiplier)

      Deprecated.
      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,
                               double hardWeightMultiplier,
                               double softWeightMultiplier)

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

    - #### reward

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

      Deprecated.
      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,
                             double weightMultiplier)

      Deprecated.
      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,
                             double hardWeightMultiplier,
                             double softWeightMultiplier)

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

    - #### impactScore

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

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

    - #### addHardConstraintMatch

          public void addHardConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext,
                                             double hardWeight)

      Deprecated.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardWeight` - higher is better, negative for a penalty, positive for a reward

    - #### addSoftConstraintMatch

          public void addSoftConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext,
                                             double softWeight)

      Deprecated.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `softWeight` - higher is better, negative for a penalty, positive for a reward

    - #### addMultiConstraintMatch

          public void addMultiConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext,
                                              double hardWeight,
                                              double softWeight)

      Deprecated.
      Parameters:
        `kcontext` - never null, the magic variable in DRL
        `hardWeight` - higher is better, negative for a penalty, positive for a reward
        `softWeight` - higher is better, negative for a penalty, positive for a reward

    - #### extractScore

          public HardSoftDoubleScore extractScore​(int initScore)

      Deprecated.
      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`