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<EventArgs<Exception>> ExceptionOccurred;
}
/// <summary>
/// Interface to represent optimizers such as algorithms, batch runs, or experiments.
/// </summary>
public interface IOptimizer : INamedItem, IExecutable {
RunCollection Runs { get; }
void Prepare(bool clearRuns);
}
public interface IAlgorithm : IParameterizedNamedItem, IOptimizer {
Type ProblemType { get; }
IProblem Problem { get; set; }
ResultCollection Results { get; }
void CollectResultValues(IDictionary<string, IItem> values);
event EventHandler ProblemChanged;
}