Class BendableLongScoreHolder
- java.lang.Object
-
- org.optaplanner.core.api.score.holder.AbstractScoreHolder<BendableLongScore>
-
- org.optaplanner.core.api.score.buildin.bendablelong.BendableLongScoreHolder
-
- All Implemented Interfaces:
Serializable
,ScoreHolder<BendableLongScore>
public class BendableLongScoreHolder extends AbstractScoreHolder<BendableLongScore>
- See Also:
BendableLongScore
, 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 Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,Long>>
matchExecutorByNumberMap
protected Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BendableLongScore>>
matchExecutorByScoreMap
Slower thanmatchExecutorByNumberMap
-
Fields inherited from class org.optaplanner.core.api.score.holder.AbstractScoreHolder
constraintMatchEnabled, constraintMatchTotalMap, indictmentMap, zeroScore
-
-
Constructor Summary
Constructors Constructor Description BendableLongScoreHolder(boolean constraintMatchEnabled, int hardLevelsSize, int softLevelsSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
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)
Sets up aConstraintWeight
from theConstraintConfiguration
during initialization.BendableLongScore
extractScore(int initScore)
int
getHardLevelsSize()
long
getHardScore(int hardLevel)
int
getSoftLevelsSize()
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, long 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.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,Long>> matchExecutorByNumberMap
-
matchExecutorByScoreMap
protected final Map<org.kie.api.definition.rule.Rule,BiConsumer<org.kie.api.runtime.rule.RuleContext,BendableLongScore>> matchExecutorByScoreMap
Slower thanmatchExecutorByNumberMap
-
-
Method Detail
-
getHardLevelsSize
public int getHardLevelsSize()
-
getHardScore
public long getHardScore(int hardLevel)
-
getSoftLevelsSize
public int getSoftLevelsSize()
-
getSoftScore
public long getSoftScore(int softLevel)
-
configureConstraintWeight
public void configureConstraintWeight(org.kie.api.definition.rule.Rule rule, BendableLongScore constraintWeight)
Description copied from interface:ScoreHolder
Sets up aConstraintWeight
from theConstraintConfiguration
during initialization.- Specified by:
configureConstraintWeight
in interfaceScoreHolder<BendableLongScore>
- Overrides:
configureConstraintWeight
in classAbstractScoreHolder<BendableLongScore>
- 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, long 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, long[] hardWeightsMultiplier, long[] softWeightsMultiplier)
Penalize a match by theConstraintWeight
negated and multiplied with the specific weightMultiplier per score level. Slower thanpenalize(RuleContext, long)
.- 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)
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, long 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, long[] hardWeightsMultiplier, long[] softWeightsMultiplier)
Reward a match by theConstraintWeight
multiplied with the specific weightMultiplier per score level. Slower thanreward(RuleContext, long)
.- 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, long weightMultiplier)
Description copied from class:AbstractScoreHolder
For internal use only, use penalize() or reward() instead.- Overrides:
impactScore
in classAbstractScoreHolder<BendableLongScore>
- Parameters:
kcontext
- never nullweightMultiplier
- any
-
addHardConstraintMatch
public void addHardConstraintMatch(org.kie.api.runtime.rule.RuleContext kcontext, int hardLevel, long weight)
- Parameters:
kcontext
- never null, the magic variable in DRLhardLevel
-0 <= hardLevel <
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)
- Parameters:
kcontext
- never null, the magic variable in DRLsoftLevel
-0 <= softLevel <
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)
- Parameters:
kcontext
- never null, the magic variable in DRLhardWeights
- never null, array of lengthgetHardLevelsSize()
softWeights
- never null, array of lengthgetSoftLevelsSize()
-
extractScore
public BendableLongScore 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
-
-