public RosenbrockOptimizer(IObjectiveEvaluator <T> evaluator,
                            T startingPoint,
                            ITerminationCondition <T> terminationCondition,
                            double alpha = 1.4,
                            double beta  = 0.7,
                            IAlgebraProvider algebraprovider     = null,
                            IDictionary <string, string> logTags = null)
 {
     this.countingEvaluator    = new CountingEvaluator(evaluator);
     this.startingPoint        = evaluator.EvaluateScore(startingPoint);
     this.terminationCondition = terminationCondition;
     terminationCondition.SetEvolutionEngine(this);
     this.alpha           = alpha;
     this.beta            = beta;
     this.AlgebraProvider = algebraprovider;
     this.logTags         = logTags;
 }
 public Stage(IBase b, IObjectiveScores <T> startingPoint, IVector stepsLength, double alpha, double beta, CountingEvaluator countingEvaluator, IAlgebraProvider algebraProvider, ITerminationCondition <T> terminationCondition, IDictionary <string, string> logTags = null)
 {
     this.b                    = b;
     this.startingPoint        = startingPoint;
     this.currentPoint         = startingPoint;
     this.stepsLength          = stepsLength;
     this.alpha                = alpha;
     this.beta                 = beta;
     this.countingEvaluator    = countingEvaluator;
     this.terminationCondition = terminationCondition;
     this.algebraProvider      = algebraProvider;
     this.logTags              = logTags;
 }