mil.af.afit.router
Class KernelSolver

java.lang.Object
  |
  +--mil.af.afit.router.KernelSolver
All Implemented Interfaces:
mil.af.afit.uvr.HEngineListener, java.lang.Runnable

public class KernelSolver
extends java.lang.Object
implements mil.af.afit.uvr.HEngineListener, java.lang.Runnable

This runs in another thread and handles the solving calls to the Universal Vehicle Router (available at http://www.crosswinds.net/~rharder/afit/uvr/). You can listen for events by implementing KernelSolverListener.

Since:
1.0
See Also:
Kernel, HEngine

Field Summary
static java.lang.String NO_POST_OP_SOLVER_CLASSNAME
          Class name of solver to use when no post-optimization is requested.
static java.lang.String POST_OP_SOLVER_CLASSNAME
          Class name of solver to use when post-optimization is requested.
 
Constructor Summary
KernelSolver(Kernel kernel)
          Creates a new KernelSolver based on the passed kernel
 
Method Summary
 void addKernelSolverListener(KernelSolverListener listener)
          Add a listener to the solver.
 void fireKernelSolverFinishedEvent()
          This method should be called when the kernelSolver has finished working.
 void fireKernelSolverPercentDoneEvent()
          This method should be called periodically to keep the user up to date on the kernelSolver's progress.
 void fireKernelSolverStartedEvent()
          This should be called when the solver starts solving.
 void fireNewBestSolutionEvent()
          This method should be called when a new best solution is found.
 void firePriorityModelChangedEvent()
          This method should be called when the kernel solver changes to a new priority model.
 PriorityModel getCurrentPriorityModel()
          Returns the current priority model being used.
 float getPercentDone()
          Returns the percent done between zero and one.
 void HEngineEventPerformed(mil.af.afit.uvr.HEngineEvent e)
          Receives events from the HEngine.
 void removeKernelSolverListener(KernelSolverListener listener)
          Remove a listener from the solver.
 void run()
          As required by Runnable.
 void startSolving()
          Starts solving in another thread and immediately returns control
 void stopSolving()
          Stops solving.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_POST_OP_SOLVER_CLASSNAME

public static java.lang.String NO_POST_OP_SOLVER_CLASSNAME
Class name of solver to use when no post-optimization is requested.
See Also:
HSolver

POST_OP_SOLVER_CLASSNAME

public static java.lang.String POST_OP_SOLVER_CLASSNAME
Class name of solver to use when post-optimization is requested.
See Also:
HSolver
Constructor Detail

KernelSolver

public KernelSolver(Kernel kernel)
Creates a new KernelSolver based on the passed kernel
Parameters:
kernel - host kernel
Since:
1.0
See Also:
Kernel
Method Detail

startSolving

public final void startSolving()
Starts solving in another thread and immediately returns control
Since:
1.0

stopSolving

public final void stopSolving()
Stops solving.
Since:
1.0.1

getPercentDone

public final float getPercentDone()
Returns the percent done between zero and one.
Returns:
percent done
Since:
1.0

getCurrentPriorityModel

public final PriorityModel getCurrentPriorityModel()
Returns the current priority model being used.
Returns:
current priority model
Since:
1.0

run

public void run()
As required by Runnable.
Specified by:
run in interface java.lang.Runnable

HEngineEventPerformed

public void HEngineEventPerformed(mil.af.afit.uvr.HEngineEvent e)
Receives events from the HEngine.
Specified by:
HEngineEventPerformed in interface mil.af.afit.uvr.HEngineListener
Parameters:
e - event
Since:
1.0
See Also:
HEngine, HEngineEvent

addKernelSolverListener

public final void addKernelSolverListener(KernelSolverListener listener)
Add a listener to the solver. This listener will be notified when solver events happen.
Parameters:
listener - the listener to notify of engine events
Since:
1.0

removeKernelSolverListener

public final void removeKernelSolverListener(KernelSolverListener listener)
Remove a listener from the solver. This listener will no longer be notified when solver events happen.
Parameters:
listener - the listener which will no longer receive solver events
Since:
1.0

fireKernelSolverStartedEvent

public final void fireKernelSolverStartedEvent()
This should be called when the solver starts solving. Interested objects will be notified that the solver has started.
Since:
1.0

fireKernelSolverFinishedEvent

public final void fireKernelSolverFinishedEvent()
This method should be called when the kernelSolver has finished working. Interested objects, mainly the UVR kernelSolver, will be notified that the kernelSolver has finished.
Since:
1.0

fireKernelSolverPercentDoneEvent

public final void fireKernelSolverPercentDoneEvent()
This method should be called periodically to keep the user up to date on the kernelSolver's progress.
Since:
1.0

firePriorityModelChangedEvent

public final void firePriorityModelChangedEvent()
This method should be called when the kernel solver changes to a new priority model.
Since:
1.0

fireNewBestSolutionEvent

public final void fireNewBestSolutionEvent()
This method should be called when a new best solution is found.
Parameters:
percentDone - percent completed
Since:
1.0