Interface ScoreDefinition<Score_ extends Score<Score_>>
-
- Type Parameters:
Score_- theScoretype
- All Known Subinterfaces:
PlanningScore.NullScoreDefinition
- All Known Implementing Classes:
AbstractBendableScoreDefinition,AbstractScoreDefinition,BendableBigDecimalScoreDefinition,BendableLongScoreDefinition,BendableScoreDefinition,HardMediumSoftBigDecimalScoreDefinition,HardMediumSoftLongScoreDefinition,HardMediumSoftScoreDefinition,HardSoftBigDecimalScoreDefinition,HardSoftLongScoreDefinition,HardSoftScoreDefinition,SimpleBigDecimalScoreDefinition,SimpleLongScoreDefinition,SimpleScoreDefinition
public interface ScoreDefinition<Score_ extends Score<Score_>>- See Also:
AbstractScoreDefinition,HardSoftScoreDefinition
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Score_buildOptimisticBound(InitializingScoreTrend initializingScoreTrend, Score_ score)Score_buildPessimisticBound(InitializingScoreTrend initializingScoreTrend, Score_ score)AbstractScoreHolder<Score_>buildScoreHolder(boolean constraintMatchEnabled)Used byDroolsScoreDirector.ScoreInliner<Score_>buildScoreInliner(Map<Constraint,Score_> constraintToWeightMap, boolean constraintMatchEnabled)Used byBavetConstraintFactoryandDroolsConstraintFactory.Score_divideBySanitizedDivisor(Score_ dividend, Score_ divisor)ReturnScorewhose every level is the result of dividing the matching levels in this and the divisor.StringformatScore(Score_ score)Score_fromLevelNumbers(int initScore, Number[] levelNumbers)The opposite ofScore.toLevelNumbers().intgetFeasibleLevelsSize()Returns the number of levels ofScore.toLevelNumbers().StringgetInitLabel()Returns the label forScore.getInitScore().String[]getLevelLabels()Returns a label for each score level.intgetLevelsSize()Returns the length ofScore.toLevelNumbers()for everyScoreof this definition.Score_getOneSoftestScore()The score that represents the softest possible one.Class<Score_>getScoreClass()Score_getZeroScore()The score that represents zero.booleanisCompatibleArithmeticArgument(Score score)default booleanisNegativeOrZero(Score_ score)default booleanisPositiveOrZero(Score_ score)Score_parseScore(String scoreString)
-
-
-
Method Detail
-
getInitLabel
String getInitLabel()
Returns the label forScore.getInitScore().- Returns:
- never null
- See Also:
getLevelLabels()
-
getLevelsSize
int getLevelsSize()
Returns the length ofScore.toLevelNumbers()for everyScoreof this definition. For example: returns 2 onHardSoftScoreDefinition.- Returns:
- at least 1
-
getFeasibleLevelsSize
int getFeasibleLevelsSize()
Returns the number of levels ofScore.toLevelNumbers(). that are used to determineScore.isFeasible().- Returns:
- at least 0, at most
getLevelsSize()
-
getLevelLabels
String[] getLevelLabels()
Returns a label for each score level. Each label includes the suffix "score" and must start in lower case. For example: returns{"hard score", "soft score "}onHardSoftScoreDefinition.It does not include the
getInitLabel().- Returns:
- never null, array with length of
getLevelsSize(), each element is never null
-
getScoreClass
Class<Score_> getScoreClass()
Returns theClassof the actualScoreimplementation. For example: returnsHardSoftScore.classonHardSoftScoreDefinition.- Returns:
- never null
-
getZeroScore
Score_ getZeroScore()
The score that represents zero.- Returns:
- never null
-
getOneSoftestScore
Score_ getOneSoftestScore()
The score that represents the softest possible one.- Returns:
- never null
-
isPositiveOrZero
default boolean isPositiveOrZero(Score_ score)
- Parameters:
score- never null- Returns:
- true if the score is higher or equal to
getZeroScore()
-
isNegativeOrZero
default boolean isNegativeOrZero(Score_ score)
- Parameters:
score- never null- Returns:
- true if the score is lower or equal to
getZeroScore()
-
formatScore
String formatScore(Score_ score)
- Parameters:
score- never null- Returns:
- never null
- See Also:
parseScore(String)
-
parseScore
Score_ parseScore(String scoreString)
- Parameters:
scoreString- never null- Returns:
- never null
- See Also:
formatScore(Score),ScoreUtils.parseScore(Class, String)
-
fromLevelNumbers
Score_ fromLevelNumbers(int initScore, Number[] levelNumbers)
The opposite ofScore.toLevelNumbers().- Parameters:
initScore-<= 0, managed by OptaPlanner, needed as a parameter in theScore's creation method, seeScore.getInitScore()levelNumbers- never null- Returns:
- never null
-
buildScoreInliner
ScoreInliner<Score_> buildScoreInliner(Map<Constraint,Score_> constraintToWeightMap, boolean constraintMatchEnabled)
Used byBavetConstraintFactoryandDroolsConstraintFactory.- Parameters:
constraintToWeightMap- never null, no zero-weight constraintsconstraintMatchEnabled- true ifInnerScoreDirector.isConstraintMatchEnabled()should be true- Returns:
- never null
-
buildScoreHolder
AbstractScoreHolder<Score_> buildScoreHolder(boolean constraintMatchEnabled)
Used byDroolsScoreDirector.- Parameters:
constraintMatchEnabled- true ifInnerScoreDirector.isConstraintMatchEnabled()should be true- Returns:
- never null
-
buildOptimisticBound
Score_ buildOptimisticBound(InitializingScoreTrend initializingScoreTrend, Score_ score)
Builds aScorewhich is equal or better than any otherScorewith more variables initialized (while the already variables don't change).- Parameters:
initializingScoreTrend- never null, withInitializingScoreTrend.getLevelsSize()equal togetLevelsSize().score- never null, withScore.getInitScore()0.- Returns:
- never null
-
buildPessimisticBound
Score_ buildPessimisticBound(InitializingScoreTrend initializingScoreTrend, Score_ score)
Builds aScorewhich is equal or worse than any otherScorewith more variables initialized (while the already variables don't change).- Parameters:
initializingScoreTrend- never null, withInitializingScoreTrend.getLevelsSize()equal togetLevelsSize().score- never null, withScore.getInitScore()0- Returns:
- never null
-
divideBySanitizedDivisor
Score_ divideBySanitizedDivisor(Score_ dividend, Score_ divisor)
ReturnScorewhose every level is the result of dividing the matching levels in this and the divisor. When rounding is needed, it is floored (as defined byMath.floor(double)).If any of the levels in the divisor are equal to zero, the method behaves as if they were equal to one instead.
- Parameters:
divisor- value by which this Score is to be divided- Returns:
- this / divisor
-
isCompatibleArithmeticArgument
boolean isCompatibleArithmeticArgument(Score score)
- Parameters:
score- never null- Returns:
- true if the otherScore is accepted as a parameter of
Score.add(Score),Score.subtract(Score)andComparable.compareTo(Object)for scores of this score definition.
-
-