public BestAverageWorstCapaciatatedVRPToursAnalyzer()
            : base()
        {
            #region Create parameters
            Parameters.Add(new LookupParameter <IVRPProblemInstance>("ProblemInstance", "The problem instance."));

            Parameters.Add(new ScopeTreeLookupParameter <DoubleValue>("Overload", "The overloads of the VRP solutions which should be analyzed."));
            Parameters.Add(new ValueLookupParameter <DoubleValue>("BestOverload", "The best overload value."));
            Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentBestOverload", "The current best overload value."));
            Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentAverageOverload", "The current average overload value of all solutions."));
            Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentWorstOverload", "The current worst overload value of all solutions."));
            Parameters.Add(new ValueLookupParameter <DataTable>("Overloads", "The data table to store the current best, current average, current worst, best and best known overload value."));

            Parameters.Add(new ValueLookupParameter <VariableCollection>("Results", "The results collection where the analysis values should be stored."));
            #endregion

            #region Create operators
            BestCapacitatedVRPToursMemorizer bestMemorizer           = new BestCapacitatedVRPToursMemorizer();
            BestAverageWorstCapacitatedVRPToursCalculator calculator = new BestAverageWorstCapacitatedVRPToursCalculator();
            ResultsCollector resultsCollector = new ResultsCollector();

            //overload
            bestMemorizer.BestOverloadParameter.ActualName = BestOverloadParameter.Name;
            bestMemorizer.OverloadParameter.ActualName     = OverloadParameter.Name;
            bestMemorizer.OverloadParameter.Depth          = OverloadParameter.Depth;

            calculator.OverloadParameter.ActualName        = OverloadParameter.Name;
            calculator.OverloadParameter.Depth             = OverloadParameter.Depth;
            calculator.BestOverloadParameter.ActualName    = CurrentBestOverloadParameter.Name;
            calculator.AverageOverloadParameter.ActualName = CurrentAverageOverloadParameter.Name;
            calculator.WorstOverloadParameter.ActualName   = CurrentWorstOverloadParameter.Name;

            DataTableValuesCollector overloadDataTablesCollector = new DataTableValuesCollector();
            overloadDataTablesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("BestOverload", null, BestOverloadParameter.Name));
            overloadDataTablesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentBestOverload", null, CurrentBestOverloadParameter.Name));
            overloadDataTablesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentAverageOverload", null, CurrentAverageOverloadParameter.Name));
            overloadDataTablesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentWorstOverload", null, CurrentWorstOverloadParameter.Name));
            overloadDataTablesCollector.DataTableParameter.ActualName = OverloadsParameter.Name;

            resultsCollector.CollectedValues.Add(new LookupParameter <DataTable>(OverloadsParameter.Name));
            #endregion

            #region Create operator graph
            OperatorGraph.InitialOperator         = bestMemorizer;
            bestMemorizer.Successor               = calculator;
            calculator.Successor                  = overloadDataTablesCollector;
            overloadDataTablesCollector.Successor = resultsCollector;
            resultsCollector.Successor            = null;
            #endregion

            Initialize();
        }
 protected BestCapacitatedVRPToursMemorizer(BestCapacitatedVRPToursMemorizer original, Cloner cloner)
   : base(original, cloner) {
 }
    public BestAverageWorstCapaciatatedVRPToursAnalyzer()
      : base() {
      #region Create parameters
      Parameters.Add(new LookupParameter<IVRPProblemInstance>("ProblemInstance", "The problem instance."));

      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Overload", "The overloads of the VRP solutions which should be analyzed."));
      Parameters.Add(new ValueLookupParameter<DoubleValue>("BestOverload", "The best overload value."));
      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestOverload", "The current best overload value."));
      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageOverload", "The current average overload value of all solutions."));
      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstOverload", "The current worst overload value of all solutions."));
      Parameters.Add(new ValueLookupParameter<DataTable>("Overloads", "The data table to store the current best, current average, current worst, best and best known overload value."));

      Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The results collection where the analysis values should be stored."));
      #endregion

      #region Create operators
      BestCapacitatedVRPToursMemorizer bestMemorizer = new BestCapacitatedVRPToursMemorizer();
      BestAverageWorstCapacitatedVRPToursCalculator calculator = new BestAverageWorstCapacitatedVRPToursCalculator();
      ResultsCollector resultsCollector = new ResultsCollector();

      //overload
      bestMemorizer.BestOverloadParameter.ActualName = BestOverloadParameter.Name;
      bestMemorizer.OverloadParameter.ActualName = OverloadParameter.Name;
      bestMemorizer.OverloadParameter.Depth = OverloadParameter.Depth;

      calculator.OverloadParameter.ActualName = OverloadParameter.Name;
      calculator.OverloadParameter.Depth = OverloadParameter.Depth;
      calculator.BestOverloadParameter.ActualName = CurrentBestOverloadParameter.Name;
      calculator.AverageOverloadParameter.ActualName = CurrentAverageOverloadParameter.Name;
      calculator.WorstOverloadParameter.ActualName = CurrentWorstOverloadParameter.Name;

      DataTableValuesCollector overloadDataTablesCollector = new DataTableValuesCollector();
      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestOverload", null, BestOverloadParameter.Name));
      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestOverload", null, CurrentBestOverloadParameter.Name));
      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageOverload", null, CurrentAverageOverloadParameter.Name));
      overloadDataTablesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstOverload", null, CurrentWorstOverloadParameter.Name));
      overloadDataTablesCollector.DataTableParameter.ActualName = OverloadsParameter.Name;

      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(OverloadsParameter.Name));
      #endregion

      #region Create operator graph
      OperatorGraph.InitialOperator = bestMemorizer;
      bestMemorizer.Successor = calculator;
      calculator.Successor = overloadDataTablesCollector;
      overloadDataTablesCollector.Successor = resultsCollector;
      resultsCollector.Successor = null;
      #endregion

      Initialize();
    }
 protected BestCapacitatedVRPToursMemorizer(BestCapacitatedVRPToursMemorizer original, Cloner cloner)
     : base(original, cloner)
 {
 }