Altered evaluator to be more abstract, to account for dynamic objective functions and to provide a means to limit the number of evaluations.