public BestAverageWorstQualityAnalyzer() : base() { #region Create parameters Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false.")); Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("BestKnownQuality", "The best known quality value found so far.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("BestQuality", "The best quality value found in the current run.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentBestQuality", "The best quality value found in the current population.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentAverageQuality", "The average quality value of all solutions in the current population.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentWorstQuality", "The worst quality value found in the current population.")); Parameters.Add(new ValueLookupParameter<DataTable>("Qualities", "The data table to store the current best, current average, current worst, best and best known quality value.")); Parameters.Add(new ValueLookupParameter<DoubleValue>("AbsoluteDifferenceBestKnownToBest", "The absolute difference of the best known quality value to the best quality value.")); Parameters.Add(new ValueLookupParameter<PercentValue>("RelativeDifferenceBestKnownToBest", "The relative difference of the best known quality value to the best quality value.")); Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The results collection where the analysis values should be stored.")); BestQualityParameter.Hidden = true; CurrentBestQualityParameter.Hidden = true; CurrentAverageQualityParameter.Hidden = true; CurrentWorstQualityParameter.Hidden = true; QualitiesParameter.Hidden = true; AbsoluteDifferenceBestKnownToBestParameter.Hidden = true; RelativeDifferenceBestKnownToBestParameter.Hidden = true; #endregion #region Create operators BestQualityMemorizer bestQualityMemorizer = new BestQualityMemorizer(); BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator = new BestAverageWorstQualityCalculator(); DataTableValuesCollector dataTableValuesCollector = new DataTableValuesCollector(); QualityDifferenceCalculator qualityDifferenceCalculator = new QualityDifferenceCalculator(); ResultsCollector resultsCollector = new ResultsCollector(); bestQualityMemorizer.BestQualityParameter.ActualName = BestQualityParameter.Name; bestQualityMemorizer.MaximizationParameter.ActualName = MaximizationParameter.Name; bestQualityMemorizer.QualityParameter.ActualName = QualityParameter.Name; bestQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth; bestAverageWorstQualityCalculator.AverageQualityParameter.ActualName = CurrentAverageQualityParameter.Name; bestAverageWorstQualityCalculator.BestQualityParameter.ActualName = CurrentBestQualityParameter.Name; bestAverageWorstQualityCalculator.MaximizationParameter.ActualName = MaximizationParameter.Name; bestAverageWorstQualityCalculator.QualityParameter.ActualName = QualityParameter.Name; bestAverageWorstQualityCalculator.QualityParameter.Depth = QualityParameter.Depth; bestAverageWorstQualityCalculator.WorstQualityParameter.ActualName = CurrentWorstQualityParameter.Name; dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestQuality", null, BestQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name)); dataTableValuesCollector.DataTableParameter.ActualName = QualitiesParameter.Name; qualityDifferenceCalculator.AbsoluteDifferenceParameter.ActualName = AbsoluteDifferenceBestKnownToBestParameter.Name; qualityDifferenceCalculator.FirstQualityParameter.ActualName = BestKnownQualityParameter.Name; qualityDifferenceCalculator.RelativeDifferenceParameter.ActualName = RelativeDifferenceBestKnownToBestParameter.Name; qualityDifferenceCalculator.SecondQualityParameter.ActualName = BestQualityParameter.Name; resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestQuality", null, BestQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("AbsoluteDifferenceBestKnownToBest", null, AbsoluteDifferenceBestKnownToBestParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<PercentValue>("RelativeDifferenceBestKnownToBest", null, RelativeDifferenceBestKnownToBestParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(QualitiesParameter.Name)); resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name; #endregion #region Create operator graph OperatorGraph.InitialOperator = bestQualityMemorizer; bestQualityMemorizer.Successor = bestAverageWorstQualityCalculator; bestAverageWorstQualityCalculator.Successor = dataTableValuesCollector; dataTableValuesCollector.Successor = qualityDifferenceCalculator; qualityDifferenceCalculator.Successor = resultsCollector; resultsCollector.Successor = null; #endregion Initialize(); }
private BestAverageWorstQualityCalculator(BestAverageWorstQualityCalculator original, Cloner cloner) : base(original, cloner) { }
public BestAverageWorstQualityAnalyzer() : base() { #region Create parameters Parameters.Add(new ValueLookupParameter <BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false.")); Parameters.Add(new ScopeTreeLookupParameter <DoubleValue>("Quality", "The value which represents the quality of a solution.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("BestKnownQuality", "The best known quality value found so far.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("BestQuality", "The best quality value found in the current run.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentBestQuality", "The best quality value found in the current population.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentAverageQuality", "The average quality value of all solutions in the current population.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("CurrentWorstQuality", "The worst quality value found in the current population.")); Parameters.Add(new ValueLookupParameter <DataTable>("Qualities", "The data table to store the current best, current average, current worst, best and best known quality value.")); Parameters.Add(new ValueLookupParameter <DoubleValue>("AbsoluteDifferenceBestKnownToBest", "The absolute difference of the best known quality value to the best quality value.")); Parameters.Add(new ValueLookupParameter <PercentValue>("RelativeDifferenceBestKnownToBest", "The relative difference of the best known quality value to the best quality value.")); Parameters.Add(new ValueLookupParameter <ResultCollection>("Results", "The results collection where the analysis values should be stored.")); BestQualityParameter.Hidden = true; CurrentBestQualityParameter.Hidden = true; CurrentAverageQualityParameter.Hidden = true; CurrentWorstQualityParameter.Hidden = true; QualitiesParameter.Hidden = true; AbsoluteDifferenceBestKnownToBestParameter.Hidden = true; RelativeDifferenceBestKnownToBestParameter.Hidden = true; #endregion #region Create operators BestQualityMemorizer bestQualityMemorizer = new BestQualityMemorizer(); BestAverageWorstQualityCalculator bestAverageWorstQualityCalculator = new BestAverageWorstQualityCalculator(); DataTableValuesCollector dataTableValuesCollector = new DataTableValuesCollector(); QualityDifferenceCalculator qualityDifferenceCalculator = new QualityDifferenceCalculator(); ResultsCollector resultsCollector = new ResultsCollector(); bestQualityMemorizer.BestQualityParameter.ActualName = BestQualityParameter.Name; bestQualityMemorizer.MaximizationParameter.ActualName = MaximizationParameter.Name; bestQualityMemorizer.QualityParameter.ActualName = QualityParameter.Name; bestQualityMemorizer.QualityParameter.Depth = QualityParameter.Depth; bestAverageWorstQualityCalculator.AverageQualityParameter.ActualName = CurrentAverageQualityParameter.Name; bestAverageWorstQualityCalculator.BestQualityParameter.ActualName = CurrentBestQualityParameter.Name; bestAverageWorstQualityCalculator.MaximizationParameter.ActualName = MaximizationParameter.Name; bestAverageWorstQualityCalculator.QualityParameter.ActualName = QualityParameter.Name; bestAverageWorstQualityCalculator.QualityParameter.Depth = QualityParameter.Depth; bestAverageWorstQualityCalculator.WorstQualityParameter.ActualName = CurrentWorstQualityParameter.Name; dataTableValuesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("BestQuality", null, BestQualityParameter.Name)); dataTableValuesCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name)); dataTableValuesCollector.DataTableParameter.ActualName = QualitiesParameter.Name; qualityDifferenceCalculator.AbsoluteDifferenceParameter.ActualName = AbsoluteDifferenceBestKnownToBestParameter.Name; qualityDifferenceCalculator.FirstQualityParameter.ActualName = BestKnownQualityParameter.Name; qualityDifferenceCalculator.RelativeDifferenceParameter.ActualName = RelativeDifferenceBestKnownToBestParameter.Name; qualityDifferenceCalculator.SecondQualityParameter.ActualName = BestQualityParameter.Name; resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentBestQuality", null, CurrentBestQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentAverageQuality", null, CurrentAverageQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("CurrentWorstQuality", null, CurrentWorstQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("BestQuality", null, BestQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("BestKnownQuality", null, BestKnownQualityParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DoubleValue>("AbsoluteDifferenceBestKnownToBest", null, AbsoluteDifferenceBestKnownToBestParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <PercentValue>("RelativeDifferenceBestKnownToBest", null, RelativeDifferenceBestKnownToBestParameter.Name)); resultsCollector.CollectedValues.Add(new LookupParameter <DataTable>(QualitiesParameter.Name)); resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name; #endregion #region Create operator graph OperatorGraph.InitialOperator = bestQualityMemorizer; bestQualityMemorizer.Successor = bestAverageWorstQualityCalculator; bestAverageWorstQualityCalculator.Successor = dataTableValuesCollector; dataTableValuesCollector.Successor = qualityDifferenceCalculator; qualityDifferenceCalculator.Successor = resultsCollector; resultsCollector.Successor = null; #endregion Initialize(); }