Class BendableScoreHolder

    • Field Detail

      • matchExecutorByNumberMap

        protected final Map<org.kie.api.definition.rule.Rule,​BiConsumer<org.kie.api.runtime.rule.RuleContext,​Integer>> 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)
      • 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,
                                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()