org.optaplanner.core.impl.solver

## Class AbstractSolver<Solution_>

- java.lang.Object
- - org.optaplanner.core.impl.solver.AbstractSolver<Solution_>

- Type Parameters:
    `Solution_` - the solution type, the class with the `PlanningSolution` annotation
  All Implemented Interfaces:
    Solver<Solution_>
  Direct Known Subclasses:
    DefaultSolver, PartitionSolver

      public abstract class AbstractSolver<Solution_>
      extends Object
      implements Solver<Solution_>

  Common code between `DefaultSolver` and child solvers (such as `PartitionSolver`.

  Do not create a new child `Solver` to implement a new heuristic or metaheuristic, just use a new `Phase` for that.

  See Also:
    `Solver`, `DefaultSolver`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected BestSolutionRecaller<Solution_>` | `bestSolutionRecaller`
    `protected org.slf4j.Logger` | `logger`
    `protected PhaseLifecycleSupport<Solution_>` | `phaseLifecycleSupport`
    `protected List<Phase<Solution_>>` | `phaseList`
    `protected SolverEventSupport<Solution_>` | `solverEventSupport`
    `protected Termination` | `termination`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractSolver(BestSolutionRecaller<Solution_> bestSolutionRecaller, Termination termination, List<Phase<Solution_>> phaseList)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addEventListener(SolverEventListener<Solution_> eventListener)`
    `void` | `addPhaseLifecycleListener(PhaseLifecycleListener<Solution_> phaseLifecycleListener)` Add a `PhaseLifecycleListener` that is notified of `SolverLifecycleListener.solvingStarted(DefaultSolverScope)` solving} events and also of the `phase` and the `PhaseLifecycleListener.stepStarted(AbstractStepScope)` step} starting/ending events of all phases.
    `void` | `removeEventListener(SolverEventListener<Solution_> eventListener)`
    `void` | `removePhaseLifecycleListener(PhaseLifecycleListener<Solution_> phaseLifecycleListener)`
    `protected void` | `runPhases(DefaultSolverScope<Solution_> solverScope)`
    `void` | `solvingEnded(DefaultSolverScope<Solution_> solverScope)`
    `void` | `solvingStarted(DefaultSolverScope<Solution_> solverScope)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.optaplanner.core.api.solver.Solver

      `addProblemFactChange, addProblemFactChanges, explainBestScore, getBestScore, getBestSolution, getScoreDirectorFactory, getTimeMillisSpent, isEveryProblemFactChangeProcessed, isSolving, isTerminateEarly, solve, terminateEarly`

- - ### Field Detail

    - #### logger

          protected final transient org.slf4j.Logger logger

    - #### solverEventSupport

          protected final SolverEventSupport<Solution_> solverEventSupport

    - #### phaseLifecycleSupport

          protected final PhaseLifecycleSupport<Solution_> phaseLifecycleSupport

    - #### bestSolutionRecaller

          protected final BestSolutionRecaller<Solution_> bestSolutionRecaller

    - #### termination

          protected final Termination termination

    - #### phaseList

          protected final List<Phase<Solution_>> phaseList

  - ### Constructor Detail

    - #### AbstractSolver

          public AbstractSolver(BestSolutionRecaller<Solution_> bestSolutionRecaller,
                                Termination termination,
                                List<Phase<Solution_>> phaseList)

  - ### Method Detail

    - #### solvingStarted

          public void solvingStarted(DefaultSolverScope<Solution_> solverScope)

    - #### runPhases

          protected void runPhases(DefaultSolverScope<Solution_> solverScope)

    - #### solvingEnded

          public void solvingEnded(DefaultSolverScope<Solution_> solverScope)

    - #### addEventListener

          public void addEventListener(SolverEventListener<Solution_> eventListener)

      Specified by:
        `addEventListener` in interface `Solver<Solution_>`
      Parameters:
        `eventListener` - never null

    - #### removeEventListener

          public void removeEventListener(SolverEventListener<Solution_> eventListener)

      Specified by:
        `removeEventListener` in interface `Solver<Solution_>`
      Parameters:
        `eventListener` - never null

    - #### addPhaseLifecycleListener

          public void addPhaseLifecycleListener(PhaseLifecycleListener<Solution_> phaseLifecycleListener)

      Add a `PhaseLifecycleListener` that is notified of `SolverLifecycleListener.solvingStarted(DefaultSolverScope)` solving} events and also of the `phase` and the `PhaseLifecycleListener.stepStarted(AbstractStepScope)` step} starting/ending events of all phases.

      To get notified for only 1 phase, use `Phase.addPhaseLifecycleListener(PhaseLifecycleListener)` instead.

      Parameters:
        `phaseLifecycleListener` - never null

    - #### removePhaseLifecycleListener

          public void removePhaseLifecycleListener(PhaseLifecycleListener<Solution_> phaseLifecycleListener)

      Parameters:
        `phaseLifecycleListener` - never null
      See Also:
        `addPhaseLifecycleListener(PhaseLifecycleListener)`

Copyright © 2006–2021 JBoss by Red Hat. All rights reserved.