Package org.optaplanner.core.impl.score
Class DefaultScoreExplanation<Solution_,Score_ extends Score<Score_>>
java.lang.Object
org.optaplanner.core.impl.score.DefaultScoreExplanation<Solution_,Score_>
- All Implemented Interfaces:
ScoreExplanation<Solution_,
Score_>
public final class DefaultScoreExplanation<Solution_,Score_ extends Score<Score_>>
extends Object
implements ScoreExplanation<Solution_,Score_>
-
Method Summary
Modifier and TypeMethodDescriptionexplainScore
(Score_ workingScore, Collection<ConstraintMatchTotal<Score_>> constraintMatchTotalCollection, Collection<Indictment<Score_>> indictmentCollection) explainScore
(Score_ workingScore, Collection<ConstraintMatchTotal<Score_>> constraintMatchTotalCollection, Collection<Indictment<Score_>> indictmentCollection, int indictmentLimit, int constraintMatchLimit) Explains the impact of each planning entity or problem fact on theScore
.Explains theScore
ofScoreExplanation.getScore()
for all constraints.getScore()
Return theScore
being explained.Retrieve thePlanningSolution
that the score being explained comes from.Returns a diagnostic text that explains theScore
through theConstraintMatch
API to identify which constraints or planning entities cause that score quality.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.optaplanner.core.api.score.ScoreExplanation
getJustificationList
-
Method Details
-
explainScore
public static <Score_ extends Score<Score_>> String explainScore(Score_ workingScore, Collection<ConstraintMatchTotal<Score_>> constraintMatchTotalCollection, Collection<Indictment<Score_>> indictmentCollection) -
explainScore
public static <Score_ extends Score<Score_>> String explainScore(Score_ workingScore, Collection<ConstraintMatchTotal<Score_>> constraintMatchTotalCollection, Collection<Indictment<Score_>> indictmentCollection, int indictmentLimit, int constraintMatchLimit) -
getSolution
Description copied from interface:ScoreExplanation
Retrieve thePlanningSolution
that the score being explained comes from.- Specified by:
getSolution
in interfaceScoreExplanation<Solution_,
Score_ extends Score<Score_>> - Returns:
- never null
-
getScore
Description copied from interface:ScoreExplanation
Return theScore
being explained. If the specificScore
type used by thePlanningSolution
is required, callScoreExplanation.getSolution()
and retrieve it from there. -
getConstraintMatchTotalMap
Description copied from interface:ScoreExplanation
Explains theScore
ofScoreExplanation.getScore()
by splitting it up perConstraint
.The sum of
ConstraintMatchTotal.getScore()
equalsScoreExplanation.getScore()
.- Specified by:
getConstraintMatchTotalMap
in interfaceScoreExplanation<Solution_,
Score_ extends Score<Score_>> - Returns:
- never null, the key is the
constraintId
(to create one, useConstraintMatchTotal.composeConstraintId(String, String)
). - See Also:
-
getJustificationList
Description copied from interface:ScoreExplanation
Explains theScore
ofScoreExplanation.getScore()
for all constraints. The return value of this method is determined by several factors:-
With Constraint Streams, the user has an option to provide a custom justification mapping,
implementing
ConstraintJustification
. If provided, everyConstraintMatch
of such constraint will be associated with this custom justification class. Every constraint not associated with a custom justification class will be associated withDefaultConstraintJustification
. -
With
ConstraintMatchAwareIncrementalScoreCalculator
, everyConstraintMatch
will be associated with the justification class that the user created it with. -
With score DRL, every
ConstraintMatch
will be associated withDefaultConstraintJustification
.
- Specified by:
getJustificationList
in interfaceScoreExplanation<Solution_,
Score_ extends Score<Score_>> - Returns:
- never null, all constraint matches
- See Also:
-
With Constraint Streams, the user has an option to provide a custom justification mapping,
implementing
-
getIndictmentMap
Description copied from interface:ScoreExplanation
Explains the impact of each planning entity or problem fact on theScore
. AnIndictment
is basically the inverse of aConstraintMatchTotal
: it is aScore
total for any of theindicted objects
.The sum of
ConstraintMatchTotal.getScore()
differs fromScoreExplanation.getScore()
because eachConstraintMatch.getScore()
is counted for each of theindicted objects
.- Specified by:
getIndictmentMap
in interfaceScoreExplanation<Solution_,
Score_ extends Score<Score_>> - Returns:
- never null, the key is a
problem fact
or aplanning entity
- See Also:
-
getSummary
Description copied from interface:ScoreExplanation
Returns a diagnostic text that explains theScore
through theConstraintMatch
API to identify which constraints or planning entities cause that score quality. In case of aninfeasible
solution, this can help diagnose the cause of that.Do not parse this string. Instead, to provide this information in a UI or a service, use
ScoreExplanation.getConstraintMatchTotalMap()
andScoreExplanation.getIndictmentMap()
and convert those into a domain specific API.- Specified by:
getSummary
in interfaceScoreExplanation<Solution_,
Score_ extends Score<Score_>> - Returns:
- never null
-
toString
-