namespace HeuristicLab.Problems.ProgramSynthesis.Push.Evaluator { using HeuristicLab.Common; using HeuristicLab.Core; using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration; using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions; using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter; public interface IPushEvaluator : IDeepCloneable { EvaluationResult EvaluateTest(IReadOnlyPushConfiguration config, PushProgram program, IRandom random); EvaluationResult EvaluateTest(IPushInterpreter interpreter, PushProgram program); EvaluationResult EvaluateTest(PushInterpreterPool pool, PushProgram program, IRandom random); EvaluationResult EvaluateTraining(IReadOnlyPushConfiguration config, PushProgram program, IRandom random); EvaluationResult EvaluateTraining(IPushInterpreter interpreter, PushProgram program); EvaluationResult EvaluateTraining(PushInterpreterPool pool, PushProgram program, IRandom random); } }