Package org.optaplanner.core.api.score
Interface ScoreExplanation<Solution_,Score_ extends Score<Score_>>
-
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotationScore_
- the actual score type
- All Known Implementing Classes:
DefaultScoreExplanation
public interface ScoreExplanation<Solution_,Score_ extends Score<Score_>>
Build byScoreManager.explainScore(Object)
to holdConstraintMatchTotal
s andIndictment
s necessary to explain the quality of a particularScore
.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Map<String,ConstraintMatchTotal<Score_>>
getConstraintMatchTotalMap()
Map<Object,Indictment<Score_>>
getIndictmentMap()
Explains the impact of each planning entity or problem fact on theScore
.Score_
getScore()
Return theScore
being explained.Solution_
getSolution()
Retrieve thePlanningSolution
that the score being explained comes from.String
getSummary()
Returns a diagnostic text that explains theScore
through theConstraintMatch
API to identify which constraints or planning entities cause that score quality.
-
-
-
Method Detail
-
getSolution
Solution_ getSolution()
Retrieve thePlanningSolution
that the score being explained comes from.- Returns:
- never null
-
getScore
Score_ getScore()
Return theScore
being explained. If the specificScore
type used by thePlanningSolution
is required, callgetSolution()
and retrieve it from there.- Returns:
- never null
-
getSummary
String getSummary()
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
getConstraintMatchTotalMap()
andgetIndictmentMap()
and convert those into a domain specific API.- Returns:
- never null
-
getConstraintMatchTotalMap
Map<String,ConstraintMatchTotal<Score_>> getConstraintMatchTotalMap()
Explains theScore
ofgetScore()
()} by splitting it up perConstraint
.The sum of
ConstraintMatchTotal.getScore()
equalsgetScore()
()}.- Returns:
- never null, the key is the
constraintId
(to create one, useConstraintMatchTotal.composeConstraintId(String, String)
). - See Also:
getIndictmentMap()
-
getIndictmentMap
Map<Object,Indictment<Score_>> getIndictmentMap()
Explains the impact of each planning entity or problem fact on theScore
. AnIndictment
is basically the inverse of aConstraintMatchTotal
: it is aScore
total for each justificationObject
inConstraintMatch.getJustificationList()
.The sum of
ConstraintMatchTotal.getScore()
differs fromgetScore()
()} because eachConstraintMatch.getScore()
is counted for each justification inConstraintMatch.getJustificationList()
.- Returns:
- never null, the key is a
problem fact
or aplanning entity
- See Also:
getConstraintMatchTotalMap()
-
-