Package org.optaplanner.core.api.solver

## Interface ProblemFactChange<Solution_>

- Type Parameters:
    `Solution_` - the solution type, the class with the `PlanningSolution` annotation
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface ProblemFactChange<Solution_>

  A ProblemFactChange represents a change in 1 or more problem facts of a `PlanningSolution`. Problem facts used by a `Solver` must not be changed while it is solving, but by scheduling this command to the `Solver`, you can change them when the time is right.

  Note that the `Solver` clones a `PlanningSolution` at will. So any change must be done on the problem facts and planning entities referenced by the `PlanningSolution` of the `ScoreDirector`. On each change it should also notify the `ScoreDirector` accordingly.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `doChange​(ScoreDirector<Solution_> scoreDirector)` | Does the change on the `PlanningSolution` of the `ScoreDirector` and notifies the `ScoreDirector` accordingly.

- - ### Method Detail

    - #### doChange

          void doChange​(ScoreDirector<Solution_> scoreDirector)

      Does the change on the `PlanningSolution` of the `ScoreDirector` and notifies the `ScoreDirector` accordingly. Every modification to the `PlanningSolution`, must be correctly notified to the `ScoreDirector`, otherwise the `Score` calculation will be corrupted.
      Parameters:
        `scoreDirector` - never null Contains the `working solution` which contains the problem facts (and `planning entities`) to change. Also needs to get notified of those changes.