Interface CustomPhaseCommand<Solution_>
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotation
- All Known Implementing Classes:
NoChangeCustomPhaseCommand
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
Runs a custom algorithm as a
Phase
of the Solver
that changes the planning variables.
Do not abuse to change the problems facts,
instead use Solver.addProblemFactChange(ProblemFactChange)
for that.
To add custom properties, configure custom properties and add public setters for them.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
changeWorkingSolution
(ScoreDirector<Solution_> scoreDirector) Changesworking solution
ofScoreDirector.getWorkingSolution()
.
-
Method Details
-
changeWorkingSolution
Changesworking solution
ofScoreDirector.getWorkingSolution()
. When theworking solution
is modified, theScoreDirector
must be correctly notified (throughScoreDirector.beforeVariableChanged(Object, String)
andScoreDirector.afterVariableChanged(Object, String)
), otherwise calculatedScore
s will be corrupted.Don't forget to call
ScoreDirector.triggerVariableListeners()
after each set of changes (especially before everyInnerScoreDirector.calculateScore()
call) to ensure all shadow variables are updated.- Parameters:
scoreDirector
- never null, theScoreDirector
that needs to get notified of the changes.
-