OptaPlanner core 6.0.0.CR2

org.optaplanner.core.api.solver
Interface Solver

All Known Implementing Classes:
DefaultSolver

public interface Solver

A Solver solves planning problems.

Most methods are not thread-safe and should be called from the same thread.


Method Summary
 void addEventListener(SolverEventListener eventListener)
           
 boolean addProblemFactChange(ProblemFactChange problemFactChange)
          Schedules a ProblemFactChange to be processed.
 Solution getBestSolution()
           
 ScoreDirectorFactory getScoreDirectorFactory()
           
 long getTimeMillisSpend()
          TODO timeMillisSpend should not continue to increase after the solver has been terminated
 boolean isEveryProblemFactChangeProcessed()
          Checks if all scheduled ProblemFactChanges have been processed.
 boolean isSolving()
          This method is thread-safe.
 boolean isTerminateEarly()
          This method is thread-safe.
 void removeEventListener(SolverEventListener eventListener)
           
 void setPlanningProblem(Solution planningProblem)
           
 void solve()
          Solves the planning problem.
 boolean terminateEarly()
          Notifies the solver that it should stop at its earliest convenience.
 

Method Detail

setPlanningProblem

void setPlanningProblem(Solution planningProblem)
Parameters:
planningProblem - never null

getBestSolution

Solution getBestSolution()
Returns:
never null, but it can return the original, uninitialized Solution with a Score null.

getTimeMillisSpend

long getTimeMillisSpend()
TODO timeMillisSpend should not continue to increase after the solver has been terminated

Returns:
the amount of millis spend since this solver started

solve

void solve()
Solves the planning problem. It can take minutes, even hours or days before this method returns, depending on the termination configuration. To terminate a Solver early, call terminateEarly().

See Also:
terminateEarly()

isSolving

boolean isSolving()
This method is thread-safe.

Returns:
true if the solve() method is still running.

terminateEarly

boolean terminateEarly()
Notifies the solver that it should stop at its earliest convenience. This method returns immediately, but it takes an undetermined time for the solve() to actually return.

This method is thread-safe.

Returns:
true if successful
See Also:
isTerminateEarly(), Future.cancel(boolean)

isTerminateEarly

boolean isTerminateEarly()
This method is thread-safe.

Returns:
true if terminateEarly has been called since the started.
See Also:
Future.isCancelled()

addProblemFactChange

boolean addProblemFactChange(ProblemFactChange problemFactChange)
Schedules a ProblemFactChange to be processed.

As a side-effect, this restarts the Solver, effectively resetting all Terminations, but not terminateEarly().

This method is thread-safe. Follows specifications of BlockingQueue.add(Object) with by default a capacity of Integer.MAX_VALUE.

Parameters:
problemFactChange - never null
Returns:
true (as specified by Collection.add(E))

isEveryProblemFactChangeProcessed

boolean isEveryProblemFactChangeProcessed()
Checks if all scheduled ProblemFactChanges have been processed.

This method is thread-safe.

Returns:
true if there are no ProblemFactChanges left to do

addEventListener

void addEventListener(SolverEventListener eventListener)
Parameters:
eventListener - never null

removeEventListener

void removeEventListener(SolverEventListener eventListener)
Parameters:
eventListener - never null

getScoreDirectorFactory

ScoreDirectorFactory getScoreDirectorFactory()
Returns:
never null

OptaPlanner core 6.0.0.CR2

Copyright © 2006-2013 JBoss by Red Hat. All Rights Reserved.