Solution_
- the solution type, the class with the PlanningSolution
annotationpublic class IncrementalScoreDirector<Solution_> extends AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
ScoreDirector
, which only recalculates the Score
of the part of the working solution
that changed,
instead of the going through the entire PlanningSolution
. This is incremental calculation, which is fast.ScoreDirector
allChangesWillBeUndoneBeforeStepEnds, calculationCount, constraintMatchEnabledPreference, logger, lookUpEnabled, lookUpManager, scoreDirectorFactory, variableListenerSupport, workingEntityListRevision, workingInitScore, workingSolution
Constructor and Description |
---|
IncrementalScoreDirector(IncrementalScoreDirectorFactory<Solution_> scoreDirectorFactory,
boolean lookUpEnabled,
boolean constraintMatchEnabledPreference,
IncrementalScoreCalculator<Solution_,?> incrementalScoreCalculator) |
afterEntityAdded, afterEntityRemoved, afterVariableChanged, assertExpectedUndoMoveScore, assertExpectedWorkingScore, assertPredictedScoreFromScratch, assertShadowVariablesAreNotStale, assertWorkingScoreFromScratch, beforeEntityAdded, beforeEntityRemoved, beforeVariableChanged, buildScoreCorruptionAnalysis, buildShadowVariableAnalysis, changeVariableFacade, clone, cloneSolution, cloneWorkingSolution, close, createChildThreadScoreDirector, createShadowVariablesViolationMessage, doAndProcessMove, doAndProcessMove, explainScore, getCalculationCount, getScoreDefinition, getScoreDirectorFactory, getSolutionDescriptor, getSupplyManager, getWorkingEntityCount, getWorkingEntityList, getWorkingEntityListRevision, getWorkingSolution, getWorkingValueCount, isAllChangesWillBeUndoneBeforeStepEnds, isConstraintMatchEnabledPreference, isLookUpEnabled, isWorkingEntityListDirty, lookUpWorkingObject, lookUpWorkingObjectOrReturnNull, overwriteConstraintMatchEnabledPreference, resetCalculationCount, setAllChangesWillBeUndoneBeforeStepEnds, setCalculatedScore, setWorkingEntityListDirty, toString, triggerVariableListeners
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
dispose
public IncrementalScoreDirector(IncrementalScoreDirectorFactory<Solution_> scoreDirectorFactory, boolean lookUpEnabled, boolean constraintMatchEnabledPreference, IncrementalScoreCalculator<Solution_,?> incrementalScoreCalculator)
public IncrementalScoreCalculator<Solution_,?> getIncrementalScoreCalculator()
public void setWorkingSolution(Solution_ workingSolution)
ScoreDirector
working solution
must never be the same instance as the
best solution
, it should be a (un)changed clone.
Only call this method on a separate ScoreDirector
instance,
built by SolverFactory.getScoreDirectorFactory()
,
not on the one used inside the Solver
itself.
setWorkingSolution
in interface ScoreDirector<Solution_>
setWorkingSolution
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
workingSolution
- never nullpublic Score calculateScore()
ScoreDirector
Score
and updates the working solution
accordingly.Score
of the working solution
public boolean isConstraintMatchEnabled()
ScoreDirector.getConstraintMatchTotals()
, ScoreDirector.getConstraintMatchTotalMap()
and ScoreDirector.getIndictmentMap()
can be calledpublic Collection<ConstraintMatchTotal> getConstraintMatchTotals()
ScoreDirector
Score
of ScoreDirector.calculateScore()
by splitting it up per Constraint
.
The sum of ConstraintMatchTotal.getScore()
equals ScoreDirector.calculateScore()
.
Call ScoreDirector.calculateScore()
before calling this method,
unless that method has already been called since the last PlanningVariable
changes.
ScoreDirector.getConstraintMatchTotalMap()
,
ScoreDirector.getIndictmentMap()
public Map<String,ConstraintMatchTotal> getConstraintMatchTotalMap()
ScoreDirector
Score
of ScoreDirector.calculateScore()
by splitting it up per Constraint
.
The sum of ConstraintMatchTotal.getScore()
equals ScoreDirector.calculateScore()
.
Call ScoreDirector.calculateScore()
before calling this method,
unless that method has already been called since the last PlanningVariable
changes.
constraintId
(to create one, use ConstraintMatchTotal.composeConstraintId(String, String)
).ScoreDirector.getIndictmentMap()
public Map<Object,Indictment> getIndictmentMap()
ScoreDirector
Score
.
An Indictment
is basically the inverse of a ConstraintMatchTotal
:
it is a Score
total for each justification Object
in ConstraintMatch.getJustificationList()
.
The sum of ConstraintMatchTotal.getScore()
differs from ScoreDirector.calculateScore()
because each ConstraintMatch.getScore()
is counted
for each justification in ConstraintMatch.getJustificationList()
.
Call ScoreDirector.calculateScore()
before calling this method,
unless that method has already been called since the last PlanningVariable
changes.
problem fact
or a planning
entity
ScoreDirector.getConstraintMatchTotalMap()
public void beforeEntityAdded(EntityDescriptor<Solution_> entityDescriptor, Object entity)
beforeEntityAdded
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterEntityAdded(EntityDescriptor<Solution_> entityDescriptor, Object entity)
afterEntityAdded
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void beforeVariableChanged(VariableDescriptor variableDescriptor, Object entity)
beforeVariableChanged
in interface ScoreDirector<Solution_>
beforeVariableChanged
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterVariableChanged(VariableDescriptor variableDescriptor, Object entity)
afterVariableChanged
in interface ScoreDirector<Solution_>
afterVariableChanged
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void beforeEntityRemoved(EntityDescriptor<Solution_> entityDescriptor, Object entity)
beforeEntityRemoved
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterEntityRemoved(EntityDescriptor<Solution_> entityDescriptor, Object entity)
afterEntityRemoved
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void beforeProblemFactAdded(Object problemFact)
beforeProblemFactAdded
in interface ScoreDirector<Solution_>
beforeProblemFactAdded
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterProblemFactAdded(Object problemFact)
afterProblemFactAdded
in interface ScoreDirector<Solution_>
afterProblemFactAdded
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void beforeProblemPropertyChanged(Object problemFactOrEntity)
beforeProblemPropertyChanged
in interface ScoreDirector<Solution_>
beforeProblemPropertyChanged
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterProblemPropertyChanged(Object problemFactOrEntity)
afterProblemPropertyChanged
in interface ScoreDirector<Solution_>
afterProblemPropertyChanged
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void beforeProblemFactRemoved(Object problemFact)
beforeProblemFactRemoved
in interface ScoreDirector<Solution_>
beforeProblemFactRemoved
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
public void afterProblemFactRemoved(Object problemFact)
afterProblemFactRemoved
in interface ScoreDirector<Solution_>
afterProblemFactRemoved
in class AbstractScoreDirector<Solution_,IncrementalScoreDirectorFactory<Solution_>>
Copyright © 2006–2021 JBoss by Red Hat. All rights reserved.