org.drools.planner.core
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()
           
 ScoreDefinition getScoreDefinition()
           
 long getTimeMillisSpend()
          TODO timeMillisSpend should not continue to increase after the solver has been terminated
 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 after solving

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().

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))

addEventListener

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

removeEventListener

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

getScoreDefinition

ScoreDefinition getScoreDefinition()
Returns:
never null


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