org.drools.planner.core.score.director
Interface ScoreDirector

All Known Implementing Classes:
AbstractScoreDirector, DroolsScoreDirector, IncrementalScoreDirector, SimpleScoreDirector

public interface ScoreDirector

The ScoreDirector hold the Solution workingSolution and calculates the score for that Solution.


Method Summary
 void afterAllVariablesChanged(Object entity)
           
 void afterEntityAdded(Object entity)
           
 void afterEntityRemoved(Object entity)
           
 void afterProblemFactAdded(Object problemFact)
           
 void afterProblemFactChanged(Object problemFact)
           
 void afterProblemFactRemoved(Object problemFact)
           
 void afterVariableChanged(Object entity, String variableName)
           
 void assertWorkingScore(Score workingScore)
          Asserts that if the Score is calculated for the current workingSolution, it would be equal to the parameter workingScore.
 void beforeAllVariablesChanged(Object entity)
           
 void beforeEntityAdded(Object entity)
           
 void beforeEntityRemoved(Object entity)
           
 void beforeProblemFactAdded(Object problemFact)
           
 void beforeProblemFactChanged(Object problemFact)
           
 void beforeProblemFactRemoved(Object problemFact)
           
 void beforeVariableChanged(Object entity, String variableName)
           
 Score calculateScore()
          Calculates the Score and updates the workingSolution accordingly.
 void dispose()
          Needs to be called after use because some implementations needs to clean up their resources.
 long getCalculateCount()
           
 ScoreDefinition getScoreDefinition()
           
 ScoreDirectorFactory getScoreDirectorFactory()
           
 SolutionDescriptor getSolutionDescriptor()
           
 Object getTrailingEntity(PlanningVariableDescriptor chainedVariableDescriptor, Object planningValue)
           
 List<Object> getWorkingPlanningEntityList()
           
 Solution getWorkingSolution()
          The Solution that is used to calculate the Score.
 boolean isWorkingSolutionInitialized()
           
 void setWorkingSolution(Solution workingSolution)
          The workingSolution must never be the same instance as the bestSolution, it should be a (un)changed clone.
 

Method Detail

getScoreDirectorFactory

ScoreDirectorFactory getScoreDirectorFactory()
Returns:
never null

getSolutionDescriptor

SolutionDescriptor getSolutionDescriptor()
Returns:
never null

getScoreDefinition

ScoreDefinition getScoreDefinition()
Returns:
never null

getWorkingSolution

Solution getWorkingSolution()
The Solution that is used to calculate the Score.

Because a Score is best calculated incrementally (by delta's), the ScoreDirector needs to be notified when it's workingSolution changes.

If the Solution has been changed since calculateScore() has been called, the Solution.getScore() of this Solution won't be correct.

Returns:
never null

setWorkingSolution

void setWorkingSolution(Solution workingSolution)
The workingSolution must never be the same instance as the bestSolution, it should be a (un)changed clone.

Parameters:
workingSolution - never null

beforeEntityAdded

void beforeEntityAdded(Object entity)

afterEntityAdded

void afterEntityAdded(Object entity)

beforeAllVariablesChanged

void beforeAllVariablesChanged(Object entity)

afterAllVariablesChanged

void afterAllVariablesChanged(Object entity)

beforeVariableChanged

void beforeVariableChanged(Object entity,
                           String variableName)

afterVariableChanged

void afterVariableChanged(Object entity,
                          String variableName)

beforeEntityRemoved

void beforeEntityRemoved(Object entity)

afterEntityRemoved

void afterEntityRemoved(Object entity)

beforeProblemFactAdded

void beforeProblemFactAdded(Object problemFact)

afterProblemFactAdded

void afterProblemFactAdded(Object problemFact)

beforeProblemFactChanged

void beforeProblemFactChanged(Object problemFact)

afterProblemFactChanged

void afterProblemFactChanged(Object problemFact)

beforeProblemFactRemoved

void beforeProblemFactRemoved(Object problemFact)

afterProblemFactRemoved

void afterProblemFactRemoved(Object problemFact)

getWorkingPlanningEntityList

List<Object> getWorkingPlanningEntityList()
Returns:
never null: an empty list if there are none

isWorkingSolutionInitialized

boolean isWorkingSolutionInitialized()
Returns:
true if the workingSolution is initialized

calculateScore

Score calculateScore()
Calculates the Score and updates the workingSolution accordingly.

Returns:
never null, the Score of the working solution

getCalculateCount

long getCalculateCount()
Returns:
at least 0L

getTrailingEntity

Object getTrailingEntity(PlanningVariableDescriptor chainedVariableDescriptor,
                         Object planningValue)
Parameters:
chainedVariableDescriptor - never null, must be PlanningVariableDescriptor.isChained() true and known to the SolutionDescriptor
planningValue - sometimes null
Returns:
never null

assertWorkingScore

void assertWorkingScore(Score workingScore)
Asserts that if the Score is calculated for the current workingSolution, it would be equal to the parameter workingScore.

Furthermore, if the assert fails, a score corruption analysis might be included in the exception message.

Parameters:
workingScore - never null
See Also:
ScoreDirectorFactory.assertScore(Solution)

dispose

void dispose()
Needs to be called after use because some implementations needs to clean up their resources.



Copyright © 2001-2012 JBoss by Red Hat. All Rights Reserved.