Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/11/21 12:26:27 (2 years ago)
Author:
chaider
Message:

#3140

  • Refactored ConstantOptimization ==> ParameterOptimization
File:
1 moved

Legend:

Unmodified
Added
Removed
  • branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/ParameterOptimizationAnalyzer.cs

    r18112 r18113  
    3232namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression {
    3333  /// <summary>
    34   /// An operator that optimizes the constants for the best symbolic expression tress in the current generation.
     34  /// An operator that optimizes the parameters for the best symbolic expression tress in the current generation.
    3535  /// </summary>
    36   [Item("ConstantOptimizationAnalyzer", "An operator that performs a constant optimization on the best symbolic expression trees.")]
     36  [Item("ParameterOptimizationAnalyzer", "An operator that performs a parameter optimization on the best symbolic expression trees.")]
    3737  [StorableType("9FB87E7B-A9E2-49DD-A92A-78BD9FC17916")]
    38   public sealed class ConstantOptimizationAnalyzer : SymbolicDataAnalysisSingleObjectiveAnalyzer, IStatefulItem {
     38  public sealed class ParameterOptimizationAnalyzer : SymbolicDataAnalysisSingleObjectiveAnalyzer, IStatefulItem {
    3939    private const string PercentageOfBestSolutionsParameterName = "PercentageOfBestSolutions";
    40     private const string ConstantOptimizationEvaluatorParameterName = "ConstantOptimizationOperator";
     40    private const string ParameterOptimizationEvaluatorParameterName = "ParameterOptimizationOperator";
    4141
    42     private const string DataTableNameConstantOptimizationImprovement = "Constant Optimization Improvement";
     42    private const string DataTableNameParameterOptimizationImprovement = "Parameter Optimization Improvement";
    4343    private const string DataRowNameMinimumImprovement = "Minimum improvement";
    4444    private const string DataRowNameMedianImprovement = "Median improvement";
     
    5151    }
    5252
    53     public IFixedValueParameter<SymbolicRegressionConstantOptimizationEvaluator> ConstantOptimizationEvaluatorParameter {
    54       get { return (IFixedValueParameter<SymbolicRegressionConstantOptimizationEvaluator>)Parameters[ConstantOptimizationEvaluatorParameterName]; }
     53    public IFixedValueParameter<SymbolicRegressionParameterOptimizationEvaluator> ParameterOptimizationEvaluatorParameter {
     54      get { return (IFixedValueParameter<SymbolicRegressionParameterOptimizationEvaluator>)Parameters[ParameterOptimizationEvaluatorParameterName]; }
    5555    }
    5656    #endregion
    5757
    5858    #region properties
    59     public SymbolicRegressionConstantOptimizationEvaluator ConstantOptimizationEvaluator {
    60       get { return ConstantOptimizationEvaluatorParameter.Value; }
     59    public SymbolicRegressionParameterOptimizationEvaluator ParameterOptimizationEvaluator {
     60      get { return ParameterOptimizationEvaluatorParameter.Value; }
    6161    }
    6262    public double PercentageOfBestSolutions {
     
    6464    }
    6565
    66     private DataTable ConstantOptimizationImprovementDataTable {
     66    private DataTable ParameterOptimizationImprovementDataTable {
    6767      get {
    6868        IResult result;
    69         ResultCollection.TryGetValue(DataTableNameConstantOptimizationImprovement, out result);
     69        ResultCollection.TryGetValue(DataTableNameParameterOptimizationImprovement, out result);
    7070        if (result == null) return null;
    7171        return (DataTable)result.Value;
     
    7373    }
    7474    private DataRow MinimumImprovement {
    75       get { return ConstantOptimizationImprovementDataTable.Rows[DataRowNameMinimumImprovement]; }
     75      get { return ParameterOptimizationImprovementDataTable.Rows[DataRowNameMinimumImprovement]; }
    7676    }
    7777    private DataRow MedianImprovement {
    78       get { return ConstantOptimizationImprovementDataTable.Rows[DataRowNameMedianImprovement]; }
     78      get { return ParameterOptimizationImprovementDataTable.Rows[DataRowNameMedianImprovement]; }
    7979    }
    8080    private DataRow AverageImprovement {
    81       get { return ConstantOptimizationImprovementDataTable.Rows[DataRowNameAverageImprovement]; }
     81      get { return ParameterOptimizationImprovementDataTable.Rows[DataRowNameAverageImprovement]; }
    8282    }
    8383    private DataRow MaximumImprovement {
    84       get { return ConstantOptimizationImprovementDataTable.Rows[DataRowNameMaximumImprovement]; }
     84      get { return ParameterOptimizationImprovementDataTable.Rows[DataRowNameMaximumImprovement]; }
    8585    }
    8686    #endregion
    8787
    8888    [StorableConstructor]
    89     private ConstantOptimizationAnalyzer(StorableConstructorFlag _) : base(_) { }
    90     private ConstantOptimizationAnalyzer(ConstantOptimizationAnalyzer original, Cloner cloner) : base(original, cloner) { }
    91     public override IDeepCloneable Clone(Cloner cloner) { return new ConstantOptimizationAnalyzer(this, cloner); }
    92     public ConstantOptimizationAnalyzer()
     89    private ParameterOptimizationAnalyzer(StorableConstructorFlag _) : base(_) { }
     90    private ParameterOptimizationAnalyzer(ParameterOptimizationAnalyzer original, Cloner cloner) : base(original, cloner) { }
     91    public override IDeepCloneable Clone(Cloner cloner) { return new ParameterOptimizationAnalyzer(this, cloner); }
     92    public ParameterOptimizationAnalyzer()
    9393      : base() {
    9494      Parameters.Add(new FixedValueParameter<PercentValue>(PercentageOfBestSolutionsParameterName, "The percentage of the top solutions which should be analyzed.", new PercentValue(0.1)));
    95       Parameters.Add(new FixedValueParameter<SymbolicRegressionConstantOptimizationEvaluator>(ConstantOptimizationEvaluatorParameterName, "The operator used to perform the constant optimization"));
     95      Parameters.Add(new FixedValueParameter<SymbolicRegressionParameterOptimizationEvaluator>(ParameterOptimizationEvaluatorParameterName, "The operator used to perform the parameter optimization"));
    9696
    9797      //Changed the ActualName of the EvaluationPartitionParameter so that it matches the parameter name of symbolic regression problems.
    98       ConstantOptimizationEvaluator.EvaluationPartitionParameter.ActualName = "FitnessCalculationPartition";
     98      ParameterOptimizationEvaluator.EvaluationPartitionParameter.ActualName = "FitnessCalculationPartition";
     99    }
     100
     101    [StorableHook(HookType.AfterDeserialization)]
     102    private void AfterDeserialization() {
     103      if (!Parameters.ContainsKey(ParameterOptimizationEvaluatorParameterName)) {
     104        if (Parameters.ContainsKey("ConstantOptimizationOperator")) {
     105          Parameters.Add(new FixedValueParameter<SymbolicRegressionParameterOptimizationEvaluator>(ParameterOptimizationEvaluatorParameterName, "The operator used to perform the parameter optimization"));
     106          Parameters.Remove("ConstantOptimizationOperator");
     107        } else {
     108          Parameters.Add(new FixedValueParameter<SymbolicRegressionParameterOptimizationEvaluator>(ParameterOptimizationEvaluatorParameterName, "The operator used to perform the parameter optimization"));
     109        }
     110      }
    99111    }
    100112
     
    134146        operationCollection.Parallel = true;
    135147        foreach (var scopeIndex in scopeIndexes) {
    136           var childOperation = ExecutionContext.CreateChildOperation(ConstantOptimizationEvaluator, ExecutionContext.Scope.SubScopes[scopeIndex]);
     148          var childOperation = ExecutionContext.CreateChildOperation(ParameterOptimizationEvaluator, ExecutionContext.Scope.SubScopes[scopeIndex]);
    137149          operationCollection.Add(childOperation);
    138150        }
     
    141153      }
    142154
    143       //code executed to analyze results of constant optimization
     155      //code executed to analyze results of parameter optimization
    144156      double[] qualitiesAfterCoOp = scopeIndexes.Select(x => Quality[x].Value).ToArray();
    145157      var qualityImprovement = qualitiesBeforeCoOp.Zip(qualitiesAfterCoOp, (b, a) => a - b).ToArray();
    146158
    147       if (!ResultCollection.ContainsKey(DataTableNameConstantOptimizationImprovement)) {
    148         var dataTable = new DataTable(DataTableNameConstantOptimizationImprovement);
    149         ResultCollection.Add(new Result(DataTableNameConstantOptimizationImprovement, dataTable));
     159      if (!ResultCollection.ContainsKey(DataTableNameParameterOptimizationImprovement)) {
     160        var dataTable = new DataTable(DataTableNameParameterOptimizationImprovement);
     161        ResultCollection.Add(new Result(DataTableNameParameterOptimizationImprovement, dataTable));
    150162        dataTable.VisualProperties.YAxisTitle = "R²";
    151163
Note: See TracChangeset for help on using the changeset viewer.