Class BendableLongScoreHolderImpl
java.lang.Object
org.optaplanner.constraint.drl.holder.AbstractScoreHolder<BendableLongScore>
org.optaplanner.constraint.drl.holder.BendableLongScoreHolderImpl
- All Implemented Interfaces:
BendableLongScoreHolder
,ScoreHolder<BendableLongScore>
public final class BendableLongScoreHolderImpl
extends AbstractScoreHolder<BendableLongScore>
implements BendableLongScoreHolder
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.optaplanner.constraint.drl.holder.AbstractScoreHolder
AbstractScoreHolder.BigDecimalMatchExecutor, AbstractScoreHolder.ConstraintActivationUnMatchListener, AbstractScoreHolder.IntMatchExecutor, AbstractScoreHolder.LongMatchExecutor, AbstractScoreHolder.ScoreMatchExecutor<Score_ extends Score<Score_>>
-
Field Summary
Modifier and TypeFieldDescriptionprotected final Map<org.kie.api.definition.rule.Rule,
AbstractScoreHolder.LongMatchExecutor> protected final Map<org.kie.api.definition.rule.Rule,
AbstractScoreHolder.ScoreMatchExecutor<BendableLongScore>> Slower thanmatchExecutorByNumberMap
Fields inherited from class org.optaplanner.constraint.drl.holder.AbstractScoreHolder
constraintMatchEnabled, constraintMatchTotalMap, indictmentMap
-
Constructor Summary
ConstructorDescriptionBendableLongScoreHolderImpl
(boolean constraintMatchEnabled, int hardLevelsSize, int softLevelsSize) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addHardConstraintMatch
(org.kie.api.runtime.rule.RuleContext kcontext, int hardLevel, long weight) void
addMultiConstraintMatch
(org.kie.api.runtime.rule.RuleContext kcontext, long[] hardWeights, long[] softWeights) void
addSoftConstraintMatch
(org.kie.api.runtime.rule.RuleContext kcontext, int softLevel, long weight) void
configureConstraintWeight
(org.kie.api.definition.rule.Rule rule, BendableLongScore constraintWeight) extractScore
(int initScore) int
long
getHardScore
(int hardLevel) int
long
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
impactScore
(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) For internal use only, use penalize() or reward() instead.void
impactScore
(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal weightMultiplier) For internal use only, use penalize() or reward() instead.void
penalize
(org.kie.api.runtime.rule.RuleContext kcontext) Penalize a match by theConstraintWeight
negated.void
penalize
(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) Penalize a match by theConstraintWeight
negated and multiplied with the weightMultiplier for all score levels.void
penalize
(org.kie.api.runtime.rule.RuleContext kcontext, long[] hardWeightsMultiplier, long[] softWeightsMultiplier) Penalize a match by theConstraintWeight
negated and multiplied with the specific weightMultiplier per score level.void
reward
(org.kie.api.runtime.rule.RuleContext kcontext) Reward a match by theConstraintWeight
.void
reward
(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) Reward a match by theConstraintWeight
multiplied with the weightMultiplier for all score levels.void
reward
(org.kie.api.runtime.rule.RuleContext kcontext, long[] hardWeightsMultiplier, long[] softWeightsMultiplier) Reward a match by theConstraintWeight
multiplied with the specific weightMultiplier per score level.Methods inherited from class org.optaplanner.constraint.drl.holder.AbstractScoreHolder
buildScoreHolder, extractJustificationList, getConstraintMatchTotalMap, getIndictmentMap, isConstraintMatchEnabled, registerConstraintMatch
-
Field Details
-
matchExecutorByNumberMap
protected final Map<org.kie.api.definition.rule.Rule,AbstractScoreHolder.LongMatchExecutor> matchExecutorByNumberMap -
matchExecutorByScoreMap
protected final Map<org.kie.api.definition.rule.Rule,AbstractScoreHolder.ScoreMatchExecutor<BendableLongScore>> matchExecutorByScoreMapSlower thanmatchExecutorByNumberMap
-
-
Constructor Details
-
BendableLongScoreHolderImpl
public BendableLongScoreHolderImpl(boolean constraintMatchEnabled, int hardLevelsSize, int softLevelsSize)
-
-
Method Details
-
getHardLevelsSize
public int getHardLevelsSize()- Specified by:
getHardLevelsSize
in interfaceBendableLongScoreHolder
-
getHardScore
public long getHardScore(int hardLevel) -
getSoftLevelsSize
public int getSoftLevelsSize()- Specified by:
getSoftLevelsSize
in interfaceBendableLongScoreHolder
-
getSoftScore
public long getSoftScore(int softLevel) -
configureConstraintWeight
public void configureConstraintWeight(org.kie.api.definition.rule.Rule rule, BendableLongScore constraintWeight) - Overrides:
configureConstraintWeight
in classAbstractScoreHolder<BendableLongScore>
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext) Description copied from interface:ScoreHolder
Penalize a match by theConstraintWeight
negated.- Specified by:
penalize
in interfaceScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never null, the magic variable in DRL
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) Description copied from interface:BendableLongScoreHolder
Penalize a match by theConstraintWeight
negated and multiplied with the weightMultiplier for all score levels.- Specified by:
penalize
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLweightMultiplier
- at least 0
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext, long[] hardWeightsMultiplier, long[] softWeightsMultiplier) Description copied from interface:BendableLongScoreHolder
Penalize a match by theConstraintWeight
negated and multiplied with the specific weightMultiplier per score level. Slower thanBendableLongScoreHolder.penalize(RuleContext, long)
.- Specified by:
penalize
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLhardWeightsMultiplier
- elements at least 0softWeightsMultiplier
- elements at least 0
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext) Description copied from interface:ScoreHolder
Reward a match by theConstraintWeight
.- Specified by:
reward
in interfaceScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never null, the magic variable in DRL
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) Description copied from interface:BendableLongScoreHolder
Reward a match by theConstraintWeight
multiplied with the weightMultiplier for all score levels.- Specified by:
reward
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLweightMultiplier
- at least 0
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext, long[] hardWeightsMultiplier, long[] softWeightsMultiplier) Description copied from interface:BendableLongScoreHolder
Reward a match by theConstraintWeight
multiplied with the specific weightMultiplier per score level. Slower thanBendableLongScoreHolder.reward(RuleContext, long)
.- Specified by:
reward
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLhardWeightsMultiplier
- elements at least 0softWeightsMultiplier
- 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 classAbstractScoreHolder<BendableLongScore>
- 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.- Specified by:
impactScore
in classAbstractScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never nullweightMultiplier
- any
-
impactScore
public void impactScore(org.kie.api.runtime.rule.RuleContext kcontext, long weightMultiplier) Description copied from class:AbstractScoreHolder
For internal use only, use penalize() or reward() instead.- Specified by:
impactScore
in interfaceBendableLongScoreHolder
- Specified by:
impactScore
in classAbstractScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never nullweightMultiplier
- any
-
impactScore
Description copied from class:AbstractScoreHolder
For internal use only, use penalize() or reward() instead.- Specified by:
impactScore
in classAbstractScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never nullweightMultiplier
- any
-
addHardConstraintMatch
public void addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, int hardLevel, long weight) - Specified by:
addHardConstraintMatch
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLhardLevel
-0 <= hardLevel <
BendableLongScoreHolder.getHardLevelsSize()
. ThescoreLevel
ishardLevel
for hard levels andsoftLevel + 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, long weight) - Specified by:
addSoftConstraintMatch
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLsoftLevel
-0 <= softLevel <
BendableLongScoreHolder.getSoftLevelsSize()
. ThescoreLevel
ishardLevel
for hard levels andsoftLevel + 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, long[] hardWeights, long[] softWeights) - Specified by:
addMultiConstraintMatch
in interfaceBendableLongScoreHolder
- Parameters:
kcontext
- never null, the magic variable in DRLhardWeights
- never null, array of lengthBendableLongScoreHolder.getHardLevelsSize()
softWeights
- never null, array of lengthBendableLongScoreHolder.getSoftLevelsSize()
-
extractScore
- Specified by:
extractScore
in classAbstractScoreHolder<BendableLongScore>
-