Class AlgorithmWrapper<T extends Algorithm>
java.lang.Object
org.moeaframework.algorithm.extension.AlgorithmWrapper<T>
- Type Parameters:
T
- the type of the wrapped algorithm
- All Implemented Interfaces:
Extensible
,Algorithm
,Configurable
,Stateful
- Direct Known Subclasses:
InstrumentedAlgorithm
public class AlgorithmWrapper<T extends Algorithm>
extends Object
implements Algorithm, Configurable
Wrapper for an algorithm. Unless overridden, all methods call the same method on the wrapped instance.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Evaluates the specified solution for the problem being solved by this algorithm.Returns the wrapped instance.Returns the extensions associated with the algorithm.int
Returns the number of times theevaluate
method was invoked.Returns the problem being solved by this algorithm.Returns the current best-known result.void
Performs any initialization that is required by this algorithm.boolean
Returnstrue
if this algorithm has been initialized;false
otherwise.boolean
Returnstrue
if this algorithm has reached its termination condition;false
otherwise.void
loadState
(ObjectInputStream stream) Loads the state of this object from the stream.void
saveState
(ObjectOutputStream stream) Writes the state of this object to the stream.void
step()
Performs one logical step of this algorithm.void
Called when the termination condition is reached and the run is complete.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.moeaframework.core.Algorithm
evaluateAll, evaluateAll, run, run
Methods inherited from interface org.moeaframework.core.configuration.Configurable
applyConfiguration, getConfiguration
Methods inherited from interface org.moeaframework.algorithm.extension.Extensible
addExtension, removeExtension
-
Constructor Details
-
AlgorithmWrapper
Wraps the given algorithm.- Parameters:
algorithm
- the algorithm to wrap
-
-
Method Details
-
getAlgorithm
Returns the wrapped instance.- Returns:
- the wrapped instance
-
evaluate
Description copied from interface:Algorithm
Evaluates the specified solution for the problem being solved by this algorithm. -
getNumberOfEvaluations
public int getNumberOfEvaluations()Description copied from interface:Algorithm
Returns the number of times theevaluate
method was invoked. This is the primary measure of runtime for optimization algorithms.- Specified by:
getNumberOfEvaluations
in interfaceAlgorithm
- Returns:
- the number of times the
evaluate
method was invoked
-
getProblem
Description copied from interface:Algorithm
Returns the problem being solved by this algorithm.- Specified by:
getProblem
in interfaceAlgorithm
- Returns:
- the problem being solved by this algorithm
-
initialize
public void initialize()Description copied from interface:Algorithm
Performs any initialization that is required by this algorithm. This method should only be called once, though the specific implementation may choose to no-op or throwAlgorithmInitializationException
if called multiple times.Implementations should always call
super.initialize()
to ensure the algorithm is initialized correctly.- Specified by:
initialize
in interfaceAlgorithm
-
isInitialized
public boolean isInitialized()Description copied from interface:Algorithm
Returnstrue
if this algorithm has been initialized;false
otherwise.- Specified by:
isInitialized
in interfaceAlgorithm
- Returns:
true
if this algorithm has been initialized;false
otherwise- See Also:
-
step
public void step()Description copied from interface:Algorithm
Performs one logical step of this algorithm. The amount of work performed depends on the implementation. One invocation of this method may produce one or many trial solutions.In general, calling this method after
Algorithm.terminate()
is permitted. When this happens,Algorithm.isTerminated()
is reset. We recommend checkingAlgorithm.isTerminated()
after each step to detect when termination conditions are reached. However, if the implementation is unable to continue, this method should throwAlgorithmTerminationException
. -
isTerminated
public boolean isTerminated()Description copied from interface:Algorithm
Returnstrue
if this algorithm has reached its termination condition;false
otherwise.- Specified by:
isTerminated
in interfaceAlgorithm
- Returns:
true
if this algorithm has reached its termination condition;false
otherwise- See Also:
-
terminate
public void terminate()Description copied from interface:Algorithm
Called when the termination condition is reached and the run is complete. This method is automatically called when usingAlgorithm.run(TerminationCondition)
, but can also be invoked directly if executing the algorithm step-by-step withAlgorithm.step()
.Implementations should always call
super.terminate()
to ensure the algorithm is terminated correctly. -
getResult
Description copied from interface:Algorithm
Returns the current best-known result. -
getExtensions
Description copied from interface:Extensible
Returns the extensions associated with the algorithm.- Specified by:
getExtensions
in interfaceExtensible
- Returns:
- the extensions
-
saveState
Description copied from interface:Stateful
Writes the state of this object to the stream. The order that objects are written to the stream is important. We recommend first callingsuper.saveState(stream)
followed by writing each field.- Specified by:
saveState
in interfaceStateful
- Parameters:
stream
- the stream- Throws:
IOException
- if an I/O error occurred
-
loadState
Description copied from interface:Stateful
Loads the state of this object from the stream. The order for reading objects from the stream must match the order they are written to the stream inStateful.saveState(ObjectOutputStream)
.- Specified by:
loadState
in interfaceStateful
- Parameters:
stream
- the stream- Throws:
IOException
- if an I/O error occurredClassNotFoundException
- if the stream referenced a class that is not defined
-