{{{#!java public interface IExecutable : IItem { ExecutionState ExecutionState { get; } TimeSpan ExecutionTime { get; } void Prepare(); void Start(); void Pause(); void Stop(); event EventHandler ExecutionStateChanged; event EventHandler ExecutionTimeChanged; event EventHandler Prepared; event EventHandler Started; event EventHandler Paused; event EventHandler Stopped; event EventHandler> ExceptionOccurred; } }}} {{{#!java /// /// Interface to represent optimizers such as algorithms, batch runs, or experiments. /// public interface IOptimizer : INamedItem, IExecutable { RunCollection Runs { get; } void Prepare(bool clearRuns); } }}} {{{#!java public interface IAlgorithm : IParameterizedNamedItem, IOptimizer { Type ProblemType { get; } IProblem Problem { get; set; } ResultCollection Results { get; } void CollectResultValues(IDictionary values); event EventHandler ProblemChanged; } }}}