Class HardMediumSoftBigDecimalScoreHolder
- java.lang.Object
-
- org.optaplanner.core.api.score.holder.AbstractScoreHolder<HardMediumSoftBigDecimalScore>
-
- org.optaplanner.core.api.score.buildin.hardmediumsoftbigdecimal.HardMediumSoftBigDecimalScoreHolder
-
- All Implemented Interfaces:
Serializable
,ScoreHolder<HardMediumSoftBigDecimalScore>
public class HardMediumSoftBigDecimalScoreHolder extends AbstractScoreHolder<HardMediumSoftBigDecimalScore>
- See Also:
HardMediumSoftBigDecimalScore
, 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 BigDecimal
hardScore
protected Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BigDecimal>>
matchExecutorByNumberMap
protected Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,HardMediumSoftBigDecimalScore>>
matchExecutorByScoreMap
Slower thanmatchExecutorByNumberMap
protected BigDecimal
mediumScore
protected BigDecimal
softScore
-
Fields inherited from class org.optaplanner.core.api.score.holder.AbstractScoreHolder
constraintMatchEnabled, constraintMatchTotalMap, indictmentMap, zeroScore
-
-
Constructor Summary
Constructors Constructor Description HardMediumSoftBigDecimalScoreHolder(boolean constraintMatchEnabled)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeight)
Add a hard constraint of specified weighting.void
addMediumConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal mediumWeight)
Add a medium level constraint of specified weighting.void
addMultiConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeight, BigDecimal mediumWeight, BigDecimal softWeight)
void
addSoftConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal softWeight)
Add a soft constraint match of specified weighting.void
configureConstraintWeight(org.kie.api.definition.rule.Rule rule, HardMediumSoftBigDecimalScore constraintWeight)
Sets up aConstraintWeight
from theConstraintConfiguration
during initialization.HardMediumSoftBigDecimalScore
extractScore(int initScore)
BigDecimal
getHardScore()
BigDecimal
getMediumScore()
BigDecimal
getSoftScore()
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, 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, BigDecimal 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, BigDecimal hardWeightMultiplier, BigDecimal mediumWeightMultiplier, BigDecimal softWeightMultiplier)
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, BigDecimal weightMultiplier)
Reward a match by theConstraintWeight
multiplied with the weightMultiplier for all score levels.void
reward(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeightMultiplier, BigDecimal mediumWeightMultiplier, BigDecimal softWeightMultiplier)
Reward a match by theConstraintWeight
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
-
-
-
-
Field Detail
-
matchExecutorByNumberMap
protected final Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BigDecimal>> matchExecutorByNumberMap
-
matchExecutorByScoreMap
protected final Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,HardMediumSoftBigDecimalScore>> matchExecutorByScoreMap
Slower thanmatchExecutorByNumberMap
-
hardScore
protected BigDecimal hardScore
-
mediumScore
protected BigDecimal mediumScore
-
softScore
protected BigDecimal softScore
-
-
Method Detail
-
getHardScore
public BigDecimal getHardScore()
-
getMediumScore
public BigDecimal getMediumScore()
-
getSoftScore
public BigDecimal getSoftScore()
-
configureConstraintWeight
public void configureConstraintWeight(org.kie.api.definition.rule.Rule rule, HardMediumSoftBigDecimalScore constraintWeight)
Description copied from interface:ScoreHolder
Sets up aConstraintWeight
from theConstraintConfiguration
during initialization.- Specified by:
configureConstraintWeight
in interfaceScoreHolder<HardMediumSoftBigDecimalScore>
- Overrides:
configureConstraintWeight
in classAbstractScoreHolder<HardMediumSoftBigDecimalScore>
- Parameters:
rule
- never nullconstraintWeight
- never null, withScore.getInitScore()
equal to 0.
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext)
Penalize a match by theConstraintWeight
negated.- Parameters:
kcontext
- never null, the magic variable in DRL
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal weightMultiplier)
Penalize a match by theConstraintWeight
negated and multiplied with the weightMultiplier for all score levels.- Parameters:
kcontext
- never null, the magic variable in DRLweightMultiplier
- at least 0
-
penalize
public void penalize(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeightMultiplier, BigDecimal mediumWeightMultiplier, BigDecimal softWeightMultiplier)
Penalize a match by theConstraintWeight
negated and multiplied with the specific weightMultiplier per score level. Slower thanpenalize(RuleContext, BigDecimal)
.- Parameters:
kcontext
- never null, the magic variable in DRLhardWeightMultiplier
- at least 0mediumWeightMultiplier
- at least 0softWeightMultiplier
- at least 0
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext)
Reward a match by theConstraintWeight
.- Parameters:
kcontext
- never null, the magic variable in DRL
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal weightMultiplier)
Reward a match by theConstraintWeight
multiplied with the weightMultiplier for all score levels.- Parameters:
kcontext
- never null, the magic variable in DRLweightMultiplier
- at least 0
-
reward
public void reward(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeightMultiplier, BigDecimal mediumWeightMultiplier, BigDecimal softWeightMultiplier)
Reward a match by theConstraintWeight
multiplied with the specific weightMultiplier per score level. Slower thanreward(RuleContext, BigDecimal)
.- Parameters:
kcontext
- never null, the magic variable in DRLhardWeightMultiplier
- at least 0mediumWeightMultiplier
- at least 0softWeightMultiplier
- 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<HardMediumSoftBigDecimalScore>
- Parameters:
kcontext
- never null
-
impactScore
public void impactScore(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal weightMultiplier)
Description copied from class:AbstractScoreHolder
For internal use only, use penalize() or reward() instead.- Overrides:
impactScore
in classAbstractScoreHolder<HardMediumSoftBigDecimalScore>
- Parameters:
kcontext
- never nullweightMultiplier
- any
-
addHardConstraintMatch
public void addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeight)
Add a hard constraint of specified weighting. This is typically used in Drools scoring to add a hard constraint match (negative value to indicate an infeasible solution).- Parameters:
kcontext
- never null, the magic variable in DRLhardWeight
- never null, higher is better, negative for a penalty, positive for a reward
-
addMediumConstraintMatch
public void addMediumConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal mediumWeight)
Add a medium level constraint of specified weighting. This is typically used in Drools scoring to add a medium priority constraint match.- Parameters:
kcontext
- never null, the magic variable in DRLmediumWeight
- never null, higher is better, negative for a penalty, positive for a reward
-
addSoftConstraintMatch
public void addSoftConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal softWeight)
Add a soft constraint match of specified weighting. This is typically used in Drools scoring to add a low priority constraint match.- Parameters:
kcontext
- never null, the magic variable in DRLsoftWeight
- never null, higher is better, negative for a penalty, positive for a reward
-
addMultiConstraintMatch
public void addMultiConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, BigDecimal hardWeight, BigDecimal mediumWeight, BigDecimal softWeight)
- Parameters:
kcontext
- never null, the magic variable in DRLhardWeight
- never null, higher is better, negative for a penalty, positive for a rewardmediumWeight
- never null, higher is better, negative for a penalty, positive for a rewardsoftWeight
- never null, higher is better, negative for a penalty, positive for a reward
-
extractScore
public HardMediumSoftBigDecimalScore extractScore(int initScore)
Description copied from interface:ScoreHolder
Extracts theScore
, calculated by theKieSession
forDroolsScoreDirector
.Should not be called directly, use
ScoreDirector.calculateScore()
instead.- Parameters:
initScore
-<= 0
, managed by OptaPlanner, needed as a parameter in theScore
's creation method, seeScore.getInitScore()
- Returns:
- never null, the
Score
of the workingPlanningSolution
-
-